diff --git a/command/format/diff.go b/command/format/diff.go index cf8aea032..9d6a9f1de 100644 --- a/command/format/diff.go +++ b/command/format/diff.go @@ -278,19 +278,20 @@ func (p *blockBodyDiffPrinter) writeNestedBlockDiffs(name string, blockS *config // the objects within are computed. switch blockS.Nesting { - case configschema.NestingSingle: + case configschema.NestingSingle, configschema.NestingGroup: var action plans.Action + eqV := new.Equals(old) switch { case old.IsNull(): action = plans.Create case new.IsNull(): action = plans.Delete - case !new.IsKnown() || !old.IsKnown(): + case !new.IsWhollyKnown() || !old.IsWhollyKnown(): // "old" should actually always be known due to our contract // that old values must never be unknown, but we'll allow it // anyway to be robust. action = plans.Update - case !(new.Equals(old).True()): + case !eqV.IsKnown() || !eqV.True(): action = plans.Update } diff --git a/command/jsonconfig/expression.go b/command/jsonconfig/expression.go index 3e940ae9c..3288faf72 100644 --- a/command/jsonconfig/expression.go +++ b/command/jsonconfig/expression.go @@ -97,7 +97,7 @@ func marshalExpressions(body hcl.Body, schema *configschema.Block) expressions { } switch blockS.Nesting { - case configschema.NestingSingle: + case configschema.NestingSingle, configschema.NestingGroup: ret[typeName] = marshalExpressions(block.Body, &blockS.Block) case configschema.NestingList, configschema.NestingSet: if _, exists := ret[typeName]; !exists { diff --git a/command/jsonprovider/block.go b/command/jsonprovider/block.go index c12fc90b6..240724ca8 100644 --- a/command/jsonprovider/block.go +++ b/command/jsonprovider/block.go @@ -29,6 +29,8 @@ func marshalBlockTypes(nestedBlock *configschema.NestedBlock) *blockType { switch nestedBlock.Nesting { case configschema.NestingSingle: ret.NestingMode = "single" + case configschema.NestingGroup: + ret.NestingMode = "group" case configschema.NestingList: ret.NestingMode = "list" case configschema.NestingSet: diff --git a/config/hcl2shim/values.go b/config/hcl2shim/values.go index 2c5b2907e..daeb0b8e0 100644 --- a/config/hcl2shim/values.go +++ b/config/hcl2shim/values.go @@ -75,7 +75,7 @@ func ConfigValueFromHCL2Block(v cty.Value, schema *configschema.Block) map[strin switch blockS.Nesting { - case configschema.NestingSingle: + case configschema.NestingSingle, configschema.NestingGroup: ret[name] = ConfigValueFromHCL2Block(bv, &blockS.Block) case configschema.NestingList, configschema.NestingSet: diff --git a/configs/configschema/coerce_value.go b/configs/configschema/coerce_value.go index 877e860f3..e59f58d8e 100644 --- a/configs/configschema/coerce_value.go +++ b/configs/configschema/coerce_value.go @@ -74,7 +74,7 @@ func (b *Block) coerceValue(in cty.Value, path cty.Path) (cty.Value, error) { for typeName, blockS := range b.BlockTypes { switch blockS.Nesting { - case NestingSingle: + case NestingSingle, NestingGroup: switch { case ty.HasAttribute(typeName): var err error @@ -84,7 +84,11 @@ func (b *Block) coerceValue(in cty.Value, path cty.Path) (cty.Value, error) { return cty.UnknownVal(b.ImpliedType()), err } case blockS.MinItems != 1 && blockS.MaxItems != 1: - attrs[typeName] = cty.NullVal(blockS.ImpliedType()) + if blockS.Nesting == NestingGroup { + attrs[typeName] = blockS.EmptyValue() + } else { + attrs[typeName] = cty.NullVal(blockS.ImpliedType()) + } default: // We use the word "attribute" here because we're talking about // the cty sense of that word rather than the HCL sense. diff --git a/configs/configschema/decoder_spec.go b/configs/configschema/decoder_spec.go index f77026445..d8f41eabc 100644 --- a/configs/configschema/decoder_spec.go +++ b/configs/configschema/decoder_spec.go @@ -34,12 +34,20 @@ func (b *Block) DecoderSpec() hcldec.Spec { childSpec := blockS.Block.DecoderSpec() switch blockS.Nesting { - case NestingSingle: + case NestingSingle, NestingGroup: ret[name] = &hcldec.BlockSpec{ TypeName: name, Nested: childSpec, Required: blockS.MinItems == 1 && blockS.MaxItems >= 1, } + if blockS.Nesting == NestingGroup { + ret[name] = &hcldec.DefaultSpec{ + Primary: ret[name], + Default: &hcldec.LiteralSpec{ + Value: blockS.EmptyValue(), + }, + } + } case NestingList: // We prefer to use a list where possible, since it makes our // implied type more complete, but if there are any diff --git a/configs/configschema/empty_value.go b/configs/configschema/empty_value.go index b72b9f86a..005da56bf 100644 --- a/configs/configschema/empty_value.go +++ b/configs/configschema/empty_value.go @@ -35,6 +35,8 @@ func (b *NestedBlock) EmptyValue() cty.Value { switch b.Nesting { case NestingSingle: return cty.NullVal(b.Block.ImpliedType()) + case NestingGroup: + return b.Block.EmptyValue() case NestingList: if ty := b.Block.ImpliedType(); ty.HasDynamicTypes() { return cty.EmptyTupleVal diff --git a/configs/configschema/empty_value_test.go b/configs/configschema/empty_value_test.go index 5ff786fc8..44d27fe71 100644 --- a/configs/configschema/empty_value_test.go +++ b/configs/configschema/empty_value_test.go @@ -47,6 +47,25 @@ func TestBlockEmptyValue(t *testing.T) { })), }), }, + { + &Block{ + BlockTypes: map[string]*NestedBlock{ + "group": { + Nesting: NestingGroup, + Block: Block{ + Attributes: map[string]*Attribute{ + "str": {Type: cty.String, Required: true}, + }, + }, + }, + }, + }, + cty.ObjectVal(map[string]cty.Value{ + "group": cty.ObjectVal(map[string]cty.Value{ + "str": cty.NullVal(cty.String), + }), + }), + }, { &Block{ BlockTypes: map[string]*NestedBlock{ diff --git a/configs/configschema/internal_validate.go b/configs/configschema/internal_validate.go index eb8c6bf1f..ebf1abbab 100644 --- a/configs/configschema/internal_validate.go +++ b/configs/configschema/internal_validate.go @@ -72,6 +72,10 @@ func (b *Block) internalValidate(prefix string, err error) error { case blockS.MinItems < 0 || blockS.MinItems > 1: err = multierror.Append(err, fmt.Errorf("%s%s: MinItems and MaxItems must be set to either 0 or 1 in NestingSingle mode", prefix, name)) } + case NestingGroup: + if blockS.MinItems != 0 || blockS.MaxItems != 0 { + err = multierror.Append(err, fmt.Errorf("%s%s: MinItems and MaxItems cannot be used in NestingGroup mode", prefix, name)) + } case NestingList, NestingSet: if blockS.MinItems > blockS.MaxItems && blockS.MaxItems != 0 { err = multierror.Append(err, fmt.Errorf("%s%s: MinItems must be less than or equal to MaxItems in %s mode", prefix, name, blockS.Nesting)) diff --git a/configs/configschema/nestingmode_string.go b/configs/configschema/nestingmode_string.go index 6cb9313e2..febe743e1 100644 --- a/configs/configschema/nestingmode_string.go +++ b/configs/configschema/nestingmode_string.go @@ -4,9 +4,21 @@ package configschema import "strconv" -const _NestingMode_name = "nestingModeInvalidNestingSingleNestingListNestingSetNestingMap" +func _() { + // An "invalid array index" compiler error signifies that the constant values have changed. + // Re-run the stringer command to generate them again. + var x [1]struct{} + _ = x[nestingModeInvalid-0] + _ = x[NestingSingle-1] + _ = x[NestingGroup-2] + _ = x[NestingList-3] + _ = x[NestingSet-4] + _ = x[NestingMap-5] +} -var _NestingMode_index = [...]uint8{0, 18, 31, 42, 52, 62} +const _NestingMode_name = "nestingModeInvalidNestingSingleNestingGroupNestingListNestingSetNestingMap" + +var _NestingMode_index = [...]uint8{0, 18, 31, 43, 54, 64, 74} func (i NestingMode) String() string { if i < 0 || i >= NestingMode(len(_NestingMode_index)-1) { diff --git a/configs/configschema/schema.go b/configs/configschema/schema.go index 0c23741fe..5a67334d4 100644 --- a/configs/configschema/schema.go +++ b/configs/configschema/schema.go @@ -93,6 +93,23 @@ const ( // provided directly as an object value. NestingSingle + // NestingGroup is similar to NestingSingle in that it calls for only a + // single instance of a given block type with no labels, but it additonally + // guarantees that its result will never be null, even if the block is + // absent, and instead the nested attributes and blocks will be treated + // as absent in that case. (Any required attributes or blocks within the + // nested block are not enforced unless the block is explicitly present + // in the configuration, so they are all effectively optional when the + // block is not present.) + // + // This is useful for the situation where a remote API has a feature that + // is always enabled but has a group of settings related to that feature + // that themselves have default values. By using NestingGroup instead of + // NestingSingle in that case, generated plans will show the block as + // present even when not present in configuration, thus allowing any + // default values within to be displayed to the user. + NestingGroup + // NestingList indicates that multiple blocks of the given type are // permitted, with no labels, and that their corresponding objects should // be provided in a list. diff --git a/configs/configschema/validate_traversal.go b/configs/configschema/validate_traversal.go index 351d7677e..a41e930ba 100644 --- a/configs/configschema/validate_traversal.go +++ b/configs/configschema/validate_traversal.go @@ -115,7 +115,7 @@ func (b *Block) StaticValidateTraversal(traversal hcl.Traversal) tfdiags.Diagnos } func (b *NestedBlock) staticValidateTraversal(typeName string, traversal hcl.Traversal) tfdiags.Diagnostics { - if b.Nesting == NestingSingle { + if b.Nesting == NestingSingle || b.Nesting == NestingGroup { // Single blocks are easy: just pass right through. return b.Block.StaticValidateTraversal(traversal) } diff --git a/configs/configupgrade/upgrade_native.go b/configs/configupgrade/upgrade_native.go index 1c1be2e0d..ec55064a9 100644 --- a/configs/configupgrade/upgrade_native.go +++ b/configs/configupgrade/upgrade_native.go @@ -550,7 +550,7 @@ func printDynamicBlockBody(buf *bytes.Buffer, iterName string, schema *configsch case configschema.NestingMap: printAttribute(buf, "for_each", []byte(fmt.Sprintf(`lookup(%s.value, %q, {})`, iterName, name)), nil) printAttribute(buf, "labels", []byte(fmt.Sprintf(`[%s.key]`, name)), nil) - case configschema.NestingSingle: + case configschema.NestingSingle, configschema.NestingGroup: printAttribute(buf, "for_each", []byte(fmt.Sprintf(`lookup(%s.value, %q, null) != null ? [%s.value.%s] : []`, iterName, name, iterName, name)), nil) default: printAttribute(buf, "for_each", []byte(fmt.Sprintf(`lookup(%s.value, %q, [])`, iterName, name)), nil) diff --git a/helper/plugin/unknown.go b/helper/plugin/unknown.go index 48e24e5d6..64a6784e8 100644 --- a/helper/plugin/unknown.go +++ b/helper/plugin/unknown.go @@ -64,7 +64,7 @@ func SetUnknowns(val cty.Value, schema *configschema.Block) cty.Value { // This switches on the value type here, so we can correctly switch // between Tuples/Lists and Maps/Objects. switch { - case blockS.Nesting == configschema.NestingSingle: + case blockS.Nesting == configschema.NestingSingle || blockS.Nesting == configschema.NestingGroup: // NestingSingle is the only exception here, where we treat the // block directly as an object newVals[name] = SetUnknowns(blockVal, &blockS.Block) diff --git a/internal/tfplugin5/tfplugin5.pb.go b/internal/tfplugin5/tfplugin5.pb.go index 6905f958e..87a6bec75 100644 --- a/internal/tfplugin5/tfplugin5.pb.go +++ b/internal/tfplugin5/tfplugin5.pb.go @@ -46,7 +46,7 @@ func (x Diagnostic_Severity) String() string { return proto.EnumName(Diagnostic_Severity_name, int32(x)) } func (Diagnostic_Severity) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{1, 0} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{1, 0} } type Schema_NestedBlock_NestingMode int32 @@ -57,6 +57,7 @@ const ( Schema_NestedBlock_LIST Schema_NestedBlock_NestingMode = 2 Schema_NestedBlock_SET Schema_NestedBlock_NestingMode = 3 Schema_NestedBlock_MAP Schema_NestedBlock_NestingMode = 4 + Schema_NestedBlock_GROUP Schema_NestedBlock_NestingMode = 5 ) var Schema_NestedBlock_NestingMode_name = map[int32]string{ @@ -65,6 +66,7 @@ var Schema_NestedBlock_NestingMode_name = map[int32]string{ 2: "LIST", 3: "SET", 4: "MAP", + 5: "GROUP", } var Schema_NestedBlock_NestingMode_value = map[string]int32{ "INVALID": 0, @@ -72,13 +74,14 @@ var Schema_NestedBlock_NestingMode_value = map[string]int32{ "LIST": 2, "SET": 3, "MAP": 4, + "GROUP": 5, } func (x Schema_NestedBlock_NestingMode) String() string { return proto.EnumName(Schema_NestedBlock_NestingMode_name, int32(x)) } func (Schema_NestedBlock_NestingMode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{5, 2, 0} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{5, 2, 0} } // DynamicValue is an opaque encoding of terraform data, with the field name @@ -95,7 +98,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_tfplugin5_0417c8e6dca655d3, []int{0} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{0} } func (m *DynamicValue) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DynamicValue.Unmarshal(m, b) @@ -143,7 +146,7 @@ func (m *Diagnostic) Reset() { *m = Diagnostic{} } func (m *Diagnostic) String() string { return proto.CompactTextString(m) } func (*Diagnostic) ProtoMessage() {} func (*Diagnostic) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{1} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{1} } func (m *Diagnostic) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Diagnostic.Unmarshal(m, b) @@ -202,7 +205,7 @@ func (m *AttributePath) Reset() { *m = AttributePath{} } func (m *AttributePath) String() string { return proto.CompactTextString(m) } func (*AttributePath) ProtoMessage() {} func (*AttributePath) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{2} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{2} } func (m *AttributePath) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_AttributePath.Unmarshal(m, b) @@ -244,7 +247,7 @@ func (m *AttributePath_Step) Reset() { *m = AttributePath_Step{} } func (m *AttributePath_Step) String() string { return proto.CompactTextString(m) } func (*AttributePath_Step) ProtoMessage() {} func (*AttributePath_Step) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{2, 0} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{2, 0} } func (m *AttributePath_Step) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_AttributePath_Step.Unmarshal(m, b) @@ -404,7 +407,7 @@ func (m *Stop) Reset() { *m = Stop{} } func (m *Stop) String() string { return proto.CompactTextString(m) } func (*Stop) ProtoMessage() {} func (*Stop) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{3} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{3} } func (m *Stop) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Stop.Unmarshal(m, b) @@ -434,7 +437,7 @@ func (m *Stop_Request) Reset() { *m = Stop_Request{} } func (m *Stop_Request) String() string { return proto.CompactTextString(m) } func (*Stop_Request) ProtoMessage() {} func (*Stop_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{3, 0} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{3, 0} } func (m *Stop_Request) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Stop_Request.Unmarshal(m, b) @@ -455,7 +458,7 @@ func (m *Stop_Request) XXX_DiscardUnknown() { var xxx_messageInfo_Stop_Request proto.InternalMessageInfo type Stop_Response struct { - Error string `protobuf:"bytes,1,opt,name=Error,json=error,proto3" json:"Error,omitempty"` + Error string `protobuf:"bytes,1,opt,name=Error,proto3" json:"Error,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -465,7 +468,7 @@ func (m *Stop_Response) Reset() { *m = Stop_Response{} } func (m *Stop_Response) String() string { return proto.CompactTextString(m) } func (*Stop_Response) ProtoMessage() {} func (*Stop_Response) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{3, 1} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{3, 1} } func (m *Stop_Response) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Stop_Response.Unmarshal(m, b) @@ -507,7 +510,7 @@ func (m *RawState) Reset() { *m = RawState{} } func (m *RawState) String() string { return proto.CompactTextString(m) } func (*RawState) ProtoMessage() {} func (*RawState) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{4} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{4} } func (m *RawState) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_RawState.Unmarshal(m, b) @@ -558,7 +561,7 @@ func (m *Schema) Reset() { *m = Schema{} } func (m *Schema) String() string { return proto.CompactTextString(m) } func (*Schema) ProtoMessage() {} func (*Schema) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{5} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{5} } func (m *Schema) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Schema.Unmarshal(m, b) @@ -605,7 +608,7 @@ func (m *Schema_Block) Reset() { *m = Schema_Block{} } func (m *Schema_Block) String() string { return proto.CompactTextString(m) } func (*Schema_Block) ProtoMessage() {} func (*Schema_Block) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{5, 0} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{5, 0} } func (m *Schema_Block) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Schema_Block.Unmarshal(m, b) @@ -663,7 +666,7 @@ func (m *Schema_Attribute) Reset() { *m = Schema_Attribute{} } func (m *Schema_Attribute) String() string { return proto.CompactTextString(m) } func (*Schema_Attribute) ProtoMessage() {} func (*Schema_Attribute) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{5, 1} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{5, 1} } func (m *Schema_Attribute) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Schema_Attribute.Unmarshal(m, b) @@ -747,7 +750,7 @@ func (m *Schema_NestedBlock) Reset() { *m = Schema_NestedBlock{} } func (m *Schema_NestedBlock) String() string { return proto.CompactTextString(m) } func (*Schema_NestedBlock) ProtoMessage() {} func (*Schema_NestedBlock) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{5, 2} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{5, 2} } func (m *Schema_NestedBlock) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Schema_NestedBlock.Unmarshal(m, b) @@ -812,7 +815,7 @@ func (m *GetProviderSchema) Reset() { *m = GetProviderSchema{} } func (m *GetProviderSchema) String() string { return proto.CompactTextString(m) } func (*GetProviderSchema) ProtoMessage() {} func (*GetProviderSchema) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{6} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{6} } func (m *GetProviderSchema) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetProviderSchema.Unmarshal(m, b) @@ -842,7 +845,7 @@ func (m *GetProviderSchema_Request) Reset() { *m = GetProviderSchema_Req func (m *GetProviderSchema_Request) String() string { return proto.CompactTextString(m) } func (*GetProviderSchema_Request) ProtoMessage() {} func (*GetProviderSchema_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{6, 0} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{6, 0} } func (m *GetProviderSchema_Request) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetProviderSchema_Request.Unmarshal(m, b) @@ -876,7 +879,7 @@ func (m *GetProviderSchema_Response) Reset() { *m = GetProviderSchema_Re func (m *GetProviderSchema_Response) String() string { return proto.CompactTextString(m) } func (*GetProviderSchema_Response) ProtoMessage() {} func (*GetProviderSchema_Response) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{6, 1} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{6, 1} } func (m *GetProviderSchema_Response) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetProviderSchema_Response.Unmarshal(m, b) @@ -934,7 +937,7 @@ func (m *PrepareProviderConfig) Reset() { *m = PrepareProviderConfig{} } func (m *PrepareProviderConfig) String() string { return proto.CompactTextString(m) } func (*PrepareProviderConfig) ProtoMessage() {} func (*PrepareProviderConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{7} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{7} } func (m *PrepareProviderConfig) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PrepareProviderConfig.Unmarshal(m, b) @@ -965,7 +968,7 @@ func (m *PrepareProviderConfig_Request) Reset() { *m = PrepareProviderCo func (m *PrepareProviderConfig_Request) String() string { return proto.CompactTextString(m) } func (*PrepareProviderConfig_Request) ProtoMessage() {} func (*PrepareProviderConfig_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{7, 0} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{7, 0} } func (m *PrepareProviderConfig_Request) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PrepareProviderConfig_Request.Unmarshal(m, b) @@ -1004,7 +1007,7 @@ func (m *PrepareProviderConfig_Response) Reset() { *m = PrepareProviderC func (m *PrepareProviderConfig_Response) String() string { return proto.CompactTextString(m) } func (*PrepareProviderConfig_Response) ProtoMessage() {} func (*PrepareProviderConfig_Response) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{7, 1} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{7, 1} } func (m *PrepareProviderConfig_Response) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PrepareProviderConfig_Response.Unmarshal(m, b) @@ -1048,7 +1051,7 @@ func (m *UpgradeResourceState) Reset() { *m = UpgradeResourceState{} } func (m *UpgradeResourceState) String() string { return proto.CompactTextString(m) } func (*UpgradeResourceState) ProtoMessage() {} func (*UpgradeResourceState) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{8} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{8} } func (m *UpgradeResourceState) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UpgradeResourceState.Unmarshal(m, b) @@ -1087,7 +1090,7 @@ func (m *UpgradeResourceState_Request) Reset() { *m = UpgradeResourceSta func (m *UpgradeResourceState_Request) String() string { return proto.CompactTextString(m) } func (*UpgradeResourceState_Request) ProtoMessage() {} func (*UpgradeResourceState_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{8, 0} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{8, 0} } func (m *UpgradeResourceState_Request) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UpgradeResourceState_Request.Unmarshal(m, b) @@ -1146,7 +1149,7 @@ func (m *UpgradeResourceState_Response) Reset() { *m = UpgradeResourceSt func (m *UpgradeResourceState_Response) String() string { return proto.CompactTextString(m) } func (*UpgradeResourceState_Response) ProtoMessage() {} func (*UpgradeResourceState_Response) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{8, 1} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{8, 1} } func (m *UpgradeResourceState_Response) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UpgradeResourceState_Response.Unmarshal(m, b) @@ -1190,7 +1193,7 @@ func (m *ValidateResourceTypeConfig) Reset() { *m = ValidateResourceType func (m *ValidateResourceTypeConfig) String() string { return proto.CompactTextString(m) } func (*ValidateResourceTypeConfig) ProtoMessage() {} func (*ValidateResourceTypeConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{9} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{9} } func (m *ValidateResourceTypeConfig) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ValidateResourceTypeConfig.Unmarshal(m, b) @@ -1222,7 +1225,7 @@ func (m *ValidateResourceTypeConfig_Request) Reset() { *m = ValidateReso func (m *ValidateResourceTypeConfig_Request) String() string { return proto.CompactTextString(m) } func (*ValidateResourceTypeConfig_Request) ProtoMessage() {} func (*ValidateResourceTypeConfig_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{9, 0} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{9, 0} } func (m *ValidateResourceTypeConfig_Request) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ValidateResourceTypeConfig_Request.Unmarshal(m, b) @@ -1267,7 +1270,7 @@ func (m *ValidateResourceTypeConfig_Response) Reset() { *m = ValidateRes func (m *ValidateResourceTypeConfig_Response) String() string { return proto.CompactTextString(m) } func (*ValidateResourceTypeConfig_Response) ProtoMessage() {} func (*ValidateResourceTypeConfig_Response) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{9, 1} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{9, 1} } func (m *ValidateResourceTypeConfig_Response) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ValidateResourceTypeConfig_Response.Unmarshal(m, b) @@ -1304,7 +1307,7 @@ func (m *ValidateDataSourceConfig) Reset() { *m = ValidateDataSourceConf func (m *ValidateDataSourceConfig) String() string { return proto.CompactTextString(m) } func (*ValidateDataSourceConfig) ProtoMessage() {} func (*ValidateDataSourceConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{10} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{10} } func (m *ValidateDataSourceConfig) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ValidateDataSourceConfig.Unmarshal(m, b) @@ -1336,7 +1339,7 @@ func (m *ValidateDataSourceConfig_Request) Reset() { *m = ValidateDataSo func (m *ValidateDataSourceConfig_Request) String() string { return proto.CompactTextString(m) } func (*ValidateDataSourceConfig_Request) ProtoMessage() {} func (*ValidateDataSourceConfig_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{10, 0} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{10, 0} } func (m *ValidateDataSourceConfig_Request) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ValidateDataSourceConfig_Request.Unmarshal(m, b) @@ -1381,7 +1384,7 @@ func (m *ValidateDataSourceConfig_Response) Reset() { *m = ValidateDataS func (m *ValidateDataSourceConfig_Response) String() string { return proto.CompactTextString(m) } func (*ValidateDataSourceConfig_Response) ProtoMessage() {} func (*ValidateDataSourceConfig_Response) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{10, 1} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{10, 1} } func (m *ValidateDataSourceConfig_Response) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ValidateDataSourceConfig_Response.Unmarshal(m, b) @@ -1418,7 +1421,7 @@ func (m *Configure) Reset() { *m = Configure{} } func (m *Configure) String() string { return proto.CompactTextString(m) } func (*Configure) ProtoMessage() {} func (*Configure) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{11} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{11} } func (m *Configure) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Configure.Unmarshal(m, b) @@ -1450,7 +1453,7 @@ func (m *Configure_Request) Reset() { *m = Configure_Request{} } func (m *Configure_Request) String() string { return proto.CompactTextString(m) } func (*Configure_Request) ProtoMessage() {} func (*Configure_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{11, 0} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{11, 0} } func (m *Configure_Request) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Configure_Request.Unmarshal(m, b) @@ -1495,7 +1498,7 @@ func (m *Configure_Response) Reset() { *m = Configure_Response{} } func (m *Configure_Response) String() string { return proto.CompactTextString(m) } func (*Configure_Response) ProtoMessage() {} func (*Configure_Response) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{11, 1} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{11, 1} } func (m *Configure_Response) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Configure_Response.Unmarshal(m, b) @@ -1532,7 +1535,7 @@ func (m *ReadResource) Reset() { *m = ReadResource{} } func (m *ReadResource) String() string { return proto.CompactTextString(m) } func (*ReadResource) ProtoMessage() {} func (*ReadResource) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{12} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{12} } func (m *ReadResource) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ReadResource.Unmarshal(m, b) @@ -1564,7 +1567,7 @@ func (m *ReadResource_Request) Reset() { *m = ReadResource_Request{} } func (m *ReadResource_Request) String() string { return proto.CompactTextString(m) } func (*ReadResource_Request) ProtoMessage() {} func (*ReadResource_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{12, 0} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{12, 0} } func (m *ReadResource_Request) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ReadResource_Request.Unmarshal(m, b) @@ -1610,7 +1613,7 @@ func (m *ReadResource_Response) Reset() { *m = ReadResource_Response{} } func (m *ReadResource_Response) String() string { return proto.CompactTextString(m) } func (*ReadResource_Response) ProtoMessage() {} func (*ReadResource_Response) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{12, 1} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{12, 1} } func (m *ReadResource_Response) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ReadResource_Response.Unmarshal(m, b) @@ -1654,7 +1657,7 @@ func (m *PlanResourceChange) Reset() { *m = PlanResourceChange{} } func (m *PlanResourceChange) String() string { return proto.CompactTextString(m) } func (*PlanResourceChange) ProtoMessage() {} func (*PlanResourceChange) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{13} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{13} } func (m *PlanResourceChange) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PlanResourceChange.Unmarshal(m, b) @@ -1689,7 +1692,7 @@ func (m *PlanResourceChange_Request) Reset() { *m = PlanResourceChange_R func (m *PlanResourceChange_Request) String() string { return proto.CompactTextString(m) } func (*PlanResourceChange_Request) ProtoMessage() {} func (*PlanResourceChange_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{13, 0} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{13, 0} } func (m *PlanResourceChange_Request) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PlanResourceChange_Request.Unmarshal(m, b) @@ -1770,7 +1773,7 @@ func (m *PlanResourceChange_Response) Reset() { *m = PlanResourceChange_ func (m *PlanResourceChange_Response) String() string { return proto.CompactTextString(m) } func (*PlanResourceChange_Response) ProtoMessage() {} func (*PlanResourceChange_Response) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{13, 1} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{13, 1} } func (m *PlanResourceChange_Response) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PlanResourceChange_Response.Unmarshal(m, b) @@ -1835,7 +1838,7 @@ func (m *ApplyResourceChange) Reset() { *m = ApplyResourceChange{} } func (m *ApplyResourceChange) String() string { return proto.CompactTextString(m) } func (*ApplyResourceChange) ProtoMessage() {} func (*ApplyResourceChange) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{14} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{14} } func (m *ApplyResourceChange) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ApplyResourceChange.Unmarshal(m, b) @@ -1870,7 +1873,7 @@ func (m *ApplyResourceChange_Request) Reset() { *m = ApplyResourceChange func (m *ApplyResourceChange_Request) String() string { return proto.CompactTextString(m) } func (*ApplyResourceChange_Request) ProtoMessage() {} func (*ApplyResourceChange_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{14, 0} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{14, 0} } func (m *ApplyResourceChange_Request) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ApplyResourceChange_Request.Unmarshal(m, b) @@ -1950,7 +1953,7 @@ func (m *ApplyResourceChange_Response) Reset() { *m = ApplyResourceChang func (m *ApplyResourceChange_Response) String() string { return proto.CompactTextString(m) } func (*ApplyResourceChange_Response) ProtoMessage() {} func (*ApplyResourceChange_Response) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{14, 1} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{14, 1} } func (m *ApplyResourceChange_Response) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ApplyResourceChange_Response.Unmarshal(m, b) @@ -2008,7 +2011,7 @@ func (m *ImportResourceState) Reset() { *m = ImportResourceState{} } func (m *ImportResourceState) String() string { return proto.CompactTextString(m) } func (*ImportResourceState) ProtoMessage() {} func (*ImportResourceState) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{15} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{15} } func (m *ImportResourceState) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ImportResourceState.Unmarshal(m, b) @@ -2040,7 +2043,7 @@ func (m *ImportResourceState_Request) Reset() { *m = ImportResourceState func (m *ImportResourceState_Request) String() string { return proto.CompactTextString(m) } func (*ImportResourceState_Request) ProtoMessage() {} func (*ImportResourceState_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{15, 0} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{15, 0} } func (m *ImportResourceState_Request) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ImportResourceState_Request.Unmarshal(m, b) @@ -2087,7 +2090,7 @@ func (m *ImportResourceState_ImportedResource) Reset() { *m = ImportReso func (m *ImportResourceState_ImportedResource) String() string { return proto.CompactTextString(m) } func (*ImportResourceState_ImportedResource) ProtoMessage() {} func (*ImportResourceState_ImportedResource) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{15, 1} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{15, 1} } func (m *ImportResourceState_ImportedResource) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ImportResourceState_ImportedResource.Unmarshal(m, b) @@ -2140,7 +2143,7 @@ func (m *ImportResourceState_Response) Reset() { *m = ImportResourceStat func (m *ImportResourceState_Response) String() string { return proto.CompactTextString(m) } func (*ImportResourceState_Response) ProtoMessage() {} func (*ImportResourceState_Response) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{15, 2} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{15, 2} } func (m *ImportResourceState_Response) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ImportResourceState_Response.Unmarshal(m, b) @@ -2184,7 +2187,7 @@ func (m *ReadDataSource) Reset() { *m = ReadDataSource{} } func (m *ReadDataSource) String() string { return proto.CompactTextString(m) } func (*ReadDataSource) ProtoMessage() {} func (*ReadDataSource) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{16} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{16} } func (m *ReadDataSource) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ReadDataSource.Unmarshal(m, b) @@ -2216,7 +2219,7 @@ func (m *ReadDataSource_Request) Reset() { *m = ReadDataSource_Request{} func (m *ReadDataSource_Request) String() string { return proto.CompactTextString(m) } func (*ReadDataSource_Request) ProtoMessage() {} func (*ReadDataSource_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{16, 0} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{16, 0} } func (m *ReadDataSource_Request) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ReadDataSource_Request.Unmarshal(m, b) @@ -2262,7 +2265,7 @@ func (m *ReadDataSource_Response) Reset() { *m = ReadDataSource_Response func (m *ReadDataSource_Response) String() string { return proto.CompactTextString(m) } func (*ReadDataSource_Response) ProtoMessage() {} func (*ReadDataSource_Response) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{16, 1} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{16, 1} } func (m *ReadDataSource_Response) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ReadDataSource_Response.Unmarshal(m, b) @@ -2306,7 +2309,7 @@ func (m *GetProvisionerSchema) Reset() { *m = GetProvisionerSchema{} } func (m *GetProvisionerSchema) String() string { return proto.CompactTextString(m) } func (*GetProvisionerSchema) ProtoMessage() {} func (*GetProvisionerSchema) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{17} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{17} } func (m *GetProvisionerSchema) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetProvisionerSchema.Unmarshal(m, b) @@ -2336,7 +2339,7 @@ func (m *GetProvisionerSchema_Request) Reset() { *m = GetProvisionerSche func (m *GetProvisionerSchema_Request) String() string { return proto.CompactTextString(m) } func (*GetProvisionerSchema_Request) ProtoMessage() {} func (*GetProvisionerSchema_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{17, 0} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{17, 0} } func (m *GetProvisionerSchema_Request) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetProvisionerSchema_Request.Unmarshal(m, b) @@ -2368,7 +2371,7 @@ func (m *GetProvisionerSchema_Response) Reset() { *m = GetProvisionerSch func (m *GetProvisionerSchema_Response) String() string { return proto.CompactTextString(m) } func (*GetProvisionerSchema_Response) ProtoMessage() {} func (*GetProvisionerSchema_Response) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{17, 1} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{17, 1} } func (m *GetProvisionerSchema_Response) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetProvisionerSchema_Response.Unmarshal(m, b) @@ -2412,7 +2415,7 @@ func (m *ValidateProvisionerConfig) Reset() { *m = ValidateProvisionerCo func (m *ValidateProvisionerConfig) String() string { return proto.CompactTextString(m) } func (*ValidateProvisionerConfig) ProtoMessage() {} func (*ValidateProvisionerConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{18} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{18} } func (m *ValidateProvisionerConfig) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ValidateProvisionerConfig.Unmarshal(m, b) @@ -2443,7 +2446,7 @@ func (m *ValidateProvisionerConfig_Request) Reset() { *m = ValidateProvi func (m *ValidateProvisionerConfig_Request) String() string { return proto.CompactTextString(m) } func (*ValidateProvisionerConfig_Request) ProtoMessage() {} func (*ValidateProvisionerConfig_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{18, 0} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{18, 0} } func (m *ValidateProvisionerConfig_Request) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ValidateProvisionerConfig_Request.Unmarshal(m, b) @@ -2481,7 +2484,7 @@ func (m *ValidateProvisionerConfig_Response) Reset() { *m = ValidateProv func (m *ValidateProvisionerConfig_Response) String() string { return proto.CompactTextString(m) } func (*ValidateProvisionerConfig_Response) ProtoMessage() {} func (*ValidateProvisionerConfig_Response) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{18, 1} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{18, 1} } func (m *ValidateProvisionerConfig_Response) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ValidateProvisionerConfig_Response.Unmarshal(m, b) @@ -2518,7 +2521,7 @@ func (m *ProvisionResource) Reset() { *m = ProvisionResource{} } func (m *ProvisionResource) String() string { return proto.CompactTextString(m) } func (*ProvisionResource) ProtoMessage() {} func (*ProvisionResource) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{19} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{19} } func (m *ProvisionResource) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ProvisionResource.Unmarshal(m, b) @@ -2550,7 +2553,7 @@ func (m *ProvisionResource_Request) Reset() { *m = ProvisionResource_Req func (m *ProvisionResource_Request) String() string { return proto.CompactTextString(m) } func (*ProvisionResource_Request) ProtoMessage() {} func (*ProvisionResource_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{19, 0} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{19, 0} } func (m *ProvisionResource_Request) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ProvisionResource_Request.Unmarshal(m, b) @@ -2596,7 +2599,7 @@ func (m *ProvisionResource_Response) Reset() { *m = ProvisionResource_Re func (m *ProvisionResource_Response) String() string { return proto.CompactTextString(m) } func (*ProvisionResource_Response) ProtoMessage() {} func (*ProvisionResource_Response) Descriptor() ([]byte, []int) { - return fileDescriptor_tfplugin5_0417c8e6dca655d3, []int{19, 1} + return fileDescriptor_tfplugin5_56820f4fb67360c5, []int{19, 1} } func (m *ProvisionResource_Response) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ProvisionResource_Response.Unmarshal(m, b) @@ -3327,125 +3330,126 @@ var _Provisioner_serviceDesc = grpc.ServiceDesc{ Metadata: "tfplugin5.proto", } -func init() { proto.RegisterFile("tfplugin5.proto", fileDescriptor_tfplugin5_0417c8e6dca655d3) } +func init() { proto.RegisterFile("tfplugin5.proto", fileDescriptor_tfplugin5_56820f4fb67360c5) } -var fileDescriptor_tfplugin5_0417c8e6dca655d3 = []byte{ - // 1867 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x59, 0xcd, 0x73, 0x1b, 0x49, - 0x15, 0xcf, 0x68, 0x24, 0x5b, 0x7a, 0xf2, 0x87, 0xdc, 0xc9, 0x06, 0x31, 0xbb, 0x0b, 0x46, 0x7c, - 0xd8, 0x5b, 0xbb, 0x51, 0xb6, 0x1c, 0xd8, 0x5d, 0x4c, 0x6a, 0x0b, 0xc7, 0x31, 0x89, 0x8b, 0xac, - 0x31, 0xad, 0x6c, 0x42, 0x15, 0x55, 0xab, 0xea, 0x68, 0xda, 0xca, 0x10, 0x69, 0x66, 0xb6, 0xa7, - 0x65, 0x5b, 0xc5, 0x91, 0x82, 0x33, 0x17, 0x3e, 0xaa, 0x58, 0xb8, 0xf0, 0x2f, 0x70, 0x00, 0x6e, - 0x9c, 0xf8, 0x07, 0xb8, 0x2d, 0x9c, 0x28, 0x8e, 0x14, 0x47, 0xb8, 0x50, 0x45, 0xf5, 0xd7, 0x4c, - 0x4b, 0x1a, 0xd9, 0x13, 0x7b, 0x53, 0xd4, 0xde, 0xa6, 0xfb, 0xfd, 0xfa, 0xbd, 0x5f, 0xbf, 0xf7, - 0xfa, 0xbd, 0x6e, 0x09, 0x56, 0xf9, 0x51, 0x3c, 0x18, 0xf5, 0x83, 0xf0, 0x6b, 0xed, 0x98, 0x45, - 0x3c, 0x42, 0xb5, 0x74, 0xa2, 0x75, 0x1b, 0x96, 0xee, 0x8e, 0x43, 0x32, 0x0c, 0x7a, 0x8f, 0xc8, - 0x60, 0x44, 0x51, 0x13, 0x16, 0x87, 0x49, 0x3f, 0x26, 0xbd, 0x67, 0x4d, 0x67, 0xdd, 0xd9, 0x5c, - 0xc2, 0x66, 0x88, 0x10, 0x94, 0x7f, 0x90, 0x44, 0x61, 0xb3, 0x24, 0xa7, 0xe5, 0x77, 0xeb, 0xef, - 0x0e, 0xc0, 0xdd, 0x80, 0xf4, 0xc3, 0x28, 0xe1, 0x41, 0x0f, 0x6d, 0x43, 0x35, 0xa1, 0xc7, 0x94, - 0x05, 0x7c, 0x2c, 0x57, 0xaf, 0x6c, 0x7d, 0xae, 0x9d, 0xd9, 0xce, 0x80, 0xed, 0x8e, 0x46, 0xe1, - 0x14, 0x2f, 0x0c, 0x27, 0xa3, 0xe1, 0x90, 0xb0, 0xb1, 0xb4, 0x50, 0xc3, 0x66, 0x88, 0xae, 0xc3, - 0x82, 0x4f, 0x39, 0x09, 0x06, 0x4d, 0x57, 0x0a, 0xf4, 0x08, 0xbd, 0x05, 0x35, 0xc2, 0x39, 0x0b, - 0x9e, 0x8c, 0x38, 0x6d, 0x96, 0xd7, 0x9d, 0xcd, 0xfa, 0x56, 0xd3, 0x32, 0xb7, 0x63, 0x64, 0x87, - 0x84, 0x3f, 0xc5, 0x19, 0xb4, 0x75, 0x13, 0xaa, 0xc6, 0x3e, 0xaa, 0xc3, 0xe2, 0xfe, 0xc1, 0xa3, - 0x9d, 0x07, 0xfb, 0x77, 0x1b, 0x57, 0x50, 0x0d, 0x2a, 0x7b, 0x18, 0x7f, 0x07, 0x37, 0x1c, 0x31, - 0xff, 0x78, 0x07, 0x1f, 0xec, 0x1f, 0xdc, 0x6b, 0x94, 0x5a, 0x7f, 0x75, 0x60, 0x79, 0x42, 0x1b, - 0xba, 0x05, 0x95, 0x84, 0xd3, 0x38, 0x69, 0x3a, 0xeb, 0xee, 0x66, 0x7d, 0xeb, 0xd5, 0x79, 0x66, - 0xdb, 0x1d, 0x4e, 0x63, 0xac, 0xb0, 0xde, 0xcf, 0x1c, 0x28, 0x8b, 0x31, 0xda, 0x80, 0x95, 0x94, - 0x4d, 0x37, 0x24, 0x43, 0x2a, 0x9d, 0x55, 0xbb, 0x7f, 0x05, 0x2f, 0xa7, 0xf3, 0x07, 0x64, 0x48, - 0x51, 0x1b, 0x10, 0x1d, 0xd0, 0x21, 0x0d, 0x79, 0xf7, 0x19, 0x1d, 0x77, 0x13, 0xce, 0x82, 0xb0, - 0xaf, 0xdc, 0x73, 0xff, 0x0a, 0x6e, 0x68, 0xd9, 0xb7, 0xe9, 0xb8, 0x23, 0x25, 0x68, 0x13, 0x56, - 0x6d, 0x7c, 0x10, 0x72, 0xe9, 0x32, 0x57, 0x68, 0xce, 0xc0, 0xfb, 0x21, 0xbf, 0x03, 0x22, 0x52, - 0x03, 0xda, 0xe3, 0x11, 0x6b, 0xdd, 0x12, 0xb4, 0xa2, 0xd8, 0xab, 0xc1, 0x22, 0xa6, 0x1f, 0x8e, - 0x68, 0xc2, 0xbd, 0x75, 0xa8, 0x62, 0x9a, 0xc4, 0x51, 0x98, 0x50, 0x74, 0x0d, 0x2a, 0x7b, 0x8c, - 0x45, 0x4c, 0x91, 0xc4, 0x15, 0x2a, 0x06, 0xad, 0x9f, 0x3b, 0x50, 0xc5, 0xe4, 0xa4, 0xc3, 0x09, - 0xa7, 0x69, 0x6a, 0x38, 0x59, 0x6a, 0xa0, 0x6d, 0x58, 0x3c, 0x1a, 0x10, 0x3e, 0x24, 0x71, 0xb3, - 0x24, 0x9d, 0xb4, 0x6e, 0x39, 0xc9, 0xac, 0x6c, 0x7f, 0x4b, 0x41, 0xf6, 0x42, 0xce, 0xc6, 0xd8, - 0x2c, 0xf0, 0xb6, 0x61, 0xc9, 0x16, 0xa0, 0x06, 0xb8, 0xcf, 0xe8, 0x58, 0x13, 0x10, 0x9f, 0x82, - 0xd4, 0xb1, 0xc8, 0x57, 0x9d, 0x2b, 0x6a, 0xb0, 0x5d, 0x7a, 0xc7, 0x69, 0x7d, 0x5c, 0x81, 0x85, - 0x4e, 0xef, 0x29, 0x1d, 0x12, 0x91, 0x52, 0xc7, 0x94, 0x25, 0x81, 0x66, 0xe6, 0x62, 0x33, 0x44, - 0x37, 0xa0, 0xf2, 0x64, 0x10, 0xf5, 0x9e, 0xc9, 0xe5, 0xf5, 0xad, 0xcf, 0x58, 0xd4, 0xd4, 0xda, - 0xf6, 0x1d, 0x21, 0xc6, 0x0a, 0xe5, 0xfd, 0xc6, 0x81, 0x8a, 0x9c, 0x38, 0x43, 0xe5, 0x37, 0x00, - 0xd2, 0xe0, 0x25, 0x7a, 0xcb, 0x2f, 0xcf, 0xea, 0x4d, 0xd3, 0x03, 0x5b, 0x70, 0xf4, 0x2e, 0xd4, - 0xa5, 0xa5, 0x2e, 0x1f, 0xc7, 0x34, 0x69, 0xba, 0x33, 0x59, 0xa5, 0x57, 0x1f, 0xd0, 0x84, 0x53, - 0x5f, 0x71, 0x03, 0xb9, 0xe2, 0xa1, 0x58, 0xe0, 0xfd, 0xd9, 0x81, 0x5a, 0xaa, 0x59, 0x84, 0x23, - 0xcb, 0x2a, 0x2c, 0xbf, 0xc5, 0x9c, 0xd0, 0x6d, 0x4e, 0xaf, 0xf8, 0x46, 0xeb, 0x50, 0xf7, 0x69, - 0xd2, 0x63, 0x41, 0xcc, 0xc5, 0x86, 0xd4, 0xe9, 0xb2, 0xa7, 0x90, 0x07, 0x55, 0x46, 0x3f, 0x1c, - 0x05, 0x8c, 0xfa, 0xf2, 0x84, 0x55, 0x71, 0x3a, 0x16, 0xb2, 0x48, 0xa2, 0xc8, 0xa0, 0x59, 0x51, - 0x32, 0x33, 0x16, 0xb2, 0x5e, 0x34, 0x8c, 0x47, 0x9c, 0xfa, 0xcd, 0x05, 0x25, 0x33, 0x63, 0xf4, - 0x0a, 0xd4, 0x12, 0x1a, 0x26, 0x01, 0x0f, 0x8e, 0x69, 0x73, 0x51, 0x0a, 0xb3, 0x09, 0xef, 0xa3, - 0x12, 0xd4, 0xad, 0x5d, 0xa2, 0x97, 0xa1, 0x26, 0xb8, 0x5a, 0xc7, 0x04, 0x57, 0xc5, 0x84, 0x3c, - 0x1f, 0xcf, 0x17, 0x46, 0xb4, 0x0b, 0x8b, 0x21, 0x4d, 0xb8, 0x38, 0x43, 0xae, 0xac, 0x4e, 0xaf, - 0x9d, 0xe9, 0x61, 0xf9, 0x1d, 0x84, 0xfd, 0xf7, 0x22, 0x9f, 0x62, 0xb3, 0x52, 0x10, 0x1a, 0x06, - 0x61, 0x37, 0xe0, 0x74, 0x98, 0x48, 0x9f, 0xb8, 0xb8, 0x3a, 0x0c, 0xc2, 0x7d, 0x31, 0x96, 0x42, - 0x72, 0xaa, 0x85, 0x15, 0x2d, 0x24, 0xa7, 0x52, 0xd8, 0xba, 0xa3, 0x76, 0xa6, 0x35, 0x4e, 0x96, - 0x1e, 0x80, 0x85, 0xce, 0xfe, 0xc1, 0xbd, 0x07, 0x7b, 0x0d, 0x07, 0x55, 0xa1, 0xfc, 0x60, 0xbf, - 0xf3, 0xb0, 0x51, 0x42, 0x8b, 0xe0, 0x76, 0xf6, 0x1e, 0x36, 0x5c, 0xf1, 0xf1, 0xde, 0xce, 0x61, - 0xa3, 0xdc, 0xfa, 0x65, 0x19, 0xd6, 0xee, 0x51, 0x7e, 0xc8, 0xa2, 0xe3, 0xc0, 0xa7, 0x4c, 0x91, - 0xb6, 0x4f, 0xee, 0xbf, 0x5d, 0xeb, 0xe8, 0xde, 0x80, 0x6a, 0xac, 0x91, 0xd2, 0x77, 0xf5, 0xad, - 0xb5, 0x99, 0x1d, 0xe3, 0x14, 0x82, 0x28, 0x34, 0x18, 0x4d, 0xa2, 0x11, 0xeb, 0xd1, 0x6e, 0x22, - 0x85, 0x26, 0x91, 0xb7, 0xad, 0x65, 0x33, 0xe6, 0xdb, 0xc6, 0x9e, 0xf8, 0x90, 0xab, 0xd5, 0x7c, - 0xa2, 0x4e, 0xf5, 0x2a, 0x9b, 0x9c, 0x45, 0x03, 0xb8, 0xea, 0x13, 0x4e, 0xba, 0x53, 0x96, 0x54, - 0xd2, 0xdf, 0x2e, 0x66, 0xe9, 0x2e, 0xe1, 0xa4, 0x33, 0x6b, 0x6b, 0xcd, 0x9f, 0x9e, 0x47, 0x6f, - 0x43, 0xdd, 0x4f, 0x1b, 0x8f, 0x88, 0x98, 0xb0, 0xf2, 0x52, 0x6e, 0x5b, 0xc2, 0x36, 0xd2, 0x7b, - 0x1f, 0xae, 0xe5, 0xed, 0x27, 0xa7, 0x18, 0x6d, 0xd8, 0xc5, 0x28, 0xd7, 0xc7, 0x59, 0x7d, 0xf2, - 0x1e, 0xc3, 0xf5, 0x7c, 0xf2, 0x97, 0x54, 0xdc, 0xfa, 0xd8, 0x81, 0x97, 0x0e, 0x19, 0x8d, 0x09, - 0xa3, 0xc6, 0x6b, 0xbb, 0x51, 0x78, 0x14, 0xf4, 0xbd, 0xed, 0x34, 0x3d, 0xd0, 0x4d, 0x58, 0xe8, - 0xc9, 0x49, 0x9d, 0x0f, 0xf6, 0x91, 0xb1, 0xef, 0x01, 0x58, 0xc3, 0xbc, 0x1f, 0x3b, 0x56, 0x3e, - 0x7d, 0x13, 0x56, 0x63, 0x65, 0xc1, 0xef, 0x16, 0x53, 0xb3, 0x62, 0xf0, 0x8a, 0xca, 0x74, 0x34, - 0x4a, 0x45, 0xa3, 0xd1, 0xfa, 0x69, 0x09, 0xae, 0xbd, 0x1f, 0xf7, 0x19, 0xf1, 0x69, 0x1a, 0x15, - 0xd1, 0x41, 0x3c, 0x96, 0x6d, 0xee, 0xcc, 0x5a, 0x61, 0x55, 0xee, 0xd2, 0x64, 0xe5, 0x7e, 0x13, - 0x6a, 0x8c, 0x9c, 0x74, 0x13, 0xa1, 0x4e, 0x16, 0x86, 0xfa, 0xd6, 0xd5, 0x9c, 0x5e, 0x85, 0xab, - 0x4c, 0x7f, 0x79, 0x3f, 0xb2, 0x9d, 0xf2, 0x2e, 0xac, 0x8c, 0x14, 0x31, 0x5f, 0xeb, 0x38, 0xc7, - 0x27, 0xcb, 0x06, 0xae, 0x9a, 0xe7, 0x85, 0x5d, 0xf2, 0x47, 0x07, 0xbc, 0x47, 0x64, 0x10, 0xf8, - 0x82, 0x9c, 0xf6, 0x89, 0x68, 0x07, 0x3a, 0xea, 0x8f, 0x0b, 0x3a, 0x26, 0x4b, 0x89, 0x52, 0xb1, - 0x94, 0xd8, 0xb5, 0x36, 0x3f, 0x45, 0xde, 0x29, 0x4c, 0xfe, 0xf7, 0x0e, 0x34, 0x0d, 0xf9, 0xec, - 0x3c, 0x7c, 0x2a, 0xa8, 0xff, 0xc1, 0x81, 0x9a, 0x22, 0x3a, 0x62, 0xd4, 0xeb, 0x67, 0x5c, 0x5f, - 0x87, 0x35, 0x4e, 0x19, 0x23, 0x47, 0x11, 0x1b, 0x76, 0xed, 0x6b, 0x42, 0x0d, 0x37, 0x52, 0xc1, - 0x23, 0x9d, 0x75, 0xff, 0x1f, 0xee, 0xff, 0x72, 0x60, 0x09, 0x53, 0xe2, 0x9b, 0x7c, 0xf1, 0xfc, - 0x82, 0xae, 0xbe, 0x0d, 0xcb, 0xbd, 0x11, 0x63, 0xe2, 0x6a, 0xa9, 0x92, 0xfc, 0x1c, 0xd6, 0x4b, - 0x1a, 0xad, 0x0e, 0xcc, 0xd8, 0xe2, 0xfe, 0x55, 0xa8, 0x85, 0xf4, 0xa4, 0xd8, 0x51, 0xa9, 0x86, - 0xf4, 0xe4, 0x92, 0xa7, 0xe4, 0x77, 0x65, 0x40, 0x87, 0x03, 0x12, 0x9a, 0x1d, 0xef, 0x3e, 0x25, - 0x61, 0x9f, 0x7a, 0xff, 0x75, 0x0a, 0x6e, 0xfc, 0x1d, 0xa8, 0xc7, 0x2c, 0x88, 0x58, 0xb1, 0x6d, - 0x83, 0xc4, 0x2a, 0xca, 0x7b, 0x80, 0x62, 0x16, 0xc5, 0x51, 0x42, 0xfd, 0x6e, 0xb6, 0x63, 0xf7, - 0x6c, 0x05, 0x0d, 0xb3, 0xe4, 0xc0, 0xec, 0x3c, 0x4b, 0x94, 0x72, 0xa1, 0x44, 0x41, 0x5f, 0x84, - 0x65, 0xc5, 0x38, 0x66, 0xc1, 0xb1, 0x30, 0x59, 0x91, 0x77, 0xbe, 0x25, 0x39, 0x79, 0xa8, 0xe6, - 0xbc, 0x5f, 0x97, 0xac, 0x90, 0xdc, 0x86, 0xe5, 0x78, 0x40, 0xc2, 0xb0, 0x68, 0x05, 0x5b, 0xd2, - 0x68, 0x45, 0x70, 0x57, 0x5c, 0x1b, 0xe4, 0xa5, 0x30, 0xe9, 0x32, 0x1a, 0x0f, 0x48, 0x8f, 0xea, - 0xf8, 0xcc, 0x7f, 0x8e, 0xad, 0x9a, 0x15, 0x58, 0x2d, 0x40, 0x1b, 0xb0, 0x6a, 0x28, 0x18, 0xda, - 0xae, 0xa4, 0xbd, 0xa2, 0xa7, 0x35, 0xf1, 0x0b, 0xf7, 0x73, 0xf4, 0x06, 0xa0, 0x01, 0xed, 0x93, - 0xde, 0x58, 0x5e, 0xb2, 0xbb, 0xc9, 0x38, 0xe1, 0x74, 0xa8, 0x6f, 0xae, 0x0d, 0x25, 0x11, 0xd5, - 0xb3, 0x23, 0xe7, 0x5b, 0x7f, 0x71, 0xe1, 0xea, 0x4e, 0x1c, 0x0f, 0xc6, 0x53, 0x79, 0xf3, 0x9f, - 0x17, 0x9f, 0x37, 0x33, 0xd1, 0x70, 0x9f, 0x27, 0x1a, 0xcf, 0x9d, 0x2e, 0x39, 0x9e, 0xaf, 0xe4, - 0x79, 0xde, 0xfb, 0x93, 0x73, 0xe9, 0x53, 0xdc, 0x84, 0x45, 0x63, 0x43, 0x3d, 0x44, 0xcc, 0x70, - 0x3a, 0xac, 0xee, 0x25, 0xc3, 0x5a, 0x9e, 0x13, 0xd6, 0x7f, 0x96, 0xe0, 0xea, 0xfe, 0x30, 0x8e, - 0x18, 0x9f, 0xbc, 0x45, 0xbc, 0x55, 0x30, 0xaa, 0x2b, 0x50, 0x0a, 0x7c, 0xfd, 0xe8, 0x2c, 0x05, - 0xbe, 0x77, 0x0a, 0x0d, 0xa5, 0x8e, 0xa6, 0x25, 0xf5, 0xdc, 0x27, 0x4b, 0xa1, 0x84, 0x50, 0x28, - 0xdb, 0x61, 0xee, 0x84, 0xc3, 0xbc, 0xdf, 0xda, 0xd1, 0xf8, 0x00, 0x50, 0xa0, 0x69, 0x74, 0xcd, - 0x75, 0xdb, 0xb4, 0x85, 0x9b, 0x96, 0x89, 0x9c, 0xad, 0xb7, 0xa7, 0xf9, 0xe3, 0xb5, 0x60, 0x6a, - 0x26, 0xb9, 0x78, 0xf5, 0xfd, 0x9b, 0x03, 0x2b, 0xa2, 0xdf, 0x64, 0x2d, 0xfe, 0xc5, 0x35, 0x77, - 0x36, 0xf1, 0xf2, 0xa9, 0x14, 0x4a, 0x4d, 0xed, 0xe6, 0x0b, 0xef, 0xef, 0x57, 0x0e, 0x5c, 0x33, - 0xcf, 0x14, 0xd1, 0xd6, 0xf3, 0x9e, 0x64, 0xa7, 0x16, 0xaf, 0x5b, 0xa2, 0x2a, 0xa4, 0xd8, 0xf9, - 0x8f, 0x32, 0x1b, 0x75, 0x71, 0x76, 0x1f, 0x39, 0xf0, 0x59, 0x73, 0xc9, 0xb2, 0x28, 0x7e, 0x02, - 0xcf, 0x82, 0x4f, 0xe4, 0x32, 0xf2, 0x0f, 0x07, 0xd6, 0x52, 0x5a, 0xe9, 0x8d, 0x24, 0xb9, 0x38, - 0x2d, 0xf4, 0x36, 0x40, 0x2f, 0x0a, 0x43, 0xda, 0xe3, 0xe6, 0x9e, 0x7f, 0x56, 0xcd, 0xcd, 0xa0, - 0xde, 0xf7, 0xad, 0xfd, 0x5c, 0x87, 0x85, 0x68, 0xc4, 0xe3, 0x11, 0xd7, 0x29, 0xa9, 0x47, 0x17, - 0x0e, 0xc3, 0xd6, 0x2f, 0x6a, 0x50, 0x35, 0x4f, 0x32, 0xf4, 0x3d, 0xa8, 0xdd, 0xa3, 0x5c, 0xff, - 0x42, 0xf5, 0xa5, 0x73, 0x5e, 0xbb, 0x2a, 0x81, 0xbe, 0x5c, 0xe8, 0x4d, 0x8c, 0x06, 0x73, 0xde, - 0x7f, 0x68, 0xd3, 0x5a, 0x9f, 0x8b, 0x48, 0x2d, 0xbd, 0x56, 0x00, 0xa9, 0xad, 0xfd, 0xf0, 0xac, - 0xc7, 0x07, 0xba, 0x61, 0x29, 0x9a, 0x0f, 0x4b, 0xed, 0xb6, 0x8b, 0xc2, 0xb5, 0xf1, 0xd1, 0xfc, - 0xc7, 0x03, 0x7a, 0x3d, 0x47, 0xd7, 0x34, 0x28, 0x35, 0xfc, 0x46, 0x31, 0xb0, 0x36, 0x1b, 0xe4, - 0xbf, 0x41, 0xd1, 0x86, 0xa5, 0x25, 0x0f, 0x90, 0x9a, 0xdb, 0x3c, 0x1f, 0xa8, 0x4d, 0xdd, 0xb7, - 0xde, 0x18, 0xe8, 0x15, 0x6b, 0x59, 0x3a, 0x9b, 0x2a, 0x7d, 0x75, 0x8e, 0x54, 0x6b, 0xfa, 0xee, - 0xe4, 0x8d, 0x1f, 0x7d, 0xde, 0x7e, 0xdb, 0x5a, 0x82, 0x54, 0xdf, 0xfa, 0x7c, 0x80, 0x56, 0xd9, - 0xcb, 0xbb, 0x52, 0x23, 0x3b, 0x4d, 0x67, 0xc5, 0xa9, 0xfa, 0xaf, 0x9c, 0x07, 0xd3, 0x46, 0x8e, - 0x72, 0x2f, 0x60, 0xc8, 0x5e, 0x9e, 0x23, 0x4f, 0xcd, 0x6c, 0x9c, 0x8b, 0xcb, 0xec, 0xe4, 0xb4, - 0xc5, 0x09, 0x3b, 0x79, 0x6d, 0x33, 0xcf, 0x4e, 0x3e, 0x4e, 0xdb, 0x79, 0x3c, 0xdd, 0x09, 0xd1, - 0x17, 0xa6, 0x1c, 0x9d, 0x89, 0x52, 0xed, 0xad, 0xb3, 0x20, 0x5a, 0xf1, 0xd7, 0xd5, 0xef, 0xf7, - 0x68, 0xe2, 0xe7, 0x4f, 0x1e, 0xc5, 0xa9, 0x92, 0xe6, 0xac, 0x40, 0x2d, 0xdd, 0xfa, 0x89, 0x0b, - 0x75, 0xab, 0x31, 0xa0, 0x0f, 0xec, 0xe2, 0xb4, 0x91, 0x53, 0x76, 0xec, 0x1e, 0x97, 0x9b, 0xd5, - 0x73, 0x80, 0x9a, 0xea, 0xe9, 0x19, 0xfd, 0x08, 0xe5, 0x9d, 0xc5, 0x19, 0x54, 0x6a, 0xf4, 0x46, - 0x41, 0xb4, 0xb6, 0xfc, 0x24, 0xa7, 0xd5, 0x4c, 0x94, 0xdf, 0x19, 0x69, 0x6e, 0xf9, 0xcd, 0x43, - 0x29, 0x0b, 0x6f, 0x3a, 0x97, 0x08, 0xc4, 0x93, 0x05, 0xf9, 0xc7, 0xdc, 0xad, 0xff, 0x05, 0x00, - 0x00, 0xff, 0xff, 0xbc, 0x68, 0xf6, 0x08, 0xab, 0x1b, 0x00, 0x00, +var fileDescriptor_tfplugin5_56820f4fb67360c5 = []byte{ + // 1876 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x59, 0xcd, 0x6f, 0x23, 0x49, + 0x15, 0x9f, 0x76, 0xdb, 0x89, 0xfd, 0x9c, 0x0f, 0xa7, 0x66, 0x76, 0x30, 0xbd, 0xbb, 0x10, 0xcc, + 0x47, 0xb2, 0xda, 0x1d, 0xcf, 0x2a, 0x03, 0xbb, 0x4b, 0x18, 0xad, 0xc8, 0x66, 0x42, 0x26, 0x62, + 0x26, 0x1b, 0xca, 0xf3, 0x81, 0x84, 0xb4, 0x56, 0x8d, 0xbb, 0xe2, 0x69, 0xc6, 0xee, 0xee, 0xad, + 0x2e, 0x67, 0x62, 0x71, 0x44, 0x70, 0xe6, 0xc2, 0x87, 0xc4, 0xc7, 0x85, 0x03, 0xff, 0x00, 0x07, + 0xe0, 0xc6, 0x89, 0x7f, 0x80, 0x1b, 0x70, 0x42, 0x70, 0x43, 0x1c, 0xe1, 0x82, 0x84, 0xea, 0xab, + 0xbb, 0x6c, 0xb7, 0x93, 0x9e, 0x64, 0x57, 0x88, 0x5b, 0x57, 0xbd, 0x5f, 0xbd, 0xf7, 0xab, 0xf7, + 0x5e, 0xbd, 0x57, 0x65, 0xc3, 0x2a, 0x3f, 0x8e, 0x07, 0xa3, 0x7e, 0x10, 0x7e, 0xa9, 0x1d, 0xb3, + 0x88, 0x47, 0xa8, 0x96, 0x4e, 0xb4, 0x6e, 0xc3, 0xd2, 0x9d, 0x71, 0x48, 0x86, 0x41, 0xef, 0x11, + 0x19, 0x8c, 0x28, 0x6a, 0xc2, 0xe2, 0x30, 0xe9, 0xc7, 0xa4, 0xf7, 0xac, 0xe9, 0xac, 0x3b, 0x9b, + 0x4b, 0xd8, 0x0c, 0x11, 0x82, 0xf2, 0xb7, 0x93, 0x28, 0x6c, 0x96, 0xe4, 0xb4, 0xfc, 0x6e, 0xfd, + 0xd5, 0x01, 0xb8, 0x13, 0x90, 0x7e, 0x18, 0x25, 0x3c, 0xe8, 0xa1, 0x6d, 0xa8, 0x26, 0xf4, 0x84, + 0xb2, 0x80, 0x8f, 0xe5, 0xea, 0x95, 0xad, 0x4f, 0xb5, 0x33, 0xdb, 0x19, 0xb0, 0xdd, 0xd1, 0x28, + 0x9c, 0xe2, 0x85, 0xe1, 0x64, 0x34, 0x1c, 0x12, 0x36, 0x96, 0x16, 0x6a, 0xd8, 0x0c, 0xd1, 0x75, + 0x58, 0xf0, 0x29, 0x27, 0xc1, 0xa0, 0xe9, 0x4a, 0x81, 0x1e, 0xa1, 0xb7, 0xa0, 0x46, 0x38, 0x67, + 0xc1, 0x93, 0x11, 0xa7, 0xcd, 0xf2, 0xba, 0xb3, 0x59, 0xdf, 0x6a, 0x5a, 0xe6, 0x76, 0x8c, 0xec, + 0x88, 0xf0, 0xa7, 0x38, 0x83, 0xb6, 0x6e, 0x42, 0xd5, 0xd8, 0x47, 0x75, 0x58, 0x3c, 0x38, 0x7c, + 0xb4, 0x73, 0xef, 0xe0, 0x4e, 0xe3, 0x0a, 0xaa, 0x41, 0x65, 0x0f, 0xe3, 0xf7, 0x71, 0xc3, 0x11, + 0xf3, 0x8f, 0x77, 0xf0, 0xe1, 0xc1, 0xe1, 0x7e, 0xa3, 0xd4, 0xfa, 0xb3, 0x03, 0xcb, 0x13, 0xda, + 0xd0, 0x2d, 0xa8, 0x24, 0x9c, 0xc6, 0x49, 0xd3, 0x59, 0x77, 0x37, 0xeb, 0x5b, 0xaf, 0xce, 0x33, + 0xdb, 0xee, 0x70, 0x1a, 0x63, 0x85, 0xf5, 0x7e, 0xe8, 0x40, 0x59, 0x8c, 0xd1, 0x06, 0xac, 0xa4, + 0x6c, 0xba, 0x21, 0x19, 0x52, 0xe9, 0xac, 0xda, 0xdd, 0x2b, 0x78, 0x39, 0x9d, 0x3f, 0x24, 0x43, + 0x8a, 0xda, 0x80, 0xe8, 0x80, 0x0e, 0x69, 0xc8, 0xbb, 0xcf, 0xe8, 0xb8, 0x9b, 0x70, 0x16, 0x84, + 0x7d, 0xe5, 0x9e, 0xbb, 0x57, 0x70, 0x43, 0xcb, 0xbe, 0x4e, 0xc7, 0x1d, 0x29, 0x41, 0x9b, 0xb0, + 0x6a, 0xe3, 0x83, 0x90, 0x4b, 0x97, 0xb9, 0x42, 0x73, 0x06, 0x3e, 0x08, 0xf9, 0x7b, 0x20, 0x22, + 0x35, 0xa0, 0x3d, 0x1e, 0xb1, 0xd6, 0x2d, 0x41, 0x2b, 0x8a, 0xbd, 0x1a, 0x2c, 0x62, 0xfa, 0xe1, + 0x88, 0x26, 0xdc, 0x5b, 0x87, 0x2a, 0xa6, 0x49, 0x1c, 0x85, 0x09, 0x45, 0xd7, 0xa0, 0xb2, 0xc7, + 0x58, 0xc4, 0x14, 0x49, 0xac, 0x06, 0xad, 0x1f, 0x39, 0x50, 0xc5, 0xe4, 0x79, 0x87, 0x13, 0x4e, + 0xd3, 0xd4, 0x70, 0xb2, 0xd4, 0x40, 0xdb, 0xb0, 0x78, 0x3c, 0x20, 0x7c, 0x48, 0xe2, 0x66, 0x49, + 0x3a, 0x69, 0xdd, 0x72, 0x92, 0x59, 0xd9, 0xfe, 0x9a, 0x82, 0xec, 0x85, 0x9c, 0x8d, 0xb1, 0x59, + 0xe0, 0x6d, 0xc3, 0x92, 0x2d, 0x40, 0x0d, 0x70, 0x9f, 0xd1, 0xb1, 0x26, 0x20, 0x3e, 0x05, 0xa9, + 0x13, 0x91, 0xaf, 0x3a, 0x57, 0xd4, 0x60, 0xbb, 0xf4, 0x8e, 0xd3, 0xfa, 0x7b, 0x05, 0x16, 0x3a, + 0xbd, 0xa7, 0x74, 0x48, 0x44, 0x4a, 0x9d, 0x50, 0x96, 0x04, 0x9a, 0x99, 0x8b, 0xcd, 0x10, 0xdd, + 0x80, 0xca, 0x93, 0x41, 0xd4, 0x7b, 0x26, 0x97, 0xd7, 0xb7, 0x3e, 0x61, 0x51, 0x53, 0x6b, 0xdb, + 0xef, 0x09, 0x31, 0x56, 0x28, 0xef, 0x17, 0x0e, 0x54, 0xe4, 0xc4, 0x19, 0x2a, 0xbf, 0x02, 0x90, + 0x06, 0x2f, 0xd1, 0x5b, 0x7e, 0x79, 0x56, 0x6f, 0x9a, 0x1e, 0xd8, 0x82, 0xa3, 0x77, 0xa1, 0x2e, + 0x2d, 0x75, 0xf9, 0x38, 0xa6, 0x49, 0xd3, 0x9d, 0xc9, 0x2a, 0xbd, 0xfa, 0x90, 0x26, 0x9c, 0xfa, + 0x8a, 0x1b, 0xc8, 0x15, 0x0f, 0xc4, 0x02, 0xef, 0x0f, 0x0e, 0xd4, 0x52, 0xcd, 0x22, 0x1c, 0x59, + 0x56, 0x61, 0xf9, 0x2d, 0xe6, 0x84, 0x6e, 0x73, 0x7a, 0xc5, 0x37, 0x5a, 0x87, 0xba, 0x4f, 0x93, + 0x1e, 0x0b, 0x62, 0x2e, 0x36, 0xa4, 0x4e, 0x97, 0x3d, 0x85, 0x3c, 0xa8, 0x32, 0xfa, 0xe1, 0x28, + 0x60, 0xd4, 0x97, 0x27, 0xac, 0x8a, 0xd3, 0xb1, 0x90, 0x45, 0x12, 0x45, 0x06, 0xcd, 0x8a, 0x92, + 0x99, 0xb1, 0x90, 0xf5, 0xa2, 0x61, 0x3c, 0xe2, 0xd4, 0x6f, 0x2e, 0x28, 0x99, 0x19, 0xa3, 0x57, + 0xa0, 0x96, 0xd0, 0x30, 0x09, 0x78, 0x70, 0x42, 0x9b, 0x8b, 0x52, 0x98, 0x4d, 0x78, 0xbf, 0x2a, + 0x41, 0xdd, 0xda, 0x25, 0x7a, 0x19, 0x6a, 0x82, 0xab, 0x75, 0x4c, 0x70, 0x55, 0x4c, 0xc8, 0xf3, + 0xf1, 0x62, 0x61, 0x44, 0xbb, 0xb0, 0x18, 0xd2, 0x84, 0x8b, 0x33, 0xe4, 0xca, 0xea, 0xf4, 0xda, + 0x99, 0x1e, 0x96, 0xdf, 0x41, 0xd8, 0xbf, 0x1f, 0xf9, 0x14, 0x9b, 0x95, 0x82, 0xd0, 0x30, 0x08, + 0xbb, 0x01, 0xa7, 0xc3, 0x44, 0xfa, 0xc4, 0xc5, 0xd5, 0x61, 0x10, 0x1e, 0x88, 0xb1, 0x14, 0x92, + 0x53, 0x2d, 0xac, 0x68, 0x21, 0x39, 0x95, 0xc2, 0xd6, 0x7d, 0xb5, 0x33, 0xad, 0x71, 0xb2, 0xf4, + 0x00, 0x2c, 0x74, 0x0e, 0x0e, 0xf7, 0xef, 0xed, 0x35, 0x1c, 0x54, 0x85, 0xf2, 0xbd, 0x83, 0xce, + 0x83, 0x46, 0x09, 0x2d, 0x82, 0xdb, 0xd9, 0x7b, 0xd0, 0x70, 0xc5, 0xc7, 0xfd, 0x9d, 0xa3, 0x46, + 0x59, 0x94, 0xa8, 0x7d, 0xfc, 0xfe, 0xc3, 0xa3, 0x46, 0xa5, 0xf5, 0x93, 0x32, 0xac, 0xed, 0x53, + 0x7e, 0xc4, 0xa2, 0x93, 0xc0, 0xa7, 0x4c, 0xf1, 0xb7, 0x0f, 0xf1, 0xbf, 0x5c, 0xeb, 0x14, 0xdf, + 0x80, 0x6a, 0xac, 0x91, 0xd2, 0x8d, 0xf5, 0xad, 0xb5, 0x99, 0xcd, 0xe3, 0x14, 0x82, 0x28, 0x34, + 0x18, 0x4d, 0xa2, 0x11, 0xeb, 0xd1, 0x6e, 0x22, 0x85, 0x26, 0xa7, 0xb7, 0xad, 0x65, 0x33, 0xe6, + 0xdb, 0xc6, 0x9e, 0xf8, 0x90, 0xab, 0xd5, 0x7c, 0xa2, 0x0e, 0xf8, 0x2a, 0x9b, 0x9c, 0x45, 0x03, + 0xb8, 0xea, 0x13, 0x4e, 0xba, 0x53, 0x96, 0x54, 0xfe, 0xdf, 0x2e, 0x66, 0xe9, 0x0e, 0xe1, 0xa4, + 0x33, 0x6b, 0x6b, 0xcd, 0x9f, 0x9e, 0x47, 0x6f, 0x43, 0xdd, 0x4f, 0x7b, 0x90, 0x08, 0x9e, 0xb0, + 0xf2, 0x52, 0x6e, 0x87, 0xc2, 0x36, 0xd2, 0x7b, 0x08, 0xd7, 0xf2, 0xf6, 0x93, 0x53, 0x97, 0x36, + 0xec, 0xba, 0x94, 0xeb, 0xe3, 0xac, 0x54, 0x79, 0x8f, 0xe1, 0x7a, 0x3e, 0xf9, 0x4b, 0x2a, 0x6e, + 0xfd, 0xc9, 0x81, 0x97, 0x8e, 0x18, 0x8d, 0x09, 0xa3, 0xc6, 0x6b, 0xbb, 0x51, 0x78, 0x1c, 0xf4, + 0xbd, 0xed, 0x34, 0x3d, 0xd0, 0x4d, 0x58, 0xe8, 0xc9, 0x49, 0x9d, 0x0f, 0xf6, 0xe9, 0xb1, 0xaf, + 0x04, 0x58, 0xc3, 0xbc, 0xef, 0x39, 0x56, 0x3e, 0x7d, 0x15, 0x56, 0x63, 0x65, 0xc1, 0xef, 0x16, + 0x53, 0xb3, 0x62, 0xf0, 0x8a, 0xca, 0x74, 0x34, 0x4a, 0x45, 0xa3, 0xd1, 0xfa, 0x41, 0x09, 0xae, + 0x3d, 0x8c, 0xfb, 0x8c, 0xf8, 0x34, 0x8d, 0x8a, 0x68, 0x26, 0x1e, 0xcb, 0x36, 0x77, 0x66, 0xd9, + 0xb0, 0x8a, 0x78, 0x69, 0xb2, 0x88, 0xbf, 0x09, 0x35, 0x46, 0x9e, 0x77, 0x13, 0xa1, 0x4e, 0xd6, + 0x88, 0xfa, 0xd6, 0xd5, 0x9c, 0xb6, 0x85, 0xab, 0x4c, 0x7f, 0x79, 0xdf, 0xb5, 0x9d, 0xf2, 0x2e, + 0xac, 0x8c, 0x14, 0x31, 0x5f, 0xeb, 0x38, 0xc7, 0x27, 0xcb, 0x06, 0xae, 0xfa, 0xe8, 0x85, 0x5d, + 0xf2, 0x3b, 0x07, 0xbc, 0x47, 0x64, 0x10, 0xf8, 0x82, 0x9c, 0xf6, 0x89, 0xe8, 0x0c, 0x3a, 0xea, + 0x8f, 0x0b, 0x3a, 0x26, 0x4b, 0x89, 0x52, 0xb1, 0x94, 0xd8, 0xb5, 0x36, 0x3f, 0x45, 0xde, 0x29, + 0x4c, 0xfe, 0x37, 0x0e, 0x34, 0x0d, 0xf9, 0xec, 0x3c, 0xfc, 0x5f, 0x50, 0xff, 0xad, 0x03, 0x35, + 0x45, 0x74, 0xc4, 0xa8, 0xd7, 0xcf, 0xb8, 0xbe, 0x0e, 0x6b, 0x9c, 0x32, 0x46, 0x8e, 0x23, 0x36, + 0xec, 0xda, 0x37, 0x86, 0x1a, 0x6e, 0xa4, 0x82, 0x47, 0x3a, 0xeb, 0xfe, 0x37, 0xdc, 0xff, 0xe9, + 0xc0, 0x12, 0xa6, 0xc4, 0x37, 0xf9, 0xe2, 0xf9, 0x05, 0x5d, 0x7d, 0x1b, 0x96, 0x7b, 0x23, 0xc6, + 0xc4, 0x2d, 0x53, 0x25, 0xf9, 0x39, 0xac, 0x97, 0x34, 0x5a, 0x1d, 0x98, 0xb1, 0xc5, 0xfd, 0x8b, + 0x50, 0x0b, 0xe9, 0xf3, 0x62, 0x47, 0xa5, 0x1a, 0xd2, 0xe7, 0x97, 0x3c, 0x25, 0xbf, 0x2e, 0x03, + 0x3a, 0x1a, 0x90, 0xd0, 0xec, 0x78, 0xf7, 0x29, 0x09, 0xfb, 0xd4, 0xfb, 0x8f, 0x53, 0x70, 0xe3, + 0xef, 0x40, 0x3d, 0x66, 0x41, 0xc4, 0x8a, 0x6d, 0x1b, 0x24, 0x56, 0x51, 0xde, 0x03, 0x14, 0xb3, + 0x28, 0x8e, 0x12, 0xea, 0x77, 0xb3, 0x1d, 0xbb, 0x67, 0x2b, 0x68, 0x98, 0x25, 0x87, 0x66, 0xe7, + 0x59, 0xa2, 0x94, 0x0b, 0x25, 0x0a, 0xfa, 0x2c, 0x2c, 0x2b, 0xc6, 0x31, 0x0b, 0x4e, 0x84, 0xc9, + 0x8a, 0xbc, 0xfe, 0x2d, 0xc9, 0xc9, 0x23, 0x35, 0xe7, 0xfd, 0xbc, 0x64, 0x85, 0xe4, 0x36, 0x2c, + 0xc7, 0x03, 0x12, 0x86, 0x45, 0x2b, 0xd8, 0x92, 0x46, 0x2b, 0x82, 0xbb, 0xe2, 0xda, 0x20, 0xef, + 0x87, 0x49, 0x97, 0xd1, 0x78, 0x40, 0x7a, 0x54, 0xc7, 0x67, 0xfe, 0xcb, 0x6c, 0xd5, 0xac, 0xc0, + 0x6a, 0x01, 0xda, 0x80, 0x55, 0x43, 0xc1, 0xd0, 0x76, 0x25, 0xed, 0x15, 0x3d, 0xad, 0x89, 0x5f, + 0xb8, 0x9f, 0xa3, 0x37, 0x00, 0x0d, 0x68, 0x9f, 0xf4, 0xc6, 0xf2, 0xbe, 0xdd, 0x4d, 0xc6, 0x09, + 0xa7, 0x43, 0x7d, 0x89, 0x6d, 0x28, 0x89, 0xa8, 0x9e, 0x1d, 0x39, 0xdf, 0xfa, 0xa3, 0x0b, 0x57, + 0x77, 0xe2, 0x78, 0x30, 0x9e, 0xca, 0x9b, 0x7f, 0x7f, 0xfc, 0x79, 0x33, 0x13, 0x0d, 0xf7, 0x45, + 0xa2, 0xf1, 0xc2, 0xe9, 0x92, 0xe3, 0xf9, 0x4a, 0x9e, 0xe7, 0xbd, 0xdf, 0x3b, 0x97, 0x3e, 0xc5, + 0x4d, 0x58, 0x34, 0x36, 0xd4, 0x9b, 0xc4, 0x0c, 0xa7, 0xc3, 0xea, 0x5e, 0x32, 0xac, 0xe5, 0x39, + 0x61, 0xfd, 0x47, 0x09, 0xae, 0x1e, 0x0c, 0xe3, 0x88, 0xf1, 0xc9, 0x5b, 0xc4, 0x5b, 0x05, 0xa3, + 0xba, 0x02, 0xa5, 0xc0, 0xd7, 0xef, 0xcf, 0x52, 0xe0, 0x7b, 0xa7, 0xd0, 0x50, 0xea, 0x68, 0x5a, + 0x52, 0xcf, 0x7d, 0xbd, 0x14, 0x4a, 0x08, 0x85, 0xb2, 0x1d, 0xe6, 0x4e, 0x38, 0xcc, 0xfb, 0xa5, + 0x1d, 0x8d, 0x0f, 0x00, 0x05, 0x9a, 0x46, 0xd7, 0x5c, 0xb7, 0x4d, 0x5b, 0xb8, 0x69, 0x99, 0xc8, + 0xd9, 0x7a, 0x7b, 0x9a, 0x3f, 0x5e, 0x0b, 0xa6, 0x66, 0x92, 0x8b, 0x57, 0xdf, 0xbf, 0x38, 0xb0, + 0x22, 0xfa, 0x4d, 0xd6, 0xe2, 0x3f, 0xbe, 0xe6, 0xce, 0x26, 0x5e, 0x3e, 0x95, 0x42, 0xa9, 0xa9, + 0xdd, 0x7c, 0xe1, 0xfd, 0xfd, 0xd4, 0x81, 0x6b, 0xe6, 0x99, 0x22, 0xda, 0x7a, 0xde, 0x93, 0xec, + 0xd4, 0xe2, 0x75, 0x4b, 0x54, 0x85, 0x14, 0x3b, 0xff, 0x51, 0x66, 0xa3, 0x2e, 0xce, 0xee, 0x67, + 0x0e, 0x7c, 0xd2, 0x5c, 0xb2, 0x2c, 0x8a, 0x1f, 0xc1, 0xb3, 0xe0, 0x23, 0xb9, 0x8c, 0xfc, 0xcd, + 0x81, 0xb5, 0x94, 0x56, 0x7a, 0x23, 0x49, 0x2e, 0x4e, 0x0b, 0xbd, 0x0d, 0xd0, 0x8b, 0xc2, 0x90, + 0xf6, 0xb8, 0xb9, 0xe7, 0x9f, 0x55, 0x73, 0x33, 0xa8, 0xf7, 0x2d, 0x6b, 0x3f, 0xd7, 0x61, 0x21, + 0x1a, 0xf1, 0x78, 0xc4, 0x75, 0x4a, 0xea, 0xd1, 0x85, 0xc3, 0xb0, 0xf5, 0xe3, 0x1a, 0x54, 0xcd, + 0x93, 0x0c, 0x7d, 0x13, 0x6a, 0xfb, 0x94, 0xeb, 0x1f, 0xab, 0x3e, 0x77, 0xce, 0x6b, 0x57, 0x25, + 0xd0, 0xe7, 0x0b, 0xbd, 0x89, 0xd1, 0x60, 0xce, 0xfb, 0x0f, 0x6d, 0x5a, 0xeb, 0x73, 0x11, 0xa9, + 0xa5, 0xd7, 0x0a, 0x20, 0xb5, 0xb5, 0xef, 0x9c, 0xf5, 0xf8, 0x40, 0x37, 0x2c, 0x45, 0xf3, 0x61, + 0xa9, 0xdd, 0x76, 0x51, 0xb8, 0x36, 0x3e, 0x9a, 0xff, 0x78, 0x40, 0xaf, 0xe7, 0xe8, 0x9a, 0x06, + 0xa5, 0x86, 0xdf, 0x28, 0x06, 0xd6, 0x66, 0x83, 0xfc, 0x37, 0x28, 0xda, 0xb0, 0xb4, 0xe4, 0x01, + 0x52, 0x73, 0x9b, 0xe7, 0x03, 0xb5, 0xa9, 0xbb, 0xd6, 0x1b, 0x03, 0xbd, 0x62, 0x2d, 0x4b, 0x67, + 0x53, 0xa5, 0xaf, 0xce, 0x91, 0x6a, 0x4d, 0xdf, 0x98, 0xbc, 0xf1, 0xa3, 0x4f, 0xdb, 0x6f, 0x5b, + 0x4b, 0x90, 0xea, 0x5b, 0x9f, 0x0f, 0xd0, 0x2a, 0x7b, 0x79, 0x57, 0x6a, 0x64, 0xa7, 0xe9, 0xac, + 0x38, 0x55, 0xff, 0x85, 0xf3, 0x60, 0xda, 0xc8, 0x71, 0xee, 0x05, 0x0c, 0xd9, 0xcb, 0x73, 0xe4, + 0xa9, 0x99, 0x8d, 0x73, 0x71, 0x99, 0x9d, 0x9c, 0xb6, 0x38, 0x61, 0x27, 0xaf, 0x6d, 0xe6, 0xd9, + 0xc9, 0xc7, 0x69, 0x3b, 0x8f, 0xa7, 0x3b, 0x21, 0xfa, 0xcc, 0x94, 0xa3, 0x33, 0x51, 0xaa, 0xbd, + 0x75, 0x16, 0x44, 0x2b, 0xfe, 0xb2, 0xfa, 0x29, 0x1f, 0x4d, 0xfc, 0x12, 0xca, 0xa3, 0x38, 0x55, + 0xd2, 0x9c, 0x15, 0xa8, 0xa5, 0x5b, 0xdf, 0x77, 0xa1, 0x6e, 0x35, 0x06, 0xf4, 0x81, 0x5d, 0x9c, + 0x36, 0x72, 0xca, 0x8e, 0xdd, 0xe3, 0x72, 0xb3, 0x7a, 0x0e, 0x50, 0x53, 0x3d, 0x3d, 0xa3, 0x1f, + 0xa1, 0xbc, 0xb3, 0x38, 0x83, 0x4a, 0x8d, 0xde, 0x28, 0x88, 0xd6, 0x96, 0x9f, 0xe4, 0xb4, 0x9a, + 0x89, 0xf2, 0x3b, 0x23, 0xcd, 0x2d, 0xbf, 0x79, 0x28, 0x65, 0xe1, 0x4d, 0xe7, 0x12, 0x81, 0x78, + 0xb2, 0x20, 0xff, 0xa3, 0xbb, 0xf5, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc8, 0x16, 0x0b, 0x32, + 0xb6, 0x1b, 0x00, 0x00, } diff --git a/internal/tfplugin5/tfplugin5.proto b/internal/tfplugin5/tfplugin5.proto index 39c0fe39a..370faf74c 100644 --- a/internal/tfplugin5/tfplugin5.proto +++ b/internal/tfplugin5/tfplugin5.proto @@ -95,6 +95,7 @@ message Schema { LIST = 2; SET = 3; MAP = 4; + GROUP = 5; } string type_name = 1; diff --git a/plans/objchange/all_null.go b/plans/objchange/all_null.go index b1acb253a..18a7e99a3 100644 --- a/plans/objchange/all_null.go +++ b/plans/objchange/all_null.go @@ -1,8 +1,6 @@ package objchange import ( - "fmt" - "github.com/hashicorp/terraform/configs/configschema" "github.com/zclconf/go-cty/cty" ) @@ -14,55 +12,7 @@ import ( // This simulates what would result from decoding an empty configuration block // with the given schema, except that it does not produce errors func AllAttributesNull(schema *configschema.Block) cty.Value { - vals := make(map[string]cty.Value) - ty := schema.ImpliedType() - - for name := range schema.Attributes { - aty := ty.AttributeType(name) - vals[name] = cty.NullVal(aty) - } - - for name, blockS := range schema.BlockTypes { - aty := ty.AttributeType(name) - - switch blockS.Nesting { - case configschema.NestingSingle: - // NestingSingle behaves like an object attribute, which decodes - // as null when it's not present in configuration. - vals[name] = cty.NullVal(aty) - default: - // All other nesting types decode as "empty" when not present, but - // empty values take different forms depending on the type. - switch { - case aty.IsListType(): - vals[name] = cty.ListValEmpty(aty.ElementType()) - case aty.IsSetType(): - vals[name] = cty.SetValEmpty(aty.ElementType()) - case aty.IsMapType(): - vals[name] = cty.MapValEmpty(aty.ElementType()) - case aty.Equals(cty.DynamicPseudoType): - // We use DynamicPseudoType in situations where there's a - // nested attribute of DynamicPseudoType, since the schema - // system cannot predict the final type until it knows exactly - // how many elements there will be. However, since we're - // trying to behave as if there are _no_ elements, we know - // we're producing either an empty tuple or empty object - // and just need to distinguish these two cases. - switch blockS.Nesting { - case configschema.NestingList: - vals[name] = cty.EmptyTupleVal - case configschema.NestingMap: - vals[name] = cty.EmptyObjectVal - } - } - } - - // By the time we get down here we should always have set a value. - // If not, that suggests a missing case in the above switches. - if _, ok := vals[name]; !ok { - panic(fmt.Sprintf("failed to create empty value for nested block %q", name)) - } - } - - return cty.ObjectVal(vals) + // "All attributes null" happens to be the definition of EmptyValue for + // a Block, so we can just delegate to that. + return schema.EmptyValue() } diff --git a/plans/objchange/compatible.go b/plans/objchange/compatible.go index fa1fd0328..58e943042 100644 --- a/plans/objchange/compatible.go +++ b/plans/objchange/compatible.go @@ -67,7 +67,7 @@ func assertObjectCompatible(schema *configschema.Block, planned, actual cty.Valu // expression is itself unknown and thus it cannot predict how many // child blocks will get created. switch blockS.Nesting { - case configschema.NestingSingle: + case configschema.NestingSingle, configschema.NestingGroup: if allLeafValuesUnknown(plannedV) && !plannedV.IsNull() { return errs } @@ -84,7 +84,7 @@ func assertObjectCompatible(schema *configschema.Block, planned, actual cty.Valu path := append(path, cty.GetAttrStep{Name: name}) switch blockS.Nesting { - case configschema.NestingSingle: + case configschema.NestingSingle, configschema.NestingGroup: moreErrs := assertObjectCompatible(&blockS.Block, plannedV, actualV, path) errs = append(errs, moreErrs...) case configschema.NestingList: diff --git a/plans/objchange/normalize_obj.go b/plans/objchange/normalize_obj.go index baf799fec..c23f44dac 100644 --- a/plans/objchange/normalize_obj.go +++ b/plans/objchange/normalize_obj.go @@ -45,9 +45,13 @@ func NormalizeObjectFromLegacySDK(val cty.Value, schema *configschema.Block) cty } switch blockS.Nesting { - case configschema.NestingSingle: + case configschema.NestingSingle, configschema.NestingGroup: if lv.IsKnown() { - vals[name] = NormalizeObjectFromLegacySDK(lv, &blockS.Block) + if lv.IsNull() && blockS.Nesting == configschema.NestingGroup { + vals[name] = blockS.EmptyValue() + } else { + vals[name] = NormalizeObjectFromLegacySDK(lv, &blockS.Block) + } } else { vals[name] = unknownBlockStub(&blockS.Block) } @@ -105,7 +109,7 @@ func unknownBlockStub(schema *configschema.Block) cty.Value { } for name, blockS := range schema.BlockTypes { switch blockS.Nesting { - case configschema.NestingSingle: + case configschema.NestingSingle, configschema.NestingGroup: vals[name] = unknownBlockStub(&blockS.Block) case configschema.NestingList: // In principle we may be expected to produce a tuple value here, diff --git a/plans/objchange/objchange.go b/plans/objchange/objchange.go index 18a882846..5a8af1481 100644 --- a/plans/objchange/objchange.go +++ b/plans/objchange/objchange.go @@ -121,7 +121,7 @@ func proposedNewObject(schema *configschema.Block, prior, config cty.Value) cty. var newV cty.Value switch blockType.Nesting { - case configschema.NestingSingle: + case configschema.NestingSingle, configschema.NestingGroup: newV = ProposedNewObject(&blockType.Block, priorV, configV) case configschema.NestingList: @@ -335,7 +335,7 @@ func setElementCompareValue(schema *configschema.Block, v cty.Value, isConfig bo for name, blockType := range schema.BlockTypes { switch blockType.Nesting { - case configschema.NestingSingle: + case configschema.NestingSingle, configschema.NestingGroup: attrs[name] = setElementCompareValue(&blockType.Block, v.GetAttr(name), isConfig) case configschema.NestingList, configschema.NestingSet: diff --git a/plans/objchange/plan_valid.go b/plans/objchange/plan_valid.go index dd7d7ce21..69acb8979 100644 --- a/plans/objchange/plan_valid.go +++ b/plans/objchange/plan_valid.go @@ -83,7 +83,7 @@ func assertPlanValid(schema *configschema.Block, priorState, config, plannedStat } switch blockS.Nesting { - case configschema.NestingSingle: + case configschema.NestingSingle, configschema.NestingGroup: moreErrs := assertPlanValid(&blockS.Block, priorV, configV, plannedV, path) errs = append(errs, moreErrs...) case configschema.NestingList: diff --git a/plugin/convert/schema.go b/plugin/convert/schema.go index db879b54d..6a45f54c9 100644 --- a/plugin/convert/schema.go +++ b/plugin/convert/schema.go @@ -45,10 +45,25 @@ func ConfigSchemaToProto(b *configschema.Block) *proto.Schema_Block { } func protoSchemaNestedBlock(name string, b *configschema.NestedBlock) *proto.Schema_NestedBlock { + var nesting proto.Schema_NestedBlock_NestingMode + switch b.Nesting { + case configschema.NestingSingle: + nesting = proto.Schema_NestedBlock_SINGLE + case configschema.NestingGroup: + nesting = proto.Schema_NestedBlock_GROUP + case configschema.NestingList: + nesting = proto.Schema_NestedBlock_LIST + case configschema.NestingSet: + nesting = proto.Schema_NestedBlock_SET + case configschema.NestingMap: + nesting = proto.Schema_NestedBlock_MAP + default: + nesting = proto.Schema_NestedBlock_INVALID + } return &proto.Schema_NestedBlock{ TypeName: name, Block: ConfigSchemaToProto(&b.Block), - Nesting: proto.Schema_NestedBlock_NestingMode(b.Nesting), + Nesting: nesting, MinItems: int64(b.MinItems), MaxItems: int64(b.MaxItems), } @@ -94,8 +109,25 @@ func ProtoToConfigSchema(b *proto.Schema_Block) *configschema.Block { } func schemaNestedBlock(b *proto.Schema_NestedBlock) *configschema.NestedBlock { + var nesting configschema.NestingMode + switch b.Nesting { + case proto.Schema_NestedBlock_SINGLE: + nesting = configschema.NestingSingle + case proto.Schema_NestedBlock_GROUP: + nesting = configschema.NestingGroup + case proto.Schema_NestedBlock_LIST: + nesting = configschema.NestingList + case proto.Schema_NestedBlock_MAP: + nesting = configschema.NestingMap + case proto.Schema_NestedBlock_SET: + nesting = configschema.NestingSet + default: + // In all other cases we'll leave it as the zero value (invalid) and + // let the caller validate it and deal with this. + } + nb := &configschema.NestedBlock{ - Nesting: configschema.NestingMode(b.Nesting), + Nesting: nesting, MinItems: int(b.MinItems), MaxItems: int(b.MaxItems), } diff --git a/terraform/context_plan_test.go b/terraform/context_plan_test.go index f7c8466ca..237d376e3 100644 --- a/terraform/context_plan_test.go +++ b/terraform/context_plan_test.go @@ -1759,6 +1759,80 @@ func TestContext2Plan_computed(t *testing.T) { } } +func TestContext2Plan_blockNestingGroup(t *testing.T) { + m := testModule(t, "plan-block-nesting-group") + p := testProvider("test") + p.GetSchemaReturn = &ProviderSchema{ + ResourceTypes: map[string]*configschema.Block{ + "test": { + BlockTypes: map[string]*configschema.NestedBlock{ + "blah": { + Nesting: configschema.NestingGroup, + Block: configschema.Block{ + Attributes: map[string]*configschema.Attribute{ + "baz": {Type: cty.String, Required: true}, + }, + }, + }, + }, + }, + }, + } + p.PlanResourceChangeFn = func(req providers.PlanResourceChangeRequest) providers.PlanResourceChangeResponse { + return providers.PlanResourceChangeResponse{ + PlannedState: req.ProposedNewState, + } + } + ctx := testContext2(t, &ContextOpts{ + Config: m, + ProviderResolver: providers.ResolverFixed( + map[string]providers.Factory{ + "test": testProviderFuncFixed(p), + }, + ), + }) + + plan, diags := ctx.Plan() + if diags.HasErrors() { + t.Fatalf("unexpected errors: %s", diags.Err()) + } + + if got, want := 1, len(plan.Changes.Resources); got != want { + t.Fatalf("wrong number of planned resource changes %d; want %d\n%s", got, want, spew.Sdump(plan.Changes.Resources)) + } + + if !p.PlanResourceChangeCalled { + t.Fatalf("PlanResourceChange was not called at all") + } + + got := p.PlanResourceChangeRequest + want := providers.PlanResourceChangeRequest{ + TypeName: "test", + + // Because block type "blah" is defined as NestingGroup, we get a non-null + // value for it with null nested attributes, rather than the "blah" object + // itself being null, when there's no "blah" block in the config at all. + // + // This represents the situation where the remote service _always_ creates + // a single "blah", regardless of whether the block is present, but when + // the block _is_ present the user can override some aspects of it. The + // absense of the block means "use the defaults", in that case. + Config: cty.ObjectVal(map[string]cty.Value{ + "blah": cty.ObjectVal(map[string]cty.Value{ + "baz": cty.NullVal(cty.String), + }), + }), + ProposedNewState: cty.ObjectVal(map[string]cty.Value{ + "blah": cty.ObjectVal(map[string]cty.Value{ + "baz": cty.NullVal(cty.String), + }), + }), + } + if !cmp.Equal(got, want, valueTrans) { + t.Errorf("wrong PlanResourceChange request\n%s", cmp.Diff(got, want, valueTrans)) + } +} + func TestContext2Plan_computedDataResource(t *testing.T) { m := testModule(t, "plan-computed-data-resource") p := testProvider("aws") diff --git a/terraform/resource.go b/terraform/resource.go index 0991037bf..994009ac7 100644 --- a/terraform/resource.go +++ b/terraform/resource.go @@ -281,7 +281,7 @@ func newResourceConfigShimmedComputedKeys(obj cty.Value, schema *configschema.Bl } switch blockS.Nesting { - case configschema.NestingSingle: + case configschema.NestingSingle, configschema.NestingGroup: keys := newResourceConfigShimmedComputedKeys(blockVal, &blockS.Block, fmt.Sprintf("%s%s.", prefix, typeName)) ret = append(ret, keys...) case configschema.NestingList, configschema.NestingSet: diff --git a/terraform/test-fixtures/plan-block-nesting-group/block-nesting-group.tf b/terraform/test-fixtures/plan-block-nesting-group/block-nesting-group.tf new file mode 100644 index 000000000..9284072dc --- /dev/null +++ b/terraform/test-fixtures/plan-block-nesting-group/block-nesting-group.tf @@ -0,0 +1,2 @@ +resource "test" "foo" { +}