Refresh inputs (#2531)

These changes take advantage of the newly-added support for returning
inputs from Read to update a resource's inputs as part of a refresh.
As a consequence, the Pulumi engine will now properly detect drift
between the actual state of a resource and the desired state described
by the program and generate appropriate update or replace steps.

As part of these changes, a resource's old inputs are now passed to the
provider when performing a refresh. The provider can take advantage of
this to maintain the accuracy of any additional data or metadata in the
resource's inputs that may need to be updated during the refresh.

This is required for the complete implementation of
https://github.com/pulumi/pulumi-terraform/pull/349. Without access to
the old inputs for a resource, TF-based providers would lose all
information about default population during a refresh.
This commit is contained in:
Pat Gavlin 2019-03-11 13:50:00 -07:00 committed by GitHub
parent 7d7e104ee3
commit 7ebd70a3e6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 287 additions and 165 deletions

View file

@ -8,6 +8,8 @@
changes where possible.
- `pulumi new` no longer runs an initial deployment after a project is generated for nodejs projects.
Instead, instructions are printed indicating that `pulumi up` can be used to deploy the project.
- Differences between the state of a refreshed resource and the state described in a Pulumi program are now properly
detected when using newer providers.
## 0.17.1 (Released March 6, 2019)

View file

@ -288,10 +288,13 @@ func GetResourceOutputsPropertiesString(
for _, k := range keys {
out := outs[k]
// Print this property if it is printable and either ins doesn't have it or it's different.
// Print this property if it is printable and if any of the following are true:
// - a property with the same key is not present in the inputs
// - the property that is present in the inputs is different
// - we are doing a refresh, in which case we always want to show state differences
if outputDiff != nil || shouldPrintPropertyValue(out, true) {
print := true
if in, has := ins[k]; has {
if in, has := ins[k]; has && !refresh {
print = (out.Diff(in) != nil)
}

View file

@ -1265,17 +1265,17 @@ func TestRefreshInitFailure(t *testing.T) {
deploytest.NewProviderLoader("pkgA", semver.MustParse("1.0.0"), func() (plugin.Provider, error) {
return &deploytest.Provider{
ReadF: func(
urn resource.URN, id resource.ID, props resource.PropertyMap,
) (resource.PropertyMap, resource.Status, error) {
urn resource.URN, id resource.ID, inputs, state resource.PropertyMap,
) (plugin.ReadResult, resource.Status, error) {
if refreshShouldFail && urn == resURN {
err := &plugin.InitError{
Reasons: []string{"Refresh reports continued to fail to initialize"},
}
return resource.PropertyMap{}, resource.StatusPartialFailure, err
return plugin.ReadResult{Outputs: resource.PropertyMap{}}, resource.StatusPartialFailure, err
} else if urn == res2URN {
return res2Outputs, resource.StatusOK, nil
return plugin.ReadResult{Outputs: res2Outputs}, resource.StatusOK, nil
}
return resource.PropertyMap{}, resource.StatusOK, nil
return plugin.ReadResult{Outputs: resource.PropertyMap{}}, resource.StatusOK, nil
},
}, nil
}),
@ -1462,11 +1462,11 @@ func TestRefreshWithDelete(t *testing.T) {
deploytest.NewProviderLoader("pkgA", semver.MustParse("1.0.0"), func() (plugin.Provider, error) {
return &deploytest.Provider{
ReadF: func(
urn resource.URN, id resource.ID, props resource.PropertyMap,
) (resource.PropertyMap, resource.Status, error) {
urn resource.URN, id resource.ID, inputs, state resource.PropertyMap,
) (plugin.ReadResult, resource.Status, error) {
// This thing doesn't exist. Returning nil from Read should trigger
// the engine to delete it from the snapshot.
return nil, resource.StatusOK, nil
return plugin.ReadResult{}, resource.StatusOK, nil
},
}, nil
}),
@ -1535,14 +1535,14 @@ func TestRefreshDeleteDependencies(t *testing.T) {
deploytest.NewProviderLoader("pkgA", semver.MustParse("1.0.0"), func() (plugin.Provider, error) {
return &deploytest.Provider{
ReadF: func(urn resource.URN, id resource.ID,
state resource.PropertyMap) (resource.PropertyMap, resource.Status, error) {
inputs, state resource.PropertyMap) (plugin.ReadResult, resource.Status, error) {
switch id {
case "0", "4":
// We want to delete resources A::0 and A::4.
return nil, resource.StatusOK, nil
return plugin.ReadResult{}, resource.StatusOK, nil
default:
return state, resource.StatusOK, nil
return plugin.ReadResult{Inputs: inputs, Outputs: state}, resource.StatusOK, nil
}
},
}, nil
@ -1619,18 +1619,21 @@ func TestRefreshBasics(t *testing.T) {
newResource(urnC, "5", true, urnA, urnB),
}
newStates := map[resource.ID]resource.PropertyMap{
newStates := map[resource.ID]plugin.ReadResult{
// A::0 and A::3 will have no changes.
"0": {},
"3": {},
"0": {Outputs: resource.PropertyMap{}, Inputs: resource.PropertyMap{}},
"3": {Outputs: resource.PropertyMap{}, Inputs: resource.PropertyMap{}},
// B::1 and A::4 will have changes.
"1": {"foo": resource.NewStringProperty("bar")},
"4": {"baz": resource.NewStringProperty("qux")},
// B::1 and A::4 will have changes. The latter will also have input changes.
"1": {Outputs: resource.PropertyMap{"foo": resource.NewStringProperty("bar")}, Inputs: resource.PropertyMap{}},
"4": {
Outputs: resource.PropertyMap{"baz": resource.NewStringProperty("qux")},
Inputs: resource.PropertyMap{"oof": resource.NewStringProperty("zab")},
},
// C::2 and C::5 will be deleted.
"2": nil,
"5": nil,
"2": {},
"5": {},
}
old := &deploy.Snapshot{
@ -1641,7 +1644,7 @@ func TestRefreshBasics(t *testing.T) {
deploytest.NewProviderLoader("pkgA", semver.MustParse("1.0.0"), func() (plugin.Provider, error) {
return &deploytest.Provider{
ReadF: func(urn resource.URN, id resource.ID,
state resource.PropertyMap) (resource.PropertyMap, resource.Status, error) {
inputs, state resource.PropertyMap) (plugin.ReadResult, resource.Status, error) {
new, hasNewState := newStates[id]
assert.True(t, hasNewState)
@ -1669,21 +1672,22 @@ func TestRefreshBasics(t *testing.T) {
}
expected, new := newStates[old.ID], entry.Step.New()
if expected == nil {
if expected.Outputs == nil {
// If the resource was deleted, we want the result op to be an OpDelete.
assert.Nil(t, new)
assert.Equal(t, deploy.OpDelete, resultOp)
} else {
// If there were changes to the outputs, we want the result op to be an OpUpdate. Otherwise we want
// an OpSame.
if reflect.DeepEqual(old.Outputs, expected) {
if reflect.DeepEqual(old.Outputs, expected.Outputs) {
assert.Equal(t, deploy.OpSame, resultOp)
} else {
assert.Equal(t, deploy.OpUpdate, resultOp)
}
// Only the outputs should have changed (if anything changed).
old.Outputs = expected
// Only the inputs and outputs should have changed (if anything changed).
old.Inputs = expected.Inputs
old.Outputs = expected.Outputs
assert.Equal(t, old, new)
}
}
@ -1711,9 +1715,10 @@ func TestRefreshBasics(t *testing.T) {
idx, err := strconv.ParseInt(string(r.ID), 0, 0)
assert.NoError(t, err)
// The new resources should be equal to the old resources + the new outputs.
// The new resources should be equal to the old resources + the new inputs and outputs.
old := oldResources[int(idx)]
old.Outputs = expected
old.Inputs = expected.Inputs
old.Outputs = expected.Outputs
assert.Equal(t, old, r)
}
}
@ -1772,14 +1777,14 @@ func TestCanceledRefresh(t *testing.T) {
deploytest.NewProviderLoader("pkgA", semver.MustParse("1.0.0"), func() (plugin.Provider, error) {
return &deploytest.Provider{
ReadF: func(urn resource.URN, id resource.ID,
state resource.PropertyMap) (resource.PropertyMap, resource.Status, error) {
inputs, state resource.PropertyMap) (plugin.ReadResult, resource.Status, error) {
refreshes <- id
<-cancelled
new, hasNewState := newStates[id]
assert.True(t, hasNewState)
return new, resource.StatusOK, nil
return plugin.ReadResult{Outputs: new}, resource.StatusOK, nil
},
CancelF: func() error {
close(cancelled)

View file

@ -127,16 +127,19 @@ func (p *builtinProvider) Delete(urn resource.URN, id resource.ID,
}
func (p *builtinProvider) Read(urn resource.URN, id resource.ID,
state resource.PropertyMap) (resource.PropertyMap, resource.Status, error) {
inputs, state resource.PropertyMap) (plugin.ReadResult, resource.Status, error) {
contract.Assert(urn.Type() == stackReferenceType)
state, err := p.readStackReference(state)
outputs, err := p.readStackReference(state)
if err != nil {
return nil, resource.StatusUnknown, err
return plugin.ReadResult{}, resource.StatusUnknown, err
}
return state, resource.StatusOK, nil
return plugin.ReadResult{
Inputs: inputs,
Outputs: outputs,
}, resource.StatusOK, nil
}
func (p *builtinProvider) Invoke(tok tokens.ModuleMember,

View file

@ -46,7 +46,7 @@ type Provider struct {
DeleteF func(urn resource.URN, id resource.ID, olds resource.PropertyMap) (resource.Status, error)
ReadF func(urn resource.URN, id resource.ID,
props resource.PropertyMap) (resource.PropertyMap, resource.Status, error)
inputs, state resource.PropertyMap) (plugin.ReadResult, resource.Status, error)
InvokeF func(tok tokens.ModuleMember,
inputs resource.PropertyMap) (resource.PropertyMap, []plugin.CheckFailure, error)
@ -135,11 +135,14 @@ func (prov *Provider) Delete(urn resource.URN,
}
func (prov *Provider) Read(urn resource.URN, id resource.ID,
props resource.PropertyMap) (resource.PropertyMap, resource.Status, error) {
inputs, state resource.PropertyMap) (plugin.ReadResult, resource.Status, error) {
if prov.ReadF == nil {
return resource.PropertyMap{}, resource.StatusUnknown, nil
return plugin.ReadResult{
Outputs: resource.PropertyMap{},
Inputs: resource.PropertyMap{},
}, resource.StatusUnknown, nil
}
return prov.ReadF(urn, id, props)
return prov.ReadF(urn, id, inputs, state)
}
func (prov *Provider) Invoke(tok tokens.ModuleMember,
args resource.PropertyMap) (resource.PropertyMap, []plugin.CheckFailure, error) {

View file

@ -368,8 +368,8 @@ func (r *Registry) Delete(urn resource.URN, id resource.ID, props resource.Prope
}
func (r *Registry) Read(urn resource.URN, id resource.ID,
props resource.PropertyMap) (resource.PropertyMap, resource.Status, error) {
return nil, resource.StatusUnknown, errors.New("provider resources may not be read")
inputs, state resource.PropertyMap) (plugin.ReadResult, resource.Status, error) {
return plugin.ReadResult{}, resource.StatusUnknown, errors.New("provider resources may not be read")
}
func (r *Registry) Invoke(tok tokens.ModuleMember,

View file

@ -114,8 +114,8 @@ func (prov *testProvider) Create(urn resource.URN, props resource.PropertyMap) (
return "", nil, resource.StatusOK, errors.New("unsupported")
}
func (prov *testProvider) Read(urn resource.URN, id resource.ID,
props resource.PropertyMap) (resource.PropertyMap, resource.Status, error) {
return nil, resource.StatusUnknown, errors.New("unsupported")
inputs, state resource.PropertyMap) (plugin.ReadResult, resource.Status, error) {
return plugin.ReadResult{}, resource.StatusUnknown, errors.New("unsupported")
}
func (prov *testProvider) Diff(urn resource.URN, id resource.ID,
olds resource.PropertyMap, news resource.PropertyMap, _ bool) (plugin.DiffResult, error) {

View file

@ -567,7 +567,7 @@ func (s *ReadStep) Apply(preview bool) (resource.Status, StepCompleteFunc, error
return resource.StatusOK, nil, err
}
result, rst, err := prov.Read(urn, id, s.new.Inputs)
result, rst, err := prov.Read(urn, id, nil, s.new.Inputs)
if err != nil {
if rst != resource.StatusPartialFailure {
return rst, nil, err
@ -581,7 +581,7 @@ func (s *ReadStep) Apply(preview bool) (resource.Status, StepCompleteFunc, error
}
}
s.new.Outputs = result
s.new.Outputs = result.Outputs
}
// If we were asked to replace an existing, non-External resource, pend the
@ -660,7 +660,7 @@ func (s *RefreshStep) Apply(preview bool) (resource.Status, StepCompleteFunc, er
}
var initErrors []string
refreshed, rst, err := prov.Read(s.old.URN, s.old.ID, s.old.Outputs)
refreshed, rst, err := prov.Read(s.old.URN, s.old.ID, s.old.Inputs, s.old.Outputs)
if err != nil {
if rst != resource.StatusPartialFailure {
return rst, nil, err
@ -669,9 +669,16 @@ func (s *RefreshStep) Apply(preview bool) (resource.Status, StepCompleteFunc, er
initErrors = initErr.Reasons
}
}
outputs := refreshed.Outputs
if refreshed != nil {
s.new = resource.NewState(s.old.Type, s.old.URN, s.old.Custom, s.old.Delete, s.old.ID, s.old.Inputs, refreshed,
// If the provider specified new inputs for this resource, pick them up now. Otherwise, retain the current inputs.
inputs := s.old.Inputs
if refreshed.Inputs != nil {
inputs = refreshed.Inputs
}
if outputs != nil {
s.new = resource.NewState(s.old.Type, s.old.URN, s.old.Custom, s.old.Delete, s.old.ID, inputs, outputs,
s.old.Parent, s.old.Protect, s.old.External, s.old.Dependencies, initErrors, s.old.Provider,
s.old.PropertyDependencies, s.old.PendingReplacement)
} else {

View file

@ -58,7 +58,7 @@ type Provider interface {
// identify the resource; this is typically just the resource ID, but may also include some properties. If the
// resource is missing (for instance, because it has been deleted), the resulting property map will be nil.
Read(urn resource.URN, id resource.ID,
props resource.PropertyMap) (resource.PropertyMap, resource.Status, error)
inputs, state resource.PropertyMap) (ReadResult, resource.Status, error)
// Update updates an existing resource with new values.
Update(urn resource.URN, id resource.ID,
olds resource.PropertyMap, news resource.PropertyMap) (resource.PropertyMap, resource.Status, error)
@ -123,3 +123,13 @@ func DiffUnavailable(reason string) DiffUnavailableError {
func (e DiffUnavailableError) Error() string {
return e.reason
}
// ReadResult is the result of a call to Read.
type ReadResult struct {
// Inputs contains the new inputs for the resource, if any. If this field is nil, the provider does not support
// returning inputs from a call to Read and the old inputs (if any) should be preserved.
Inputs resource.PropertyMap
// Outputs contains the new outputs/state for the resource, if any. If this field is nil, the resource does not
// exist.
Outputs resource.PropertyMap
}

View file

@ -349,7 +349,7 @@ func (p *provider) Create(urn resource.URN, props resource.PropertyMap) (resourc
Properties: mprops,
})
if err != nil {
resourceStatus, id, liveObject, resourceError = parseError(err)
resourceStatus, id, liveObject, _, resourceError = parseError(err)
logging.V(7).Infof("%s failed: %v", label, resourceError)
if resourceStatus != resource.StatusPartialFailure {
@ -381,72 +381,98 @@ func (p *provider) Create(urn resource.URN, props resource.PropertyMap) (resourc
// read the current live state associated with a resource. enough state must be include in the inputs to uniquely
// identify the resource; this is typically just the resource id, but may also include some properties.
func (p *provider) Read(
urn resource.URN, id resource.ID, props resource.PropertyMap,
) (resource.PropertyMap, resource.Status, error) {
func (p *provider) Read(urn resource.URN, id resource.ID,
inputs, state resource.PropertyMap) (ReadResult, resource.Status, error) {
contract.Assert(urn != "")
contract.Assert(id != "")
label := fmt.Sprintf("%s.Read(%s,%s)", p.label(), id, urn)
logging.V(7).Infof("%s executing (#props=%v)", label, len(props))
logging.V(7).Infof("%s executing (#inputs=%v, #state=%v)", label, len(inputs), len(state))
// Get the RPC client and ensure it's configured.
client, err := p.getClient()
if err != nil {
return nil, resource.StatusUnknown, err
return ReadResult{}, resource.StatusUnknown, err
}
// If the provider is not fully configured, return an empty bag.
if !p.cfgknown {
return resource.PropertyMap{}, resource.StatusUnknown, nil
return ReadResult{
Outputs: resource.PropertyMap{},
Inputs: resource.PropertyMap{},
}, resource.StatusUnknown, nil
}
// Marshal the input state so we can perform the RPC.
marshaled, err := MarshalProperties(props, MarshalOptions{Label: label, ElideAssetContents: true})
// Marshal the resource inputs and state so we can perform the RPC.
var minputs *_struct.Struct
if inputs != nil {
m, err := MarshalProperties(inputs, MarshalOptions{Label: label, ElideAssetContents: true})
if err != nil {
return ReadResult{}, resource.StatusUnknown, err
}
minputs = m
}
mstate, err := MarshalProperties(state, MarshalOptions{Label: label, ElideAssetContents: true})
if err != nil {
return nil, resource.StatusUnknown, err
return ReadResult{}, resource.StatusUnknown, err
}
// Now issue the read request over RPC, blocking until it finished.
var readID resource.ID
var liveObject *_struct.Struct
var liveInputs *_struct.Struct
var resourceError error
var resourceStatus = resource.StatusOK
resp, err := client.Read(p.ctx.Request(), &pulumirpc.ReadRequest{
Id: string(id),
Urn: string(urn),
Properties: marshaled,
Properties: mstate,
Inputs: minputs,
})
if err != nil {
resourceStatus, readID, liveObject, resourceError = parseError(err)
resourceStatus, readID, liveObject, liveInputs, resourceError = parseError(err)
logging.V(7).Infof("%s failed: %v", label, err)
if resourceStatus != resource.StatusPartialFailure {
return nil, resourceStatus, resourceError
return ReadResult{}, resourceStatus, resourceError
}
// Else it's a `StatusPartialFailure`.
} else {
readID = resource.ID(resp.GetId())
liveObject = resp.GetProperties()
liveInputs = resp.GetInputs()
}
// If the resource was missing, simply return a nil property map.
if string(readID) == "" {
return nil, resourceStatus, nil
return ReadResult{}, resourceStatus, nil
} else if readID != id {
return nil, resourceStatus, errors.Errorf(
return ReadResult{}, resourceStatus, errors.Errorf(
"reading resource %s yielded an unexpected ID; expected %s, got %s", urn, id, readID)
}
// Finally, unmarshal the resulting state properties and return them.
results, err := UnmarshalProperties(liveObject, MarshalOptions{
newState, err := UnmarshalProperties(liveObject, MarshalOptions{
Label: fmt.Sprintf("%s.outputs", label), RejectUnknowns: true})
if err != nil {
return nil, resourceStatus, err
return ReadResult{}, resourceStatus, err
}
logging.V(7).Infof("%s success; #outs=%d", label, len(results))
return results, resourceStatus, resourceError
var newInputs resource.PropertyMap
if liveInputs != nil {
newInputs, err = UnmarshalProperties(liveInputs, MarshalOptions{
Label: label + ".inputs", RejectUnknowns: true})
if err != nil {
return ReadResult{}, resourceStatus, err
}
}
logging.V(7).Infof("%s success; #outs=%d, #inputs=%d", label, len(newState), len(newInputs))
return ReadResult{
Outputs: newState,
Inputs: newInputs,
}, resourceStatus, resourceError
}
// Update updates an existing resource with new values.
@ -489,7 +515,7 @@ func (p *provider) Update(urn resource.URN, id resource.ID,
News: mnews,
})
if err != nil {
resourceStatus, _, liveObject, resourceError = parseError(err)
resourceStatus, _, liveObject, _, resourceError = parseError(err)
logging.V(7).Infof("%s failed: %v", label, resourceError)
if resourceStatus != resource.StatusPartialFailure {
@ -706,8 +732,9 @@ func resourceStateAndError(err error) (resource.Status, *rpcerror.Error) {
// object was created, but app code is continually crashing and the resource never achieves
// liveness).
func parseError(err error) (
resourceStatus resource.Status, id resource.ID, liveObject *_struct.Struct, resourceErr error,
resourceStatus resource.Status, id resource.ID, liveInputs, liveObject *_struct.Struct, resourceErr error,
) {
var responseErr *rpcerror.Error
resourceStatus, responseErr = resourceStateAndError(err)
contract.Assert(responseErr != nil)
@ -719,13 +746,14 @@ func parseError(err error) (
if initErr, ok := detail.(*pulumirpc.ErrorResourceInitFailed); ok {
id = resource.ID(initErr.GetId())
liveObject = initErr.GetProperties()
liveInputs = initErr.GetInputs()
resourceStatus = resource.StatusPartialFailure
resourceErr = &InitError{Reasons: initErr.Reasons}
break
}
}
return resourceStatus, id, liveObject, resourceErr
return resourceStatus, id, liveObject, liveInputs, resourceErr
}
// InitError represents a failure to initialize a resource, i.e., the resource has been successfully

View file

@ -2582,7 +2582,8 @@ proto.pulumirpc.ReadRequest.toObject = function(includeInstance, msg) {
var f, obj = {
id: jspb.Message.getFieldWithDefault(msg, 1, ""),
urn: jspb.Message.getFieldWithDefault(msg, 2, ""),
properties: (f = msg.getProperties()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f)
properties: (f = msg.getProperties()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f),
inputs: (f = msg.getInputs()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f)
};
if (includeInstance) {
@ -2632,6 +2633,11 @@ proto.pulumirpc.ReadRequest.deserializeBinaryFromReader = function(msg, reader)
reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);
msg.setProperties(value);
break;
case 4:
var value = new google_protobuf_struct_pb.Struct;
reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);
msg.setInputs(value);
break;
default:
reader.skipField();
break;
@ -2683,6 +2689,14 @@ proto.pulumirpc.ReadRequest.serializeBinaryToWriter = function(message, writer)
google_protobuf_struct_pb.Struct.serializeBinaryToWriter
);
}
f = message.getInputs();
if (f != null) {
writer.writeMessage(
4,
f,
google_protobuf_struct_pb.Struct.serializeBinaryToWriter
);
}
};
@ -2746,6 +2760,36 @@ proto.pulumirpc.ReadRequest.prototype.hasProperties = function() {
};
/**
* optional google.protobuf.Struct inputs = 4;
* @return {?proto.google.protobuf.Struct}
*/
proto.pulumirpc.ReadRequest.prototype.getInputs = function() {
return /** @type{?proto.google.protobuf.Struct} */ (
jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 4));
};
/** @param {?proto.google.protobuf.Struct|undefined} value */
proto.pulumirpc.ReadRequest.prototype.setInputs = function(value) {
jspb.Message.setWrapperField(this, 4, value);
};
proto.pulumirpc.ReadRequest.prototype.clearInputs = function() {
this.setInputs(undefined);
};
/**
* Returns whether this field is set.
* @return {!boolean}
*/
proto.pulumirpc.ReadRequest.prototype.hasInputs = function() {
return jspb.Message.getField(this, 4) != null;
};
/**
* Generated by JsPbCodeGenerator.

View file

@ -48,7 +48,7 @@ func (x DiffResponse_DiffChanges) String() string {
return proto.EnumName(DiffResponse_DiffChanges_name, int32(x))
}
func (DiffResponse_DiffChanges) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_provider_90e24a988a8884a7, []int{8, 0}
return fileDescriptor_provider_dc3f0238d29a44c1, []int{8, 0}
}
type ConfigureRequest struct {
@ -63,7 +63,7 @@ func (m *ConfigureRequest) Reset() { *m = ConfigureRequest{} }
func (m *ConfigureRequest) String() string { return proto.CompactTextString(m) }
func (*ConfigureRequest) ProtoMessage() {}
func (*ConfigureRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_provider_90e24a988a8884a7, []int{0}
return fileDescriptor_provider_dc3f0238d29a44c1, []int{0}
}
func (m *ConfigureRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ConfigureRequest.Unmarshal(m, b)
@ -109,7 +109,7 @@ func (m *ConfigureErrorMissingKeys) Reset() { *m = ConfigureErrorMissing
func (m *ConfigureErrorMissingKeys) String() string { return proto.CompactTextString(m) }
func (*ConfigureErrorMissingKeys) ProtoMessage() {}
func (*ConfigureErrorMissingKeys) Descriptor() ([]byte, []int) {
return fileDescriptor_provider_90e24a988a8884a7, []int{1}
return fileDescriptor_provider_dc3f0238d29a44c1, []int{1}
}
func (m *ConfigureErrorMissingKeys) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ConfigureErrorMissingKeys.Unmarshal(m, b)
@ -148,7 +148,7 @@ func (m *ConfigureErrorMissingKeys_MissingKey) Reset() { *m = ConfigureE
func (m *ConfigureErrorMissingKeys_MissingKey) String() string { return proto.CompactTextString(m) }
func (*ConfigureErrorMissingKeys_MissingKey) ProtoMessage() {}
func (*ConfigureErrorMissingKeys_MissingKey) Descriptor() ([]byte, []int) {
return fileDescriptor_provider_90e24a988a8884a7, []int{1, 0}
return fileDescriptor_provider_dc3f0238d29a44c1, []int{1, 0}
}
func (m *ConfigureErrorMissingKeys_MissingKey) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ConfigureErrorMissingKeys_MissingKey.Unmarshal(m, b)
@ -195,7 +195,7 @@ func (m *InvokeRequest) Reset() { *m = InvokeRequest{} }
func (m *InvokeRequest) String() string { return proto.CompactTextString(m) }
func (*InvokeRequest) ProtoMessage() {}
func (*InvokeRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_provider_90e24a988a8884a7, []int{2}
return fileDescriptor_provider_dc3f0238d29a44c1, []int{2}
}
func (m *InvokeRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InvokeRequest.Unmarshal(m, b)
@ -248,7 +248,7 @@ func (m *InvokeResponse) Reset() { *m = InvokeResponse{} }
func (m *InvokeResponse) String() string { return proto.CompactTextString(m) }
func (*InvokeResponse) ProtoMessage() {}
func (*InvokeResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_provider_90e24a988a8884a7, []int{3}
return fileDescriptor_provider_dc3f0238d29a44c1, []int{3}
}
func (m *InvokeResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InvokeResponse.Unmarshal(m, b)
@ -295,7 +295,7 @@ func (m *CheckRequest) Reset() { *m = CheckRequest{} }
func (m *CheckRequest) String() string { return proto.CompactTextString(m) }
func (*CheckRequest) ProtoMessage() {}
func (*CheckRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_provider_90e24a988a8884a7, []int{4}
return fileDescriptor_provider_dc3f0238d29a44c1, []int{4}
}
func (m *CheckRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CheckRequest.Unmarshal(m, b)
@ -348,7 +348,7 @@ func (m *CheckResponse) Reset() { *m = CheckResponse{} }
func (m *CheckResponse) String() string { return proto.CompactTextString(m) }
func (*CheckResponse) ProtoMessage() {}
func (*CheckResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_provider_90e24a988a8884a7, []int{5}
return fileDescriptor_provider_dc3f0238d29a44c1, []int{5}
}
func (m *CheckResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CheckResponse.Unmarshal(m, b)
@ -394,7 +394,7 @@ func (m *CheckFailure) Reset() { *m = CheckFailure{} }
func (m *CheckFailure) String() string { return proto.CompactTextString(m) }
func (*CheckFailure) ProtoMessage() {}
func (*CheckFailure) Descriptor() ([]byte, []int) {
return fileDescriptor_provider_90e24a988a8884a7, []int{6}
return fileDescriptor_provider_dc3f0238d29a44c1, []int{6}
}
func (m *CheckFailure) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CheckFailure.Unmarshal(m, b)
@ -442,7 +442,7 @@ func (m *DiffRequest) Reset() { *m = DiffRequest{} }
func (m *DiffRequest) String() string { return proto.CompactTextString(m) }
func (*DiffRequest) ProtoMessage() {}
func (*DiffRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_provider_90e24a988a8884a7, []int{7}
return fileDescriptor_provider_dc3f0238d29a44c1, []int{7}
}
func (m *DiffRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DiffRequest.Unmarshal(m, b)
@ -505,7 +505,7 @@ func (m *DiffResponse) Reset() { *m = DiffResponse{} }
func (m *DiffResponse) String() string { return proto.CompactTextString(m) }
func (*DiffResponse) ProtoMessage() {}
func (*DiffResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_provider_90e24a988a8884a7, []int{8}
return fileDescriptor_provider_dc3f0238d29a44c1, []int{8}
}
func (m *DiffResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DiffResponse.Unmarshal(m, b)
@ -572,7 +572,7 @@ func (m *CreateRequest) Reset() { *m = CreateRequest{} }
func (m *CreateRequest) String() string { return proto.CompactTextString(m) }
func (*CreateRequest) ProtoMessage() {}
func (*CreateRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_provider_90e24a988a8884a7, []int{9}
return fileDescriptor_provider_dc3f0238d29a44c1, []int{9}
}
func (m *CreateRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CreateRequest.Unmarshal(m, b)
@ -618,7 +618,7 @@ func (m *CreateResponse) Reset() { *m = CreateResponse{} }
func (m *CreateResponse) String() string { return proto.CompactTextString(m) }
func (*CreateResponse) ProtoMessage() {}
func (*CreateResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_provider_90e24a988a8884a7, []int{10}
return fileDescriptor_provider_dc3f0238d29a44c1, []int{10}
}
func (m *CreateResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CreateResponse.Unmarshal(m, b)
@ -656,6 +656,7 @@ type ReadRequest struct {
Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
Urn string `protobuf:"bytes,2,opt,name=urn" json:"urn,omitempty"`
Properties *_struct.Struct `protobuf:"bytes,3,opt,name=properties" json:"properties,omitempty"`
Inputs *_struct.Struct `protobuf:"bytes,4,opt,name=inputs" json:"inputs,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -665,7 +666,7 @@ func (m *ReadRequest) Reset() { *m = ReadRequest{} }
func (m *ReadRequest) String() string { return proto.CompactTextString(m) }
func (*ReadRequest) ProtoMessage() {}
func (*ReadRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_provider_90e24a988a8884a7, []int{11}
return fileDescriptor_provider_dc3f0238d29a44c1, []int{11}
}
func (m *ReadRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReadRequest.Unmarshal(m, b)
@ -706,6 +707,13 @@ func (m *ReadRequest) GetProperties() *_struct.Struct {
return nil
}
func (m *ReadRequest) GetInputs() *_struct.Struct {
if m != nil {
return m.Inputs
}
return nil
}
type ReadResponse struct {
Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
Properties *_struct.Struct `protobuf:"bytes,2,opt,name=properties" json:"properties,omitempty"`
@ -719,7 +727,7 @@ func (m *ReadResponse) Reset() { *m = ReadResponse{} }
func (m *ReadResponse) String() string { return proto.CompactTextString(m) }
func (*ReadResponse) ProtoMessage() {}
func (*ReadResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_provider_90e24a988a8884a7, []int{12}
return fileDescriptor_provider_dc3f0238d29a44c1, []int{12}
}
func (m *ReadResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReadResponse.Unmarshal(m, b)
@ -774,7 +782,7 @@ func (m *UpdateRequest) Reset() { *m = UpdateRequest{} }
func (m *UpdateRequest) String() string { return proto.CompactTextString(m) }
func (*UpdateRequest) ProtoMessage() {}
func (*UpdateRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_provider_90e24a988a8884a7, []int{13}
return fileDescriptor_provider_dc3f0238d29a44c1, []int{13}
}
func (m *UpdateRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UpdateRequest.Unmarshal(m, b)
@ -833,7 +841,7 @@ func (m *UpdateResponse) Reset() { *m = UpdateResponse{} }
func (m *UpdateResponse) String() string { return proto.CompactTextString(m) }
func (*UpdateResponse) ProtoMessage() {}
func (*UpdateResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_provider_90e24a988a8884a7, []int{14}
return fileDescriptor_provider_dc3f0238d29a44c1, []int{14}
}
func (m *UpdateResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UpdateResponse.Unmarshal(m, b)
@ -873,7 +881,7 @@ func (m *DeleteRequest) Reset() { *m = DeleteRequest{} }
func (m *DeleteRequest) String() string { return proto.CompactTextString(m) }
func (*DeleteRequest) ProtoMessage() {}
func (*DeleteRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_provider_90e24a988a8884a7, []int{15}
return fileDescriptor_provider_dc3f0238d29a44c1, []int{15}
}
func (m *DeleteRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DeleteRequest.Unmarshal(m, b)
@ -930,7 +938,7 @@ func (m *ErrorResourceInitFailed) Reset() { *m = ErrorResourceInitFailed
func (m *ErrorResourceInitFailed) String() string { return proto.CompactTextString(m) }
func (*ErrorResourceInitFailed) ProtoMessage() {}
func (*ErrorResourceInitFailed) Descriptor() ([]byte, []int) {
return fileDescriptor_provider_90e24a988a8884a7, []int{16}
return fileDescriptor_provider_dc3f0238d29a44c1, []int{16}
}
func (m *ErrorResourceInitFailed) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ErrorResourceInitFailed.Unmarshal(m, b)
@ -1472,67 +1480,67 @@ var _ResourceProvider_serviceDesc = grpc.ServiceDesc{
Metadata: "provider.proto",
}
func init() { proto.RegisterFile("provider.proto", fileDescriptor_provider_90e24a988a8884a7) }
func init() { proto.RegisterFile("provider.proto", fileDescriptor_provider_dc3f0238d29a44c1) }
var fileDescriptor_provider_90e24a988a8884a7 = []byte{
// 937 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xc4, 0x56, 0xdd, 0x6e, 0xe3, 0x44,
var fileDescriptor_provider_dc3f0238d29a44c1 = []byte{
// 944 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xc4, 0x57, 0xdd, 0x6e, 0xe3, 0x44,
0x14, 0xae, 0x93, 0x34, 0xdb, 0x9c, 0xfc, 0x28, 0x1a, 0xa0, 0xcd, 0x7a, 0xb9, 0xa8, 0xcc, 0xcd,
0x0a, 0x24, 0x07, 0x75, 0x2f, 0x80, 0xd5, 0xae, 0x40, 0xd9, 0xa6, 0x10, 0xad, 0x9a, 0x16, 0x57,
0x05, 0xc1, 0x0d, 0x72, 0xed, 0x49, 0x6a, 0xe2, 0xd8, 0x66, 0x3c, 0x0e, 0x0a, 0x4f, 0xc0, 0x8f,
0xc4, 0x9b, 0x70, 0xc3, 0x4b, 0xf0, 0x5a, 0x8c, 0x67, 0xc6, 0x8e, 0x27, 0x69, 0xd2, 0x34, 0xaa,
0xe0, 0x6e, 0x8e, 0xcf, 0x99, 0x73, 0xbe, 0xef, 0x9c, 0x99, 0xcf, 0x03, 0xad, 0x88, 0x84, 0x33,
0xcf, 0xc5, 0xc4, 0x64, 0x0b, 0x1a, 0xa2, 0x5a, 0x94, 0xf8, 0xc9, 0xd4, 0x23, 0x91, 0xa3, 0x37,
0x22, 0x3f, 0x19, 0x7b, 0x81, 0x70, 0xe8, 0xcf, 0xc6, 0x61, 0x38, 0xf6, 0x71, 0x97, 0x5b, 0x37,
0xc9, 0xa8, 0x8b, 0xa7, 0x11, 0x9d, 0x4b, 0xe7, 0xfb, 0xcb, 0xce, 0x98, 0x92, 0xc4, 0xa1, 0xc2,
0x6b, 0xfc, 0xa3, 0x41, 0xfb, 0x4d, 0x18, 0x8c, 0xbc, 0x71, 0x42, 0xb0, 0x85, 0x7f, 0x4a, 0x70,
0x4c, 0xd1, 0x57, 0x50, 0x9b, 0xd9, 0xc4, 0xb3, 0x6f, 0x7c, 0x1c, 0x77, 0xb4, 0xe3, 0xf2, 0xf3,
0xfa, 0xc9, 0x87, 0x66, 0x5e, 0xdc, 0x5c, 0x8e, 0x37, 0xbf, 0xc9, 0x82, 0xfb, 0x01, 0x25, 0x73,
0x6b, 0xb1, 0x19, 0x7d, 0x04, 0x15, 0x9b, 0x8c, 0xe3, 0x4e, 0xe9, 0x58, 0x63, 0x49, 0x8e, 0x4c,
0x81, 0xc5, 0xcc, 0xb0, 0x98, 0x57, 0x1c, 0x8b, 0xc5, 0x83, 0xf4, 0x57, 0xd0, 0x52, 0x33, 0xa1,
0x36, 0x94, 0x27, 0x78, 0xce, 0x20, 0x68, 0xcf, 0x6b, 0x56, 0xba, 0x44, 0xef, 0xc2, 0xfe, 0xcc,
0xf6, 0x13, 0xcc, 0x33, 0xd6, 0x2c, 0x61, 0xbc, 0x2c, 0x7d, 0xaa, 0x19, 0x7f, 0x6b, 0xf0, 0x34,
0x47, 0xd6, 0x27, 0x24, 0x24, 0xe7, 0x5e, 0x1c, 0x7b, 0xc1, 0xf8, 0x2d, 0x9e, 0xc7, 0xe8, 0x6b,
0xa8, 0x4f, 0x17, 0xa6, 0x24, 0xd5, 0xbd, 0x8b, 0xd4, 0xf2, 0x56, 0x73, 0xb1, 0xb6, 0x8a, 0x39,
0xf4, 0x1e, 0xc0, 0xc2, 0x85, 0x10, 0x54, 0x02, 0x7b, 0x8a, 0x25, 0x56, 0xbe, 0x46, 0xc7, 0x50,
0x77, 0x71, 0xec, 0x10, 0x2f, 0xa2, 0x5e, 0x18, 0x48, 0xc8, 0xc5, 0x4f, 0xc6, 0x8f, 0xd0, 0x1c,
0x04, 0xb3, 0x70, 0x92, 0xb7, 0x9e, 0x31, 0xa6, 0xe1, 0x24, 0x63, 0xcc, 0x96, 0x0f, 0x6a, 0x21,
0xd2, 0xe1, 0x20, 0x3b, 0x34, 0x9d, 0x32, 0xcf, 0x91, 0xdb, 0xc6, 0x0c, 0x5a, 0x59, 0xad, 0x38,
0x0a, 0x83, 0x18, 0xa3, 0x2e, 0x54, 0x09, 0xa6, 0x09, 0x09, 0x78, 0xbd, 0x0d, 0xc9, 0x65, 0x18,
0x7a, 0x01, 0x07, 0x23, 0xdb, 0xf3, 0x59, 0x97, 0x52, 0x3c, 0x65, 0xbe, 0xa5, 0xd0, 0xc2, 0x5b,
0xec, 0x4c, 0xce, 0x84, 0xdf, 0xca, 0x03, 0x8d, 0x5f, 0xa0, 0xc1, 0x3d, 0x05, 0x8a, 0x59, 0x49,
0x46, 0x31, 0x4d, 0xcb, 0x28, 0x86, 0xbe, 0x7b, 0x3f, 0xc5, 0x34, 0x28, 0x0d, 0x0e, 0xf0, 0xcf,
0x31, 0xa7, 0xb7, 0x29, 0x38, 0x0d, 0x32, 0x12, 0x68, 0xca, 0xda, 0x0b, 0xca, 0x5e, 0x10, 0x25,
0x34, 0xbe, 0x97, 0xb2, 0x08, 0xdb, 0x8d, 0x72, 0x4f, 0x52, 0x96, 0x1e, 0x39, 0x96, 0x08, 0x13,
0x9a, 0x1d, 0xe6, 0xdc, 0x46, 0x87, 0xe9, 0x10, 0xec, 0x38, 0x3f, 0x1f, 0xd2, 0x32, 0x7e, 0xd3,
0xa0, 0x7e, 0xea, 0x8d, 0x46, 0x59, 0xdb, 0x5a, 0x50, 0xf2, 0x5c, 0xb9, 0x9b, 0xad, 0xb2, 0x36,
0x96, 0x56, 0xdb, 0x58, 0x7e, 0x48, 0x1b, 0x2b, 0xdb, 0xb4, 0xf1, 0xf7, 0x12, 0x34, 0x04, 0x16,
0xd9, 0x46, 0x46, 0x88, 0xe0, 0xc8, 0xb7, 0x1d, 0x29, 0x10, 0x8c, 0x50, 0x66, 0xa3, 0x0e, 0x3c,
0x89, 0xa9, 0xd0, 0x8e, 0x12, 0x77, 0x65, 0x26, 0xfa, 0x18, 0xde, 0x71, 0xb1, 0x8f, 0x29, 0xee,
0xe1, 0x51, 0x98, 0xca, 0x07, 0xdf, 0xc1, 0xf1, 0x1e, 0x58, 0x77, 0xb9, 0xd0, 0x6b, 0x78, 0xe2,
0xdc, 0xda, 0xc1, 0x18, 0x0b, 0xa0, 0xad, 0x93, 0x0f, 0x0a, 0xcd, 0x2f, 0x22, 0xe2, 0xc6, 0x1b,
0x11, 0x6a, 0x65, 0x7b, 0x52, 0xb5, 0x70, 0xd9, 0xf7, 0xb8, 0xb3, 0xcf, 0x81, 0x08, 0xc3, 0x78,
0x2d, 0x1a, 0x2b, 0xa3, 0x59, 0x23, 0x1b, 0xa7, 0x83, 0xb3, 0xb3, 0x1f, 0xae, 0x87, 0x6f, 0x87,
0x17, 0xdf, 0x0e, 0xdb, 0x7b, 0xa8, 0x09, 0x35, 0xfe, 0x65, 0x78, 0x31, 0xec, 0xb7, 0xb5, 0xdc,
0xbc, 0xba, 0x38, 0xef, 0xb7, 0x4b, 0xc6, 0xf7, 0xec, 0x4c, 0xb1, 0x19, 0x51, 0xbc, 0xfe, 0x40,
0x7f, 0x02, 0x20, 0xe7, 0xeb, 0xe1, 0x7b, 0x8f, 0x75, 0x21, 0xd4, 0xf8, 0x0e, 0x5a, 0x59, 0x6e,
0xd9, 0xe9, 0xe5, 0xb1, 0xef, 0x9c, 0xfa, 0x16, 0xea, 0x16, 0xb6, 0xdd, 0xed, 0x8f, 0x93, 0x5a,
0xa9, 0xbc, 0x7d, 0xa5, 0x5f, 0x35, 0x68, 0x88, 0x52, 0x8f, 0xcc, 0xa1, 0x70, 0x7b, 0xcb, 0x5b,
0xdd, 0x5e, 0xe3, 0x0f, 0x0d, 0x9a, 0xd7, 0x91, 0x5b, 0x18, 0xd6, 0xff, 0x79, 0x8d, 0x06, 0xd0,
0xca, 0xc0, 0xc8, 0xce, 0xa8, 0x9d, 0xd0, 0xb6, 0xef, 0x31, 0xfb, 0x71, 0x9c, 0xf2, 0xfb, 0xf2,
0x1f, 0xcc, 0xf3, 0x2f, 0x0d, 0x8e, 0xf8, 0x5f, 0x91, 0xc1, 0x0e, 0x13, 0xe2, 0xe0, 0x41, 0xe0,
0xd1, 0x54, 0xda, 0xb0, 0xfb, 0x78, 0xa3, 0x65, 0xaa, 0x21, 0x84, 0x2f, 0x85, 0xc6, 0x55, 0x43,
0x9a, 0x85, 0xa1, 0x57, 0xb6, 0x1a, 0xfa, 0xc9, 0x9f, 0x55, 0x68, 0x67, 0x50, 0x2f, 0xe5, 0xdf,
0x0f, 0xf5, 0xa0, 0xce, 0x25, 0x59, 0xfc, 0xe7, 0xd1, 0x8a, 0x88, 0xcb, 0x3e, 0xea, 0x9d, 0x55,
0x87, 0x98, 0x95, 0xb1, 0x87, 0x3e, 0x07, 0xe0, 0xc2, 0x21, 0x52, 0x1c, 0xae, 0x48, 0x91, 0xc8,
0x70, 0xb4, 0x46, 0xa2, 0x58, 0x82, 0x1e, 0xd4, 0xf2, 0x77, 0x06, 0x7a, 0xb6, 0xe1, 0x49, 0xa5,
0x1f, 0xae, 0x90, 0xec, 0xa7, 0x6f, 0x3a, 0x0e, 0xa2, 0x2a, 0x7e, 0xe3, 0xa8, 0x08, 0x55, 0x79,
0x45, 0xe8, 0x4f, 0xef, 0xf0, 0xe4, 0x20, 0x5e, 0xc1, 0x3e, 0x27, 0xb6, 0x5b, 0x0f, 0x3e, 0x83,
0x4a, 0x4a, 0x6a, 0x17, 0xf6, 0x0c, 0xb9, 0x10, 0x37, 0x05, 0xb9, 0xa2, 0xa5, 0x0a, 0x72, 0x55,
0x09, 0x45, 0xed, 0x54, 0x57, 0x94, 0xda, 0x05, 0x4d, 0x53, 0x6a, 0x17, 0x05, 0x48, 0xd4, 0x16,
0x57, 0x4f, 0xa9, 0xad, 0x48, 0x83, 0x52, 0x5b, 0xbd, 0xa7, 0xbc, 0x6b, 0x55, 0x71, 0xe1, 0x94,
0x04, 0xca, 0x1d, 0xdc, 0x30, 0xb4, 0x97, 0x8c, 0xba, 0x1d, 0x38, 0xd8, 0x47, 0x6b, 0x62, 0x36,
0xec, 0xfd, 0x02, 0x9a, 0x5f, 0x62, 0x7a, 0xc9, 0x1f, 0xfc, 0x83, 0x60, 0x14, 0xae, 0x4d, 0xf1,
0x5e, 0x01, 0xd8, 0x22, 0xdc, 0xd8, 0xbb, 0xa9, 0xf2, 0xc0, 0x17, 0xff, 0x06, 0x00, 0x00, 0xff,
0xff, 0x01, 0x6d, 0x48, 0x86, 0x51, 0x0c, 0x00, 0x00,
0x0a, 0x24, 0x07, 0x75, 0x2f, 0x80, 0xd5, 0xae, 0x40, 0xd9, 0xa6, 0x10, 0xad, 0x36, 0x2d, 0xae,
0x0a, 0x82, 0x1b, 0xe4, 0xda, 0x93, 0xd4, 0xc4, 0xb1, 0xcd, 0x78, 0x1c, 0x14, 0x9e, 0x80, 0x1f,
0x89, 0x7b, 0x1e, 0x82, 0x1b, 0x5e, 0x82, 0xd7, 0x62, 0x3c, 0x33, 0x76, 0x3c, 0x49, 0x93, 0xa6,
0x51, 0xd1, 0xde, 0xcd, 0xc9, 0x39, 0x73, 0xce, 0xf7, 0x9d, 0x39, 0xf3, 0x79, 0x02, 0xad, 0x88,
0x84, 0x33, 0xcf, 0xc5, 0xc4, 0x64, 0x0b, 0x1a, 0xa2, 0x5a, 0x94, 0xf8, 0xc9, 0xd4, 0x23, 0x91,
0xa3, 0x37, 0x22, 0x3f, 0x19, 0x7b, 0x81, 0x70, 0xe8, 0x4f, 0xc6, 0x61, 0x38, 0xf6, 0x71, 0x97,
0x5b, 0xd7, 0xc9, 0xa8, 0x8b, 0xa7, 0x11, 0x9d, 0x4b, 0xe7, 0xfb, 0xcb, 0xce, 0x98, 0x92, 0xc4,
0xa1, 0xc2, 0x6b, 0xfc, 0xab, 0x41, 0xfb, 0x55, 0x18, 0x8c, 0xbc, 0x71, 0x42, 0xb0, 0x85, 0x7f,
0x4a, 0x70, 0x4c, 0xd1, 0x57, 0x50, 0x9b, 0xd9, 0xc4, 0xb3, 0xaf, 0x7d, 0x1c, 0x77, 0xb4, 0xe3,
0xf2, 0xd3, 0xfa, 0xc9, 0x87, 0x66, 0x5e, 0xdc, 0x5c, 0x8e, 0x37, 0xbf, 0xc9, 0x82, 0xfb, 0x01,
0x25, 0x73, 0x6b, 0xb1, 0x19, 0x7d, 0x04, 0x15, 0x9b, 0x8c, 0xe3, 0x4e, 0xe9, 0x58, 0x63, 0x49,
0x8e, 0x4c, 0x81, 0xc5, 0xcc, 0xb0, 0x98, 0x97, 0x1c, 0x8b, 0xc5, 0x83, 0xf4, 0x17, 0xd0, 0x52,
0x33, 0xa1, 0x36, 0x94, 0x27, 0x78, 0xce, 0x20, 0x68, 0x4f, 0x6b, 0x56, 0xba, 0x44, 0xef, 0xc2,
0xfe, 0xcc, 0xf6, 0x13, 0xcc, 0x33, 0xd6, 0x2c, 0x61, 0x3c, 0x2f, 0x7d, 0xaa, 0x19, 0xff, 0x68,
0xf0, 0x38, 0x47, 0xd6, 0x27, 0x24, 0x24, 0x6f, 0xbc, 0x38, 0xf6, 0x82, 0xf1, 0x6b, 0x3c, 0x8f,
0xd1, 0xd7, 0x50, 0x9f, 0x2e, 0x4c, 0x49, 0xaa, 0x7b, 0x1b, 0xa9, 0xe5, 0xad, 0xe6, 0x62, 0x6d,
0x15, 0x73, 0xe8, 0x3d, 0x80, 0x85, 0x0b, 0x21, 0xa8, 0x04, 0xf6, 0x14, 0x4b, 0xac, 0x7c, 0x8d,
0x8e, 0xa1, 0xee, 0xe2, 0xd8, 0x21, 0x5e, 0x44, 0xbd, 0x30, 0x90, 0x90, 0x8b, 0x3f, 0x19, 0x3f,
0x42, 0x73, 0x10, 0xcc, 0xc2, 0x49, 0xde, 0x7a, 0xc6, 0x98, 0x86, 0x93, 0x8c, 0x31, 0x5b, 0xde,
0xab, 0x85, 0x48, 0x87, 0x83, 0x6c, 0x68, 0x3a, 0x65, 0x9e, 0x23, 0xb7, 0x8d, 0x19, 0xb4, 0xb2,
0x5a, 0x71, 0x14, 0x06, 0x31, 0x46, 0x5d, 0xa8, 0x12, 0x4c, 0x13, 0x12, 0xf0, 0x7a, 0x1b, 0x92,
0xcb, 0x30, 0xf4, 0x0c, 0x0e, 0x46, 0xb6, 0xe7, 0xb3, 0x2e, 0xa5, 0x78, 0xca, 0x7c, 0x4b, 0xa1,
0x85, 0x37, 0xd8, 0x99, 0x9c, 0x09, 0xbf, 0x95, 0x07, 0x1a, 0xbf, 0x40, 0x83, 0x7b, 0x0a, 0x14,
0xb3, 0x92, 0x8c, 0x62, 0x9a, 0x96, 0x51, 0x0c, 0x7d, 0xf7, 0x6e, 0x8a, 0x69, 0x50, 0x1a, 0x1c,
0xe0, 0x9f, 0x63, 0x4e, 0x6f, 0x53, 0x70, 0x1a, 0x64, 0x24, 0xd0, 0x94, 0xb5, 0x17, 0x94, 0xbd,
0x20, 0x4a, 0x68, 0x7c, 0x27, 0x65, 0x11, 0xb6, 0x1b, 0xe5, 0x9e, 0xa4, 0x2c, 0x3d, 0xf2, 0x58,
0x22, 0x4c, 0x68, 0x36, 0xcc, 0xb9, 0x8d, 0x0e, 0xd3, 0x43, 0xb0, 0xe3, 0x7c, 0x3e, 0xa4, 0x65,
0xfc, 0xa6, 0x41, 0xfd, 0xd4, 0x1b, 0x8d, 0xb2, 0xb6, 0xb5, 0xa0, 0xe4, 0xb9, 0x72, 0x37, 0x5b,
0x65, 0x6d, 0x2c, 0xad, 0xb6, 0xb1, 0x7c, 0x9f, 0x36, 0x56, 0xb6, 0x69, 0xe3, 0xef, 0x25, 0x68,
0x08, 0x2c, 0xb2, 0x8d, 0x8c, 0x10, 0xc1, 0x91, 0x6f, 0x3b, 0x52, 0x20, 0x18, 0xa1, 0xcc, 0x46,
0x1d, 0x78, 0x14, 0x53, 0xa1, 0x1d, 0x25, 0xee, 0xca, 0x4c, 0xf4, 0x31, 0xbc, 0xe3, 0x62, 0x1f,
0x53, 0xdc, 0xc3, 0xa3, 0x30, 0x95, 0x0f, 0xbe, 0x83, 0xe3, 0x3d, 0xb0, 0x6e, 0x73, 0xa1, 0x97,
0xf0, 0xc8, 0xb9, 0xb1, 0x83, 0x31, 0x16, 0x40, 0x5b, 0x27, 0x1f, 0x14, 0x9a, 0x5f, 0x44, 0xc4,
0x8d, 0x57, 0x22, 0xd4, 0xca, 0xf6, 0xa4, 0x6a, 0xe1, 0xb2, 0xdf, 0xe3, 0xce, 0x3e, 0x07, 0x22,
0x0c, 0xe3, 0xa5, 0x68, 0xac, 0x8c, 0x66, 0x8d, 0x6c, 0x9c, 0x0e, 0xce, 0xce, 0x7e, 0xb8, 0x1a,
0xbe, 0x1e, 0x9e, 0x7f, 0x3b, 0x6c, 0xef, 0xa1, 0x26, 0xd4, 0xf8, 0x2f, 0xc3, 0xf3, 0x61, 0xbf,
0xad, 0xe5, 0xe6, 0xe5, 0xf9, 0x9b, 0x7e, 0xbb, 0x64, 0x7c, 0xcf, 0x66, 0x8a, 0x9d, 0x11, 0xc5,
0xeb, 0x07, 0xfa, 0x13, 0x00, 0x79, 0xbe, 0x1e, 0xbe, 0x73, 0xac, 0x0b, 0xa1, 0xc6, 0x77, 0xd0,
0xca, 0x72, 0xcb, 0x4e, 0x2f, 0x1f, 0xfb, 0xce, 0xa9, 0xff, 0x62, 0xf3, 0x64, 0x61, 0xdb, 0xdd,
0x7e, 0x9e, 0xd4, 0x52, 0xe5, 0xad, 0x4b, 0x15, 0x2e, 0x59, 0x65, 0xab, 0x4b, 0x66, 0xfc, 0xaa,
0x41, 0x43, 0x60, 0x7b, 0x60, 0xd6, 0x05, 0x28, 0xe5, 0xed, 0xa0, 0xfc, 0xa1, 0x41, 0xf3, 0x2a,
0x72, 0x0b, 0xc7, 0xfb, 0x36, 0x2f, 0xde, 0x00, 0x5a, 0x19, 0x18, 0xd9, 0x19, 0xb5, 0x13, 0xda,
0xf6, 0xe7, 0xcf, 0x3e, 0x35, 0xa7, 0xfc, 0x86, 0xfd, 0xff, 0x03, 0x60, 0xfc, 0xad, 0xc1, 0x11,
0xff, 0x8e, 0x32, 0xd8, 0x61, 0x42, 0x1c, 0x3c, 0x08, 0x3c, 0x9a, 0x8a, 0x21, 0x76, 0x1f, 0xee,
0x68, 0x99, 0xce, 0x08, 0xa9, 0x4c, 0xa1, 0x71, 0x9d, 0x91, 0xe6, 0xbd, 0xe7, 0xef, 0xe4, 0xcf,
0x2a, 0xb4, 0x33, 0xa8, 0x17, 0xf2, 0x7b, 0x89, 0x7a, 0x50, 0xe7, 0x22, 0x2e, 0x5e, 0x06, 0x68,
0x45, 0xf6, 0x65, 0x1f, 0xf5, 0xce, 0xaa, 0x43, 0x9c, 0x95, 0xb1, 0x87, 0x3e, 0x07, 0xe0, 0x52,
0x23, 0x52, 0x1c, 0xae, 0x88, 0x97, 0xc8, 0x70, 0xb4, 0x46, 0xd4, 0x58, 0x82, 0x1e, 0xd4, 0xf2,
0x97, 0x09, 0x7a, 0xb2, 0xe1, 0x11, 0xa6, 0x1f, 0xae, 0x90, 0xec, 0xa7, 0xaf, 0x40, 0x0e, 0xa2,
0x2a, 0x3e, 0xfc, 0xa8, 0x08, 0x55, 0x79, 0x77, 0xe8, 0x8f, 0x6f, 0xf1, 0xe4, 0x20, 0x5e, 0xc0,
0x3e, 0x27, 0xb6, 0x5b, 0x0f, 0x3e, 0x83, 0x4a, 0x4a, 0x6a, 0x17, 0xf6, 0x0c, 0xb9, 0x90, 0x43,
0x05, 0xb9, 0xa2, 0xbe, 0x0a, 0x72, 0x55, 0x3b, 0x45, 0xed, 0x54, 0x57, 0x94, 0xda, 0x05, 0x11,
0x54, 0x6a, 0x17, 0x05, 0x48, 0xd4, 0x16, 0x57, 0x4f, 0xa9, 0xad, 0x48, 0x83, 0x52, 0x5b, 0xbd,
0xa7, 0xbc, 0x6b, 0x55, 0x71, 0xe1, 0x94, 0x04, 0xca, 0x1d, 0xdc, 0x70, 0x68, 0xcf, 0x19, 0x75,
0x3b, 0x70, 0xb0, 0x8f, 0xd6, 0xc4, 0x6c, 0xd8, 0xfb, 0x05, 0x34, 0xbf, 0xc4, 0xf4, 0x82, 0xff,
0x45, 0x18, 0x04, 0xa3, 0x70, 0x6d, 0x8a, 0xf7, 0x0a, 0xc0, 0x16, 0xe1, 0xc6, 0xde, 0x75, 0x95,
0x07, 0x3e, 0xfb, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x37, 0xce, 0x6f, 0x2c, 0x83, 0x0c, 0x00, 0x00,
}

View file

@ -137,6 +137,7 @@ message ReadRequest {
string id = 1; // the ID of the resource to read.
string urn = 2; // the Pulumi URN for this resource.
google.protobuf.Struct properties = 3; // the current state (sufficiently complete to identify the resource).
google.protobuf.Struct inputs = 4; // the current inputs, if any (only populated during refresh).
}
message ReadResponse {

View file

@ -22,7 +22,7 @@ DESCRIPTOR = _descriptor.FileDescriptor(
package='pulumirpc',
syntax='proto3',
serialized_options=None,
serialized_pb=_b('\n\x0eprovider.proto\x12\tpulumirpc\x1a\x0cplugin.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1cgoogle/protobuf/struct.proto\"\xaa\x01\n\x10\x43onfigureRequest\x12=\n\tvariables\x18\x01 \x03(\x0b\x32*.pulumirpc.ConfigureRequest.VariablesEntry\x12%\n\x04\x61rgs\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x1a\x30\n\x0eVariablesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x92\x01\n\x19\x43onfigureErrorMissingKeys\x12\x44\n\x0bmissingKeys\x18\x01 \x03(\x0b\x32/.pulumirpc.ConfigureErrorMissingKeys.MissingKey\x1a/\n\nMissingKey\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\"U\n\rInvokeRequest\x12\x0b\n\x03tok\x18\x01 \x01(\t\x12%\n\x04\x61rgs\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x10\n\x08provider\x18\x03 \x01(\t\"d\n\x0eInvokeResponse\x12\'\n\x06return\x18\x01 \x01(\x0b\x32\x17.google.protobuf.Struct\x12)\n\x08\x66\x61ilures\x18\x02 \x03(\x0b\x32\x17.pulumirpc.CheckFailure\"i\n\x0c\x43heckRequest\x12\x0b\n\x03urn\x18\x01 \x01(\t\x12%\n\x04olds\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12%\n\x04news\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\"c\n\rCheckResponse\x12\'\n\x06inputs\x18\x01 \x01(\x0b\x32\x17.google.protobuf.Struct\x12)\n\x08\x66\x61ilures\x18\x02 \x03(\x0b\x32\x17.pulumirpc.CheckFailure\"0\n\x0c\x43heckFailure\x12\x10\n\x08property\x18\x01 \x01(\t\x12\x0e\n\x06reason\x18\x02 \x01(\t\"t\n\x0b\x44iffRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0b\n\x03urn\x18\x02 \x01(\t\x12%\n\x04olds\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\x12%\n\x04news\x18\x04 \x01(\x0b\x32\x17.google.protobuf.Struct\"\xd2\x01\n\x0c\x44iffResponse\x12\x10\n\x08replaces\x18\x01 \x03(\t\x12\x0f\n\x07stables\x18\x02 \x03(\t\x12\x1b\n\x13\x64\x65leteBeforeReplace\x18\x03 \x01(\x08\x12\x34\n\x07\x63hanges\x18\x04 \x01(\x0e\x32#.pulumirpc.DiffResponse.DiffChanges\x12\r\n\x05\x64iffs\x18\x05 \x03(\t\"=\n\x0b\x44iffChanges\x12\x10\n\x0c\x44IFF_UNKNOWN\x10\x00\x12\r\n\tDIFF_NONE\x10\x01\x12\r\n\tDIFF_SOME\x10\x02\"I\n\rCreateRequest\x12\x0b\n\x03urn\x18\x01 \x01(\t\x12+\n\nproperties\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\"I\n\x0e\x43reateResponse\x12\n\n\x02id\x18\x01 \x01(\t\x12+\n\nproperties\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\"S\n\x0bReadRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0b\n\x03urn\x18\x02 \x01(\t\x12+\n\nproperties\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\"p\n\x0cReadResponse\x12\n\n\x02id\x18\x01 \x01(\t\x12+\n\nproperties\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\'\n\x06inputs\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\"v\n\rUpdateRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0b\n\x03urn\x18\x02 \x01(\t\x12%\n\x04olds\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\x12%\n\x04news\x18\x04 \x01(\x0b\x32\x17.google.protobuf.Struct\"=\n\x0eUpdateResponse\x12+\n\nproperties\x18\x01 \x01(\x0b\x32\x17.google.protobuf.Struct\"U\n\rDeleteRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0b\n\x03urn\x18\x02 \x01(\t\x12+\n\nproperties\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\"\x8c\x01\n\x17\x45rrorResourceInitFailed\x12\n\n\x02id\x18\x01 \x01(\t\x12+\n\nproperties\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x0f\n\x07reasons\x18\x03 \x03(\t\x12\'\n\x06inputs\x18\x04 \x01(\x0b\x32\x17.google.protobuf.Struct2\x8e\x06\n\x10ResourceProvider\x12\x42\n\x0b\x43heckConfig\x12\x17.pulumirpc.CheckRequest\x1a\x18.pulumirpc.CheckResponse\"\x00\x12?\n\nDiffConfig\x12\x16.pulumirpc.DiffRequest\x1a\x17.pulumirpc.DiffResponse\"\x00\x12\x42\n\tConfigure\x12\x1b.pulumirpc.ConfigureRequest\x1a\x16.google.protobuf.Empty\"\x00\x12?\n\x06Invoke\x12\x18.pulumirpc.InvokeRequest\x1a\x19.pulumirpc.InvokeResponse\"\x00\x12<\n\x05\x43heck\x12\x17.pulumirpc.CheckRequest\x1a\x18.pulumirpc.CheckResponse\"\x00\x12\x39\n\x04\x44iff\x12\x16.pulumirpc.DiffRequest\x1a\x17.pulumirpc.DiffResponse\"\x00\x12?\n\x06\x43reate\x12\x18.pulumirpc.CreateRequest\x1a\x19.pulumirpc.CreateResponse\"\x00\x12\x39\n\x04Read\x12\x16.pulumirpc.ReadRequest\x1a\x17.pulumirpc.ReadResponse\"\x00\x12?\n\x06Update\x12\x18.pulumirpc.UpdateRequest\x1a\x19.pulumirpc.UpdateResponse\"\x00\x12<\n\x06\x44\x65lete\x12\x18.pulumirpc.DeleteRequest\x1a\x16.google.protobuf.Empty\"\x00\x12:\n\x06\x43\x61ncel\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\"\x00\x12@\n\rGetPluginInfo\x12\x16.google.protobuf.Empty\x1a\x15.pulumirpc.PluginInfo\"\x00\x62\x06proto3')
serialized_pb=_b('\n\x0eprovider.proto\x12\tpulumirpc\x1a\x0cplugin.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1cgoogle/protobuf/struct.proto\"\xaa\x01\n\x10\x43onfigureRequest\x12=\n\tvariables\x18\x01 \x03(\x0b\x32*.pulumirpc.ConfigureRequest.VariablesEntry\x12%\n\x04\x61rgs\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x1a\x30\n\x0eVariablesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x92\x01\n\x19\x43onfigureErrorMissingKeys\x12\x44\n\x0bmissingKeys\x18\x01 \x03(\x0b\x32/.pulumirpc.ConfigureErrorMissingKeys.MissingKey\x1a/\n\nMissingKey\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\"U\n\rInvokeRequest\x12\x0b\n\x03tok\x18\x01 \x01(\t\x12%\n\x04\x61rgs\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x10\n\x08provider\x18\x03 \x01(\t\"d\n\x0eInvokeResponse\x12\'\n\x06return\x18\x01 \x01(\x0b\x32\x17.google.protobuf.Struct\x12)\n\x08\x66\x61ilures\x18\x02 \x03(\x0b\x32\x17.pulumirpc.CheckFailure\"i\n\x0c\x43heckRequest\x12\x0b\n\x03urn\x18\x01 \x01(\t\x12%\n\x04olds\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12%\n\x04news\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\"c\n\rCheckResponse\x12\'\n\x06inputs\x18\x01 \x01(\x0b\x32\x17.google.protobuf.Struct\x12)\n\x08\x66\x61ilures\x18\x02 \x03(\x0b\x32\x17.pulumirpc.CheckFailure\"0\n\x0c\x43heckFailure\x12\x10\n\x08property\x18\x01 \x01(\t\x12\x0e\n\x06reason\x18\x02 \x01(\t\"t\n\x0b\x44iffRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0b\n\x03urn\x18\x02 \x01(\t\x12%\n\x04olds\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\x12%\n\x04news\x18\x04 \x01(\x0b\x32\x17.google.protobuf.Struct\"\xd2\x01\n\x0c\x44iffResponse\x12\x10\n\x08replaces\x18\x01 \x03(\t\x12\x0f\n\x07stables\x18\x02 \x03(\t\x12\x1b\n\x13\x64\x65leteBeforeReplace\x18\x03 \x01(\x08\x12\x34\n\x07\x63hanges\x18\x04 \x01(\x0e\x32#.pulumirpc.DiffResponse.DiffChanges\x12\r\n\x05\x64iffs\x18\x05 \x03(\t\"=\n\x0b\x44iffChanges\x12\x10\n\x0c\x44IFF_UNKNOWN\x10\x00\x12\r\n\tDIFF_NONE\x10\x01\x12\r\n\tDIFF_SOME\x10\x02\"I\n\rCreateRequest\x12\x0b\n\x03urn\x18\x01 \x01(\t\x12+\n\nproperties\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\"I\n\x0e\x43reateResponse\x12\n\n\x02id\x18\x01 \x01(\t\x12+\n\nproperties\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\"|\n\x0bReadRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0b\n\x03urn\x18\x02 \x01(\t\x12+\n\nproperties\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\'\n\x06inputs\x18\x04 \x01(\x0b\x32\x17.google.protobuf.Struct\"p\n\x0cReadResponse\x12\n\n\x02id\x18\x01 \x01(\t\x12+\n\nproperties\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\'\n\x06inputs\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\"v\n\rUpdateRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0b\n\x03urn\x18\x02 \x01(\t\x12%\n\x04olds\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\x12%\n\x04news\x18\x04 \x01(\x0b\x32\x17.google.protobuf.Struct\"=\n\x0eUpdateResponse\x12+\n\nproperties\x18\x01 \x01(\x0b\x32\x17.google.protobuf.Struct\"U\n\rDeleteRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0b\n\x03urn\x18\x02 \x01(\t\x12+\n\nproperties\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\"\x8c\x01\n\x17\x45rrorResourceInitFailed\x12\n\n\x02id\x18\x01 \x01(\t\x12+\n\nproperties\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x0f\n\x07reasons\x18\x03 \x03(\t\x12\'\n\x06inputs\x18\x04 \x01(\x0b\x32\x17.google.protobuf.Struct2\x8e\x06\n\x10ResourceProvider\x12\x42\n\x0b\x43heckConfig\x12\x17.pulumirpc.CheckRequest\x1a\x18.pulumirpc.CheckResponse\"\x00\x12?\n\nDiffConfig\x12\x16.pulumirpc.DiffRequest\x1a\x17.pulumirpc.DiffResponse\"\x00\x12\x42\n\tConfigure\x12\x1b.pulumirpc.ConfigureRequest\x1a\x16.google.protobuf.Empty\"\x00\x12?\n\x06Invoke\x12\x18.pulumirpc.InvokeRequest\x1a\x19.pulumirpc.InvokeResponse\"\x00\x12<\n\x05\x43heck\x12\x17.pulumirpc.CheckRequest\x1a\x18.pulumirpc.CheckResponse\"\x00\x12\x39\n\x04\x44iff\x12\x16.pulumirpc.DiffRequest\x1a\x17.pulumirpc.DiffResponse\"\x00\x12?\n\x06\x43reate\x12\x18.pulumirpc.CreateRequest\x1a\x19.pulumirpc.CreateResponse\"\x00\x12\x39\n\x04Read\x12\x16.pulumirpc.ReadRequest\x1a\x17.pulumirpc.ReadResponse\"\x00\x12?\n\x06Update\x12\x18.pulumirpc.UpdateRequest\x1a\x19.pulumirpc.UpdateResponse\"\x00\x12<\n\x06\x44\x65lete\x12\x18.pulumirpc.DeleteRequest\x1a\x16.google.protobuf.Empty\"\x00\x12:\n\x06\x43\x61ncel\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\"\x00\x12@\n\rGetPluginInfo\x12\x16.google.protobuf.Empty\x1a\x15.pulumirpc.PluginInfo\"\x00\x62\x06proto3')
,
dependencies=[plugin__pb2.DESCRIPTOR,google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,google_dot_protobuf_dot_struct__pb2.DESCRIPTOR,])
@ -618,6 +618,13 @@ _READREQUEST = _descriptor.Descriptor(
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
_descriptor.FieldDescriptor(
name='inputs', full_name='pulumirpc.ReadRequest.inputs', index=3,
number=4, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
],
extensions=[
],
@ -631,7 +638,7 @@ _READREQUEST = _descriptor.Descriptor(
oneofs=[
],
serialized_start=1352,
serialized_end=1435,
serialized_end=1476,
)
@ -675,8 +682,8 @@ _READRESPONSE = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
serialized_start=1437,
serialized_end=1549,
serialized_start=1478,
serialized_end=1590,
)
@ -727,8 +734,8 @@ _UPDATEREQUEST = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
serialized_start=1551,
serialized_end=1669,
serialized_start=1592,
serialized_end=1710,
)
@ -758,8 +765,8 @@ _UPDATERESPONSE = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
serialized_start=1671,
serialized_end=1732,
serialized_start=1712,
serialized_end=1773,
)
@ -803,8 +810,8 @@ _DELETEREQUEST = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
serialized_start=1734,
serialized_end=1819,
serialized_start=1775,
serialized_end=1860,
)
@ -855,8 +862,8 @@ _ERRORRESOURCEINITFAILED = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
serialized_start=1822,
serialized_end=1962,
serialized_start=1863,
serialized_end=2003,
)
_CONFIGUREREQUEST_VARIABLESENTRY.containing_type = _CONFIGUREREQUEST
@ -878,6 +885,7 @@ _DIFFRESPONSE_DIFFCHANGES.containing_type = _DIFFRESPONSE
_CREATEREQUEST.fields_by_name['properties'].message_type = google_dot_protobuf_dot_struct__pb2._STRUCT
_CREATERESPONSE.fields_by_name['properties'].message_type = google_dot_protobuf_dot_struct__pb2._STRUCT
_READREQUEST.fields_by_name['properties'].message_type = google_dot_protobuf_dot_struct__pb2._STRUCT
_READREQUEST.fields_by_name['inputs'].message_type = google_dot_protobuf_dot_struct__pb2._STRUCT
_READRESPONSE.fields_by_name['properties'].message_type = google_dot_protobuf_dot_struct__pb2._STRUCT
_READRESPONSE.fields_by_name['inputs'].message_type = google_dot_protobuf_dot_struct__pb2._STRUCT
_UPDATEREQUEST.fields_by_name['olds'].message_type = google_dot_protobuf_dot_struct__pb2._STRUCT
@ -1049,8 +1057,8 @@ _RESOURCEPROVIDER = _descriptor.ServiceDescriptor(
file=DESCRIPTOR,
index=0,
serialized_options=None,
serialized_start=1965,
serialized_end=2747,
serialized_start=2006,
serialized_end=2788,
methods=[
_descriptor.MethodDescriptor(
name='CheckConfig',