plans: Record private data bytes as part of resource change

This allows a provider to retain arbitrary extra data in the plan and
make use of it during apply. The contents are not used by Terraform and
never shown to the user.
This commit is contained in:
Martin Atkins 2018-08-17 17:22:18 -07:00
parent fb57801dfe
commit dfe0988f10
5 changed files with 101 additions and 81 deletions

View File

@ -79,6 +79,11 @@ type ResourceInstanceChange struct {
// Change is an embedded description of the change.
Change
// Private allows a provider to stash any extra data that is opaque to
// Terraform that relates to this change. Terraform will save this
// byte-for-byte and return it to the provider in the apply call.
Private []byte
}
// Encode produces a variant of the reciever that has its change values
@ -94,6 +99,7 @@ func (rc *ResourceInstanceChange) Encode(ty cty.Type) (*ResourceInstanceChangeSr
DeposedKey: rc.DeposedKey,
ProviderAddr: rc.ProviderAddr,
ChangeSrc: *cs,
Private: rc.Private,
}, err
}

View File

@ -33,6 +33,11 @@ type ResourceInstanceChangeSrc struct {
// ChangeSrc is an embedded description of the not-yet-decoded change.
ChangeSrc
// Private allows a provider to stash any extra data that is opaque to
// Terraform that relates to this change. Terraform will save this
// byte-for-byte and return it to the provider in the apply call.
Private []byte
}
// Decode unmarshals the raw representation of the instance object being
@ -48,6 +53,7 @@ func (rcs *ResourceInstanceChangeSrc) Decode(ty cty.Type) (*ResourceInstanceChan
DeposedKey: rcs.DeposedKey,
ProviderAddr: rcs.ProviderAddr,
Change: *change,
Private: rcs.Private,
}, nil
}

View File

@ -52,7 +52,7 @@ func (x Action) String() string {
return proto.EnumName(Action_name, int32(x))
}
func (Action) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_planfile_99d56bc18c7b6e8d, []int{0}
return fileDescriptor_planfile_2f8b9a0ae177578e, []int{0}
}
type ResourceInstanceChange_ResourceMode int32
@ -75,7 +75,7 @@ func (x ResourceInstanceChange_ResourceMode) String() string {
return proto.EnumName(ResourceInstanceChange_ResourceMode_name, int32(x))
}
func (ResourceInstanceChange_ResourceMode) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_planfile_99d56bc18c7b6e8d, []int{3, 0}
return fileDescriptor_planfile_2f8b9a0ae177578e, []int{3, 0}
}
// Plan is the root message type for the tfplan file
@ -122,7 +122,7 @@ func (m *Plan) Reset() { *m = Plan{} }
func (m *Plan) String() string { return proto.CompactTextString(m) }
func (*Plan) ProtoMessage() {}
func (*Plan) Descriptor() ([]byte, []int) {
return fileDescriptor_planfile_99d56bc18c7b6e8d, []int{0}
return fileDescriptor_planfile_2f8b9a0ae177578e, []int{0}
}
func (m *Plan) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Plan.Unmarshal(m, b)
@ -212,7 +212,7 @@ func (m *Backend) Reset() { *m = Backend{} }
func (m *Backend) String() string { return proto.CompactTextString(m) }
func (*Backend) ProtoMessage() {}
func (*Backend) Descriptor() ([]byte, []int) {
return fileDescriptor_planfile_99d56bc18c7b6e8d, []int{1}
return fileDescriptor_planfile_2f8b9a0ae177578e, []int{1}
}
func (m *Backend) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Backend.Unmarshal(m, b)
@ -278,7 +278,7 @@ func (m *Change) Reset() { *m = Change{} }
func (m *Change) String() string { return proto.CompactTextString(m) }
func (*Change) ProtoMessage() {}
func (*Change) Descriptor() ([]byte, []int) {
return fileDescriptor_planfile_99d56bc18c7b6e8d, []int{2}
return fileDescriptor_planfile_2f8b9a0ae177578e, []int{2}
}
func (m *Change) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Change.Unmarshal(m, b)
@ -346,11 +346,11 @@ type ResourceInstanceChange struct {
// "replace" and "delete" actions. "no-op" changes are not currently used here
// but consumers must accept and discard them to allow for future expansion.
Change *Change `protobuf:"bytes,9,opt,name=change,proto3" json:"change,omitempty"`
// msgpack representation of an arbitrary object value provided by
// the resource provider as additional context for the change. Must
// be considered an opaque value for any consumer other than the
// provider that generated it.
Private *DynamicValue `protobuf:"bytes,10,opt,name=private,proto3" json:"private,omitempty"`
// raw blob value provided by the provider as additional context for the
// change. Must be considered an opaque value for any consumer other than
// the provider that generated it, and will be returned verbatim to the
// provider during the subsequent apply operation.
Private []byte `protobuf:"bytes,10,opt,name=private,proto3" json:"private,omitempty"`
// An unordered set of paths that prompted the change action to be
// "replace" rather than "update". Empty for any action other than
// "replace".
@ -364,7 +364,7 @@ func (m *ResourceInstanceChange) Reset() { *m = ResourceInstanceChange{}
func (m *ResourceInstanceChange) String() string { return proto.CompactTextString(m) }
func (*ResourceInstanceChange) ProtoMessage() {}
func (*ResourceInstanceChange) Descriptor() ([]byte, []int) {
return fileDescriptor_planfile_99d56bc18c7b6e8d, []int{3}
return fileDescriptor_planfile_2f8b9a0ae177578e, []int{3}
}
func (m *ResourceInstanceChange) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ResourceInstanceChange.Unmarshal(m, b)
@ -468,7 +468,7 @@ func (m *ResourceInstanceChange) GetChange() *Change {
return nil
}
func (m *ResourceInstanceChange) GetPrivate() *DynamicValue {
func (m *ResourceInstanceChange) GetPrivate() []byte {
if m != nil {
return m.Private
}
@ -566,7 +566,7 @@ func (m *OutputChange) Reset() { *m = OutputChange{} }
func (m *OutputChange) String() string { return proto.CompactTextString(m) }
func (*OutputChange) ProtoMessage() {}
func (*OutputChange) Descriptor() ([]byte, []int) {
return fileDescriptor_planfile_99d56bc18c7b6e8d, []int{4}
return fileDescriptor_planfile_2f8b9a0ae177578e, []int{4}
}
func (m *OutputChange) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_OutputChange.Unmarshal(m, b)
@ -630,7 +630,7 @@ func (m *DynamicValue) Reset() { *m = DynamicValue{} }
func (m *DynamicValue) String() string { return proto.CompactTextString(m) }
func (*DynamicValue) ProtoMessage() {}
func (*DynamicValue) Descriptor() ([]byte, []int) {
return fileDescriptor_planfile_99d56bc18c7b6e8d, []int{5}
return fileDescriptor_planfile_2f8b9a0ae177578e, []int{5}
}
func (m *DynamicValue) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DynamicValue.Unmarshal(m, b)
@ -676,7 +676,7 @@ func (m *Hash) Reset() { *m = Hash{} }
func (m *Hash) String() string { return proto.CompactTextString(m) }
func (*Hash) ProtoMessage() {}
func (*Hash) Descriptor() ([]byte, []int) {
return fileDescriptor_planfile_99d56bc18c7b6e8d, []int{6}
return fileDescriptor_planfile_2f8b9a0ae177578e, []int{6}
}
func (m *Hash) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Hash.Unmarshal(m, b)
@ -717,7 +717,7 @@ func (m *Path) Reset() { *m = Path{} }
func (m *Path) String() string { return proto.CompactTextString(m) }
func (*Path) ProtoMessage() {}
func (*Path) Descriptor() ([]byte, []int) {
return fileDescriptor_planfile_99d56bc18c7b6e8d, []int{7}
return fileDescriptor_planfile_2f8b9a0ae177578e, []int{7}
}
func (m *Path) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Path.Unmarshal(m, b)
@ -758,7 +758,7 @@ func (m *Path_Step) Reset() { *m = Path_Step{} }
func (m *Path_Step) String() string { return proto.CompactTextString(m) }
func (*Path_Step) ProtoMessage() {}
func (*Path_Step) Descriptor() ([]byte, []int) {
return fileDescriptor_planfile_99d56bc18c7b6e8d, []int{7, 0}
return fileDescriptor_planfile_2f8b9a0ae177578e, []int{7, 0}
}
func (m *Path_Step) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Path_Step.Unmarshal(m, b)
@ -899,64 +899,64 @@ func init() {
proto.RegisterEnum("tfplan.ResourceInstanceChange_ResourceMode", ResourceInstanceChange_ResourceMode_name, ResourceInstanceChange_ResourceMode_value)
}
func init() { proto.RegisterFile("planfile.proto", fileDescriptor_planfile_99d56bc18c7b6e8d) }
func init() { proto.RegisterFile("planfile.proto", fileDescriptor_planfile_2f8b9a0ae177578e) }
var fileDescriptor_planfile_99d56bc18c7b6e8d = []byte{
// 883 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x55, 0x6d, 0x6f, 0xe3, 0x44,
0x10, 0x8e, 0x63, 0xe7, 0x6d, 0x92, 0xba, 0xbe, 0x05, 0x9d, 0xac, 0x72, 0x3a, 0x82, 0x25, 0xb8,
0x70, 0x87, 0x52, 0x29, 0x08, 0xca, 0xc1, 0x07, 0x94, 0xb6, 0x91, 0x5a, 0xdd, 0x4b, 0xa3, 0xa5,
0xf4, 0x03, 0x1f, 0x88, 0x36, 0xf6, 0x34, 0xb1, 0xea, 0xd8, 0x66, 0x77, 0x13, 0x94, 0x1f, 0xc4,
0xdf, 0x81, 0xbf, 0x84, 0x76, 0xd7, 0x76, 0x52, 0xa9, 0x97, 0x4f, 0xf1, 0x3c, 0x33, 0xfb, 0xec,
0xcc, 0x33, 0xb3, 0x13, 0x70, 0xf3, 0x84, 0xa5, 0xf7, 0x71, 0x82, 0xc3, 0x9c, 0x67, 0x32, 0x23,
0x4d, 0x79, 0xaf, 0x90, 0xe0, 0x5f, 0x07, 0x9c, 0x69, 0xc2, 0x52, 0xe2, 0x43, 0x6b, 0x83, 0x5c,
0xc4, 0x59, 0xea, 0x5b, 0x7d, 0x6b, 0xe0, 0xd0, 0xd2, 0x24, 0x6f, 0xa1, 0xb3, 0x61, 0x3c, 0x66,
0xf3, 0x04, 0x85, 0x5f, 0xef, 0xdb, 0x83, 0xee, 0xe8, 0x8b, 0xa1, 0x39, 0x3e, 0x54, 0x47, 0x87,
0x77, 0xa5, 0x77, 0x92, 0x4a, 0xbe, 0xa5, 0xbb, 0x68, 0x72, 0x0d, 0x1e, 0x47, 0x91, 0xad, 0x79,
0x88, 0xb3, 0x70, 0xc9, 0xd2, 0x05, 0x0a, 0xdf, 0xd6, 0x0c, 0x2f, 0x4b, 0x06, 0x5a, 0xf8, 0xaf,
0x53, 0x21, 0x59, 0x1a, 0xe2, 0x85, 0x0e, 0xa3, 0xc7, 0xe5, 0x39, 0x63, 0x0b, 0xf2, 0x0b, 0xb8,
0xd9, 0x5a, 0xe6, 0x6b, 0x59, 0x11, 0x39, 0x9a, 0xe8, 0xf3, 0x92, 0xe8, 0x46, 0x7b, 0x8b, 0xe3,
0x47, 0xd9, 0x9e, 0x25, 0xc8, 0x57, 0xd0, 0x93, 0x8c, 0x2f, 0x50, 0xce, 0x58, 0x14, 0x71, 0xe1,
0x37, 0xfa, 0xf6, 0xa0, 0x43, 0xbb, 0x06, 0x1b, 0x2b, 0x88, 0xbc, 0x81, 0x67, 0x12, 0x39, 0x67,
0xf7, 0x19, 0x5f, 0xcd, 0x4a, 0x25, 0xdc, 0xbe, 0x35, 0xe8, 0x50, 0xaf, 0x72, 0xdc, 0x15, 0x92,
0x5c, 0xc3, 0x71, 0xce, 0xb3, 0x4d, 0x1c, 0x21, 0x9f, 0x2d, 0x99, 0x58, 0xa2, 0xf0, 0x8f, 0x75,
0x36, 0xfd, 0x47, 0xc2, 0x4c, 0x8b, 0x98, 0x2b, 0x1d, 0x62, 0xd4, 0x71, 0xf3, 0x47, 0x20, 0xf9,
0x16, 0x5a, 0x73, 0x16, 0x3e, 0x60, 0x1a, 0xf9, 0x47, 0x7d, 0x6b, 0xd0, 0x1d, 0x1d, 0x97, 0x14,
0xe7, 0x06, 0xa6, 0xa5, 0xff, 0x84, 0x82, 0xfb, 0x58, 0x6a, 0xe2, 0x81, 0xfd, 0x80, 0x5b, 0xdd,
0xb0, 0x0e, 0x55, 0x9f, 0xe4, 0x35, 0x34, 0x36, 0x2c, 0x59, 0xa3, 0x5f, 0xd7, 0x64, 0x95, 0x3a,
0x97, 0xdb, 0x94, 0xad, 0xe2, 0xf0, 0x4e, 0xf9, 0xa8, 0x09, 0xf9, 0xb9, 0xfe, 0x93, 0x75, 0x72,
0x03, 0x9f, 0x3d, 0x91, 0xe5, 0x13, 0xc4, 0xc1, 0x63, 0xe2, 0x5e, 0x49, 0xac, 0x4e, 0xed, 0x11,
0x06, 0x31, 0xb4, 0x8a, 0xc4, 0x09, 0x01, 0x47, 0x6e, 0x73, 0x2c, 0x58, 0xf4, 0x37, 0xf9, 0x0e,
0x9a, 0x61, 0x96, 0xde, 0xc7, 0x8b, 0x83, 0x09, 0x16, 0x31, 0xe4, 0x05, 0x74, 0xfe, 0xce, 0xf8,
0x83, 0xc8, 0x59, 0x88, 0xbe, 0xad, 0x69, 0x76, 0x40, 0xf0, 0x27, 0x34, 0x4d, 0x83, 0xc9, 0x37,
0xd0, 0x64, 0xa1, 0x2c, 0x67, 0xd7, 0x1d, 0xb9, 0x25, 0xeb, 0x58, 0xa3, 0xb4, 0xf0, 0xaa, 0xdb,
0x75, 0xa6, 0xe5, 0x1c, 0x7f, 0xe2, 0x76, 0x13, 0x13, 0xfc, 0x67, 0xc3, 0xf3, 0xa7, 0xc7, 0x93,
0x7c, 0x09, 0xdd, 0x55, 0x16, 0xad, 0x13, 0x9c, 0xe5, 0x4c, 0x2e, 0x8b, 0x0a, 0xc1, 0x40, 0x53,
0x26, 0x97, 0xe4, 0x57, 0x70, 0x56, 0x59, 0x64, 0xd4, 0x72, 0x47, 0x6f, 0x0e, 0x4f, 0x7b, 0x05,
0x7f, 0xc8, 0x22, 0xa4, 0xfa, 0x60, 0x25, 0x9e, 0xbd, 0x27, 0x1e, 0x01, 0x27, 0x65, 0x2b, 0xf4,
0x1d, 0x83, 0xa9, 0x6f, 0x42, 0xc0, 0x16, 0x92, 0xfb, 0x0d, 0x05, 0x5d, 0xd5, 0xa8, 0x32, 0x14,
0x16, 0xa7, 0xd2, 0x6f, 0xf6, 0xad, 0x81, 0xad, 0xb0, 0x38, 0x95, 0x2a, 0xe3, 0x08, 0xf3, 0x4c,
0x60, 0x34, 0x53, 0x9d, 0x6d, 0x99, 0x8c, 0x0b, 0xe8, 0x1d, 0x6e, 0xc9, 0x09, 0xb4, 0xcb, 0xd1,
0xf4, 0xdb, 0xda, 0x5b, 0xd9, 0x4a, 0x5f, 0xf3, 0xea, 0xfc, 0x8e, 0xee, 0x5a, 0xa5, 0x6f, 0xf1,
0xdc, 0x0a, 0x2f, 0x19, 0x42, 0x2b, 0xe7, 0xf1, 0x86, 0x49, 0xf4, 0xe1, 0x40, 0x7b, 0xcb, 0x20,
0x72, 0xa6, 0xf6, 0xc3, 0x5f, 0xeb, 0x98, 0x63, 0x34, 0xe3, 0x98, 0x27, 0xaa, 0xcd, 0x5d, 0xdd,
0x99, 0x6a, 0xbe, 0x94, 0x9a, 0x6a, 0x1b, 0x98, 0x28, 0x6a, 0x82, 0x82, 0xaf, 0xa1, 0xb7, 0xaf,
0x19, 0xe9, 0x42, 0x6b, 0xc5, 0x52, 0xb6, 0xc0, 0xc8, 0xab, 0x91, 0x36, 0x38, 0x11, 0x93, 0xcc,
0xb3, 0xce, 0x5d, 0xe8, 0xc5, 0x85, 0xd2, 0xaa, 0xea, 0x60, 0x09, 0xbd, 0xfd, 0x35, 0x51, 0x09,
0x6a, 0xed, 0x09, 0xba, 0xab, 0xb5, 0x7e, 0xb0, 0xd6, 0x17, 0xd0, 0x11, 0x98, 0x8a, 0x58, 0xc6,
0x1b, 0xd3, 0xa5, 0x36, 0xdd, 0x01, 0xc1, 0x00, 0x7a, 0xfb, 0x25, 0xab, 0xf5, 0xba, 0x12, 0x8b,
0x9c, 0x85, 0x0f, 0xfa, 0xb2, 0x1e, 0x2d, 0xcd, 0xe0, 0x25, 0x38, 0xea, 0x0d, 0x91, 0xe7, 0xd0,
0x14, 0x4b, 0x36, 0xfa, 0xe1, 0xc7, 0x22, 0xa0, 0xb0, 0x82, 0x7f, 0x2c, 0x70, 0xf4, 0x48, 0xbd,
0x82, 0x86, 0x90, 0x98, 0x0b, 0xdf, 0xd2, 0x0a, 0x3d, 0xdb, 0x57, 0x68, 0xf8, 0x9b, 0xc4, 0x9c,
0x1a, 0xff, 0x89, 0x04, 0x47, 0x99, 0xe4, 0x15, 0xb8, 0x4c, 0x4a, 0x1e, 0xcf, 0xd7, 0x12, 0x67,
0xbb, 0x3a, 0xaf, 0x6a, 0xf4, 0xa8, 0xc2, 0x3f, 0xaa, 0x92, 0xcf, 0xa0, 0x8b, 0x09, 0xae, 0x30,
0x95, 0x7a, 0x36, 0x0e, 0xbc, 0xcc, 0xab, 0x1a, 0x85, 0x22, 0xf4, 0x1d, 0x6e, 0xcf, 0x01, 0xda,
0x02, 0x13, 0x0c, 0x65, 0xc6, 0x5f, 0x7f, 0x80, 0xa6, 0x79, 0x6d, 0x4a, 0xff, 0x8f, 0x37, 0x37,
0x53, 0xaf, 0x46, 0x00, 0x9a, 0x17, 0x74, 0x32, 0xbe, 0x9d, 0x78, 0x96, 0x42, 0xe9, 0x64, 0x7c,
0xe9, 0xd5, 0x15, 0xfa, 0xfb, 0xf4, 0x52, 0xa1, 0xb6, 0x6a, 0x1c, 0x9d, 0x4c, 0xdf, 0x8f, 0x2f,
0x26, 0x9e, 0xa3, 0x1c, 0x97, 0x93, 0xf7, 0x93, 0xdb, 0x89, 0xd7, 0x38, 0x7f, 0xfb, 0xc7, 0xd9,
0x22, 0x96, 0xcb, 0xf5, 0x7c, 0x18, 0x66, 0xab, 0x53, 0xb5, 0x64, 0xe3, 0x30, 0xe3, 0xf9, 0x69,
0xb5, 0x8b, 0x4f, 0x55, 0x72, 0xe2, 0x34, 0x4e, 0x25, 0xf2, 0x94, 0x25, 0xda, 0xd4, 0xff, 0x6d,
0xf3, 0xa6, 0xfe, 0xf9, 0xfe, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3c, 0x04, 0xa1, 0x9e, 0xf4,
0x06, 0x00, 0x00,
var fileDescriptor_planfile_2f8b9a0ae177578e = []byte{
// 885 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x55, 0xdb, 0x6e, 0xe3, 0x36,
0x13, 0xb6, 0x2c, 0xf9, 0x34, 0x76, 0x14, 0x2d, 0xff, 0x1f, 0x0b, 0x21, 0x5d, 0x6c, 0x5d, 0x01,
0xed, 0xba, 0xbb, 0x85, 0x03, 0xb8, 0x68, 0xd3, 0x6d, 0x2f, 0x0a, 0x27, 0x31, 0x90, 0x60, 0x0f,
0x31, 0xd8, 0x6d, 0x2e, 0x7a, 0x51, 0x83, 0x96, 0x26, 0xb6, 0x10, 0x9d, 0x4a, 0xd2, 0x2e, 0xfc,
0x40, 0x7d, 0x88, 0xbe, 0x44, 0x9f, 0xa9, 0x20, 0x29, 0xc9, 0x0e, 0x90, 0xe6, 0xca, 0x9a, 0x6f,
0x86, 0x1f, 0x67, 0xbe, 0x99, 0xa1, 0xc1, 0x2d, 0x12, 0x96, 0xdd, 0xc5, 0x09, 0x8e, 0x0b, 0x9e,
0xcb, 0x9c, 0xb4, 0xe5, 0x9d, 0x42, 0x82, 0x7f, 0x1c, 0x70, 0xe6, 0x09, 0xcb, 0x88, 0x0f, 0x9d,
0x2d, 0x72, 0x11, 0xe7, 0x99, 0x6f, 0x0d, 0xad, 0x91, 0x43, 0x2b, 0x93, 0xbc, 0x85, 0xde, 0x96,
0xf1, 0x98, 0x2d, 0x13, 0x14, 0x7e, 0x73, 0x68, 0x8f, 0xfa, 0x93, 0xcf, 0xc6, 0xe6, 0xf8, 0x58,
0x1d, 0x1d, 0xdf, 0x56, 0xde, 0x59, 0x26, 0xf9, 0x8e, 0xee, 0xa3, 0xc9, 0x35, 0x78, 0x1c, 0x45,
0xbe, 0xe1, 0x21, 0x2e, 0xc2, 0x35, 0xcb, 0x56, 0x28, 0x7c, 0x5b, 0x33, 0xbc, 0xac, 0x18, 0x68,
0xe9, 0xbf, 0xce, 0x84, 0x64, 0x59, 0x88, 0x17, 0x3a, 0x8c, 0x1e, 0x57, 0xe7, 0x8c, 0x2d, 0xc8,
0x4f, 0xe0, 0xe6, 0x1b, 0x59, 0x6c, 0x64, 0x4d, 0xe4, 0x68, 0xa2, 0xff, 0x57, 0x44, 0x37, 0xda,
0x5b, 0x1e, 0x3f, 0xca, 0x0f, 0x2c, 0x41, 0xbe, 0x80, 0x81, 0x64, 0x7c, 0x85, 0x72, 0xc1, 0xa2,
0x88, 0x0b, 0xbf, 0x35, 0xb4, 0x47, 0x3d, 0xda, 0x37, 0xd8, 0x54, 0x41, 0xe4, 0x0d, 0x3c, 0x93,
0xc8, 0x39, 0xbb, 0xcb, 0x79, 0xba, 0xa8, 0x94, 0x70, 0x87, 0xd6, 0xa8, 0x47, 0xbd, 0xda, 0x71,
0x5b, 0x4a, 0x72, 0x0d, 0xc7, 0x05, 0xcf, 0xb7, 0x71, 0x84, 0x7c, 0xb1, 0x66, 0x62, 0x8d, 0xc2,
0x3f, 0xd6, 0xd9, 0x0c, 0x1f, 0x08, 0x33, 0x2f, 0x63, 0xae, 0x74, 0x88, 0x51, 0xc7, 0x2d, 0x1e,
0x80, 0xe4, 0x6b, 0xe8, 0x2c, 0x59, 0x78, 0x8f, 0x59, 0xe4, 0x1f, 0x0d, 0xad, 0x51, 0x7f, 0x72,
0x5c, 0x51, 0x9c, 0x1b, 0x98, 0x56, 0xfe, 0x13, 0x0a, 0xee, 0x43, 0xa9, 0x89, 0x07, 0xf6, 0x3d,
0xee, 0x74, 0xc3, 0x7a, 0x54, 0x7d, 0x92, 0xd7, 0xd0, 0xda, 0xb2, 0x64, 0x83, 0x7e, 0x53, 0x93,
0xd5, 0xea, 0x5c, 0xee, 0x32, 0x96, 0xc6, 0xe1, 0xad, 0xf2, 0x51, 0x13, 0xf2, 0x63, 0xf3, 0x07,
0xeb, 0xe4, 0x06, 0xfe, 0xf7, 0x48, 0x96, 0x8f, 0x10, 0x07, 0x0f, 0x89, 0x07, 0x15, 0xb1, 0x3a,
0x75, 0x40, 0x18, 0xc4, 0xd0, 0x29, 0x13, 0x27, 0x04, 0x1c, 0xb9, 0x2b, 0xb0, 0x64, 0xd1, 0xdf,
0xe4, 0x1b, 0x68, 0x87, 0x79, 0x76, 0x17, 0xaf, 0x9e, 0x4c, 0xb0, 0x8c, 0x21, 0x2f, 0xa0, 0xf7,
0x67, 0xce, 0xef, 0x45, 0xc1, 0x42, 0xf4, 0x6d, 0x4d, 0xb3, 0x07, 0x82, 0xdf, 0xa1, 0x6d, 0x1a,
0x4c, 0xbe, 0x82, 0x36, 0x0b, 0x65, 0x35, 0xbb, 0xee, 0xc4, 0xad, 0x58, 0xa7, 0x1a, 0xa5, 0xa5,
0x57, 0xdd, 0xae, 0x33, 0xad, 0xe6, 0xf8, 0x3f, 0x6e, 0x37, 0x31, 0xc1, 0xdf, 0x36, 0x3c, 0x7f,
0x7c, 0x3c, 0xc9, 0xe7, 0xd0, 0x4f, 0xf3, 0x68, 0x93, 0xe0, 0xa2, 0x60, 0x72, 0x5d, 0x56, 0x08,
0x06, 0x9a, 0x33, 0xb9, 0x26, 0x3f, 0x83, 0x93, 0xe6, 0x91, 0x51, 0xcb, 0x9d, 0xbc, 0x79, 0x7a,
0xda, 0x6b, 0xf8, 0x43, 0x1e, 0x21, 0xd5, 0x07, 0x6b, 0xf1, 0xec, 0x03, 0xf1, 0x08, 0x38, 0x19,
0x4b, 0xd1, 0x77, 0x0c, 0xa6, 0xbe, 0x09, 0x01, 0x5b, 0x48, 0xee, 0xb7, 0x14, 0x74, 0xd5, 0xa0,
0xca, 0x50, 0x58, 0x9c, 0x49, 0xbf, 0x3d, 0xb4, 0x46, 0xb6, 0xc2, 0xe2, 0x4c, 0xaa, 0x8c, 0x23,
0x2c, 0x72, 0x81, 0xd1, 0x42, 0x75, 0xb6, 0x63, 0x32, 0x2e, 0xa1, 0x77, 0xb8, 0x23, 0x27, 0xd0,
0xad, 0x46, 0xd3, 0xef, 0x6a, 0x6f, 0x6d, 0x2b, 0x7d, 0xcd, 0xd6, 0xf9, 0x3d, 0xdd, 0xb5, 0x5a,
0xdf, 0x72, 0xdd, 0x4a, 0xaf, 0x7a, 0x44, 0x0a, 0x1e, 0x6f, 0x99, 0x44, 0x1f, 0x86, 0xd6, 0x68,
0x40, 0x2b, 0x93, 0x9c, 0xa9, 0x97, 0xe0, 0x8f, 0x4d, 0xcc, 0x31, 0x5a, 0x70, 0x2c, 0x12, 0xd5,
0xd0, 0xbe, 0xee, 0x41, 0x3d, 0x49, 0x4a, 0x37, 0xb5, 0xf7, 0x26, 0x8a, 0x9a, 0xa0, 0xe0, 0x4b,
0x18, 0x1c, 0xaa, 0x43, 0xfa, 0xd0, 0x49, 0x59, 0xc6, 0x56, 0x18, 0x79, 0x0d, 0xd2, 0x05, 0x27,
0x62, 0x92, 0x79, 0xd6, 0xb9, 0x0b, 0x83, 0xb8, 0xd4, 0x54, 0xd5, 0x17, 0xac, 0x61, 0x70, 0xf8,
0x20, 0xd4, 0xd2, 0x59, 0x07, 0xd2, 0xed, 0xab, 0x6a, 0x3e, 0x59, 0xd5, 0x0b, 0xe8, 0x09, 0xcc,
0x44, 0x2c, 0xe3, 0xad, 0xe9, 0x47, 0x97, 0xee, 0x81, 0x60, 0x04, 0x83, 0xc3, 0xe9, 0x51, 0x1a,
0xa4, 0x62, 0x55, 0xb0, 0xf0, 0x5e, 0x5f, 0x36, 0xa0, 0x95, 0x19, 0xbc, 0x04, 0x47, 0x6d, 0x0b,
0x79, 0x0e, 0x6d, 0xb1, 0x66, 0x93, 0xef, 0xbe, 0x2f, 0x03, 0x4a, 0x2b, 0xf8, 0xcb, 0x02, 0x47,
0x0f, 0xcf, 0x2b, 0x68, 0x09, 0x89, 0x85, 0xf0, 0x2d, 0xad, 0xd0, 0xb3, 0x43, 0x85, 0xc6, 0xbf,
0x48, 0x2c, 0xa8, 0xf1, 0x9f, 0x48, 0x70, 0x94, 0x49, 0x5e, 0x81, 0xcb, 0xa4, 0xe4, 0xf1, 0x72,
0x23, 0x71, 0xb1, 0xaf, 0xf3, 0xaa, 0x41, 0x8f, 0x6a, 0xfc, 0xa3, 0x2a, 0xf9, 0x0c, 0xfa, 0x98,
0x60, 0x8a, 0x99, 0xd4, 0x53, 0xf0, 0xc4, 0x0e, 0x5e, 0x35, 0x28, 0x94, 0xa1, 0xef, 0x70, 0x77,
0x0e, 0xd0, 0x15, 0x98, 0x60, 0x28, 0x73, 0xfe, 0xfa, 0x03, 0xb4, 0xcd, 0x5e, 0x29, 0xfd, 0x3f,
0xde, 0xdc, 0xcc, 0xbd, 0x06, 0x01, 0x68, 0x5f, 0xd0, 0xd9, 0xf4, 0xd3, 0xcc, 0xb3, 0x14, 0x4a,
0x67, 0xd3, 0x4b, 0xaf, 0xa9, 0xd0, 0x5f, 0xe7, 0x97, 0x0a, 0xb5, 0x55, 0xe3, 0xe8, 0x6c, 0xfe,
0x7e, 0x7a, 0x31, 0xf3, 0x1c, 0xe5, 0xb8, 0x9c, 0xbd, 0x9f, 0x7d, 0x9a, 0x79, 0xad, 0xf3, 0xb7,
0xbf, 0x9d, 0xad, 0x62, 0xb9, 0xde, 0x2c, 0xc7, 0x61, 0x9e, 0x9e, 0xaa, 0xe7, 0x34, 0x0e, 0x73,
0x5e, 0x9c, 0xd6, 0xaf, 0xee, 0xa9, 0x4a, 0x4e, 0x9c, 0xc6, 0x99, 0x44, 0x9e, 0xb1, 0x44, 0x9b,
0xfa, 0x5f, 0x6c, 0xd9, 0xd6, 0x3f, 0xdf, 0xfe, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x9e, 0x41, 0x65,
0x5b, 0xde, 0x06, 0x00, 0x00,
}

View File

@ -131,11 +131,11 @@ message ResourceInstanceChange {
// but consumers must accept and discard them to allow for future expansion.
Change change = 9;
// msgpack representation of an arbitrary object value provided by
// the resource provider as additional context for the change. Must
// be considered an opaque value for any consumer other than the
// provider that generated it.
DynamicValue private = 10;
// raw blob value provided by the provider as additional context for the
// change. Must be considered an opaque value for any consumer other than
// the provider that generated it, and will be returned verbatim to the
// provider during the subsequent apply operation.
bytes private = 10;
// An unordered set of paths that prompted the change action to be
// "replace" rather than "update". Empty for any action other than

View File

@ -192,6 +192,10 @@ func resourceChangeFromTfplan(rawChange *planproto.ResourceInstanceChange) (*pla
ret.ChangeSrc = *change
if len(rawChange.Private) != 0 {
ret.Private = rawChange.Private
}
return ret, nil
}
@ -382,6 +386,10 @@ func resourceChangeToTfplan(change *plans.ResourceInstanceChangeSrc) (*planproto
}
ret.Change = valChange
if len(change.Private) > 0 {
ret.Private = change.Private
}
return ret, nil
}