From c5005e195f8928380180be3fbba9f9cdc807dbc8 Mon Sep 17 00:00:00 2001 From: Raynor Chavez Date: Mon, 10 Feb 2025 19:09:25 +1100 Subject: [PATCH] Patch state expectations in all_field and image_preprocessing (#35) --- .github/workflows/test.yml | 3 +++ internal/provider/indices_resource.go | 32 ++++++++++++++++++--------- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3a8f2e6..85e06f2 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -28,6 +28,9 @@ jobs: with: go-version-file: 'go.mod' cache: true + - uses: hashicorp/setup-terraform@v3 + with: + terraform_version: '1.*' - run: go generate ./... - name: git diff run: | diff --git a/internal/provider/indices_resource.go b/internal/provider/indices_resource.go index 72bd251..f20a6b0 100644 --- a/internal/provider/indices_resource.go +++ b/internal/provider/indices_resource.go @@ -566,13 +566,22 @@ func (r *indicesResource) Read(ctx context.Context, req resource.ReadRequest, re } } - // Ensure features and dependent_fields are always set - for i := range newState.Settings.AllFields { - if len(newState.Settings.AllFields[i].Features) == 0 { - newState.Settings.AllFields[i].Features = nil - } - if len(newState.Settings.AllFields[i].DependentFields) == 0 { - newState.Settings.AllFields[i].DependentFields = nil + // marqo doesn't return timeouts, so we maintain the existing state + newState.Timeouts = state.Timeouts + + if state.Settings.AllFields == nil { + newState.Settings.AllFields = nil + } else if len(newState.Settings.AllFields) == 0 { + newState.Settings.AllFields = []AllFieldInput{} + } else { + // Ensure features and dependent_fields are always set + for i := range newState.Settings.AllFields { + if len(newState.Settings.AllFields[i].Features) == 0 { + newState.Settings.AllFields[i].Features = nil + } + if len(newState.Settings.AllFields[i].DependentFields) == 0 { + newState.Settings.AllFields[i].DependentFields = nil + } } } @@ -583,8 +592,11 @@ func (r *indicesResource) Read(ctx context.Context, req resource.ReadRequest, re newState.Settings.TreatUrlsAndPointersAsMedia = types.BoolNull() } - // Handle image_preprocessing.patch_method - if newState.Settings.ImagePreprocessing.PatchMethod.ValueString() == "" { + // Handle image_preprocessing + if state.Settings.ImagePreprocessing == nil { + newState.Settings.ImagePreprocessing = nil + } else if newState.Settings.ImagePreprocessing != nil && + newState.Settings.ImagePreprocessing.PatchMethod.ValueString() == "" { newState.Settings.ImagePreprocessing.PatchMethod = types.StringNull() } @@ -596,7 +608,7 @@ func (r *indicesResource) Read(ctx context.Context, req resource.ReadRequest, re newState.Settings.AudioPreprocessing = state.Settings.AudioPreprocessing } - // Then handle zero values (existing code) + // Then handle zero values if newState.Settings.VideoPreprocessing != nil && newState.Settings.VideoPreprocessing.SplitLength.ValueInt64() == 0 && newState.Settings.VideoPreprocessing.SplitOverlap.ValueInt64() == 0 {