@@ -229,6 +229,15 @@ This number is on a scale from 0 (no utilization) to 100 (full utilization).`,
229229 },
230230 ExactlyOneOf : []string {"num_nodes" , "processing_units" , "autoscaling_config" },
231231 },
232+ "default_backup_schedule_type" : {
233+ Type : schema .TypeString ,
234+ Computed : true ,
235+ Optional : true ,
236+ ValidateFunc : verify .ValidateEnum ([]string {"NONE" , "AUTOMATIC" , "" }),
237+ Description : `Controls the default backup behavior for new databases within the instance.
238+ Note that 'AUTOMATIC' is not permitted for free instances, as backups and backup schedules are not allowed for free instances.
239+ if unset or NONE, no default backup schedule will be created for new databases within the instance. Possible values: ["NONE", "AUTOMATIC"]` ,
240+ },
232241 "labels" : {
233242 Type : schema .TypeMap ,
234243 Optional : true ,
@@ -336,6 +345,12 @@ func resourceSpannerInstanceCreate(d *schema.ResourceData, meta interface{}) err
336345 } else if v , ok := d .GetOkExists ("autoscaling_config" ); ! tpgresource .IsEmptyValue (reflect .ValueOf (autoscalingConfigProp )) && (ok || ! reflect .DeepEqual (v , autoscalingConfigProp )) {
337346 obj ["autoscalingConfig" ] = autoscalingConfigProp
338347 }
348+ defaultBackupScheduleTypeProp , err := expandSpannerInstanceDefaultBackupScheduleType (d .Get ("default_backup_schedule_type" ), d , config )
349+ if err != nil {
350+ return err
351+ } else if v , ok := d .GetOkExists ("default_backup_schedule_type" ); ! tpgresource .IsEmptyValue (reflect .ValueOf (defaultBackupScheduleTypeProp )) && (ok || ! reflect .DeepEqual (v , defaultBackupScheduleTypeProp )) {
352+ obj ["defaultBackupScheduleType" ] = defaultBackupScheduleTypeProp
353+ }
339354 labelsProp , err := expandSpannerInstanceEffectiveLabels (d .Get ("effective_labels" ), d , config )
340355 if err != nil {
341356 return err
@@ -515,6 +530,9 @@ func resourceSpannerInstanceRead(d *schema.ResourceData, meta interface{}) error
515530 if err := d .Set ("autoscaling_config" , flattenSpannerInstanceAutoscalingConfig (res ["autoscalingConfig" ], d , config )); err != nil {
516531 return fmt .Errorf ("Error reading Instance: %s" , err )
517532 }
533+ if err := d .Set ("default_backup_schedule_type" , flattenSpannerInstanceDefaultBackupScheduleType (res ["defaultBackupScheduleType" ], d , config )); err != nil {
534+ return fmt .Errorf ("Error reading Instance: %s" , err )
535+ }
518536 if err := d .Set ("terraform_labels" , flattenSpannerInstanceTerraformLabels (res ["labels" ], d , config )); err != nil {
519537 return fmt .Errorf ("Error reading Instance: %s" , err )
520538 }
@@ -565,6 +583,12 @@ func resourceSpannerInstanceUpdate(d *schema.ResourceData, meta interface{}) err
565583 } else if v , ok := d .GetOkExists ("autoscaling_config" ); ! tpgresource .IsEmptyValue (reflect .ValueOf (v )) && (ok || ! reflect .DeepEqual (v , autoscalingConfigProp )) {
566584 obj ["autoscalingConfig" ] = autoscalingConfigProp
567585 }
586+ defaultBackupScheduleTypeProp , err := expandSpannerInstanceDefaultBackupScheduleType (d .Get ("default_backup_schedule_type" ), d , config )
587+ if err != nil {
588+ return err
589+ } else if v , ok := d .GetOkExists ("default_backup_schedule_type" ); ! tpgresource .IsEmptyValue (reflect .ValueOf (v )) && (ok || ! reflect .DeepEqual (v , defaultBackupScheduleTypeProp )) {
590+ obj ["defaultBackupScheduleType" ] = defaultBackupScheduleTypeProp
591+ }
568592 labelsProp , err := expandSpannerInstanceEffectiveLabels (d .Get ("effective_labels" ), d , config )
569593 if err != nil {
570594 return err
@@ -944,7 +968,9 @@ func flattenSpannerInstanceAutoscalingConfigAutoscalingTargetsStorageUtilization
944968
945969 return v // let terraform core handle it otherwise
946970}
947-
971+ func flattenSpannerInstanceDefaultBackupScheduleType (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
972+ return v
973+ }
948974func flattenSpannerInstanceTerraformLabels (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
949975 if v == nil {
950976 return v
@@ -1109,7 +1135,9 @@ func expandSpannerInstanceAutoscalingConfigAutoscalingTargetsHighPriorityCpuUtil
11091135func expandSpannerInstanceAutoscalingConfigAutoscalingTargetsStorageUtilizationPercent (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
11101136 return v , nil
11111137}
1112-
1138+ func expandSpannerInstanceDefaultBackupScheduleType (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
1139+ return v , nil
1140+ }
11131141func expandSpannerInstanceEffectiveLabels (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (map [string ]string , error ) {
11141142 if v == nil {
11151143 return map [string ]string {}, nil
@@ -1149,6 +1177,9 @@ func resourceSpannerInstanceUpdateEncoder(d *schema.ResourceData, meta interface
11491177 newObj := make (map [string ]interface {})
11501178 newObj ["instance" ] = obj
11511179 updateMask := make ([]string , 0 )
1180+ if d .HasChange ("default_backup_schedule_type" ) {
1181+ updateMask = append (updateMask , "defaultBackupScheduleType" )
1182+ }
11521183 if d .HasChange ("num_nodes" ) {
11531184 updateMask = append (updateMask , "nodeCount" )
11541185 }
0 commit comments