diff --git a/vault/resource_gcp_auth_backend_role.go b/vault/resource_gcp_auth_backend_role.go index 3e5a969ac6..dfce0aba32 100644 --- a/vault/resource_gcp_auth_backend_role.go +++ b/vault/resource_gcp_auth_backend_role.go @@ -149,6 +149,10 @@ func gcpAuthBackendRoleResource() *schema.Resource { Update: gcpAuthResourceUpdate, Read: gcpAuthResourceRead, Delete: gcpAuthResourceDelete, + Exists: gcpAuthResourceExists, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, Schema: fields, } } @@ -367,3 +371,17 @@ func gcpAuthResourceDelete(d *schema.ResourceData, meta interface{}) error { return nil } + +func gcpAuthResourceExists(d *schema.ResourceData, meta interface{}) (bool, error) { + client := meta.(*api.Client) + path := d.Id() + + log.Printf("[DEBUG] Checking if gcp auth role %q exists", path) + resp, err := client.Logical().Read(path) + if err != nil { + return true, fmt.Errorf("error checking for existence of gcp auth resource config %q: %s", path, err) + } + log.Printf("[DEBUG] Checked if gcp auth role %q exists", path) + + return resp != nil, nil +} diff --git a/vault/resource_gcp_auth_backend_role_test.go b/vault/resource_gcp_auth_backend_role_test.go index 181c7c0d81..2807c78631 100644 --- a/vault/resource_gcp_auth_backend_role_test.go +++ b/vault/resource_gcp_auth_backend_role_test.go @@ -48,6 +48,11 @@ func TestGCPAuthBackendRole_basic(t *testing.T) { "token_policies.#", "0"), ), }, + { + ResourceName: name, + ImportState: true, + ImportStateVerify: true, + }, }, }) } diff --git a/website/docs/r/gcp_auth_backend_role.html.md b/website/docs/r/gcp_auth_backend_role.html.md index 1928e64b56..108d100ebe 100644 --- a/website/docs/r/gcp_auth_backend_role.html.md +++ b/website/docs/r/gcp_auth_backend_role.html.md @@ -123,3 +123,12 @@ documented above. ## Attribute Reference No additional attributes are exposed by this resource. + + +## Import + +GCP authentication roles can be imported using the `path`, e.g. + +``` +$ terraform import vault_gcp_auth_backend_role.my_role auth/gcp/role/my_role +```