Skip to content

Commit 9f825fe

Browse files
Add SchedulingConfig.spot to TPU v2 VM (#13211)
[upstream:2d658fd4f5e9817fe1f2fe66af66e6f6fa5eed82] Signed-off-by: Modular Magician <[email protected]>
1 parent 59b9130 commit 9f825fe

File tree

5 files changed

+33
-0
lines changed

5 files changed

+33
-0
lines changed

.changelog/13211.txt

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
tpuv2: added `spot` field to `google_tpu_v2_vm` resource
3+
```

google-beta/services/tpuv2/resource_tpu_v2_vm.go

+23
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,12 @@ Engine subnetwork. If none is provided, "default" will be used.`,
325325
ForceNew: true,
326326
Description: `Whether the node is created under a reservation.`,
327327
},
328+
"spot": {
329+
Type: schema.TypeBool,
330+
Optional: true,
331+
ForceNew: true,
332+
Description: `Optional. Defines whether the node is Spot VM.`,
333+
},
328334
},
329335
},
330336
},
@@ -1162,6 +1168,8 @@ func flattenTpuV2VmSchedulingConfig(v interface{}, d *schema.ResourceData, confi
11621168
flattenTpuV2VmSchedulingConfigPreemptible(original["preemptible"], d, config)
11631169
transformed["reserved"] =
11641170
flattenTpuV2VmSchedulingConfigReserved(original["reserved"], d, config)
1171+
transformed["spot"] =
1172+
flattenTpuV2VmSchedulingConfigSpot(original["spot"], d, config)
11651173
return []interface{}{transformed}
11661174
}
11671175
func flattenTpuV2VmSchedulingConfigPreemptible(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
@@ -1172,6 +1180,10 @@ func flattenTpuV2VmSchedulingConfigReserved(v interface{}, d *schema.ResourceDat
11721180
return v
11731181
}
11741182

1183+
func flattenTpuV2VmSchedulingConfigSpot(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
1184+
return v
1185+
}
1186+
11751187
func flattenTpuV2VmDataDisks(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
11761188
if v == nil {
11771189
return v
@@ -1614,6 +1626,13 @@ func expandTpuV2VmSchedulingConfig(v interface{}, d tpgresource.TerraformResourc
16141626
transformed["reserved"] = transformedReserved
16151627
}
16161628

1629+
transformedSpot, err := expandTpuV2VmSchedulingConfigSpot(original["spot"], d, config)
1630+
if err != nil {
1631+
return nil, err
1632+
} else if val := reflect.ValueOf(transformedSpot); val.IsValid() && !tpgresource.IsEmptyValue(val) {
1633+
transformed["spot"] = transformedSpot
1634+
}
1635+
16171636
return transformed, nil
16181637
}
16191638

@@ -1625,6 +1644,10 @@ func expandTpuV2VmSchedulingConfigReserved(v interface{}, d tpgresource.Terrafor
16251644
return v, nil
16261645
}
16271646

1647+
func expandTpuV2VmSchedulingConfigSpot(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
1648+
return v, nil
1649+
}
1650+
16281651
func expandTpuV2VmDataDisks(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
16291652
l := v.([]interface{})
16301653
req := make([]interface{}, 0, len(l))

google-beta/services/tpuv2/resource_tpu_v2_vm_generated_meta.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ fields:
3838
- field: 'runtime_version'
3939
- field: 'scheduling_config.preemptible'
4040
- field: 'scheduling_config.reserved'
41+
- field: 'scheduling_config.spot'
4142
- field: 'service_account.email'
4243
- field: 'service_account.scope'
4344
- field: 'shielded_instance_config.enable_secure_boot'

google-beta/services/tpuv2/resource_tpu_v2_vm_generated_test.go

+1
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ resource "google_tpu_v2_vm" "tpu" {
139139
140140
scheduling_config {
141141
preemptible = true
142+
spot = true
142143
}
143144
144145
shielded_instance_config {

website/docs/r/tpu_v2_vm.html.markdown

+5
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ resource "google_tpu_v2_vm" "tpu" {
9797
9898
scheduling_config {
9999
preemptible = true
100+
spot = true
100101
}
101102
102103
shielded_instance_config {
@@ -337,6 +338,10 @@ The following arguments are supported:
337338
(Optional)
338339
Whether the node is created under a reservation.
339340

341+
* `spot` -
342+
(Optional)
343+
Optional. Defines whether the node is Spot VM.
344+
340345
<a name="nested_data_disks"></a>The `data_disks` block supports:
341346

342347
* `source_disk` -

0 commit comments

Comments
 (0)