diff --git a/internal/elasticsearch/index/index/acc_test.go b/internal/elasticsearch/index/index/acc_test.go index e109802fb..51e0d1e75 100644 --- a/internal/elasticsearch/index/index/acc_test.go +++ b/internal/elasticsearch/index/index/acc_test.go @@ -60,6 +60,19 @@ func TestAccResourceIndex(t *testing.T) { resource.TestCheckResourceAttr("elasticstack_elasticsearch_index.test", "number_of_replicas", "0"), ), }, + { + Config: testAccResourceIndexZeroReplicas(indexName), + ImportState: true, + ResourceName: "elasticstack_elasticsearch_index.test", + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr("elasticstack_elasticsearch_index.test", "name", indexName), + resource.TestMatchTypeSetElemNestedAttrs("elasticstack_elasticsearch_index.test", "alias.*", map[string]*regexp.Regexp{ + "name": regexp.MustCompile("test_alias_1"), + }), + resource.TestCheckResourceAttr("elasticstack_elasticsearch_index.test", "alias.#", "1"), + resource.TestCheckResourceAttr("elasticstack_elasticsearch_index.test", "number_of_replicas", "0"), + ), + }, }, }) } diff --git a/internal/elasticsearch/index/index/resource.go b/internal/elasticsearch/index/index/resource.go index 6ae8aadb9..964919bad 100644 --- a/internal/elasticsearch/index/index/resource.go +++ b/internal/elasticsearch/index/index/resource.go @@ -5,9 +5,15 @@ import ( "github.com/elastic/terraform-provider-elasticstack/internal/clients" "github.com/hashicorp/terraform-plugin-framework/diag" + "github.com/hashicorp/terraform-plugin-framework/path" "github.com/hashicorp/terraform-plugin-framework/resource" ) +// Ensure provider defined types fully satisfy framework interfaces +var _ resource.Resource = &Resource{} +var _ resource.ResourceWithConfigure = &Resource{} +var _ resource.ResourceWithImportState = &Resource{} + type Resource struct { client *clients.ApiClient } @@ -33,3 +39,8 @@ func (r *Resource) Configure(ctx context.Context, request resource.ConfigureRequ func (r *Resource) Metadata(ctx context.Context, request resource.MetadataRequest, response *resource.MetadataResponse) { response.TypeName = request.ProviderTypeName + "_elasticsearch_index" } + +func (r *Resource) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { + // Retrieve import ID and save to id attribute + resource.ImportStatePassthroughID(ctx, path.Root("id"), req, resp) +} diff --git a/internal/elasticsearch/index/index/schema.go b/internal/elasticsearch/index/index/schema.go index 1b07689c7..0a24d70cf 100644 --- a/internal/elasticsearch/index/index/schema.go +++ b/internal/elasticsearch/index/index/schema.go @@ -26,12 +26,6 @@ import ( "github.com/hashicorp/terraform-plugin-framework/types" ) -// Ensure provider defined types fully satisfy framework interfaces -var _ resource.Resource = &Resource{} -var _ resource.ResourceWithConfigure = &Resource{} - -// var _ resource.ResourceWithImportState = &Resource{} - func (r *Resource) Schema(_ context.Context, _ resource.SchemaRequest, resp *resource.SchemaResponse) { resp.Schema = getSchema() }