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

View File

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

View File

@ -82,6 +82,14 @@ func readTfplan(r io.Reader) (*plans.Plan, error) {
plan.Changes.Resources = append(plan.Changes.Resources, change) 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 { for name, rawHashObj := range rawPlan.ProviderHashes {
if len(rawHashObj.Sha256) == 0 { if len(rawHashObj.Sha256) == 0 {
return nil, fmt.Errorf("no SHA256 hash for provider %q plugin", name) 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) rawPlan.ResourceChanges = append(rawPlan.ResourceChanges, rawRC)
} }
for _, targetAddr := range plan.TargetAddrs {
rawPlan.TargetAddrs = append(rawPlan.TargetAddrs, targetAddr.String())
}
for name, hash := range plan.ProviderSHA256s { for name, hash := range plan.ProviderSHA256s {
rawPlan.ProviderHashes[name] = &planproto.Hash{ rawPlan.ProviderHashes[name] = &planproto.Hash{
Sha256: 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{ ProviderSHA256s: map[string][]byte{
"test": []byte{ "test": []byte{
0xba, 0x5e, 0x1e, 0x55, 0xb0, 0x1d, 0xfa, 0xce, 0xba, 0x5e, 0x1e, 0x55, 0xb0, 0x1d, 0xfa, 0xce,