Skip to content

Commit 239418f

Browse files
committed
vcr fixes
1 parent 59cbe90 commit 239418f

2 files changed

Lines changed: 25 additions & 6 deletions

File tree

mmv1/third_party/terraform/services/compute/resource_compute_instance_from_machine_image.go.tmpl

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,13 @@ func resourceComputeInstanceFromMachineImageCreate(d *schema.ResourceData, meta
224224
return fmt.Errorf("Error expanding scheduling: %s", err)
225225
}
226226
if schedulingBody != nil {
227+
// Strip nil Duration fields so the source machine image values are inherited
228+
// instead of being overridden with null.
229+
for _, k := range []string{"localSsdRecoveryTimeout", "maxRunDuration", "gracefulShutdown", "preemptionNoticeDuration"} {
230+
if v, ok := schedulingBody[k]; ok && v == nil {
231+
delete(schedulingBody, k)
232+
}
233+
}
227234
instanceBody["scheduling"] = schedulingBody
228235
}
229236
} else if srcProps, ok := miRes["sourceInstanceProperties"].(map[string]interface{}); ok {
@@ -258,6 +265,16 @@ func resourceComputeInstanceFromMachineImageCreate(d *schema.ResourceData, meta
258265
instanceBody["advancedMachineFeatures"] = amf
259266
}
260267

268+
if partnerMetadataRaw, err := resourceInstancePartnerMetadata(d); err != nil {
269+
return fmt.Errorf("Error expanding partner_metadata: %s", err)
270+
} else if partnerMetadataBody, err := convertPartnerMetadataToCompute(partnerMetadataRaw); err != nil {
271+
return fmt.Errorf("Error converting partner_metadata: %s", err)
272+
} else if len(partnerMetadataBody) > 0 {
273+
instanceBody["partnerMetadata"] = partnerMetadataBody
274+
} else {
275+
delete(instanceBody, "partnerMetadata")
276+
}
277+
261278
log.Printf("[INFO] Requesting instance creation")
262279
insertURL := fmt.Sprintf("%sprojects/%s/zones/%s/instances", transport_tpg.BaseUrl(Product, config), project, z)
263280
res, err := transport_tpg.SendRequest(transport_tpg.SendRequestOptions{

mmv1/third_party/terraform/services/compute/resource_compute_region_instance_template.go.tmpl

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1556,6 +1556,12 @@ func resourceComputeRegionInstanceTemplateRead(d *schema.ResourceData, meta inte
15561556
}
15571557
delete(res, "id")
15581558

1559+
var schedulingMapFromResponse map[string]interface{}
1560+
if propsMap, ok := res["properties"].(map[string]interface{}); ok {
1561+
schedulingMapFromResponse, _ = propsMap["scheduling"].(map[string]interface{})
1562+
delete(propsMap, "scheduling")
1563+
}
1564+
15591565
resBytes, err := json.Marshal(res)
15601566
if err != nil {
15611567
return fmt.Errorf("Error marshaling instance template response: %s", err)
@@ -1697,12 +1703,8 @@ func resourceComputeRegionInstanceTemplateRead(d *schema.ResourceData, meta inte
16971703
}
16981704
}
16991705
}
1700-
if instanceTemplate.Properties.Scheduling != nil {
1701-
schedulingMap, err := tpgresource.ConvertToMap(instanceTemplate.Properties.Scheduling)
1702-
if err != nil {
1703-
return fmt.Errorf("Error converting scheduling: %s", err)
1704-
}
1705-
scheduling := flattenScheduling(schedulingMap)
1706+
if schedulingMapFromResponse != nil {
1707+
scheduling := flattenScheduling(schedulingMapFromResponse)
17061708
{{ if ne $.TargetVersionName `ga` }}
17071709
// Workaroud: API doesn't update the scheduling.graceful_shutdown.max_duration.nanos field.
17081710
// To avoid diff, we need to set the value from the state not from API response.

0 commit comments

Comments
 (0)