diff --git a/internal/plugin/grpc_provider.go b/internal/plugin/grpc_provider.go index ed32abc0a0..fdd203665b 100644 --- a/internal/plugin/grpc_provider.go +++ b/internal/plugin/grpc_provider.go @@ -483,7 +483,12 @@ func (p *GRPCProvider) PlanResourceChange(r providers.PlanResourceChangeRequest) } if metaSchema.Block != nil { - metaMP, err := msgpack.Marshal(r.ProviderMeta, metaSchema.Block.ImpliedType()) + metaTy := metaSchema.Block.ImpliedType() + metaVal := r.ProviderMeta + if metaVal == cty.NilVal { + metaVal = cty.NullVal(metaTy) + } + metaMP, err := msgpack.Marshal(metaVal, metaTy) if err != nil { resp.Diagnostics = resp.Diagnostics.Append(err) return resp @@ -558,7 +563,12 @@ func (p *GRPCProvider) ApplyResourceChange(r providers.ApplyResourceChangeReques } if metaSchema.Block != nil { - metaMP, err := msgpack.Marshal(r.ProviderMeta, metaSchema.Block.ImpliedType()) + metaTy := metaSchema.Block.ImpliedType() + metaVal := r.ProviderMeta + if metaVal == cty.NilVal { + metaVal = cty.NullVal(metaTy) + } + metaMP, err := msgpack.Marshal(metaVal, metaTy) if err != nil { resp.Diagnostics = resp.Diagnostics.Append(err) return resp diff --git a/internal/plugin6/grpc_provider.go b/internal/plugin6/grpc_provider.go index 5fbdd8d4f9..02a48b694f 100644 --- a/internal/plugin6/grpc_provider.go +++ b/internal/plugin6/grpc_provider.go @@ -472,7 +472,12 @@ func (p *GRPCProvider) PlanResourceChange(r providers.PlanResourceChangeRequest) } if metaSchema.Block != nil { - metaMP, err := msgpack.Marshal(r.ProviderMeta, metaSchema.Block.ImpliedType()) + metaTy := metaSchema.Block.ImpliedType() + metaVal := r.ProviderMeta + if metaVal == cty.NilVal { + metaVal = cty.NullVal(metaTy) + } + metaMP, err := msgpack.Marshal(metaVal, metaTy) if err != nil { resp.Diagnostics = resp.Diagnostics.Append(err) return resp @@ -547,7 +552,12 @@ func (p *GRPCProvider) ApplyResourceChange(r providers.ApplyResourceChangeReques } if metaSchema.Block != nil { - metaMP, err := msgpack.Marshal(r.ProviderMeta, metaSchema.Block.ImpliedType()) + metaTy := metaSchema.Block.ImpliedType() + metaVal := r.ProviderMeta + if metaVal == cty.NilVal { + metaVal = cty.NullVal(metaTy) + } + metaMP, err := msgpack.Marshal(metaVal, metaTy) if err != nil { resp.Diagnostics = resp.Diagnostics.Append(err) return resp diff --git a/internal/terraform/node_resource_plan_partialexp.go b/internal/terraform/node_resource_plan_partialexp.go index 3851f14757..73b0d3f54e 100644 --- a/internal/terraform/node_resource_plan_partialexp.go +++ b/internal/terraform/node_resource_plan_partialexp.go @@ -210,6 +210,10 @@ func (n *nodePlannablePartialExpandedResource) managedResourceExecute(ctx EvalCo Config: unmarkedConfigVal, PriorState: priorVal, ProposedNewState: proposedNewVal, + // TODO: Should we send "ProviderMeta" here? We don't have the + // necessary data for that wired through here right now, but + // we might need to do that before stabilizing support for unknown + // resource instance expansion. }) diags = diags.Append(resp.Diagnostics.InConfigBody(n.config.Config, n.addr.String())) if diags.HasErrors() {