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:
parent
7d7e104ee3
commit
7ebd70a3e6
|
@ -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)
|
||||
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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,
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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',
|
||||
|
|
Loading…
Reference in a new issue