diff --git a/CHANGELOG.md b/CHANGELOG.md index 3cee22c7d..779010e41 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ ## [Unreleased] +- Fix a provider crash when interacting with elasticstack_kibana_data_view resources created with 0.11.0. ([#979](https://github.com/elastic/terraform-provider-elasticstack/pull/979)) - Add `max_primary_shard_docs` condition to ILM rollover ([#845](https://github.com/elastic/terraform-provider-elasticstack/pull/845)) ## [0.11.13] - 2025-01-09 diff --git a/internal/kibana/data_view/models.go b/internal/kibana/data_view/models.go index 2daf569da..abe38d4d3 100644 --- a/internal/kibana/data_view/models.go +++ b/internal/kibana/data_view/models.go @@ -232,10 +232,16 @@ func convertSourceFilter(item string, meta utils.ListMeta) kbapi.DataViewsSource } func (model dataViewModel) getViewIDAndSpaceID() (viewID string, spaceID string) { + viewID = model.ID.ValueString() + spaceID = model.SpaceID.ValueString() + resourceID := model.ID.ValueString() - composite, _ := clients.CompositeIdFromStr(resourceID) - viewID = composite.ResourceId - spaceID = composite.ClusterId + maybeCompositeID, _ := clients.CompositeIdFromStr(resourceID) + if maybeCompositeID != nil { + viewID = maybeCompositeID.ResourceId + spaceID = maybeCompositeID.ClusterId + } + return } diff --git a/internal/kibana/data_view/models_test.go b/internal/kibana/data_view/models_test.go index 375f4e4d9..b21fafc28 100644 --- a/internal/kibana/data_view/models_test.go +++ b/internal/kibana/data_view/models_test.go @@ -352,3 +352,38 @@ func TestToAPIUpdateModel(t *testing.T) { }) } } + +func Test_dataViewModel_getViewIDAndSpaceID(t *testing.T) { + tests := []struct { + name string + model dataViewModel + expectedViewID string + expectedSpaceID string + }{ + { + name: "gets the view and space id from the composite id if set", + model: dataViewModel{ + ID: types.StringValue("space-id/view-id"), + }, + expectedViewID: "view-id", + expectedSpaceID: "space-id", + }, + { + name: "gets the view and space id from the data view if id is not a valid composite id", + model: dataViewModel{ + ID: types.StringValue("view-id"), + SpaceID: types.StringValue("space-id"), + }, + expectedViewID: "view-id", + expectedSpaceID: "space-id", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + viewID, spaceID := tt.model.getViewIDAndSpaceID() + require.Equal(t, tt.expectedViewID, viewID) + require.Equal(t, tt.expectedSpaceID, spaceID) + }) + } +}