44 "context"
55 "encoding/json"
66 "fmt"
7+ "maps"
78 "sort"
89 "strings"
910 "time"
@@ -111,8 +112,9 @@ func (s *v2InstanceState2) Meta() map[string]interface{} {
111112type v2InstanceDiff2 struct {
112113 v2InstanceDiff
113114
114- config cty.Value
115- plannedState cty.Value
115+ config cty.Value
116+ plannedState cty.Value
117+ plannedPrivate map [string ]interface {}
116118}
117119
118120func (d * v2InstanceDiff2 ) String () string {
@@ -129,7 +131,8 @@ func (d *v2InstanceDiff2) GoString() string {
129131 },
130132 config: %#v,
131133 plannedState: %#v,
132- }` , d .v2InstanceDiff .tf , d .config , d .plannedState )
134+ plannedPrivate: %#v,
135+ }` , d .v2InstanceDiff .tf , d .config , d .plannedState , d .plannedPrivate )
133136}
134137
135138var _ shim.InstanceDiff = (* v2InstanceDiff2 )(nil )
@@ -258,12 +261,14 @@ func (p *planResourceChangeImpl) Diff(
258261 if err != nil {
259262 return nil , err
260263 }
264+
261265 return & v2InstanceDiff2 {
262266 v2InstanceDiff : v2InstanceDiff {
263267 tf : plan .PlannedDiff ,
264268 },
265- config : cfg ,
266- plannedState : plan .PlannedState ,
269+ config : cfg ,
270+ plannedState : plan .PlannedState ,
271+ plannedPrivate : plan .PlannedPrivate ,
267272 }, nil
268273}
269274
@@ -283,7 +288,17 @@ func (p *planResourceChangeImpl) Apply(
283288 }
284289 diff := p .unpackDiff (ty , d )
285290 cfg , st , pl := diff .config , state .stateValue , diff .plannedState
286- priv := diff .v2InstanceDiff .tf .Meta
291+
292+ // Merge plannedPrivate and v2InstanceDiff.tf.Meta into a single map. This is necessary because
293+ // timeouts are stored in the Meta and not in plannedPrivate.
294+ priv := make (map [string ]interface {})
295+ if len (diff .plannedPrivate ) > 0 {
296+ maps .Copy (priv , diff .plannedPrivate )
297+ }
298+ if len (diff .v2InstanceDiff .tf .Meta ) > 0 {
299+ maps .Copy (priv , diff .v2InstanceDiff .tf .Meta )
300+ }
301+
287302 resp , err := p .server .ApplyResourceChange (ctx , t , ty , cfg , st , pl , priv , meta )
288303 if err != nil {
289304 return nil , err
@@ -475,9 +490,9 @@ func (s *grpcServer) PlanResourceChange(
475490 providerMeta * cty.Value ,
476491 ignores shim.IgnoreChanges ,
477492) (* struct {
478- PlannedState cty.Value
479- PlannedMeta map [string ]interface {}
480- PlannedDiff * terraform.InstanceDiff
493+ PlannedState cty.Value
494+ PlannedPrivate map [string ]interface {}
495+ PlannedDiff * terraform.InstanceDiff
481496}, error ) {
482497 configVal , err := msgpack .Marshal (config , ty )
483498 if err != nil {
@@ -548,13 +563,13 @@ func (s *grpcServer) PlanResourceChange(
548563 }
549564 }
550565 return & struct {
551- PlannedState cty.Value
552- PlannedMeta map [string ]interface {}
553- PlannedDiff * terraform.InstanceDiff
566+ PlannedState cty.Value
567+ PlannedPrivate map [string ]interface {}
568+ PlannedDiff * terraform.InstanceDiff
554569 }{
555- PlannedState : plannedState ,
556- PlannedMeta : meta ,
557- PlannedDiff : resp .InstanceDiff ,
570+ PlannedState : plannedState ,
571+ PlannedPrivate : meta ,
572+ PlannedDiff : resp .InstanceDiff ,
558573 }, nil
559574}
560575
0 commit comments