plans: Include target addresses in the plan

We shouldn't really need these because the plan is already filtered to
include diffs only for targeted resources, but we currently rely on this
to filter out non-resource items from the diff, and so we'll retain it
for now to avoid reworking how the apply-time graph builder works.
This commit is contained in:
Martin Atkins 2018-07-10 14:34:32 -07:00
parent d9dfd135c6
commit 074db88636
5 changed files with 106 additions and 68 deletions

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_f722ed393ded62c3, []int{0}
return fileDescriptor_planfile_99d56bc18c7b6e8d, []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_f722ed393ded62c3, []int{3, 0}
return fileDescriptor_planfile_99d56bc18c7b6e8d, []int{3, 0}
}
// Plan is the root message type for the tfplan file
@ -101,6 +101,10 @@ type Plan struct {
// outputs that are not changing, as context for detecting inconsistencies
// at apply time.
OutputChanges []*OutputChange `protobuf:"bytes,4,rep,name=output_changes,json=outputChanges,proto3" json:"output_changes,omitempty"`
// An unordered set of target addresses to include when applying. If no
// target addresses are present, the plan applies to the whole
// configuration.
TargetAddrs []string `protobuf:"bytes,5,rep,name=target_addrs,json=targetAddrs,proto3" json:"target_addrs,omitempty"`
// The version string for the Terraform binary that created this plan.
TerraformVersion string `protobuf:"bytes,14,opt,name=terraform_version,json=terraformVersion,proto3" json:"terraform_version,omitempty"`
// SHA256 digests of all of the provider plugin binaries that were used
@ -118,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_f722ed393ded62c3, []int{0}
return fileDescriptor_planfile_99d56bc18c7b6e8d, []int{0}
}
func (m *Plan) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Plan.Unmarshal(m, b)
@ -166,6 +170,13 @@ func (m *Plan) GetOutputChanges() []*OutputChange {
return nil
}
func (m *Plan) GetTargetAddrs() []string {
if m != nil {
return m.TargetAddrs
}
return nil
}
func (m *Plan) GetTerraformVersion() string {
if m != nil {
return m.TerraformVersion
@ -201,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_f722ed393ded62c3, []int{1}
return fileDescriptor_planfile_99d56bc18c7b6e8d, []int{1}
}
func (m *Backend) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Backend.Unmarshal(m, b)
@ -267,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_f722ed393ded62c3, []int{2}
return fileDescriptor_planfile_99d56bc18c7b6e8d, []int{2}
}
func (m *Change) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Change.Unmarshal(m, b)
@ -353,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_f722ed393ded62c3, []int{3}
return fileDescriptor_planfile_99d56bc18c7b6e8d, []int{3}
}
func (m *ResourceInstanceChange) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ResourceInstanceChange.Unmarshal(m, b)
@ -555,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_f722ed393ded62c3, []int{4}
return fileDescriptor_planfile_99d56bc18c7b6e8d, []int{4}
}
func (m *OutputChange) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_OutputChange.Unmarshal(m, b)
@ -619,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_f722ed393ded62c3, []int{5}
return fileDescriptor_planfile_99d56bc18c7b6e8d, []int{5}
}
func (m *DynamicValue) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DynamicValue.Unmarshal(m, b)
@ -665,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_f722ed393ded62c3, []int{6}
return fileDescriptor_planfile_99d56bc18c7b6e8d, []int{6}
}
func (m *Hash) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Hash.Unmarshal(m, b)
@ -706,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_f722ed393ded62c3, []int{7}
return fileDescriptor_planfile_99d56bc18c7b6e8d, []int{7}
}
func (m *Path) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Path.Unmarshal(m, b)
@ -747,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_f722ed393ded62c3, []int{7, 0}
return fileDescriptor_planfile_99d56bc18c7b6e8d, []int{7, 0}
}
func (m *Path_Step) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Path_Step.Unmarshal(m, b)
@ -888,62 +899,64 @@ func init() {
proto.RegisterEnum("tfplan.ResourceInstanceChange_ResourceMode", ResourceInstanceChange_ResourceMode_name, ResourceInstanceChange_ResourceMode_value)
}
func init() { proto.RegisterFile("planfile.proto", fileDescriptor_planfile_f722ed393ded62c3) }
func init() { proto.RegisterFile("planfile.proto", fileDescriptor_planfile_99d56bc18c7b6e8d) }
var fileDescriptor_planfile_f722ed393ded62c3 = []byte{
// 862 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x55, 0xdb, 0x6e, 0xe3, 0x36,
0x10, 0x8d, 0x6c, 0xc5, 0x97, 0xb1, 0xa3, 0x68, 0xd9, 0x62, 0x21, 0xa4, 0x8b, 0xad, 0x21, 0xa0,
0x5d, 0x77, 0xb7, 0x70, 0x00, 0x17, 0x6d, 0xba, 0xed, 0x43, 0x91, 0x8b, 0x81, 0x04, 0x7b, 0x89,
0xc1, 0x6e, 0xf3, 0xd0, 0x87, 0x1a, 0xb4, 0x34, 0xb1, 0x89, 0x48, 0x94, 0x4a, 0xd2, 0x2e, 0xfc,
0x41, 0x7d, 0xea, 0xc7, 0xf4, 0x97, 0x0a, 0x52, 0x17, 0x3b, 0x40, 0xea, 0x27, 0x6b, 0xce, 0x0c,
0x0f, 0x67, 0xce, 0xcc, 0xd0, 0xe0, 0xe5, 0x09, 0x13, 0xf7, 0x3c, 0xc1, 0x51, 0x2e, 0x33, 0x9d,
0x91, 0x96, 0xbe, 0x37, 0x48, 0xf8, 0x8f, 0x0b, 0xee, 0x34, 0x61, 0x82, 0x04, 0xd0, 0x5e, 0xa3,
0x54, 0x3c, 0x13, 0x81, 0x33, 0x70, 0x86, 0x2e, 0xad, 0x4c, 0xf2, 0x16, 0xba, 0x6b, 0x26, 0x39,
0x9b, 0x27, 0xa8, 0x82, 0xc6, 0xa0, 0x39, 0xec, 0x8d, 0xbf, 0x18, 0x15, 0xc7, 0x47, 0xe6, 0xe8,
0xe8, 0xae, 0xf2, 0x4e, 0x84, 0x96, 0x1b, 0xba, 0x8d, 0x26, 0x37, 0xe0, 0x4b, 0x54, 0xd9, 0x4a,
0x46, 0x38, 0x8b, 0x96, 0x4c, 0x2c, 0x50, 0x05, 0x4d, 0xcb, 0xf0, 0xb2, 0x62, 0xa0, 0xa5, 0xff,
0x46, 0x28, 0xcd, 0x44, 0x84, 0x97, 0x36, 0x8c, 0x1e, 0x57, 0xe7, 0x0a, 0x5b, 0x91, 0x9f, 0xc1,
0xcb, 0x56, 0x3a, 0x5f, 0xe9, 0x9a, 0xc8, 0xb5, 0x44, 0x9f, 0x57, 0x44, 0xb7, 0xd6, 0x5b, 0x1e,
0x3f, 0xca, 0x76, 0x2c, 0x45, 0xde, 0xc0, 0x33, 0x8d, 0x52, 0xb2, 0xfb, 0x4c, 0xa6, 0xb3, 0xaa,
0x4c, 0x6f, 0xe0, 0x0c, 0xbb, 0xd4, 0xaf, 0x1d, 0x77, 0x65, 0xbd, 0x37, 0x70, 0x9c, 0xcb, 0x6c,
0xcd, 0x63, 0x94, 0xb3, 0x25, 0x53, 0x4b, 0x54, 0xc1, 0xb1, 0xbd, 0x6a, 0xf0, 0xa8, 0xea, 0x69,
0x19, 0x73, 0x6d, 0x43, 0x8a, 0xd2, 0xbd, 0xfc, 0x11, 0x48, 0xbe, 0x81, 0xf6, 0x9c, 0x45, 0x0f,
0x28, 0xe2, 0xe0, 0x68, 0xe0, 0x0c, 0x7b, 0xe3, 0xe3, 0x8a, 0xe2, 0xa2, 0x80, 0x69, 0xe5, 0x3f,
0xa1, 0xe0, 0x3d, 0xd6, 0x91, 0xf8, 0xd0, 0x7c, 0xc0, 0x8d, 0xed, 0x46, 0x97, 0x9a, 0x4f, 0xf2,
0x1a, 0x0e, 0xd7, 0x2c, 0x59, 0x61, 0xd0, 0xb0, 0x64, 0x75, 0xe9, 0x57, 0x1b, 0xc1, 0x52, 0x1e,
0xdd, 0x19, 0x1f, 0x2d, 0x42, 0x7e, 0x6a, 0xfc, 0xe8, 0x9c, 0xdc, 0xc2, 0x67, 0x4f, 0x64, 0xf9,
0x04, 0x71, 0xf8, 0x98, 0xb8, 0x5f, 0x11, 0x9b, 0x53, 0x3b, 0x84, 0x21, 0x87, 0x76, 0x99, 0x38,
0x21, 0xe0, 0xea, 0x4d, 0x8e, 0x25, 0x8b, 0xfd, 0x26, 0xdf, 0x42, 0x2b, 0xca, 0xc4, 0x3d, 0x5f,
0xec, 0x4d, 0xb0, 0x8c, 0x21, 0x2f, 0xa0, 0xfb, 0x57, 0x26, 0x1f, 0x54, 0xce, 0x22, 0x0c, 0x9a,
0x96, 0x66, 0x0b, 0x84, 0x7f, 0x40, 0xab, 0xe8, 0x1e, 0xf9, 0x1a, 0x5a, 0x2c, 0xd2, 0xd5, 0x60,
0x7a, 0x63, 0xaf, 0x62, 0x3d, 0xb7, 0x28, 0x2d, 0xbd, 0xe6, 0x76, 0x9b, 0x69, 0x35, 0xa4, 0xff,
0x73, 0x7b, 0x11, 0x13, 0xfe, 0xdb, 0x84, 0xe7, 0x4f, 0xcf, 0x1e, 0xf9, 0x12, 0x7a, 0x69, 0x16,
0xaf, 0x12, 0x9c, 0xe5, 0x4c, 0x2f, 0xcb, 0x0a, 0xa1, 0x80, 0xa6, 0x4c, 0x2f, 0xc9, 0x2f, 0xe0,
0xa6, 0x59, 0x5c, 0xa8, 0xe5, 0x8d, 0xdf, 0xec, 0x1f, 0xe5, 0x1a, 0xfe, 0x90, 0xc5, 0x48, 0xed,
0xc1, 0x5a, 0xbc, 0xe6, 0x8e, 0x78, 0x04, 0x5c, 0xc1, 0x52, 0x0c, 0xdc, 0x02, 0x33, 0xdf, 0x84,
0x40, 0x53, 0x69, 0x19, 0x1c, 0x1a, 0xe8, 0xfa, 0x80, 0x1a, 0xc3, 0x60, 0x5c, 0xe8, 0xa0, 0x35,
0x70, 0x86, 0x4d, 0x83, 0x71, 0xa1, 0x4d, 0xc6, 0x31, 0xe6, 0x99, 0xc2, 0x78, 0x66, 0x3a, 0xdb,
0x2e, 0x32, 0x2e, 0xa1, 0x77, 0xb8, 0x21, 0x27, 0xd0, 0xa9, 0x46, 0x33, 0xe8, 0x58, 0x6f, 0x6d,
0x1b, 0x7d, 0x8b, 0x95, 0x0a, 0xba, 0xb6, 0x6b, 0xb5, 0xbe, 0xe5, 0x2e, 0x95, 0x5e, 0x32, 0x82,
0x76, 0x2e, 0xf9, 0x9a, 0x69, 0x0c, 0x60, 0x4f, 0x7b, 0xab, 0x20, 0x72, 0x66, 0x96, 0xff, 0xcf,
0x15, 0x97, 0x18, 0xcf, 0x24, 0xe6, 0x89, 0x69, 0x73, 0xcf, 0x76, 0xa6, 0x9e, 0x2f, 0xa3, 0xa6,
0x59, 0xf5, 0x22, 0x8a, 0x16, 0x41, 0xe1, 0x57, 0xd0, 0xdf, 0xd5, 0x8c, 0xf4, 0xa0, 0x9d, 0x32,
0xc1, 0x16, 0x18, 0xfb, 0x07, 0xa4, 0x03, 0x6e, 0xcc, 0x34, 0xf3, 0x9d, 0x0b, 0x0f, 0xfa, 0xbc,
0x54, 0xda, 0x54, 0x1d, 0x2e, 0xa1, 0xbf, 0xfb, 0x06, 0xd4, 0x82, 0x3a, 0x3b, 0x82, 0x6e, 0x6b,
0x6d, 0xec, 0xad, 0xf5, 0x05, 0x74, 0x15, 0x0a, 0xc5, 0x35, 0x5f, 0x17, 0x5d, 0xea, 0xd0, 0x2d,
0x10, 0x0e, 0xa1, 0xbf, 0x5b, 0xb2, 0x79, 0x3b, 0x53, 0xb5, 0xc8, 0x59, 0xf4, 0x60, 0x2f, 0xeb,
0xd3, 0xca, 0x0c, 0x5f, 0x82, 0x6b, 0x76, 0x88, 0x3c, 0x87, 0x96, 0x5a, 0xb2, 0xf1, 0xf7, 0x3f,
0x94, 0x01, 0xa5, 0x15, 0xfe, 0xed, 0x80, 0x6b, 0x47, 0xea, 0x15, 0x1c, 0x2a, 0x8d, 0xb9, 0x0a,
0x1c, 0xab, 0xd0, 0xb3, 0x5d, 0x85, 0x46, 0xbf, 0x6a, 0xcc, 0x69, 0xe1, 0x3f, 0xd1, 0xe0, 0x1a,
0x93, 0xbc, 0x02, 0x8f, 0x69, 0x2d, 0xf9, 0x7c, 0xa5, 0x71, 0xb6, 0xad, 0xf3, 0xfa, 0x80, 0x1e,
0xd5, 0xf8, 0x47, 0x53, 0xf2, 0x19, 0xf4, 0x30, 0xc1, 0x14, 0x85, 0xb6, 0xb3, 0xb1, 0x67, 0x33,
0xaf, 0x0f, 0x28, 0x94, 0xa1, 0xef, 0x70, 0x73, 0x01, 0xd0, 0x51, 0x98, 0x60, 0xa4, 0x33, 0xf9,
0xfa, 0x03, 0xb4, 0x8a, 0x6d, 0x33, 0xfa, 0x7f, 0xbc, 0xbd, 0x9d, 0xfa, 0x07, 0x04, 0xa0, 0x75,
0x49, 0x27, 0xe7, 0x9f, 0x26, 0xbe, 0x63, 0x50, 0x3a, 0x39, 0xbf, 0xf2, 0x1b, 0x06, 0xfd, 0x6d,
0x7a, 0x65, 0xd0, 0xa6, 0x69, 0x1c, 0x9d, 0x4c, 0xdf, 0x9f, 0x5f, 0x4e, 0x7c, 0xd7, 0x38, 0xae,
0x26, 0xef, 0x27, 0x9f, 0x26, 0xfe, 0xe1, 0xc5, 0xdb, 0xdf, 0xcf, 0x16, 0x5c, 0x2f, 0x57, 0xf3,
0x51, 0x94, 0xa5, 0xa7, 0xe6, 0x91, 0xe5, 0x51, 0x26, 0xf3, 0xd3, 0xfa, 0x2d, 0x3e, 0x35, 0xc9,
0xa9, 0x53, 0x2e, 0x34, 0x4a, 0xc1, 0x12, 0x6b, 0xda, 0x3f, 0xae, 0x79, 0xcb, 0xfe, 0x7c, 0xf7,
0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x95, 0x91, 0xf6, 0x8e, 0xd1, 0x06, 0x00, 0x00,
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,
}

View File

@ -32,6 +32,11 @@ message Plan {
// at apply time.
repeated OutputChange output_changes = 4;
// An unordered set of target addresses to include when applying. If no
// target addresses are present, the plan applies to the whole
// configuration.
repeated string target_addrs = 5;
// The version string for the Terraform binary that created this plan.
string terraform_version = 14;

View File

@ -20,6 +20,7 @@ import (
type Plan struct {
VariableValues map[string]DynamicValue
Changes *Changes
TargetAddrs []addrs.Targetable
ProviderSHA256s map[string][]byte
Backend Backend
}

View File

@ -82,6 +82,14 @@ func readTfplan(r io.Reader) (*plans.Plan, error) {
plan.Changes.Resources = append(plan.Changes.Resources, change)
}
for _, rawTargetAddr := range rawPlan.TargetAddrs {
target, diags := addrs.ParseTargetStr(rawTargetAddr)
if diags.HasErrors() {
return nil, fmt.Errorf("plan contains invalid target address %q: %s", target, diags.Err())
}
plan.TargetAddrs = append(plan.TargetAddrs, target.Subject)
}
for name, rawHashObj := range rawPlan.ProviderHashes {
if len(rawHashObj.Sha256) == 0 {
return nil, fmt.Errorf("no SHA256 hash for provider %q plugin", name)
@ -300,6 +308,10 @@ func writeTfplan(plan *plans.Plan, w io.Writer) error {
rawPlan.ResourceChanges = append(rawPlan.ResourceChanges, rawRC)
}
for _, targetAddr := range plan.TargetAddrs {
rawPlan.TargetAddrs = append(rawPlan.TargetAddrs, targetAddr.String())
}
for name, hash := range plan.ProviderSHA256s {
rawPlan.ProviderHashes[name] = &planproto.Hash{
Sha256: hash,

View File

@ -85,6 +85,13 @@ func TestTFPlanRoundTrip(t *testing.T) {
},
},
},
TargetAddrs: []addrs.Targetable{
addrs.Resource{
Mode: addrs.ManagedResourceMode,
Type: "test_thing",
Name: "woot",
}.Absolute(addrs.RootModuleInstance),
},
ProviderSHA256s: map[string][]byte{
"test": []byte{
0xba, 0x5e, 0x1e, 0x55, 0xb0, 0x1d, 0xfa, 0xce,