@@ -96,7 +96,7 @@ func ResourceVertexAIFeatureOnlineStore() *schema.Resource {
96
96
},
97
97
},
98
98
},
99
- ExactlyOneOf : []string {"bigtable" },
99
+ ExactlyOneOf : []string {"bigtable" , "optimized" },
100
100
},
101
101
"labels" : {
102
102
Type : schema .TypeMap ,
@@ -107,6 +107,17 @@ func ResourceVertexAIFeatureOnlineStore() *schema.Resource {
107
107
Please refer to the field 'effective_labels' for all of the labels present on the resource.` ,
108
108
Elem : & schema.Schema {Type : schema .TypeString },
109
109
},
110
+ "optimized" : {
111
+ Type : schema .TypeList ,
112
+ Optional : true ,
113
+ Description : `Settings for the Optimized store that will be created to serve featureValues for all FeatureViews under this FeatureOnlineStore` ,
114
+ MaxItems : 1 ,
115
+ Elem : & schema.Resource {
116
+ Schema : map [string ]* schema.Schema {},
117
+ },
118
+ ConflictsWith : []string {},
119
+ ExactlyOneOf : []string {"bigtable" , "optimized" },
120
+ },
110
121
"region" : {
111
122
Type : schema .TypeString ,
112
123
Computed : true ,
@@ -178,6 +189,12 @@ func resourceVertexAIFeatureOnlineStoreCreate(d *schema.ResourceData, meta inter
178
189
} else if v , ok := d .GetOkExists ("bigtable" ); ! tpgresource .IsEmptyValue (reflect .ValueOf (bigtableProp )) && (ok || ! reflect .DeepEqual (v , bigtableProp )) {
179
190
obj ["bigtable" ] = bigtableProp
180
191
}
192
+ optimizedProp , err := expandVertexAIFeatureOnlineStoreOptimized (d .Get ("optimized" ), d , config )
193
+ if err != nil {
194
+ return err
195
+ } else if v , ok := d .GetOkExists ("optimized" ); ok || ! reflect .DeepEqual (v , optimizedProp ) {
196
+ obj ["optimized" ] = optimizedProp
197
+ }
181
198
labelsProp , err := expandVertexAIFeatureOnlineStoreEffectiveLabels (d .Get ("effective_labels" ), d , config )
182
199
if err != nil {
183
200
return err
@@ -314,6 +331,9 @@ func resourceVertexAIFeatureOnlineStoreRead(d *schema.ResourceData, meta interfa
314
331
if err := d .Set ("bigtable" , flattenVertexAIFeatureOnlineStoreBigtable (res ["bigtable" ], d , config )); err != nil {
315
332
return fmt .Errorf ("Error reading FeatureOnlineStore: %s" , err )
316
333
}
334
+ if err := d .Set ("optimized" , flattenVertexAIFeatureOnlineStoreOptimized (res ["optimized" ], d , config )); err != nil {
335
+ return fmt .Errorf ("Error reading FeatureOnlineStore: %s" , err )
336
+ }
317
337
if err := d .Set ("terraform_labels" , flattenVertexAIFeatureOnlineStoreTerraformLabels (res ["labels" ], d , config )); err != nil {
318
338
return fmt .Errorf ("Error reading FeatureOnlineStore: %s" , err )
319
339
}
@@ -346,6 +366,12 @@ func resourceVertexAIFeatureOnlineStoreUpdate(d *schema.ResourceData, meta inter
346
366
} else if v , ok := d .GetOkExists ("bigtable" ); ! tpgresource .IsEmptyValue (reflect .ValueOf (v )) && (ok || ! reflect .DeepEqual (v , bigtableProp )) {
347
367
obj ["bigtable" ] = bigtableProp
348
368
}
369
+ optimizedProp , err := expandVertexAIFeatureOnlineStoreOptimized (d .Get ("optimized" ), d , config )
370
+ if err != nil {
371
+ return err
372
+ } else if v , ok := d .GetOkExists ("optimized" ); ok || ! reflect .DeepEqual (v , optimizedProp ) {
373
+ obj ["optimized" ] = optimizedProp
374
+ }
349
375
labelsProp , err := expandVertexAIFeatureOnlineStoreEffectiveLabels (d .Get ("effective_labels" ), d , config )
350
376
if err != nil {
351
377
return err
@@ -366,6 +392,10 @@ func resourceVertexAIFeatureOnlineStoreUpdate(d *schema.ResourceData, meta inter
366
392
updateMask = append (updateMask , "bigtable" )
367
393
}
368
394
395
+ if d .HasChange ("optimized" ) {
396
+ updateMask = append (updateMask , "optimized" )
397
+ }
398
+
369
399
if d .HasChange ("effective_labels" ) {
370
400
updateMask = append (updateMask , "labels" )
371
401
}
@@ -609,6 +639,14 @@ func flattenVertexAIFeatureOnlineStoreBigtableAutoScalingCpuUtilizationTarget(v
609
639
return v // let terraform core handle it otherwise
610
640
}
611
641
642
+ func flattenVertexAIFeatureOnlineStoreOptimized (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
643
+ if v == nil {
644
+ return nil
645
+ }
646
+ transformed := make (map [string ]interface {})
647
+ return []interface {}{transformed }
648
+ }
649
+
612
650
func flattenVertexAIFeatureOnlineStoreTerraformLabels (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
613
651
if v == nil {
614
652
return v
@@ -692,6 +730,21 @@ func expandVertexAIFeatureOnlineStoreBigtableAutoScalingCpuUtilizationTarget(v i
692
730
return v , nil
693
731
}
694
732
733
+ func expandVertexAIFeatureOnlineStoreOptimized (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
734
+ l := v .([]interface {})
735
+ if len (l ) == 0 {
736
+ return nil , nil
737
+ }
738
+
739
+ if l [0 ] == nil {
740
+ transformed := make (map [string ]interface {})
741
+ return transformed , nil
742
+ }
743
+ transformed := make (map [string ]interface {})
744
+
745
+ return transformed , nil
746
+ }
747
+
695
748
func expandVertexAIFeatureOnlineStoreEffectiveLabels (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (map [string ]string , error ) {
696
749
if v == nil {
697
750
return map [string ]string {}, nil
0 commit comments