Skip to content

Commit 9d8378a

Browse files
committed
r/aws_opensearch_domain: Fixup 'aiml_options' flex.
1 parent 10c3993 commit 9d8378a

File tree

2 files changed

+92
-32
lines changed

2 files changed

+92
-32
lines changed

internal/service/opensearch/domain.go

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -184,9 +184,9 @@ func resourceDomain() *schema.Resource {
184184
Elem: &schema.Resource{
185185
Schema: map[string]*schema.Schema{
186186
"desired_state": {
187-
Type: schema.TypeString,
188-
Optional: true,
189-
ValidateFunc: validation.StringInSlice([]string{"DISABLED", "ENABLED"}, false),
187+
Type: schema.TypeString,
188+
Optional: true,
189+
ValidateDiagFunc: enum.Validate[awstypes.NaturalLanguageQueryGenerationDesiredState](),
190190
},
191191
},
192192
},
@@ -751,8 +751,8 @@ func resourceDomainCreate(ctx context.Context, d *schema.ResourceData, meta any)
751751
input.AdvancedSecurityOptions = expandAdvancedSecurityOptions(v.([]any))
752752
}
753753

754-
if v, ok := d.GetOk("aiml_options"); ok {
755-
input.AIMLOptions = expandAIMLOptions(v.([]any))
754+
if v, ok := d.GetOk("aiml_options"); ok && len(v.([]any)) > 0 && v.([]any)[0] != nil {
755+
input.AIMLOptions = expandAIMLOptionsInput(v.([]any)[0].(map[string]any))
756756
}
757757

758758
if v, ok := d.GetOk("auto_tune_options"); ok && len(v.([]any)) > 0 {
@@ -952,6 +952,13 @@ func resourceDomainRead(ctx context.Context, d *schema.ResourceData, meta any) d
952952
return sdkdiag.AppendErrorf(diags, "setting advanced_security_options: %s", err)
953953
}
954954
}
955+
if ds.AIMLOptions != nil {
956+
if err := d.Set("aiml_options", []interface{}{flattenAIMLOptionsOutput(ds.AIMLOptions)}); err != nil {
957+
return sdkdiag.AppendErrorf(diags, "setting aiml_options: %s", err)
958+
}
959+
} else {
960+
d.Set("aiml_options", nil)
961+
}
955962
d.Set(names.AttrARN, ds.ARN)
956963
if v := dc.AutoTuneOptions; v != nil {
957964
if err := d.Set("auto_tune_options", []any{flattenAutoTuneOptions(v.Options)}); err != nil {

internal/service/opensearch/domain_structure.go

Lines changed: 80 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -54,39 +54,50 @@ func expandAdvancedSecurityOptions(m []any) *awstypes.AdvancedSecurityOptionsInp
5454
return &config
5555
}
5656

57-
func expandAIMLOptions(a []any) *awstypes.AIMLOptionsInput {
58-
config := awstypes.AIMLOptionsInput{}
59-
group := a[0].(map[string]any)
60-
61-
if v, ok := group["natural_language_query_generation_options"].([]any); ok {
62-
if len(v) > 0 && v[0] != nil {
63-
nlqgo := awstypes.NaturalLanguageQueryGenerationOptionsInput{}
64-
nlqgoGroup := v[0].(map[string]any)
65-
66-
if v, ok := nlqgoGroup["desired_state"].(string); ok && v != "" {
67-
if v == "DISABLED" {
68-
nlqgo.DesiredState = awstypes.NaturalLanguageQueryGenerationDesiredStateDisabled
69-
} else if v == "ENABLED" {
70-
nlqgo.DesiredState = awstypes.NaturalLanguageQueryGenerationDesiredStateEnabled
71-
}
72-
}
73-
}
57+
func expandAIMLOptionsInput(tfMap map[string]any) *awstypes.AIMLOptionsInput {
58+
if tfMap == nil {
59+
return nil
7460
}
7561

76-
if v, ok := group["s3_vectors_engine"].([]any); ok {
77-
if len(v) > 0 && v[0] != nil {
78-
ve := awstypes.S3VectorsEngine{}
79-
veGroup := v[0].(map[string]any)
62+
apiObject := &awstypes.AIMLOptionsInput{}
8063

81-
if veEnabled, ok := veGroup[names.AttrEnabled]; ok {
82-
ve.Enabled = aws.Bool(veEnabled.(bool))
83-
}
64+
if v, ok := tfMap["natural_language_query_generation_options"].([]any); ok && len(v) > 0 && v[0] != nil {
65+
apiObject.NaturalLanguageQueryGenerationOptions = expandNaturalLanguageQueryGenerationOptionsInput(v[0].(map[string]any))
66+
}
8467

85-
config.S3VectorsEngine = &ve
86-
}
68+
if v, ok := tfMap["s3_vectors_engine"].([]any); ok && len(v) > 0 && v[0] != nil {
69+
apiObject.S3VectorsEngine = expandS3VectorsEngine(v[0].(map[string]any))
8770
}
8871

89-
return &config
72+
return apiObject
73+
}
74+
75+
func expandNaturalLanguageQueryGenerationOptionsInput(tfMap map[string]any) *awstypes.NaturalLanguageQueryGenerationOptionsInput {
76+
if tfMap == nil {
77+
return nil
78+
}
79+
80+
apiObject := &awstypes.NaturalLanguageQueryGenerationOptionsInput{}
81+
82+
if v, ok := tfMap["desired_state"].(string); ok && v != "" {
83+
apiObject.DesiredState = awstypes.NaturalLanguageQueryGenerationDesiredState(v)
84+
}
85+
86+
return apiObject
87+
}
88+
89+
func expandS3VectorsEngine(tfMap map[string]any) *awstypes.S3VectorsEngine {
90+
if tfMap == nil {
91+
return nil
92+
}
93+
94+
apiObject := &awstypes.S3VectorsEngine{}
95+
96+
if v, ok := tfMap[names.AttrEnabled].(bool); ok {
97+
apiObject.Enabled = aws.Bool(v)
98+
}
99+
100+
return apiObject
90101
}
91102

92103
func expandAutoTuneOptions(tfMap map[string]any) *awstypes.AutoTuneOptions {
@@ -283,6 +294,48 @@ func flattenAdvancedSecurityOptions(advancedSecurityOptions *awstypes.AdvancedSe
283294
return []map[string]any{m}
284295
}
285296

297+
func flattenAIMLOptionsOutput(apiObject *awstypes.AIMLOptionsOutput) map[string]any {
298+
if apiObject == nil {
299+
return nil
300+
}
301+
302+
tfMap := map[string]any{}
303+
304+
if v := apiObject.NaturalLanguageQueryGenerationOptions; v != nil {
305+
tfMap["natural_language_query_generation_options"] = []interface{}{flattenNaturalLanguageQueryGenerationOptionsOutput(v)}
306+
}
307+
308+
if v := apiObject.S3VectorsEngine; v != nil {
309+
tfMap["s3_vectors_engine"] = []interface{}{flattenS3VectorsEngine(v)}
310+
}
311+
312+
return tfMap
313+
}
314+
315+
func flattenNaturalLanguageQueryGenerationOptionsOutput(apiObject *awstypes.NaturalLanguageQueryGenerationOptionsOutput) map[string]any {
316+
if apiObject == nil {
317+
return nil
318+
}
319+
320+
tfMap := map[string]any{
321+
"desired_state": apiObject.DesiredState,
322+
}
323+
324+
return tfMap
325+
}
326+
327+
func flattenS3VectorsEngine(apiObject *awstypes.S3VectorsEngine) map[string]any {
328+
if apiObject == nil {
329+
return nil
330+
}
331+
332+
tfMap := map[string]any{
333+
names.AttrEnabled: aws.ToBool(apiObject.Enabled),
334+
}
335+
336+
return tfMap
337+
}
338+
286339
func flattenAutoTuneOptions(autoTuneOptions *awstypes.AutoTuneOptions) map[string]any {
287340
if autoTuneOptions == nil {
288341
return nil

0 commit comments

Comments
 (0)