@@ -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 (" %s projects/%s /zones/%s /instances" , transport_tpg.BaseUrl (Product, config), project, z)
263280 res, err := transport_tpg.SendRequest (transport_tpg.SendRequestOptions {
0 commit comments