Compare commits

...

4 commits

Author SHA1 Message Date
Alex Clemmer 671c0357f4 Clean up language and resource providers in query 2019-11-04 18:47:36 -08:00
Alex Clemmer b1d0f8d154 Make streamInvoke gracefully-cancellable from SDKs
The @pulumi/pulumi TypScript SDK exposes `streamInvoke`, which returns a
(potentially infinite) stream of responses. This currently is _assumed_
to be infinite, in that there is no way to signal cancellation, and
prevents Pulumi from being able to clean up when we're finished using
the results of the `streamInvoke`.

This commit will introduce a `StreamInvokeResult` type, which is an
`AsyncIterable` that also exposes a `cancel` function, whih does just
this.

Use it like this:

    // `streamInvoke` to retrieve all updates to any `Deployment`, enumerate 0
    // updates from the stream, then `cancel` giving the Kubernetes provider to
    // clean up and close gracefully.
    const deployments = await streamInvoke("kubernetes:kubernetes:watch", {
        group: "apps", version: "v1", kind: "Deployment",
        break;
    });
    deployments.cancel();
2019-11-04 18:47:36 -08:00
Alex Clemmer 0363f52d3e Implement StreamInvoke 2019-11-04 18:47:36 -08:00
Alex Clemmer 43a8410354 Add StreamInvoke to Provider gRPC interface 2019-11-04 14:08:55 -08:00
23 changed files with 666 additions and 188 deletions

View file

@ -28,6 +28,9 @@ CHANGELOG
- Support for lists and maps in config.
[#3342](https://github.com/pulumi/pulumi/pull/3342)
- `ResourceProvider#StreamInvoke` implemented, will be the basis for streaming
APIs in `pulumi query`. [#3424](https://github.com/pulumi/pulumi/pull/3424)
## 1.4.0 (2019-10-24)
- `FileAsset` in the Python SDK now accepts anything implementing `os.PathLike` in addition to `str`.
@ -72,7 +75,7 @@ CHANGELOG
- Support renaming stack projects via `pulumi stack rename`.
[#3292](https://github.com/pulumi/pulumi/pull/3292)
- Add `helm` to `pulumi/pulumi` Dockerhub container
[#3294](https://github.com/pulumi/pulumi/pull/3294)

View file

@ -75,6 +75,7 @@ func Query(ctx *Context, q QueryInfo, opts UpdateOptions) result.Result {
if err != nil {
return result.FromError(err)
}
defer plugctx.Close()
return query(ctx, q, QueryOptions{
Events: emitter,

View file

@ -158,6 +158,13 @@ func (p *builtinProvider) Invoke(tok tokens.ModuleMember,
return outs, nil, nil
}
func (p *builtinProvider) StreamInvoke(
tok tokens.ModuleMember, args resource.PropertyMap,
onNext func(resource.PropertyMap) error) ([]plugin.CheckFailure, error) {
return nil, fmt.Errorf("the builtin provider does not implement streaming invokes")
}
func (p *builtinProvider) GetPluginInfo() (workspace.PluginInfo, error) {
// return an error: this should not be called for the builtin provider
return workspace.PluginInfo{}, errors.New("the builtin provider does not report plugin info")

View file

@ -15,6 +15,8 @@
package deploytest
import (
"fmt"
"github.com/blang/semver"
uuid "github.com/satori/go.uuid"
@ -155,3 +157,10 @@ func (prov *Provider) Invoke(tok tokens.ModuleMember,
}
return prov.InvokeF(tok, args)
}
func (prov *Provider) StreamInvoke(
tok tokens.ModuleMember, args resource.PropertyMap,
onNext func(resource.PropertyMap) error) ([]plugin.CheckFailure, error) {
return nil, fmt.Errorf("not implemented")
}

View file

@ -384,6 +384,13 @@ func (r *Registry) Invoke(tok tokens.ModuleMember,
return nil, nil, errors.New("the provider registry is not invokable")
}
func (r *Registry) StreamInvoke(
tok tokens.ModuleMember, args resource.PropertyMap,
onNext func(resource.PropertyMap) error) ([]plugin.CheckFailure, error) {
return nil, fmt.Errorf("the provider registry does not implement streaming invokes")
}
func (r *Registry) GetPluginInfo() (workspace.PluginInfo, error) {
// return an error: this should not be called for the provider registry
return workspace.PluginInfo{}, errors.New("the provider registry does not report plugin info")

View file

@ -15,6 +15,7 @@
package providers
import (
"fmt"
"testing"
"github.com/blang/semver"
@ -142,6 +143,12 @@ func (prov *testProvider) Invoke(tok tokens.ModuleMember,
args resource.PropertyMap) (resource.PropertyMap, []plugin.CheckFailure, error) {
return nil, nil, errors.New("unsupported")
}
func (prov *testProvider) StreamInvoke(
tok tokens.ModuleMember, args resource.PropertyMap,
onNext func(resource.PropertyMap) error) ([]plugin.CheckFailure, error) {
return nil, fmt.Errorf("not implemented")
}
func (prov *testProvider) GetPluginInfo() (workspace.PluginInfo, error) {
return workspace.PluginInfo{
Name: "testProvider",

View file

@ -579,6 +579,12 @@ func (rm *resmon) Invoke(ctx context.Context, req *pulumirpc.InvokeRequest) (*pu
return &pulumirpc.InvokeResponse{Return: mret, Failures: chkfails}, nil
}
func (rm *resmon) StreamInvoke(
req *pulumirpc.InvokeRequest, stream pulumirpc.ResourceMonitor_StreamInvokeServer) error {
return fmt.Errorf("the resource monitor does not implement streaming invokes")
}
// ReadResource reads the current state associated with a resource from its provider plugin.
func (rm *resmon) ReadResource(ctx context.Context,
req *pulumirpc.ReadResourceRequest) (*pulumirpc.ReadResourceResponse, error) {

View file

@ -105,7 +105,6 @@ type querySource struct {
func (src *querySource) Close() error {
// Cancel the monitor and reclaim any associated resources.
src.done = true
close(src.langPluginFinChan)
return src.mon.Cancel()
}
@ -341,6 +340,53 @@ func (rm *queryResmon) Invoke(ctx context.Context, req *pulumirpc.InvokeRequest)
return &pulumirpc.InvokeResponse{Return: mret, Failures: chkfails}, nil
}
func (rm *queryResmon) StreamInvoke(
req *pulumirpc.InvokeRequest, stream pulumirpc.ResourceMonitor_StreamInvokeServer) error {
tok := tokens.ModuleMember(req.GetTok())
label := fmt.Sprintf("QueryResourceMonitor.StreamInvoke(%s)", tok)
providerReq, err := parseProviderRequest(tok.Package(), req.GetVersion())
if err != nil {
return err
}
prov, err := getProviderFromSource(rm.reg, rm.defaultProviders, providerReq, req.GetProvider())
if err != nil {
return err
}
args, err := plugin.UnmarshalProperties(
req.GetArgs(), plugin.MarshalOptions{Label: label, KeepUnknowns: true})
if err != nil {
return errors.Wrapf(err, "failed to unmarshal %v args", tok)
}
// Synchronously do the StreamInvoke and then return the arguments. This will block until the
// streaming operation completes!
logging.V(5).Infof("ResourceMonitor.StreamInvoke received: tok=%v #args=%v", tok, len(args))
failures, err := prov.StreamInvoke(tok, args, func(event resource.PropertyMap) error {
mret, err := plugin.MarshalProperties(event, plugin.MarshalOptions{Label: label, KeepUnknowns: true})
if err != nil {
return errors.Wrapf(err, "failed to marshal return")
}
return stream.Send(&pulumirpc.InvokeResponse{Return: mret})
})
if err != nil {
return errors.Wrapf(err, "streaming invocation of %v returned an error", tok)
}
var chkfails []*pulumirpc.CheckFailure
for _, failure := range failures {
chkfails = append(chkfails, &pulumirpc.CheckFailure{
Property: string(failure.Property),
Reason: failure.Reason,
})
}
return stream.Send(&pulumirpc.InvokeResponse{Failures: chkfails})
}
// ReadResource reads the current state associated with a resource from its provider plugin.
func (rm *queryResmon) ReadResource(ctx context.Context,
req *pulumirpc.ReadResourceRequest) (*pulumirpc.ReadResourceResponse, error) {

View file

@ -71,6 +71,12 @@ type Provider interface {
Delete(urn resource.URN, id resource.ID, props resource.PropertyMap, timeout float64) (resource.Status, error)
// Invoke dynamically executes a built-in function in the provider.
Invoke(tok tokens.ModuleMember, args resource.PropertyMap) (resource.PropertyMap, []CheckFailure, error)
// StreamInvoke dynamically executes a built-in function in the provider, which returns a stream
// of responses.
StreamInvoke(
tok tokens.ModuleMember,
args resource.PropertyMap,
onNext func(resource.PropertyMap) error) ([]CheckFailure, error)
// GetPluginInfo returns this plugin's information.
GetPluginInfo() (workspace.PluginInfo, error)

View file

@ -16,6 +16,7 @@ package plugin
import (
"fmt"
"io"
"strings"
"github.com/blang/semver"
@ -954,6 +955,81 @@ func (p *provider) Invoke(tok tokens.ModuleMember, args resource.PropertyMap) (r
return ret, failures, nil
}
// StreamInvoke dynamically executes a built-in function in the provider, which returns a stream of
// responses.
func (p *provider) StreamInvoke(
tok tokens.ModuleMember,
args resource.PropertyMap,
onNext func(resource.PropertyMap) error) ([]CheckFailure, error) {
contract.Assert(tok != "")
label := fmt.Sprintf("%s.StreamInvoke(%s)", p.label(), tok)
logging.V(7).Infof("%s executing (#args=%d)", label, len(args))
// Get the RPC client and ensure it's configured.
client, err := p.getClient()
if err != nil {
return nil, err
}
// If the provider is not fully configured, return an empty property map.
if !p.cfgknown {
return nil, onNext(resource.PropertyMap{})
}
margs, err := MarshalProperties(args, MarshalOptions{
Label: fmt.Sprintf("%s.args", label),
KeepSecrets: p.acceptSecrets,
})
if err != nil {
return nil, err
}
streamClient, err := client.StreamInvoke(
p.ctx.Request(), &pulumirpc.InvokeRequest{Tok: string(tok), Args: margs})
if err != nil {
rpcError := rpcerror.Convert(err)
logging.V(7).Infof("%s failed: %v", label, rpcError.Message())
return nil, rpcError
}
for {
in, err := streamClient.Recv()
if err == io.EOF {
return nil, nil
}
if err != nil {
return nil, err
}
// Unmarshal response.
ret, err := UnmarshalProperties(in.GetReturn(), MarshalOptions{
Label: fmt.Sprintf("%s.returns", label),
RejectUnknowns: true,
KeepSecrets: true,
})
if err != nil {
return nil, err
}
// Check properties that failed verification.
var failures []CheckFailure
for _, failure := range in.GetFailures() {
failures = append(failures, CheckFailure{resource.PropertyKey(failure.Property), failure.Reason})
}
if len(failures) > 0 {
return failures, nil
}
// Send stream message back to whoever is consuming the stream.
if err := onNext(ret); err != nil {
return nil, err
}
}
}
// GetPluginInfo returns this plugin's information.
func (p *provider) GetPluginInfo() (workspace.PluginInfo, error) {
label := fmt.Sprintf("%s.GetPluginInfo()", p.label())

View file

@ -191,6 +191,29 @@ func (p *monitorProxy) Invoke(
return p.target.Invoke(ctx, req)
}
func (p *monitorProxy) StreamInvoke(
req *pulumirpc.InvokeRequest, server pulumirpc.ResourceMonitor_StreamInvokeServer) error {
client, err := p.target.StreamInvoke(context.Background(), req)
if err != nil {
return err
}
for {
in, err := client.Recv()
if err == io.EOF {
return nil
}
if err != nil {
return err
}
if err := server.Send(in); err != nil {
return err
}
}
}
func (p *monitorProxy) ReadResource(
ctx context.Context, req *pulumirpc.ReadResourceRequest) (*pulumirpc.ReadResourceResponse, error) {
return p.target.ReadResource(ctx, req)

View file

@ -5,11 +5,13 @@
"license": "Apache-2.0",
"repository": {
"type": "git",
"url" : "https://github.com/pulumi/pulumi.git",
"url": "https://github.com/pulumi/pulumi.git",
"directory": "sdk/nodejs"
},
"dependencies": {
"@pulumi/query": "^0.3.0",
"callback-to-async-iterator": "^1.1.1",
"deasync": "^0.1.15",
"google-protobuf": "^3.5.0",
"grpc": "1.21.1",
"minimist": "^1.2.0",
@ -21,17 +23,16 @@
"source-map-support": "^0.4.16",
"ts-node": "^7.0.0",
"typescript": "^3.0.0",
"upath": "^1.1.0",
"deasync": "^0.1.15"
"upath": "^1.1.0"
},
"devDependencies": {
"@types/deasync": "^0.1.0",
"@types/minimist": "^1.2.0",
"@types/mocha": "^2.2.42",
"@types/node": "^12.0.0",
"@types/normalize-package-data": "^2.4.0",
"@types/read-package-tree": "^5.2.0",
"@types/semver": "^5.5.0",
"@types/deasync": "^0.1.0",
"istanbul": "^0.4.5",
"mocha": "^3.5.0",
"node-gyp": "^3.6.2",

View file

@ -261,6 +261,19 @@ var ResourceProviderService = exports.ResourceProviderService = {
responseSerialize: serialize_pulumirpc_InvokeResponse,
responseDeserialize: deserialize_pulumirpc_InvokeResponse,
},
// StreamInvoke dynamically executes a built-in function in the provider, which returns a stream
// of responses.
streamInvoke: {
path: '/pulumirpc.ResourceProvider/StreamInvoke',
requestStream: false,
responseStream: true,
requestType: provider_pb.InvokeRequest,
responseType: provider_pb.InvokeResponse,
requestSerialize: serialize_pulumirpc_InvokeRequest,
requestDeserialize: deserialize_pulumirpc_InvokeRequest,
responseSerialize: serialize_pulumirpc_InvokeResponse,
responseDeserialize: deserialize_pulumirpc_InvokeResponse,
},
// Check validates that the given property bag is valid for a resource of the given type and returns the inputs
// that should be passed to successive calls to Diff, Create, or Update for this resource. As a rule, the provider
// inputs returned by a call to Check should preserve the original representation of the properties as present in

View file

@ -157,6 +157,17 @@ var ResourceMonitorService = exports.ResourceMonitorService = {
responseSerialize: serialize_pulumirpc_InvokeResponse,
responseDeserialize: deserialize_pulumirpc_InvokeResponse,
},
streamInvoke: {
path: '/pulumirpc.ResourceMonitor/StreamInvoke',
requestStream: false,
responseStream: true,
requestType: provider_pb.InvokeRequest,
responseType: provider_pb.InvokeResponse,
requestSerialize: serialize_pulumirpc_InvokeRequest,
requestDeserialize: deserialize_pulumirpc_InvokeRequest,
responseSerialize: serialize_pulumirpc_InvokeResponse,
responseDeserialize: deserialize_pulumirpc_InvokeResponse,
},
readResource: {
path: '/pulumirpc.ResourceMonitor/ReadResource',
requestStream: false,

View file

@ -12,8 +12,11 @@
// See the License for the specific language governing permissions and
// limitations under the License.
const asyncify = require("callback-to-async-iterator");
import { AsyncIterable } from "@pulumi/query/interfaces";
import * as fs from "fs";
import * as grpc from "grpc";
import * as asset from "../asset";
import { InvokeOptions } from "../invoke";
import * as log from "../log";
@ -78,6 +81,61 @@ export function invoke(tok: string, props: Inputs, opts: InvokeOptions = {}): Pr
return invokeSync(tok, props, opts, syncInvokes);
}
export async function streamInvoke(
tok: string,
props: Inputs,
opts: InvokeOptions = {},
): Promise<StreamInvokeResponse<any>> {
const label = `StreamInvoking function: tok=${tok} asynchronously`;
log.debug(label + (excessiveDebugOutput ? `, props=${JSON.stringify(props)}` : ``));
// Wait for all values to be available, and then perform the RPC.
const done = rpcKeepAlive();
try {
const serialized = await serializeProperties(`streamInvoke:${tok}`, props);
log.debug(
`StreamInvoke RPC prepared: tok=${tok}` + excessiveDebugOutput
? `, obj=${JSON.stringify(serialized)}`
: ``,
);
// Fetch the monitor and make an RPC request.
const monitor: any = getMonitor();
const provider = await ProviderResource.register(getProvider(tok, opts));
const req = createInvokeRequest(tok, serialized, provider, opts);
// Call `streamInvoke`.
const call = monitor.streamInvoke(req, {});
// Transform the callback-oriented `streamInvoke` result into a plain-old (potentially
// infinite) `AsyncIterable`.
const listenForWatchEvents = (callback: (obj: any) => void) => {
return new Promise(resolve => {
call.on("data", function(thing: any) {
const live = deserializeResponse(tok, thing);
callback(live);
});
call.on("error", (err: any) => {
if (err.code === 1 && err.details === "Cancelled") {
return;
}
throw err;
});
// Infinite stream, never call `resolve`.
});
};
const stream: AsyncIterable<any> = asyncify.default(listenForWatchEvents);
// Return a cancellable handle to the stream.
return new StreamInvokeResponse(
stream,
() => call.cancel());
} finally {
done();
}
}
export function invokeFallbackToAsync(tok: string, props: Inputs, opts: InvokeOptions): Promise<any> {
const asyncResult = invokeAsync(tok, props, opts);
const syncResult = utils.promiseResult(asyncResult);
@ -178,6 +236,24 @@ For more details see: https://www.pulumi.com/docs/troubleshooting/#synchronous-c
}
}
// StreamInvokeResponse represents a (potentially infinite) streaming response to `streamInvoke`,
// with facilities to gracefully cancel and clean up the stream.
export class StreamInvokeResponse<T> implements AsyncIterable<T> {
constructor(
private source: AsyncIterable<T>,
private cancelSource: () => void,
) {}
// cancel signals the `streamInvoke` should be cancelled and cleaned up gracefully.
public cancel() {
this.cancelSource();
}
[Symbol.asyncIterator]() {
return this.source[Symbol.asyncIterator]();
}
}
// Expose the properties of the actual result of invoke directly on the promise itself. Note this
// doesn't actually involve any asynchrony. The promise will be created synchronously and the
// values copied to it can be used immediately. We simply make a Promise so that any consumers that

View file

@ -57,7 +57,7 @@ func (x PropertyDiff_Kind) String() string {
return proto.EnumName(PropertyDiff_Kind_name, int32(x))
}
func (PropertyDiff_Kind) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_provider_31a5eda36dbe30f0, []int{9, 0}
return fileDescriptor_provider_766486f54fa2871e, []int{9, 0}
}
type DiffResponse_DiffChanges int32
@ -83,7 +83,7 @@ func (x DiffResponse_DiffChanges) String() string {
return proto.EnumName(DiffResponse_DiffChanges_name, int32(x))
}
func (DiffResponse_DiffChanges) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_provider_31a5eda36dbe30f0, []int{10, 0}
return fileDescriptor_provider_766486f54fa2871e, []int{10, 0}
}
type ConfigureRequest struct {
@ -99,7 +99,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_31a5eda36dbe30f0, []int{0}
return fileDescriptor_provider_766486f54fa2871e, []int{0}
}
func (m *ConfigureRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ConfigureRequest.Unmarshal(m, b)
@ -151,7 +151,7 @@ func (m *ConfigureResponse) Reset() { *m = ConfigureResponse{} }
func (m *ConfigureResponse) String() string { return proto.CompactTextString(m) }
func (*ConfigureResponse) ProtoMessage() {}
func (*ConfigureResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_provider_31a5eda36dbe30f0, []int{1}
return fileDescriptor_provider_766486f54fa2871e, []int{1}
}
func (m *ConfigureResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ConfigureResponse.Unmarshal(m, b)
@ -190,7 +190,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_31a5eda36dbe30f0, []int{2}
return fileDescriptor_provider_766486f54fa2871e, []int{2}
}
func (m *ConfigureErrorMissingKeys) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ConfigureErrorMissingKeys.Unmarshal(m, b)
@ -229,7 +229,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_31a5eda36dbe30f0, []int{2, 0}
return fileDescriptor_provider_766486f54fa2871e, []int{2, 0}
}
func (m *ConfigureErrorMissingKeys_MissingKey) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ConfigureErrorMissingKeys_MissingKey.Unmarshal(m, b)
@ -277,7 +277,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_31a5eda36dbe30f0, []int{3}
return fileDescriptor_provider_766486f54fa2871e, []int{3}
}
func (m *InvokeRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InvokeRequest.Unmarshal(m, b)
@ -337,7 +337,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_31a5eda36dbe30f0, []int{4}
return fileDescriptor_provider_766486f54fa2871e, []int{4}
}
func (m *InvokeResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InvokeResponse.Unmarshal(m, b)
@ -384,7 +384,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_31a5eda36dbe30f0, []int{5}
return fileDescriptor_provider_766486f54fa2871e, []int{5}
}
func (m *CheckRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CheckRequest.Unmarshal(m, b)
@ -437,7 +437,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_31a5eda36dbe30f0, []int{6}
return fileDescriptor_provider_766486f54fa2871e, []int{6}
}
func (m *CheckResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CheckResponse.Unmarshal(m, b)
@ -483,7 +483,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_31a5eda36dbe30f0, []int{7}
return fileDescriptor_provider_766486f54fa2871e, []int{7}
}
func (m *CheckFailure) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CheckFailure.Unmarshal(m, b)
@ -532,7 +532,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_31a5eda36dbe30f0, []int{8}
return fileDescriptor_provider_766486f54fa2871e, []int{8}
}
func (m *DiffRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DiffRequest.Unmarshal(m, b)
@ -599,7 +599,7 @@ func (m *PropertyDiff) Reset() { *m = PropertyDiff{} }
func (m *PropertyDiff) String() string { return proto.CompactTextString(m) }
func (*PropertyDiff) ProtoMessage() {}
func (*PropertyDiff) Descriptor() ([]byte, []int) {
return fileDescriptor_provider_31a5eda36dbe30f0, []int{9}
return fileDescriptor_provider_766486f54fa2871e, []int{9}
}
func (m *PropertyDiff) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PropertyDiff.Unmarshal(m, b)
@ -680,7 +680,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_31a5eda36dbe30f0, []int{10}
return fileDescriptor_provider_766486f54fa2871e, []int{10}
}
func (m *DiffResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DiffResponse.Unmarshal(m, b)
@ -762,7 +762,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_31a5eda36dbe30f0, []int{11}
return fileDescriptor_provider_766486f54fa2871e, []int{11}
}
func (m *CreateRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CreateRequest.Unmarshal(m, b)
@ -815,7 +815,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_31a5eda36dbe30f0, []int{12}
return fileDescriptor_provider_766486f54fa2871e, []int{12}
}
func (m *CreateResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CreateResponse.Unmarshal(m, b)
@ -863,7 +863,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_31a5eda36dbe30f0, []int{13}
return fileDescriptor_provider_766486f54fa2871e, []int{13}
}
func (m *ReadRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReadRequest.Unmarshal(m, b)
@ -924,7 +924,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_31a5eda36dbe30f0, []int{14}
return fileDescriptor_provider_766486f54fa2871e, []int{14}
}
func (m *ReadResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReadResponse.Unmarshal(m, b)
@ -981,7 +981,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_31a5eda36dbe30f0, []int{15}
return fileDescriptor_provider_766486f54fa2871e, []int{15}
}
func (m *UpdateRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UpdateRequest.Unmarshal(m, b)
@ -1054,7 +1054,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_31a5eda36dbe30f0, []int{16}
return fileDescriptor_provider_766486f54fa2871e, []int{16}
}
func (m *UpdateResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UpdateResponse.Unmarshal(m, b)
@ -1095,7 +1095,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_31a5eda36dbe30f0, []int{17}
return fileDescriptor_provider_766486f54fa2871e, []int{17}
}
func (m *DeleteRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DeleteRequest.Unmarshal(m, b)
@ -1159,7 +1159,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_31a5eda36dbe30f0, []int{18}
return fileDescriptor_provider_766486f54fa2871e, []int{18}
}
func (m *ErrorResourceInitFailed) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ErrorResourceInitFailed.Unmarshal(m, b)
@ -1253,6 +1253,9 @@ type ResourceProviderClient interface {
Configure(ctx context.Context, in *ConfigureRequest, opts ...grpc.CallOption) (*ConfigureResponse, error)
// Invoke dynamically executes a built-in function in the provider.
Invoke(ctx context.Context, in *InvokeRequest, opts ...grpc.CallOption) (*InvokeResponse, error)
// StreamInvoke dynamically executes a built-in function in the provider, which returns a stream
// of responses.
StreamInvoke(ctx context.Context, in *InvokeRequest, opts ...grpc.CallOption) (ResourceProvider_StreamInvokeClient, error)
// Check validates that the given property bag is valid for a resource of the given type and returns the inputs
// that should be passed to successive calls to Diff, Create, or Update for this resource. As a rule, the provider
// inputs returned by a call to Check should preserve the original representation of the properties as present in
@ -1321,6 +1324,38 @@ func (c *resourceProviderClient) Invoke(ctx context.Context, in *InvokeRequest,
return out, nil
}
func (c *resourceProviderClient) StreamInvoke(ctx context.Context, in *InvokeRequest, opts ...grpc.CallOption) (ResourceProvider_StreamInvokeClient, error) {
stream, err := grpc.NewClientStream(ctx, &_ResourceProvider_serviceDesc.Streams[0], c.cc, "/pulumirpc.ResourceProvider/StreamInvoke", opts...)
if err != nil {
return nil, err
}
x := &resourceProviderStreamInvokeClient{stream}
if err := x.ClientStream.SendMsg(in); err != nil {
return nil, err
}
if err := x.ClientStream.CloseSend(); err != nil {
return nil, err
}
return x, nil
}
type ResourceProvider_StreamInvokeClient interface {
Recv() (*InvokeResponse, error)
grpc.ClientStream
}
type resourceProviderStreamInvokeClient struct {
grpc.ClientStream
}
func (x *resourceProviderStreamInvokeClient) Recv() (*InvokeResponse, error) {
m := new(InvokeResponse)
if err := x.ClientStream.RecvMsg(m); err != nil {
return nil, err
}
return m, nil
}
func (c *resourceProviderClient) Check(ctx context.Context, in *CheckRequest, opts ...grpc.CallOption) (*CheckResponse, error) {
out := new(CheckResponse)
err := grpc.Invoke(ctx, "/pulumirpc.ResourceProvider/Check", in, out, c.cc, opts...)
@ -1404,6 +1439,9 @@ type ResourceProviderServer interface {
Configure(context.Context, *ConfigureRequest) (*ConfigureResponse, error)
// Invoke dynamically executes a built-in function in the provider.
Invoke(context.Context, *InvokeRequest) (*InvokeResponse, error)
// StreamInvoke dynamically executes a built-in function in the provider, which returns a stream
// of responses.
StreamInvoke(*InvokeRequest, ResourceProvider_StreamInvokeServer) error
// Check validates that the given property bag is valid for a resource of the given type and returns the inputs
// that should be passed to successive calls to Diff, Create, or Update for this resource. As a rule, the provider
// inputs returned by a call to Check should preserve the original representation of the properties as present in
@ -1504,6 +1542,27 @@ func _ResourceProvider_Invoke_Handler(srv interface{}, ctx context.Context, dec
return interceptor(ctx, in, info, handler)
}
func _ResourceProvider_StreamInvoke_Handler(srv interface{}, stream grpc.ServerStream) error {
m := new(InvokeRequest)
if err := stream.RecvMsg(m); err != nil {
return err
}
return srv.(ResourceProviderServer).StreamInvoke(m, &resourceProviderStreamInvokeServer{stream})
}
type ResourceProvider_StreamInvokeServer interface {
Send(*InvokeResponse) error
grpc.ServerStream
}
type resourceProviderStreamInvokeServer struct {
grpc.ServerStream
}
func (x *resourceProviderStreamInvokeServer) Send(m *InvokeResponse) error {
return x.ServerStream.SendMsg(m)
}
func _ResourceProvider_Check_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CheckRequest)
if err := dec(in); err != nil {
@ -1701,88 +1760,95 @@ var _ResourceProvider_serviceDesc = grpc.ServiceDesc{
Handler: _ResourceProvider_GetPluginInfo_Handler,
},
},
Streams: []grpc.StreamDesc{},
Streams: []grpc.StreamDesc{
{
StreamName: "StreamInvoke",
Handler: _ResourceProvider_StreamInvoke_Handler,
ServerStreams: true,
},
},
Metadata: "provider.proto",
}
func init() { proto.RegisterFile("provider.proto", fileDescriptor_provider_31a5eda36dbe30f0) }
func init() { proto.RegisterFile("provider.proto", fileDescriptor_provider_766486f54fa2871e) }
var fileDescriptor_provider_31a5eda36dbe30f0 = []byte{
// 1207 bytes of a gzipped FileDescriptorProto
var fileDescriptor_provider_766486f54fa2871e = []byte{
// 1221 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xc4, 0x57, 0xcd, 0x72, 0x1b, 0xc5,
0x13, 0xd7, 0x6a, 0x65, 0xd9, 0x6a, 0x7d, 0x44, 0x99, 0xff, 0x1f, 0x5b, 0x51, 0x7c, 0x50, 0x2d,
0x1c, 0x04, 0x14, 0x72, 0xca, 0x39, 0x40, 0x52, 0x49, 0x05, 0xdb, 0x92, 0xc1, 0xe5, 0xf8, 0x83,
0x75, 0xcc, 0xc7, 0x29, 0xac, 0xb5, 0x23, 0x79, 0x4a, 0xf2, 0xee, 0x32, 0x3b, 0x2b, 0xca, 0x9c,
0x39, 0xf0, 0x00, 0x5c, 0x78, 0x08, 0x8a, 0x2a, 0x9e, 0x80, 0x3b, 0xcf, 0xc0, 0x23, 0xf0, 0x0e,
0xd4, 0x7c, 0xec, 0x6a, 0xc6, 0x92, 0x1d, 0xd9, 0x95, 0x82, 0xdb, 0xf4, 0x74, 0xcf, 0x74, 0xf7,
0x6f, 0xba, 0x7f, 0x33, 0x03, 0xb5, 0x88, 0x86, 0x13, 0xe2, 0x63, 0xda, 0x89, 0x68, 0xc8, 0x42,
0x54, 0x8a, 0x92, 0x71, 0x72, 0x41, 0x68, 0xd4, 0x6f, 0x56, 0xa2, 0x71, 0x32, 0x24, 0x81, 0x54,
0x34, 0x1f, 0x0e, 0xc3, 0x70, 0x38, 0xc6, 0x1b, 0x42, 0x3a, 0x4b, 0x06, 0x1b, 0xf8, 0x22, 0x62,
0x97, 0x4a, 0xb9, 0x7e, 0x55, 0x19, 0x33, 0x9a, 0xf4, 0x99, 0xd4, 0x3a, 0x7f, 0x5b, 0x50, 0xdf,
0x09, 0x83, 0x01, 0x19, 0x26, 0x14, 0xbb, 0xf8, 0xbb, 0x04, 0xc7, 0x0c, 0x7d, 0x0e, 0xa5, 0x89,
0x47, 0x89, 0x77, 0x36, 0xc6, 0x71, 0xc3, 0x6a, 0xd9, 0xed, 0xf2, 0xe6, 0x07, 0x9d, 0xcc, 0x79,
0xe7, 0xaa, 0x7d, 0xe7, 0xcb, 0xd4, 0xb8, 0x17, 0x30, 0x7a, 0xe9, 0x4e, 0x17, 0xa3, 0x0f, 0xa1,
0xe0, 0xd1, 0x61, 0xdc, 0xc8, 0xb7, 0xac, 0x76, 0x79, 0x73, 0xad, 0x23, 0x63, 0xe9, 0xa4, 0xb1,
0x74, 0x4e, 0x44, 0x2c, 0xae, 0x30, 0x42, 0xef, 0x41, 0xd5, 0xeb, 0xf7, 0x71, 0xc4, 0x4e, 0x70,
0x9f, 0x62, 0x16, 0x37, 0xec, 0x96, 0xd5, 0x5e, 0x71, 0xcd, 0xc9, 0xe6, 0x33, 0xa8, 0x99, 0xfe,
0x50, 0x1d, 0xec, 0x11, 0xbe, 0x6c, 0x58, 0x2d, 0xab, 0x5d, 0x72, 0xf9, 0x10, 0xfd, 0x1f, 0x96,
0x26, 0xde, 0x38, 0xc1, 0xc2, 0x6f, 0xc9, 0x95, 0xc2, 0xd3, 0xfc, 0x27, 0x96, 0xf3, 0x04, 0xee,
0x6b, 0xe1, 0xc7, 0x51, 0x18, 0xc4, 0x78, 0xd6, 0xb1, 0x35, 0xc7, 0xb1, 0xf3, 0xbb, 0x05, 0x0f,
0xb2, 0xb5, 0x3d, 0x4a, 0x43, 0x7a, 0x40, 0xe2, 0x98, 0x04, 0xc3, 0x7d, 0x7c, 0x19, 0xa3, 0x2f,
0xa0, 0x7c, 0x31, 0x15, 0x15, 0x6a, 0x1b, 0xf3, 0x50, 0xbb, 0xba, 0xb4, 0x33, 0x1d, 0xbb, 0xfa,
0x1e, 0xcd, 0x6d, 0x80, 0xa9, 0x0a, 0x21, 0x28, 0x04, 0xde, 0x05, 0x56, 0x69, 0x8a, 0x31, 0x6a,
0x41, 0xd9, 0xc7, 0x71, 0x9f, 0x92, 0x88, 0x91, 0x30, 0x50, 0xd9, 0xea, 0x53, 0xce, 0x8f, 0x16,
0x54, 0xf7, 0x82, 0x49, 0x38, 0xca, 0x0e, 0xb7, 0x0e, 0x36, 0x0b, 0x47, 0x29, 0x5a, 0x2c, 0x1c,
0xdd, 0xee, 0x90, 0x9a, 0xb0, 0x92, 0x96, 0xa5, 0x38, 0x9f, 0x92, 0x9b, 0xc9, 0xa8, 0x01, 0xcb,
0x13, 0x4c, 0x63, 0x1e, 0x4a, 0x41, 0xa8, 0x52, 0xd1, 0x99, 0x40, 0x2d, 0x8d, 0x42, 0x61, 0xbe,
0x01, 0x45, 0x8a, 0x59, 0x42, 0x03, 0x11, 0xc9, 0x0d, 0x6e, 0x95, 0x19, 0x7a, 0x0c, 0x2b, 0x03,
0x8f, 0x8c, 0x13, 0x8a, 0x79, 0xa4, 0xb6, 0x58, 0xa2, 0xa1, 0x7b, 0x8e, 0xfb, 0xa3, 0x5d, 0xa9,
0x77, 0x33, 0x43, 0xe7, 0x07, 0xa8, 0x08, 0x8d, 0x96, 0x7c, 0xea, 0xb2, 0xe4, 0xf2, 0x21, 0x4f,
0x3e, 0x1c, 0xfb, 0x6f, 0x4e, 0x9e, 0x1b, 0x71, 0xe3, 0x00, 0x7f, 0x2f, 0x0b, 0xf3, 0x26, 0x63,
0x6e, 0xe4, 0x24, 0x50, 0x55, 0xbe, 0xa7, 0x29, 0x93, 0x20, 0x4a, 0x54, 0x7d, 0xdd, 0x94, 0xb2,
0x34, 0xbb, 0x5b, 0xca, 0xdb, 0x2a, 0x65, 0xa5, 0x51, 0x07, 0x16, 0x61, 0xca, 0xd2, 0x16, 0xc9,
0x64, 0xb4, 0xca, 0x0f, 0xc1, 0x8b, 0xb3, 0xd2, 0x51, 0x92, 0xf3, 0x9b, 0x05, 0xe5, 0x2e, 0x19,
0x0c, 0x52, 0xd8, 0x6a, 0x90, 0x27, 0xbe, 0x5a, 0x9d, 0x27, 0x7e, 0x0a, 0x63, 0x7e, 0x16, 0x46,
0xfb, 0x36, 0x30, 0x16, 0x16, 0x80, 0x91, 0x37, 0x27, 0x19, 0x06, 0x21, 0xc5, 0x3b, 0xe7, 0x5e,
0x30, 0xc4, 0x71, 0x63, 0xa9, 0x65, 0xb7, 0x4b, 0xae, 0x39, 0xe9, 0xfc, 0x61, 0x41, 0xe5, 0x58,
0xa5, 0xc5, 0x23, 0x47, 0x8f, 0xa0, 0x30, 0x22, 0x81, 0x0c, 0xba, 0xb6, 0xb9, 0xae, 0xe1, 0xa6,
0x9b, 0x75, 0xf6, 0x49, 0xe0, 0xbb, 0xc2, 0x12, 0xad, 0x43, 0x49, 0xe0, 0xce, 0xe7, 0x45, 0x6a,
0x2b, 0xee, 0x74, 0xc2, 0xf9, 0x16, 0x0a, 0xdc, 0x16, 0x2d, 0x83, 0xbd, 0xd5, 0xed, 0xd6, 0x73,
0xe8, 0x1e, 0x94, 0xb7, 0xba, 0xdd, 0xd7, 0x6e, 0xef, 0xf8, 0xe5, 0xd6, 0x4e, 0xaf, 0x6e, 0x21,
0x80, 0x62, 0xb7, 0xf7, 0xb2, 0xf7, 0xaa, 0x57, 0xcf, 0x23, 0x04, 0x35, 0x39, 0xce, 0xf4, 0x36,
0xd7, 0x9f, 0x1e, 0x77, 0xb7, 0x5e, 0xf5, 0xea, 0x05, 0xae, 0x97, 0xe3, 0x4c, 0xbf, 0xe4, 0xfc,
0x65, 0x43, 0x45, 0x82, 0xae, 0xea, 0xa5, 0x09, 0x2b, 0x14, 0x47, 0x63, 0xaf, 0xaf, 0x58, 0xb8,
0xe4, 0x66, 0x32, 0x6f, 0xb5, 0x98, 0x49, 0x82, 0xce, 0x0b, 0x55, 0x2a, 0xa2, 0x47, 0xf0, 0x3f,
0x1f, 0x8f, 0x31, 0xc3, 0xdb, 0x78, 0x10, 0x72, 0x92, 0x13, 0x2b, 0x14, 0x97, 0xce, 0x53, 0xa1,
0xe7, 0xb0, 0xdc, 0x57, 0xd8, 0x16, 0x04, 0x5a, 0xef, 0x6a, 0x68, 0xe9, 0x11, 0x09, 0x41, 0x21,
0xee, 0xa6, 0x6b, 0x38, 0xd9, 0xfa, 0x64, 0x30, 0x48, 0x0f, 0x46, 0x0a, 0xe8, 0x00, 0x2a, 0x3e,
0x66, 0x1e, 0x19, 0x63, 0x5f, 0x00, 0x5a, 0x14, 0xf5, 0xfb, 0xfe, 0xb5, 0x3b, 0x6b, 0xb6, 0xf2,
0x16, 0x31, 0x96, 0xa3, 0x36, 0xdc, 0x3b, 0xf7, 0x62, 0xdd, 0xaa, 0xb1, 0x2c, 0x32, 0xba, 0x3a,
0xdd, 0xfc, 0x1a, 0xee, 0xcf, 0x6c, 0x36, 0xe7, 0x8a, 0xf8, 0x48, 0xbf, 0x22, 0xcc, 0xc6, 0xd2,
0x0b, 0x44, 0xbf, 0x3b, 0x9e, 0xcb, 0xa6, 0x50, 0x00, 0xa0, 0x3a, 0x54, 0xba, 0x7b, 0xbb, 0xbb,
0xaf, 0x4f, 0x0f, 0xf7, 0x0f, 0x8f, 0xbe, 0x3a, 0xac, 0xe7, 0x50, 0x15, 0x4a, 0x62, 0xe6, 0xf0,
0xe8, 0x90, 0x17, 0x44, 0x2a, 0x9e, 0x1c, 0x1d, 0xf4, 0xea, 0x79, 0x87, 0x41, 0x75, 0x87, 0x62,
0x8f, 0xe1, 0xeb, 0xc9, 0xe8, 0x63, 0x00, 0xd5, 0x9b, 0x04, 0xbf, 0x91, 0x92, 0x34, 0x53, 0x5e,
0x0e, 0x8c, 0x5c, 0xe0, 0x30, 0x61, 0xe2, 0xa0, 0x2d, 0x37, 0x15, 0x9d, 0x6f, 0xa0, 0x96, 0x7a,
0x55, 0x65, 0x75, 0xb5, 0x99, 0xef, 0xea, 0xd4, 0xf9, 0xc5, 0x82, 0xb2, 0x8b, 0x3d, 0x7f, 0x71,
0x96, 0x30, 0x5d, 0xd9, 0x8b, 0xe7, 0x37, 0xa5, 0xce, 0xc2, 0x42, 0xd4, 0xe9, 0xfc, 0x64, 0x41,
0x45, 0xc6, 0xf6, 0x96, 0xb3, 0xd6, 0x42, 0xb1, 0x17, 0x0b, 0xe5, 0x4f, 0x0b, 0xaa, 0xa7, 0x91,
0xaf, 0x1d, 0xfc, 0x7f, 0x49, 0xa7, 0x5a, 0xa5, 0x2c, 0x19, 0x95, 0x32, 0x4b, 0xb4, 0xc5, 0x79,
0x44, 0xbb, 0x07, 0xb5, 0x34, 0x19, 0x85, 0xac, 0x89, 0xa4, 0xb5, 0x78, 0xfd, 0xf0, 0xb7, 0x49,
0x57, 0xf0, 0xd1, 0xbf, 0x50, 0x41, 0x5a, 0xde, 0x05, 0xb3, 0x43, 0x7e, 0xb5, 0x60, 0x4d, 0xbc,
0xc9, 0x5c, 0x1c, 0x87, 0x09, 0xed, 0xe3, 0xbd, 0x80, 0xb0, 0x5d, 0x41, 0x20, 0x6f, 0xaf, 0x6a,
0x1a, 0xb0, 0x2c, 0xef, 0x56, 0x1e, 0xb4, 0xe0, 0x6b, 0x25, 0xde, 0xba, 0xb4, 0x37, 0x7f, 0x2e,
0x42, 0x3d, 0x0d, 0xf5, 0x38, 0x7d, 0x7a, 0x6d, 0x43, 0x59, 0xdc, 0xfa, 0xf2, 0x95, 0x89, 0x66,
0xde, 0x09, 0x0a, 0xe1, 0x66, 0x63, 0x56, 0x21, 0x8f, 0xd1, 0xc9, 0xa1, 0x17, 0x00, 0x82, 0xdf,
0xe4, 0x16, 0xab, 0x33, 0x54, 0x2d, 0x77, 0x58, 0xbb, 0x86, 0xc2, 0x9d, 0x1c, 0xff, 0x37, 0x64,
0xaf, 0x5c, 0xf4, 0xf0, 0x86, 0x1f, 0x43, 0x73, 0x7d, 0xbe, 0x52, 0x0b, 0xa5, 0x28, 0xdf, 0x8b,
0x48, 0x0f, 0xd8, 0x78, 0xc8, 0x36, 0x1f, 0xcc, 0xd1, 0x64, 0x1b, 0x3c, 0x83, 0x25, 0x91, 0xde,
0xdd, 0x90, 0x78, 0x02, 0x05, 0x71, 0xeb, 0xdc, 0x01, 0x83, 0x17, 0x50, 0x94, 0x7c, 0x6b, 0x44,
0x6e, 0x10, 0xbf, 0x11, 0xb9, 0x49, 0xce, 0xd2, 0x37, 0x27, 0x2e, 0xc3, 0xb7, 0xc6, 0xb2, 0x86,
0x6f, 0x9d, 0xe1, 0xa4, 0x6f, 0xd9, 0x9b, 0x86, 0x6f, 0x83, 0x7b, 0x0c, 0xdf, 0x66, 0x23, 0x0b,
0xd4, 0x8a, 0xb2, 0x21, 0x8d, 0x0d, 0x8c, 0x1e, 0x6d, 0xae, 0xce, 0xd4, 0x67, 0x8f, 0xff, 0x36,
0x9d, 0x1c, 0x7a, 0x0a, 0xc5, 0x1d, 0x2f, 0xe8, 0xe3, 0x31, 0xba, 0xc6, 0xe6, 0x86, 0xb5, 0x9f,
0x42, 0xf5, 0x33, 0xcc, 0x8e, 0xc5, 0xaf, 0x76, 0x2f, 0x18, 0x84, 0xd7, 0x6e, 0xf1, 0x8e, 0x7e,
0x51, 0x67, 0xe6, 0x4e, 0xee, 0xac, 0x28, 0x0c, 0x1f, 0xff, 0x13, 0x00, 0x00, 0xff, 0xff, 0x37,
0xd1, 0x77, 0xc4, 0x36, 0x0f, 0x00, 0x00,
0x13, 0xd7, 0x6a, 0x65, 0xd9, 0x6a, 0x7d, 0x44, 0x99, 0xff, 0x9f, 0x58, 0x51, 0x7c, 0x50, 0x2d,
0x1c, 0x04, 0x14, 0xb2, 0xcb, 0x39, 0x40, 0x52, 0x4e, 0x05, 0xdb, 0x92, 0x83, 0xcb, 0xf1, 0x07,
0xeb, 0x98, 0x8f, 0x53, 0x58, 0x6b, 0x47, 0xf2, 0x96, 0x56, 0xbb, 0xcb, 0xec, 0xac, 0x28, 0x73,
0xe6, 0xc0, 0x2b, 0xf0, 0x10, 0x14, 0x55, 0x3c, 0x01, 0x77, 0x9e, 0x21, 0x8f, 0xc0, 0x3b, 0x50,
0xf3, 0xb1, 0xab, 0x19, 0x4b, 0x76, 0x64, 0x93, 0x82, 0xdb, 0xf4, 0x74, 0xcf, 0x74, 0xf7, 0x6f,
0xba, 0x7f, 0x33, 0x03, 0xb5, 0x88, 0x84, 0x13, 0xcf, 0xc5, 0xa4, 0x13, 0x91, 0x90, 0x86, 0xa8,
0x14, 0x25, 0x7e, 0x32, 0xf6, 0x48, 0xd4, 0x6f, 0x56, 0x22, 0x3f, 0x19, 0x7a, 0x81, 0x50, 0x34,
0x1f, 0x0d, 0xc3, 0x70, 0xe8, 0xe3, 0x75, 0x2e, 0x9d, 0x27, 0x83, 0x75, 0x3c, 0x8e, 0xe8, 0xa5,
0x54, 0xae, 0x5d, 0x55, 0xc6, 0x94, 0x24, 0x7d, 0x2a, 0xb4, 0xd6, 0x5f, 0x06, 0xd4, 0x77, 0xc3,
0x60, 0xe0, 0x0d, 0x13, 0x82, 0x6d, 0xfc, 0x7d, 0x82, 0x63, 0x8a, 0xbe, 0x80, 0xd2, 0xc4, 0x21,
0x9e, 0x73, 0xee, 0xe3, 0xb8, 0x61, 0xb4, 0xcc, 0x76, 0x79, 0xf3, 0xa3, 0x4e, 0xe6, 0xbc, 0x73,
0xd5, 0xbe, 0xf3, 0x55, 0x6a, 0xdc, 0x0b, 0x28, 0xb9, 0xb4, 0xa7, 0x8b, 0xd1, 0xc7, 0x50, 0x70,
0xc8, 0x30, 0x6e, 0xe4, 0x5b, 0x46, 0xbb, 0xbc, 0xb9, 0xda, 0x11, 0xb1, 0x74, 0xd2, 0x58, 0x3a,
0xa7, 0x3c, 0x16, 0x9b, 0x1b, 0xa1, 0x0f, 0xa0, 0xea, 0xf4, 0xfb, 0x38, 0xa2, 0xa7, 0xb8, 0x4f,
0x30, 0x8d, 0x1b, 0x66, 0xcb, 0x68, 0xaf, 0xd8, 0xfa, 0x64, 0x73, 0x0b, 0x6a, 0xba, 0x3f, 0x54,
0x07, 0x73, 0x84, 0x2f, 0x1b, 0x46, 0xcb, 0x68, 0x97, 0x6c, 0x36, 0x44, 0xff, 0x87, 0xa5, 0x89,
0xe3, 0x27, 0x98, 0xfb, 0x2d, 0xd9, 0x42, 0x78, 0x9a, 0xff, 0xcc, 0xb0, 0x9e, 0xc0, 0x7d, 0x25,
0xfc, 0x38, 0x0a, 0x83, 0x18, 0xcf, 0x3a, 0x36, 0xe6, 0x38, 0xb6, 0x7e, 0x37, 0xe0, 0x61, 0xb6,
0xb6, 0x47, 0x48, 0x48, 0x0e, 0xbd, 0x38, 0xf6, 0x82, 0xe1, 0x01, 0xbe, 0x8c, 0xd1, 0x97, 0x50,
0x1e, 0x4f, 0x45, 0x89, 0xda, 0xfa, 0x3c, 0xd4, 0xae, 0x2e, 0xed, 0x4c, 0xc7, 0xb6, 0xba, 0x47,
0x73, 0x07, 0x60, 0xaa, 0x42, 0x08, 0x0a, 0x81, 0x33, 0xc6, 0x32, 0x4d, 0x3e, 0x46, 0x2d, 0x28,
0xbb, 0x38, 0xee, 0x13, 0x2f, 0xa2, 0x5e, 0x18, 0xc8, 0x6c, 0xd5, 0x29, 0xeb, 0x27, 0x03, 0xaa,
0xfb, 0xc1, 0x24, 0x1c, 0x65, 0x87, 0x5b, 0x07, 0x93, 0x86, 0xa3, 0x14, 0x2d, 0x1a, 0x8e, 0x6e,
0x77, 0x48, 0x4d, 0x58, 0x49, 0xcb, 0x92, 0x9f, 0x4f, 0xc9, 0xce, 0x64, 0xd4, 0x80, 0xe5, 0x09,
0x26, 0x31, 0x0b, 0xa5, 0xc0, 0x55, 0xa9, 0x68, 0x4d, 0xa0, 0x96, 0x46, 0x21, 0x31, 0x5f, 0x87,
0x22, 0xc1, 0x34, 0x21, 0x01, 0x8f, 0xe4, 0x06, 0xb7, 0xd2, 0x0c, 0x3d, 0x86, 0x95, 0x81, 0xe3,
0xf9, 0x09, 0xc1, 0x2c, 0x52, 0x93, 0x2f, 0x51, 0xd0, 0xbd, 0xc0, 0xfd, 0xd1, 0x9e, 0xd0, 0xdb,
0x99, 0xa1, 0xf5, 0x23, 0x54, 0xb8, 0x46, 0x49, 0x3e, 0x75, 0x59, 0xb2, 0xd9, 0x90, 0x25, 0x1f,
0xfa, 0xee, 0xdb, 0x93, 0x67, 0x46, 0xcc, 0x38, 0xc0, 0x3f, 0x88, 0xc2, 0xbc, 0xc9, 0x98, 0x19,
0x59, 0x09, 0x54, 0xa5, 0xef, 0x69, 0xca, 0x5e, 0x10, 0x25, 0xb2, 0xbe, 0x6e, 0x4a, 0x59, 0x98,
0xdd, 0x2d, 0xe5, 0x1d, 0x99, 0xb2, 0xd4, 0xc8, 0x03, 0x8b, 0x30, 0xa1, 0x69, 0x8b, 0x64, 0x32,
0x7a, 0xc0, 0x0e, 0xc1, 0x89, 0xb3, 0xd2, 0x91, 0x92, 0xf5, 0x9b, 0x01, 0xe5, 0xae, 0x37, 0x18,
0xa4, 0xb0, 0xd5, 0x20, 0xef, 0xb9, 0x72, 0x75, 0xde, 0x73, 0x53, 0x18, 0xf3, 0xb3, 0x30, 0x9a,
0xb7, 0x81, 0xb1, 0xb0, 0x00, 0x8c, 0xac, 0x39, 0xbd, 0x61, 0x10, 0x12, 0xbc, 0x7b, 0xe1, 0x04,
0x43, 0x1c, 0x37, 0x96, 0x5a, 0x66, 0xbb, 0x64, 0xeb, 0x93, 0xd6, 0x1f, 0x06, 0x54, 0x4e, 0x64,
0x5a, 0x2c, 0x72, 0xb4, 0x01, 0x85, 0x91, 0x17, 0x88, 0xa0, 0x6b, 0x9b, 0x6b, 0x0a, 0x6e, 0xaa,
0x59, 0xe7, 0xc0, 0x0b, 0x5c, 0x9b, 0x5b, 0xa2, 0x35, 0x28, 0x71, 0xdc, 0xd9, 0x3c, 0x4f, 0x6d,
0xc5, 0x9e, 0x4e, 0x58, 0xdf, 0x41, 0x81, 0xd9, 0xa2, 0x65, 0x30, 0xb7, 0xbb, 0xdd, 0x7a, 0x0e,
0xdd, 0x83, 0xf2, 0x76, 0xb7, 0xfb, 0xda, 0xee, 0x9d, 0xbc, 0xdc, 0xde, 0xed, 0xd5, 0x0d, 0x04,
0x50, 0xec, 0xf6, 0x5e, 0xf6, 0x5e, 0xf5, 0xea, 0x79, 0x84, 0xa0, 0x26, 0xc6, 0x99, 0xde, 0x64,
0xfa, 0xb3, 0x93, 0xee, 0xf6, 0xab, 0x5e, 0xbd, 0xc0, 0xf4, 0x62, 0x9c, 0xe9, 0x97, 0xac, 0x37,
0x26, 0x54, 0x04, 0xe8, 0xb2, 0x5e, 0x9a, 0xb0, 0x42, 0x70, 0xe4, 0x3b, 0x7d, 0xc9, 0xc2, 0x25,
0x3b, 0x93, 0x59, 0xab, 0xc5, 0x54, 0x10, 0x74, 0x9e, 0xab, 0x52, 0x11, 0x6d, 0xc0, 0xff, 0x5c,
0xec, 0x63, 0x8a, 0x77, 0xf0, 0x20, 0x64, 0x24, 0xc7, 0x57, 0x48, 0x2e, 0x9d, 0xa7, 0x42, 0xcf,
0x60, 0xb9, 0x2f, 0xb1, 0x2d, 0x70, 0xb4, 0xde, 0x57, 0xd0, 0x52, 0x23, 0xe2, 0x82, 0x44, 0xdc,
0x4e, 0xd7, 0x30, 0xb2, 0x75, 0xbd, 0xc1, 0x20, 0x3d, 0x18, 0x21, 0xa0, 0x43, 0xa8, 0xb8, 0x98,
0x3a, 0x9e, 0x8f, 0x5d, 0x0e, 0x68, 0x91, 0xd7, 0xef, 0x87, 0xd7, 0xee, 0xac, 0xd8, 0x8a, 0x5b,
0x44, 0x5b, 0x8e, 0xda, 0x70, 0xef, 0xc2, 0x89, 0x55, 0xab, 0xc6, 0x32, 0xcf, 0xe8, 0xea, 0x74,
0xf3, 0x1b, 0xb8, 0x3f, 0xb3, 0xd9, 0x9c, 0x2b, 0xe2, 0x13, 0xf5, 0x8a, 0xd0, 0x1b, 0x4b, 0x2d,
0x10, 0xf5, 0xee, 0x78, 0x26, 0x9a, 0x42, 0x02, 0x80, 0xea, 0x50, 0xe9, 0xee, 0xef, 0xed, 0xbd,
0x3e, 0x3b, 0x3a, 0x38, 0x3a, 0xfe, 0xfa, 0xa8, 0x9e, 0x43, 0x55, 0x28, 0xf1, 0x99, 0xa3, 0xe3,
0x23, 0x56, 0x10, 0xa9, 0x78, 0x7a, 0x7c, 0xd8, 0xab, 0xe7, 0x2d, 0x0a, 0xd5, 0x5d, 0x82, 0x1d,
0x8a, 0xaf, 0x27, 0xa3, 0x4f, 0x01, 0x64, 0x6f, 0x7a, 0xf8, 0xad, 0x94, 0xa4, 0x98, 0xb2, 0x72,
0xa0, 0xde, 0x18, 0x87, 0x09, 0xe5, 0x07, 0x6d, 0xd8, 0xa9, 0x68, 0x7d, 0x0b, 0xb5, 0xd4, 0xab,
0x2c, 0xab, 0xab, 0xcd, 0x7c, 0x57, 0xa7, 0xd6, 0x2f, 0x06, 0x94, 0x6d, 0xec, 0xb8, 0x8b, 0xb3,
0x84, 0xee, 0xca, 0x5c, 0x3c, 0xbf, 0x29, 0x75, 0x16, 0x16, 0xa2, 0x4e, 0xeb, 0x67, 0x03, 0x2a,
0x22, 0xb6, 0x77, 0x9c, 0xb5, 0x12, 0x8a, 0xb9, 0x58, 0x28, 0x7f, 0x1a, 0x50, 0x3d, 0x8b, 0x5c,
0xe5, 0xe0, 0xff, 0x4b, 0x3a, 0x55, 0x2a, 0x65, 0x49, 0xab, 0x94, 0x59, 0xa2, 0x2d, 0xce, 0x23,
0xda, 0x7d, 0xa8, 0xa5, 0xc9, 0x48, 0x64, 0x75, 0x24, 0x8d, 0xc5, 0xeb, 0x87, 0xbd, 0x4d, 0xba,
0x9c, 0x8f, 0xfe, 0x85, 0x0a, 0x52, 0xf2, 0x2e, 0xe8, 0x1d, 0xf2, 0xab, 0x01, 0xab, 0xfc, 0x4d,
0x66, 0xe3, 0x38, 0x4c, 0x48, 0x1f, 0xef, 0x07, 0x1e, 0xdd, 0xe3, 0x04, 0xf2, 0xee, 0xaa, 0xa6,
0x01, 0xcb, 0xe2, 0x6e, 0x65, 0x41, 0x73, 0xbe, 0x96, 0xe2, 0xad, 0x4b, 0x7b, 0xf3, 0x4d, 0x11,
0xea, 0x69, 0xa8, 0x27, 0xe9, 0xd3, 0x6b, 0x07, 0xca, 0xfc, 0xd6, 0x17, 0xaf, 0x4c, 0x34, 0xf3,
0x4e, 0x90, 0x08, 0x37, 0x1b, 0xb3, 0x0a, 0x71, 0x8c, 0x56, 0x0e, 0x3d, 0x07, 0xe0, 0xfc, 0x26,
0xb6, 0x78, 0x30, 0x43, 0xd5, 0x62, 0x87, 0xd5, 0x6b, 0x28, 0xdc, 0xca, 0xb1, 0x7f, 0x43, 0xf6,
0xca, 0x45, 0x8f, 0x6e, 0xf8, 0x31, 0x34, 0xd7, 0xe6, 0x2b, 0x95, 0x50, 0x8a, 0xe2, 0xbd, 0x88,
0xd4, 0x80, 0xb5, 0x87, 0x6c, 0xf3, 0xe1, 0x1c, 0x4d, 0xb6, 0xc1, 0x0b, 0xa8, 0x9c, 0x52, 0x82,
0x9d, 0xf1, 0x3f, 0xda, 0x66, 0xc3, 0x40, 0x5b, 0xb0, 0xc4, 0x71, 0xba, 0x1b, 0xa4, 0x4f, 0xa0,
0xc0, 0xaf, 0xaf, 0x3b, 0x80, 0xf9, 0x1c, 0x8a, 0x82, 0xb8, 0xb5, 0xd8, 0xb5, 0x1b, 0x44, 0x8b,
0x5d, 0x67, 0x79, 0xe1, 0x9b, 0x31, 0xa0, 0xe6, 0x5b, 0xa1, 0x6b, 0xcd, 0xb7, 0x4a, 0x95, 0xc2,
0xb7, 0x68, 0x72, 0xcd, 0xb7, 0x46, 0x62, 0x9a, 0x6f, 0x9d, 0x11, 0xac, 0x1c, 0xda, 0x82, 0xa2,
0xe8, 0x6c, 0x6d, 0x03, 0xad, 0xd9, 0x9b, 0x0f, 0x66, 0x0a, 0xbd, 0xc7, 0xbe, 0xad, 0x56, 0x0e,
0x3d, 0x85, 0xe2, 0xae, 0x13, 0xf4, 0xb1, 0x8f, 0xae, 0xb1, 0xb9, 0x61, 0xed, 0xe7, 0x50, 0x7d,
0x81, 0xe9, 0x09, 0xff, 0x1e, 0xef, 0x07, 0x83, 0xf0, 0xda, 0x2d, 0xde, 0x53, 0x6f, 0xfc, 0xcc,
0xdc, 0xca, 0x9d, 0x17, 0xb9, 0xe1, 0xe3, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x7b, 0xd1, 0xe0,
0x18, 0x7f, 0x0f, 0x00, 0x00,
}

View file

@ -38,7 +38,7 @@ func (m *SupportsFeatureRequest) Reset() { *m = SupportsFeatureRequest{}
func (m *SupportsFeatureRequest) String() string { return proto.CompactTextString(m) }
func (*SupportsFeatureRequest) ProtoMessage() {}
func (*SupportsFeatureRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_resource_0e7314448ddfd7ea, []int{0}
return fileDescriptor_resource_a4a41d1ddbd1f936, []int{0}
}
func (m *SupportsFeatureRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SupportsFeatureRequest.Unmarshal(m, b)
@ -76,7 +76,7 @@ func (m *SupportsFeatureResponse) Reset() { *m = SupportsFeatureResponse
func (m *SupportsFeatureResponse) String() string { return proto.CompactTextString(m) }
func (*SupportsFeatureResponse) ProtoMessage() {}
func (*SupportsFeatureResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_resource_0e7314448ddfd7ea, []int{1}
return fileDescriptor_resource_a4a41d1ddbd1f936, []int{1}
}
func (m *SupportsFeatureResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SupportsFeatureResponse.Unmarshal(m, b)
@ -125,7 +125,7 @@ func (m *ReadResourceRequest) Reset() { *m = ReadResourceRequest{} }
func (m *ReadResourceRequest) String() string { return proto.CompactTextString(m) }
func (*ReadResourceRequest) ProtoMessage() {}
func (*ReadResourceRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_resource_0e7314448ddfd7ea, []int{2}
return fileDescriptor_resource_a4a41d1ddbd1f936, []int{2}
}
func (m *ReadResourceRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReadResourceRequest.Unmarshal(m, b)
@ -235,7 +235,7 @@ func (m *ReadResourceResponse) Reset() { *m = ReadResourceResponse{} }
func (m *ReadResourceResponse) String() string { return proto.CompactTextString(m) }
func (*ReadResourceResponse) ProtoMessage() {}
func (*ReadResourceResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_resource_0e7314448ddfd7ea, []int{3}
return fileDescriptor_resource_a4a41d1ddbd1f936, []int{3}
}
func (m *ReadResourceResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReadResourceResponse.Unmarshal(m, b)
@ -298,7 +298,7 @@ func (m *RegisterResourceRequest) Reset() { *m = RegisterResourceRequest
func (m *RegisterResourceRequest) String() string { return proto.CompactTextString(m) }
func (*RegisterResourceRequest) ProtoMessage() {}
func (*RegisterResourceRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_resource_0e7314448ddfd7ea, []int{4}
return fileDescriptor_resource_a4a41d1ddbd1f936, []int{4}
}
func (m *RegisterResourceRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RegisterResourceRequest.Unmarshal(m, b)
@ -460,7 +460,7 @@ func (m *RegisterResourceRequest_PropertyDependencies) String() string {
}
func (*RegisterResourceRequest_PropertyDependencies) ProtoMessage() {}
func (*RegisterResourceRequest_PropertyDependencies) Descriptor() ([]byte, []int) {
return fileDescriptor_resource_0e7314448ddfd7ea, []int{4, 0}
return fileDescriptor_resource_a4a41d1ddbd1f936, []int{4, 0}
}
func (m *RegisterResourceRequest_PropertyDependencies) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RegisterResourceRequest_PropertyDependencies.Unmarshal(m, b)
@ -503,7 +503,7 @@ func (m *RegisterResourceRequest_CustomTimeouts) Reset() {
func (m *RegisterResourceRequest_CustomTimeouts) String() string { return proto.CompactTextString(m) }
func (*RegisterResourceRequest_CustomTimeouts) ProtoMessage() {}
func (*RegisterResourceRequest_CustomTimeouts) Descriptor() ([]byte, []int) {
return fileDescriptor_resource_0e7314448ddfd7ea, []int{4, 1}
return fileDescriptor_resource_a4a41d1ddbd1f936, []int{4, 1}
}
func (m *RegisterResourceRequest_CustomTimeouts) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RegisterResourceRequest_CustomTimeouts.Unmarshal(m, b)
@ -561,7 +561,7 @@ func (m *RegisterResourceResponse) Reset() { *m = RegisterResourceRespon
func (m *RegisterResourceResponse) String() string { return proto.CompactTextString(m) }
func (*RegisterResourceResponse) ProtoMessage() {}
func (*RegisterResourceResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_resource_0e7314448ddfd7ea, []int{5}
return fileDescriptor_resource_a4a41d1ddbd1f936, []int{5}
}
func (m *RegisterResourceResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RegisterResourceResponse.Unmarshal(m, b)
@ -629,7 +629,7 @@ func (m *RegisterResourceOutputsRequest) Reset() { *m = RegisterResource
func (m *RegisterResourceOutputsRequest) String() string { return proto.CompactTextString(m) }
func (*RegisterResourceOutputsRequest) ProtoMessage() {}
func (*RegisterResourceOutputsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_resource_0e7314448ddfd7ea, []int{6}
return fileDescriptor_resource_a4a41d1ddbd1f936, []int{6}
}
func (m *RegisterResourceOutputsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RegisterResourceOutputsRequest.Unmarshal(m, b)
@ -689,6 +689,7 @@ const _ = grpc.SupportPackageIsVersion4
type ResourceMonitorClient interface {
SupportsFeature(ctx context.Context, in *SupportsFeatureRequest, opts ...grpc.CallOption) (*SupportsFeatureResponse, error)
Invoke(ctx context.Context, in *InvokeRequest, opts ...grpc.CallOption) (*InvokeResponse, error)
StreamInvoke(ctx context.Context, in *InvokeRequest, opts ...grpc.CallOption) (ResourceMonitor_StreamInvokeClient, error)
ReadResource(ctx context.Context, in *ReadResourceRequest, opts ...grpc.CallOption) (*ReadResourceResponse, error)
RegisterResource(ctx context.Context, in *RegisterResourceRequest, opts ...grpc.CallOption) (*RegisterResourceResponse, error)
RegisterResourceOutputs(ctx context.Context, in *RegisterResourceOutputsRequest, opts ...grpc.CallOption) (*empty.Empty, error)
@ -720,6 +721,38 @@ func (c *resourceMonitorClient) Invoke(ctx context.Context, in *InvokeRequest, o
return out, nil
}
func (c *resourceMonitorClient) StreamInvoke(ctx context.Context, in *InvokeRequest, opts ...grpc.CallOption) (ResourceMonitor_StreamInvokeClient, error) {
stream, err := grpc.NewClientStream(ctx, &_ResourceMonitor_serviceDesc.Streams[0], c.cc, "/pulumirpc.ResourceMonitor/StreamInvoke", opts...)
if err != nil {
return nil, err
}
x := &resourceMonitorStreamInvokeClient{stream}
if err := x.ClientStream.SendMsg(in); err != nil {
return nil, err
}
if err := x.ClientStream.CloseSend(); err != nil {
return nil, err
}
return x, nil
}
type ResourceMonitor_StreamInvokeClient interface {
Recv() (*InvokeResponse, error)
grpc.ClientStream
}
type resourceMonitorStreamInvokeClient struct {
grpc.ClientStream
}
func (x *resourceMonitorStreamInvokeClient) Recv() (*InvokeResponse, error) {
m := new(InvokeResponse)
if err := x.ClientStream.RecvMsg(m); err != nil {
return nil, err
}
return m, nil
}
func (c *resourceMonitorClient) ReadResource(ctx context.Context, in *ReadResourceRequest, opts ...grpc.CallOption) (*ReadResourceResponse, error) {
out := new(ReadResourceResponse)
err := grpc.Invoke(ctx, "/pulumirpc.ResourceMonitor/ReadResource", in, out, c.cc, opts...)
@ -752,6 +785,7 @@ func (c *resourceMonitorClient) RegisterResourceOutputs(ctx context.Context, in
type ResourceMonitorServer interface {
SupportsFeature(context.Context, *SupportsFeatureRequest) (*SupportsFeatureResponse, error)
Invoke(context.Context, *InvokeRequest) (*InvokeResponse, error)
StreamInvoke(*InvokeRequest, ResourceMonitor_StreamInvokeServer) error
ReadResource(context.Context, *ReadResourceRequest) (*ReadResourceResponse, error)
RegisterResource(context.Context, *RegisterResourceRequest) (*RegisterResourceResponse, error)
RegisterResourceOutputs(context.Context, *RegisterResourceOutputsRequest) (*empty.Empty, error)
@ -797,6 +831,27 @@ func _ResourceMonitor_Invoke_Handler(srv interface{}, ctx context.Context, dec f
return interceptor(ctx, in, info, handler)
}
func _ResourceMonitor_StreamInvoke_Handler(srv interface{}, stream grpc.ServerStream) error {
m := new(InvokeRequest)
if err := stream.RecvMsg(m); err != nil {
return err
}
return srv.(ResourceMonitorServer).StreamInvoke(m, &resourceMonitorStreamInvokeServer{stream})
}
type ResourceMonitor_StreamInvokeServer interface {
Send(*InvokeResponse) error
grpc.ServerStream
}
type resourceMonitorStreamInvokeServer struct {
grpc.ServerStream
}
func (x *resourceMonitorStreamInvokeServer) Send(m *InvokeResponse) error {
return x.ServerStream.SendMsg(m)
}
func _ResourceMonitor_ReadResource_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ReadResourceRequest)
if err := dec(in); err != nil {
@ -876,65 +931,72 @@ var _ResourceMonitor_serviceDesc = grpc.ServiceDesc{
Handler: _ResourceMonitor_RegisterResourceOutputs_Handler,
},
},
Streams: []grpc.StreamDesc{},
Streams: []grpc.StreamDesc{
{
StreamName: "StreamInvoke",
Handler: _ResourceMonitor_StreamInvoke_Handler,
ServerStreams: true,
},
},
Metadata: "resource.proto",
}
func init() { proto.RegisterFile("resource.proto", fileDescriptor_resource_0e7314448ddfd7ea) }
func init() { proto.RegisterFile("resource.proto", fileDescriptor_resource_a4a41d1ddbd1f936) }
var fileDescriptor_resource_0e7314448ddfd7ea = []byte{
// 845 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x9c, 0x56, 0xdd, 0x6e, 0x1c, 0x35,
0x14, 0xee, 0xce, 0xb6, 0x93, 0xdd, 0x93, 0x74, 0x13, 0xdc, 0x68, 0xe3, 0x0e, 0x28, 0x84, 0x81,
0x8b, 0x85, 0x8b, 0x0d, 0x0d, 0x17, 0x2d, 0x08, 0x81, 0x44, 0x5b, 0xa4, 0x5e, 0x54, 0xc0, 0x84,
0x0b, 0x40, 0x02, 0xc9, 0x99, 0x39, 0xd9, 0x0e, 0x99, 0x1d, 0x1b, 0xdb, 0x13, 0x69, 0xef, 0x78,
0x0e, 0x6e, 0x78, 0x15, 0x9e, 0x89, 0x27, 0x40, 0xb6, 0xc7, 0xcb, 0xce, 0xcf, 0x26, 0x81, 0x3b,
0x9f, 0x1f, 0x9f, 0xb1, 0xbf, 0xef, 0xf3, 0x39, 0x03, 0x13, 0x89, 0x8a, 0x57, 0x32, 0xc5, 0xb9,
0x90, 0x5c, 0x73, 0x32, 0x16, 0x55, 0x51, 0x2d, 0x73, 0x29, 0xd2, 0xe8, 0xed, 0x05, 0xe7, 0x8b,
0x02, 0x4f, 0x6d, 0xe0, 0xa2, 0xba, 0x3c, 0xc5, 0xa5, 0xd0, 0x2b, 0x97, 0x17, 0xbd, 0xd3, 0x0e,
0x2a, 0x2d, 0xab, 0x54, 0xd7, 0xd1, 0x89, 0x90, 0xfc, 0x3a, 0xcf, 0x50, 0x3a, 0x3b, 0x9e, 0xc1,
0xf4, 0xbc, 0x12, 0x82, 0x4b, 0xad, 0xbe, 0x46, 0xa6, 0x2b, 0x89, 0x09, 0xfe, 0x56, 0xa1, 0xd2,
0x64, 0x02, 0x41, 0x9e, 0xd1, 0xc1, 0xc9, 0x60, 0x36, 0x4e, 0x82, 0x3c, 0x8b, 0x3f, 0x85, 0xa3,
0x4e, 0xa6, 0x12, 0xbc, 0x54, 0x48, 0x8e, 0x01, 0xde, 0x30, 0x55, 0x47, 0xed, 0x96, 0x51, 0xb2,
0xe1, 0x89, 0xff, 0x0e, 0xe0, 0x51, 0x82, 0x2c, 0x4b, 0xea, 0x1b, 0x6d, 0xf9, 0x04, 0x21, 0x70,
0x5f, 0xaf, 0x04, 0xd2, 0xc0, 0x7a, 0xec, 0xda, 0xf8, 0x4a, 0xb6, 0x44, 0x3a, 0x74, 0x3e, 0xb3,
0x26, 0x53, 0x08, 0x05, 0x93, 0x58, 0x6a, 0x7a, 0xdf, 0x7a, 0x6b, 0x8b, 0x3c, 0x05, 0x10, 0x92,
0x0b, 0x94, 0x3a, 0x47, 0x45, 0x1f, 0x9c, 0x0c, 0x66, 0xbb, 0x67, 0x47, 0x73, 0x87, 0xc7, 0xdc,
0xe3, 0x31, 0x3f, 0xb7, 0x78, 0x24, 0x1b, 0xa9, 0x24, 0x86, 0xbd, 0x0c, 0x05, 0x96, 0x19, 0x96,
0xa9, 0xd9, 0x1a, 0x9e, 0x0c, 0x67, 0xe3, 0xa4, 0xe1, 0x23, 0x11, 0x8c, 0x3c, 0x76, 0x74, 0xc7,
0x7e, 0x76, 0x6d, 0x13, 0x0a, 0x3b, 0xd7, 0x28, 0x55, 0xce, 0x4b, 0x3a, 0xb2, 0x21, 0x6f, 0x92,
0x0f, 0xe0, 0x21, 0x4b, 0x53, 0x14, 0xfa, 0x1c, 0x53, 0x89, 0x5a, 0xd1, 0xb1, 0x45, 0xa7, 0xe9,
0x24, 0xcf, 0xe0, 0x88, 0x65, 0x59, 0xae, 0x73, 0x5e, 0xb2, 0xc2, 0x39, 0xbf, 0xa9, 0xb4, 0xa8,
0xb4, 0xa2, 0x60, 0x8f, 0xb2, 0x2d, 0x6c, 0xbe, 0xcc, 0x8a, 0x9c, 0x29, 0x54, 0x74, 0xd7, 0x66,
0x7a, 0x33, 0x66, 0x70, 0xd8, 0xc4, 0xbc, 0x26, 0xeb, 0x00, 0x86, 0x95, 0x2c, 0x6b, 0xd4, 0xcd,
0xb2, 0x05, 0x5b, 0x70, 0x67, 0xd8, 0xe2, 0x3f, 0x46, 0x70, 0x94, 0xe0, 0x22, 0x57, 0x1a, 0x65,
0x9b, 0x5b, 0xcf, 0xe5, 0xa0, 0x87, 0xcb, 0xa0, 0x97, 0xcb, 0x61, 0x83, 0xcb, 0x29, 0x84, 0x69,
0xa5, 0x34, 0x5f, 0x5a, 0x8e, 0x47, 0x49, 0x6d, 0x91, 0x53, 0x08, 0xf9, 0xc5, 0xaf, 0x98, 0xea,
0xdb, 0xf8, 0xad, 0xd3, 0x0c, 0x42, 0x26, 0x64, 0x76, 0x84, 0xb6, 0x92, 0x37, 0x3b, 0xac, 0xef,
0xdc, 0xc2, 0xfa, 0xa8, 0xc5, 0xba, 0x80, 0xc3, 0x1a, 0x8c, 0xd5, 0x8b, 0xcd, 0x3a, 0xe3, 0x93,
0xe1, 0x6c, 0xf7, 0xec, 0xf3, 0xf9, 0xfa, 0xc1, 0xce, 0xb7, 0x80, 0x34, 0xff, 0xb6, 0x67, 0xfb,
0xcb, 0x52, 0xcb, 0x55, 0xd2, 0x5b, 0x99, 0x7c, 0x0c, 0x8f, 0x32, 0x2c, 0x50, 0xe3, 0x57, 0x78,
0xc9, 0xcd, 0x03, 0x14, 0x05, 0x4b, 0x91, 0x82, 0xbd, 0x57, 0x5f, 0x68, 0x53, 0x99, 0xbb, 0x1d,
0x65, 0xe6, 0x8b, 0x92, 0x4b, 0x7c, 0xfe, 0x86, 0x95, 0x0b, 0x54, 0x74, 0xcf, 0x5e, 0xbf, 0xe9,
0xec, 0xea, 0xf7, 0xe1, 0x7f, 0xd4, 0xef, 0xe4, 0xce, 0xfa, 0xdd, 0x6f, 0xe8, 0xd7, 0x20, 0x9f,
0x2f, 0x4d, 0xfb, 0x78, 0x95, 0xd1, 0x03, 0x87, 0xbc, 0xb7, 0xc9, 0x8f, 0x30, 0x71, 0x72, 0xf8,
0x3e, 0x5f, 0x22, 0x37, 0x9f, 0x79, 0xcb, 0x8a, 0xe1, 0xc9, 0x1d, 0x30, 0x7f, 0xde, 0xd8, 0x98,
0xb4, 0x0a, 0x91, 0x2f, 0x20, 0xea, 0xc1, 0xf1, 0x05, 0x5e, 0xe6, 0x25, 0x66, 0x94, 0xd8, 0xdb,
0xdf, 0x90, 0x11, 0x7d, 0x04, 0x87, 0x7d, 0xac, 0x1a, 0xed, 0x57, 0xb2, 0x54, 0x74, 0x60, 0x6f,
0x69, 0xd7, 0xd1, 0x0f, 0x30, 0x69, 0x9e, 0xc6, 0xaa, 0x5e, 0x22, 0xd3, 0xfe, 0xdd, 0xd4, 0x96,
0xf1, 0x57, 0x22, 0x33, 0x7e, 0xf7, 0x76, 0x6a, 0xcb, 0xf8, 0xdd, 0x59, 0xfc, 0xeb, 0x71, 0x56,
0xf4, 0xfb, 0x00, 0x1e, 0x6f, 0x15, 0x97, 0x69, 0x01, 0x57, 0xb8, 0xf2, 0x2d, 0xe0, 0x0a, 0x57,
0xe4, 0x35, 0x3c, 0xb8, 0x66, 0x45, 0x85, 0xf5, 0xeb, 0x7f, 0xfa, 0x3f, 0xb5, 0x9b, 0xb8, 0x2a,
0x9f, 0x05, 0xcf, 0x06, 0xf1, 0x9f, 0x03, 0xa0, 0xdd, 0xbd, 0x5b, 0x9b, 0x90, 0x9b, 0x05, 0xc1,
0x7a, 0x16, 0xfc, 0xfb, 0xce, 0x87, 0x77, 0x7b, 0xe7, 0x53, 0x08, 0x95, 0x66, 0x17, 0x05, 0xfa,
0x86, 0xe1, 0x2c, 0xa3, 0x30, 0xb7, 0x32, 0x13, 0xc1, 0x2a, 0xac, 0x36, 0x63, 0x84, 0xe3, 0xf6,
0x01, 0x6b, 0x59, 0xfa, 0x26, 0xd6, 0x3d, 0xe6, 0x13, 0xd8, 0xe1, 0xb5, 0xb2, 0x6f, 0x69, 0x94,
0x3e, 0xef, 0xec, 0xaf, 0x21, 0xec, 0xfb, 0xfa, 0xaf, 0x79, 0x99, 0x6b, 0x2e, 0xc9, 0x4f, 0xb0,
0xdf, 0x1a, 0xa6, 0xe4, 0xbd, 0x0d, 0xcc, 0xfb, 0x47, 0x72, 0x14, 0xdf, 0x94, 0xe2, 0x90, 0x8d,
0xef, 0x91, 0x2f, 0x21, 0x7c, 0x55, 0x5e, 0xf3, 0x2b, 0x24, 0x74, 0x23, 0xdf, 0xb9, 0x7c, 0xa5,
0xc7, 0x3d, 0x91, 0x75, 0x81, 0xef, 0x60, 0x6f, 0x73, 0x72, 0x90, 0xe3, 0x86, 0x1a, 0x3a, 0x63,
0x3c, 0x7a, 0x77, 0x6b, 0x7c, 0x5d, 0xf2, 0x67, 0x38, 0x68, 0x43, 0x4d, 0xe2, 0xdb, 0x45, 0x16,
0xbd, 0x7f, 0x63, 0xce, 0xba, 0xfc, 0x2f, 0xdd, 0x39, 0xe4, 0x1b, 0xcc, 0x87, 0x37, 0x54, 0x68,
0xb2, 0x1d, 0x4d, 0x3b, 0x54, 0xbe, 0x34, 0xff, 0x55, 0xf1, 0xbd, 0x8b, 0xd0, 0x7a, 0x3e, 0xf9,
0x27, 0x00, 0x00, 0xff, 0xff, 0xee, 0xb7, 0xd0, 0x4b, 0x94, 0x09, 0x00, 0x00,
var fileDescriptor_resource_a4a41d1ddbd1f936 = []byte{
// 859 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xa4, 0x56, 0xcd, 0x72, 0x1c, 0x35,
0x10, 0xce, 0xec, 0x3a, 0xeb, 0xdd, 0xb6, 0xb3, 0x36, 0x8a, 0x6b, 0xad, 0x0c, 0x94, 0x31, 0x03,
0x87, 0x85, 0xc3, 0x3a, 0x31, 0x87, 0x04, 0x8a, 0x82, 0x2a, 0x92, 0x40, 0xe5, 0x90, 0x02, 0xc6,
0x1c, 0x80, 0x2a, 0xa8, 0x92, 0x67, 0xda, 0xeb, 0xc1, 0xb3, 0x23, 0x21, 0x69, 0x5c, 0xb5, 0x37,
0xae, 0xbc, 0x02, 0x17, 0xde, 0x91, 0x27, 0xa0, 0x24, 0x8d, 0x96, 0x9d, 0x9f, 0xb5, 0x0d, 0xb9,
0xa9, 0xbf, 0x6e, 0xf5, 0x48, 0x5f, 0x7f, 0xdd, 0x1a, 0x18, 0x4b, 0x54, 0xbc, 0x94, 0x09, 0xce,
0x84, 0xe4, 0x9a, 0x93, 0x91, 0x28, 0xf3, 0x72, 0x91, 0x49, 0x91, 0x84, 0x6f, 0xcf, 0x39, 0x9f,
0xe7, 0x78, 0x62, 0x1d, 0xe7, 0xe5, 0xc5, 0x09, 0x2e, 0x84, 0x5e, 0xba, 0xb8, 0xf0, 0x9d, 0xa6,
0x53, 0x69, 0x59, 0x26, 0xba, 0xf2, 0x8e, 0x85, 0xe4, 0xd7, 0x59, 0x8a, 0xd2, 0xd9, 0xd1, 0x14,
0x26, 0x67, 0xa5, 0x10, 0x5c, 0x6a, 0xf5, 0x15, 0x32, 0x5d, 0x4a, 0x8c, 0xf1, 0xb7, 0x12, 0x95,
0x26, 0x63, 0xe8, 0x65, 0x29, 0x0d, 0x8e, 0x83, 0xe9, 0x28, 0xee, 0x65, 0x69, 0xf4, 0x09, 0x1c,
0xb6, 0x22, 0x95, 0xe0, 0x85, 0x42, 0x72, 0x04, 0x70, 0xc9, 0x54, 0xe5, 0xb5, 0x5b, 0x86, 0xf1,
0x1a, 0x12, 0xfd, 0xdd, 0x83, 0x87, 0x31, 0xb2, 0x34, 0xae, 0x6e, 0xb4, 0xe1, 0x13, 0x84, 0xc0,
0x96, 0x5e, 0x0a, 0xa4, 0x3d, 0x8b, 0xd8, 0xb5, 0xc1, 0x0a, 0xb6, 0x40, 0xda, 0x77, 0x98, 0x59,
0x93, 0x09, 0x0c, 0x04, 0x93, 0x58, 0x68, 0xba, 0x65, 0xd1, 0xca, 0x22, 0x4f, 0x01, 0x84, 0xe4,
0x02, 0xa5, 0xce, 0x50, 0xd1, 0xfb, 0xc7, 0xc1, 0x74, 0xe7, 0xf4, 0x70, 0xe6, 0xf8, 0x98, 0x79,
0x3e, 0x66, 0x67, 0x96, 0x8f, 0x78, 0x2d, 0x94, 0x44, 0xb0, 0x9b, 0xa2, 0xc0, 0x22, 0xc5, 0x22,
0x31, 0x5b, 0x07, 0xc7, 0xfd, 0xe9, 0x28, 0xae, 0x61, 0x24, 0x84, 0xa1, 0xe7, 0x8e, 0x6e, 0xdb,
0xcf, 0xae, 0x6c, 0x42, 0x61, 0xfb, 0x1a, 0xa5, 0xca, 0x78, 0x41, 0x87, 0xd6, 0xe5, 0x4d, 0xf2,
0x01, 0x3c, 0x60, 0x49, 0x82, 0x42, 0x9f, 0x61, 0x22, 0x51, 0x2b, 0x3a, 0xb2, 0xec, 0xd4, 0x41,
0xf2, 0x0c, 0x0e, 0x59, 0x9a, 0x66, 0x3a, 0xe3, 0x05, 0xcb, 0x1d, 0xf8, 0x4d, 0xa9, 0x45, 0xa9,
0x15, 0x05, 0x7b, 0x94, 0x4d, 0x6e, 0xf3, 0x65, 0x96, 0x67, 0x4c, 0xa1, 0xa2, 0x3b, 0x36, 0xd2,
0x9b, 0x11, 0x83, 0x83, 0x3a, 0xe7, 0x55, 0xb1, 0xf6, 0xa1, 0x5f, 0xca, 0xa2, 0x62, 0xdd, 0x2c,
0x1b, 0xb4, 0xf5, 0xee, 0x4c, 0x5b, 0xf4, 0xe7, 0x10, 0x0e, 0x63, 0x9c, 0x67, 0x4a, 0xa3, 0x6c,
0xd6, 0xd6, 0xd7, 0x32, 0xe8, 0xa8, 0x65, 0xaf, 0xb3, 0x96, 0xfd, 0x5a, 0x2d, 0x27, 0x30, 0x48,
0x4a, 0xa5, 0xf9, 0xc2, 0xd6, 0x78, 0x18, 0x57, 0x16, 0x39, 0x81, 0x01, 0x3f, 0xff, 0x15, 0x13,
0x7d, 0x5b, 0x7d, 0xab, 0x30, 0xc3, 0x90, 0x71, 0x99, 0x1d, 0x03, 0x9b, 0xc9, 0x9b, 0xad, 0xaa,
0x6f, 0xdf, 0x52, 0xf5, 0x61, 0xa3, 0xea, 0x02, 0x0e, 0x2a, 0x32, 0x96, 0x2f, 0xd6, 0xf3, 0x8c,
0x8e, 0xfb, 0xd3, 0x9d, 0xd3, 0xcf, 0x66, 0xab, 0x86, 0x9d, 0x6d, 0x20, 0x69, 0xf6, 0x6d, 0xc7,
0xf6, 0x97, 0x85, 0x96, 0xcb, 0xb8, 0x33, 0x33, 0x79, 0x0c, 0x0f, 0x53, 0xcc, 0x51, 0xe3, 0x97,
0x78, 0xc1, 0x4d, 0x03, 0x8a, 0x9c, 0x25, 0x48, 0xc1, 0xde, 0xab, 0xcb, 0xb5, 0xae, 0xcc, 0x9d,
0x96, 0x32, 0xb3, 0x79, 0xc1, 0x25, 0x3e, 0xbf, 0x64, 0xc5, 0x1c, 0x15, 0xdd, 0xb5, 0xd7, 0xaf,
0x83, 0x6d, 0xfd, 0x3e, 0xf8, 0x8f, 0xfa, 0x1d, 0xdf, 0x59, 0xbf, 0x7b, 0x35, 0xfd, 0x1a, 0xe6,
0xb3, 0x85, 0x19, 0x1f, 0xaf, 0x52, 0xba, 0xef, 0x98, 0xf7, 0x36, 0xf9, 0x11, 0xc6, 0x4e, 0x0e,
0xdf, 0x67, 0x0b, 0xe4, 0xe6, 0x33, 0x6f, 0x59, 0x31, 0x3c, 0xb9, 0x03, 0xe7, 0xcf, 0x6b, 0x1b,
0xe3, 0x46, 0x22, 0xf2, 0x39, 0x84, 0x1d, 0x3c, 0xbe, 0xc0, 0x8b, 0xac, 0xc0, 0x94, 0x12, 0x7b,
0xfb, 0x1b, 0x22, 0xc2, 0x8f, 0xe0, 0xa0, 0xab, 0xaa, 0x46, 0xfb, 0xa5, 0x2c, 0x14, 0x0d, 0xec,
0x2d, 0xed, 0x3a, 0xfc, 0x01, 0xc6, 0xf5, 0xd3, 0x58, 0xd5, 0x4b, 0x64, 0xda, 0xf7, 0x4d, 0x65,
0x19, 0xbc, 0x14, 0xa9, 0xc1, 0x5d, 0xef, 0x54, 0x96, 0xc1, 0xdd, 0x59, 0x7c, 0xf7, 0x38, 0x2b,
0xfc, 0x3d, 0x80, 0x47, 0x1b, 0xc5, 0x65, 0x46, 0xc0, 0x15, 0x2e, 0xfd, 0x08, 0xb8, 0xc2, 0x25,
0x79, 0x0d, 0xf7, 0xaf, 0x59, 0x5e, 0x62, 0xd5, 0xfd, 0x4f, 0xff, 0xa7, 0x76, 0x63, 0x97, 0xe5,
0xd3, 0xde, 0xb3, 0x20, 0xfa, 0x2b, 0x00, 0xda, 0xde, 0xbb, 0x71, 0x08, 0xb9, 0xb7, 0xa0, 0xb7,
0x7a, 0x0b, 0xfe, 0xed, 0xf3, 0xfe, 0xdd, 0xfa, 0x7c, 0x02, 0x03, 0xa5, 0xd9, 0x79, 0x8e, 0x7e,
0x60, 0x38, 0xcb, 0x28, 0xcc, 0xad, 0xcc, 0x8b, 0x60, 0x15, 0x56, 0x99, 0x11, 0xc2, 0x51, 0xf3,
0x80, 0x95, 0x2c, 0xfd, 0x10, 0x6b, 0x1f, 0xf3, 0x09, 0x6c, 0xf3, 0x4a, 0xd9, 0xb7, 0x0c, 0x4a,
0x1f, 0x77, 0xfa, 0xc7, 0x16, 0xec, 0xf9, 0xfc, 0xaf, 0x79, 0x91, 0x69, 0x2e, 0xc9, 0x4f, 0xb0,
0xd7, 0x78, 0x4c, 0xc9, 0x7b, 0x6b, 0x9c, 0x77, 0x3f, 0xc9, 0x61, 0x74, 0x53, 0x88, 0x63, 0x36,
0xba, 0x47, 0xbe, 0x80, 0xc1, 0xab, 0xe2, 0x9a, 0x5f, 0x21, 0xa1, 0x6b, 0xf1, 0x0e, 0xf2, 0x99,
0x1e, 0x75, 0x78, 0x56, 0x09, 0xbe, 0x86, 0xdd, 0x33, 0x2d, 0x91, 0x2d, 0xde, 0x28, 0xcd, 0xe3,
0x80, 0x7c, 0x07, 0xbb, 0xeb, 0x4f, 0x10, 0x39, 0xaa, 0xc9, 0xaa, 0xf5, 0x3f, 0x10, 0xbe, 0xbb,
0xd1, 0xbf, 0x3a, 0xdb, 0xcf, 0xb0, 0xdf, 0xac, 0x19, 0x89, 0x6e, 0x57, 0x6b, 0xf8, 0xfe, 0x8d,
0x31, 0xab, 0xf4, 0xbf, 0xb4, 0x1f, 0x34, 0x3f, 0xa9, 0x3e, 0xbc, 0x21, 0x43, 0x5d, 0x36, 0xe1,
0xa4, 0xa5, 0x89, 0x97, 0xe6, 0x07, 0x2d, 0xba, 0x77, 0x3e, 0xb0, 0xc8, 0xc7, 0xff, 0x04, 0x00,
0x00, 0xff, 0xff, 0x48, 0xe1, 0x9e, 0xa4, 0xdd, 0x09, 0x00, 0x00,
}

View file

@ -33,6 +33,10 @@ service ResourceProvider {
// Invoke dynamically executes a built-in function in the provider.
rpc Invoke(InvokeRequest) returns (InvokeResponse) {}
// StreamInvoke dynamically executes a built-in function in the provider, which returns a stream
// of responses.
rpc StreamInvoke(InvokeRequest) returns (stream InvokeResponse) {}
// Check validates that the given property bag is valid for a resource of the given type and returns the inputs
// that should be passed to successive calls to Diff, Create, or Update for this resource. As a rule, the provider
// inputs returned by a call to Check should preserve the original representation of the properties as present in

View file

@ -24,6 +24,7 @@ package pulumirpc;
service ResourceMonitor {
rpc SupportsFeature(SupportsFeatureRequest) returns (SupportsFeatureResponse) {}
rpc Invoke(InvokeRequest) returns (InvokeResponse) {}
rpc StreamInvoke(InvokeRequest) returns (stream InvokeResponse) {}
rpc ReadResource(ReadResourceRequest) returns (ReadResourceResponse) {}
rpc RegisterResource(RegisterResourceRequest) returns (RegisterResourceResponse) {}
rpc RegisterResourceOutputs(RegisterResourceOutputsRequest) returns (google.protobuf.Empty) {}

File diff suppressed because one or more lines are too long

View file

@ -37,6 +37,11 @@ class ResourceProviderStub(object):
request_serializer=provider__pb2.InvokeRequest.SerializeToString,
response_deserializer=provider__pb2.InvokeResponse.FromString,
)
self.StreamInvoke = channel.unary_stream(
'/pulumirpc.ResourceProvider/StreamInvoke',
request_serializer=provider__pb2.InvokeRequest.SerializeToString,
response_deserializer=provider__pb2.InvokeResponse.FromString,
)
self.Check = channel.unary_unary(
'/pulumirpc.ResourceProvider/Check',
request_serializer=provider__pb2.CheckRequest.SerializeToString,
@ -112,6 +117,14 @@ class ResourceProviderServicer(object):
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def StreamInvoke(self, request, context):
"""StreamInvoke dynamically executes a built-in function in the provider, which returns a stream
of responses.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def Check(self, request, context):
"""Check validates that the given property bag is valid for a resource of the given type and returns the inputs
that should be passed to successive calls to Diff, Create, or Update for this resource. As a rule, the provider
@ -197,6 +210,11 @@ def add_ResourceProviderServicer_to_server(servicer, server):
request_deserializer=provider__pb2.InvokeRequest.FromString,
response_serializer=provider__pb2.InvokeResponse.SerializeToString,
),
'StreamInvoke': grpc.unary_stream_rpc_method_handler(
servicer.StreamInvoke,
request_deserializer=provider__pb2.InvokeRequest.FromString,
response_serializer=provider__pb2.InvokeResponse.SerializeToString,
),
'Check': grpc.unary_unary_rpc_method_handler(
servicer.Check,
request_deserializer=provider__pb2.CheckRequest.FromString,

View file

@ -23,7 +23,7 @@ DESCRIPTOR = _descriptor.FileDescriptor(
package='pulumirpc',
syntax='proto3',
serialized_options=None,
serialized_pb=_b('\n\x0eresource.proto\x12\tpulumirpc\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x0eprovider.proto\"$\n\x16SupportsFeatureRequest\x12\n\n\x02id\x18\x01 \x01(\t\"-\n\x17SupportsFeatureResponse\x12\x12\n\nhasSupport\x18\x01 \x01(\x08\"\xfc\x01\n\x13ReadResourceRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x0e\n\x06parent\x18\x04 \x01(\t\x12+\n\nproperties\x18\x05 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x14\n\x0c\x64\x65pendencies\x18\x06 \x03(\t\x12\x10\n\x08provider\x18\x07 \x01(\t\x12\x0f\n\x07version\x18\x08 \x01(\t\x12\x15\n\racceptSecrets\x18\t \x01(\x08\x12\x1f\n\x17\x61\x64\x64itionalSecretOutputs\x18\n \x03(\t\x12\x0f\n\x07\x61liases\x18\x0b \x03(\t\"P\n\x14ReadResourceResponse\x12\x0b\n\x03urn\x18\x01 \x01(\t\x12+\n\nproperties\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\"\x80\x06\n\x17RegisterResourceRequest\x12\x0c\n\x04type\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0e\n\x06parent\x18\x03 \x01(\t\x12\x0e\n\x06\x63ustom\x18\x04 \x01(\x08\x12\'\n\x06object\x18\x05 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x0f\n\x07protect\x18\x06 \x01(\x08\x12\x14\n\x0c\x64\x65pendencies\x18\x07 \x03(\t\x12\x10\n\x08provider\x18\x08 \x01(\t\x12Z\n\x14propertyDependencies\x18\t \x03(\x0b\x32<.pulumirpc.RegisterResourceRequest.PropertyDependenciesEntry\x12\x1b\n\x13\x64\x65leteBeforeReplace\x18\n \x01(\x08\x12\x0f\n\x07version\x18\x0b \x01(\t\x12\x15\n\rignoreChanges\x18\x0c \x03(\t\x12\x15\n\racceptSecrets\x18\r \x01(\x08\x12\x1f\n\x17\x61\x64\x64itionalSecretOutputs\x18\x0e \x03(\t\x12\x0f\n\x07\x61liases\x18\x0f \x03(\t\x12\x10\n\x08importId\x18\x10 \x01(\t\x12I\n\x0e\x63ustomTimeouts\x18\x11 \x01(\x0b\x32\x31.pulumirpc.RegisterResourceRequest.CustomTimeouts\x12\"\n\x1a\x64\x65leteBeforeReplaceDefined\x18\x12 \x01(\x08\x1a$\n\x14PropertyDependencies\x12\x0c\n\x04urns\x18\x01 \x03(\t\x1a@\n\x0e\x43ustomTimeouts\x12\x0e\n\x06\x63reate\x18\x01 \x01(\t\x12\x0e\n\x06update\x18\x02 \x01(\t\x12\x0e\n\x06\x64\x65lete\x18\x03 \x01(\t\x1at\n\x19PropertyDependenciesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x46\n\x05value\x18\x02 \x01(\x0b\x32\x37.pulumirpc.RegisterResourceRequest.PropertyDependencies:\x02\x38\x01\"}\n\x18RegisterResourceResponse\x12\x0b\n\x03urn\x18\x01 \x01(\t\x12\n\n\x02id\x18\x02 \x01(\t\x12\'\n\x06object\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x0e\n\x06stable\x18\x04 \x01(\x08\x12\x0f\n\x07stables\x18\x05 \x03(\t\"W\n\x1eRegisterResourceOutputsRequest\x12\x0b\n\x03urn\x18\x01 \x01(\t\x12(\n\x07outputs\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct2\xc0\x03\n\x0fResourceMonitor\x12Z\n\x0fSupportsFeature\x12!.pulumirpc.SupportsFeatureRequest\x1a\".pulumirpc.SupportsFeatureResponse\"\x00\x12?\n\x06Invoke\x12\x18.pulumirpc.InvokeRequest\x1a\x19.pulumirpc.InvokeResponse\"\x00\x12Q\n\x0cReadResource\x12\x1e.pulumirpc.ReadResourceRequest\x1a\x1f.pulumirpc.ReadResourceResponse\"\x00\x12]\n\x10RegisterResource\x12\".pulumirpc.RegisterResourceRequest\x1a#.pulumirpc.RegisterResourceResponse\"\x00\x12^\n\x17RegisterResourceOutputs\x12).pulumirpc.RegisterResourceOutputsRequest\x1a\x16.google.protobuf.Empty\"\x00\x62\x06proto3')
serialized_pb=_b('\n\x0eresource.proto\x12\tpulumirpc\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x0eprovider.proto\"$\n\x16SupportsFeatureRequest\x12\n\n\x02id\x18\x01 \x01(\t\"-\n\x17SupportsFeatureResponse\x12\x12\n\nhasSupport\x18\x01 \x01(\x08\"\xfc\x01\n\x13ReadResourceRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x0e\n\x06parent\x18\x04 \x01(\t\x12+\n\nproperties\x18\x05 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x14\n\x0c\x64\x65pendencies\x18\x06 \x03(\t\x12\x10\n\x08provider\x18\x07 \x01(\t\x12\x0f\n\x07version\x18\x08 \x01(\t\x12\x15\n\racceptSecrets\x18\t \x01(\x08\x12\x1f\n\x17\x61\x64\x64itionalSecretOutputs\x18\n \x03(\t\x12\x0f\n\x07\x61liases\x18\x0b \x03(\t\"P\n\x14ReadResourceResponse\x12\x0b\n\x03urn\x18\x01 \x01(\t\x12+\n\nproperties\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\"\x80\x06\n\x17RegisterResourceRequest\x12\x0c\n\x04type\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0e\n\x06parent\x18\x03 \x01(\t\x12\x0e\n\x06\x63ustom\x18\x04 \x01(\x08\x12\'\n\x06object\x18\x05 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x0f\n\x07protect\x18\x06 \x01(\x08\x12\x14\n\x0c\x64\x65pendencies\x18\x07 \x03(\t\x12\x10\n\x08provider\x18\x08 \x01(\t\x12Z\n\x14propertyDependencies\x18\t \x03(\x0b\x32<.pulumirpc.RegisterResourceRequest.PropertyDependenciesEntry\x12\x1b\n\x13\x64\x65leteBeforeReplace\x18\n \x01(\x08\x12\x0f\n\x07version\x18\x0b \x01(\t\x12\x15\n\rignoreChanges\x18\x0c \x03(\t\x12\x15\n\racceptSecrets\x18\r \x01(\x08\x12\x1f\n\x17\x61\x64\x64itionalSecretOutputs\x18\x0e \x03(\t\x12\x0f\n\x07\x61liases\x18\x0f \x03(\t\x12\x10\n\x08importId\x18\x10 \x01(\t\x12I\n\x0e\x63ustomTimeouts\x18\x11 \x01(\x0b\x32\x31.pulumirpc.RegisterResourceRequest.CustomTimeouts\x12\"\n\x1a\x64\x65leteBeforeReplaceDefined\x18\x12 \x01(\x08\x1a$\n\x14PropertyDependencies\x12\x0c\n\x04urns\x18\x01 \x03(\t\x1a@\n\x0e\x43ustomTimeouts\x12\x0e\n\x06\x63reate\x18\x01 \x01(\t\x12\x0e\n\x06update\x18\x02 \x01(\t\x12\x0e\n\x06\x64\x65lete\x18\x03 \x01(\t\x1at\n\x19PropertyDependenciesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x46\n\x05value\x18\x02 \x01(\x0b\x32\x37.pulumirpc.RegisterResourceRequest.PropertyDependencies:\x02\x38\x01\"}\n\x18RegisterResourceResponse\x12\x0b\n\x03urn\x18\x01 \x01(\t\x12\n\n\x02id\x18\x02 \x01(\t\x12\'\n\x06object\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x0e\n\x06stable\x18\x04 \x01(\x08\x12\x0f\n\x07stables\x18\x05 \x03(\t\"W\n\x1eRegisterResourceOutputsRequest\x12\x0b\n\x03urn\x18\x01 \x01(\t\x12(\n\x07outputs\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct2\x89\x04\n\x0fResourceMonitor\x12Z\n\x0fSupportsFeature\x12!.pulumirpc.SupportsFeatureRequest\x1a\".pulumirpc.SupportsFeatureResponse\"\x00\x12?\n\x06Invoke\x12\x18.pulumirpc.InvokeRequest\x1a\x19.pulumirpc.InvokeResponse\"\x00\x12G\n\x0cStreamInvoke\x12\x18.pulumirpc.InvokeRequest\x1a\x19.pulumirpc.InvokeResponse\"\x00\x30\x01\x12Q\n\x0cReadResource\x12\x1e.pulumirpc.ReadResourceRequest\x1a\x1f.pulumirpc.ReadResourceResponse\"\x00\x12]\n\x10RegisterResource\x12\".pulumirpc.RegisterResourceRequest\x1a#.pulumirpc.RegisterResourceResponse\"\x00\x12^\n\x17RegisterResourceOutputs\x12).pulumirpc.RegisterResourceOutputsRequest\x1a\x16.google.protobuf.Empty\"\x00\x62\x06proto3')
,
dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,google_dot_protobuf_dot_struct__pb2.DESCRIPTOR,provider__pb2.DESCRIPTOR,])
@ -691,7 +691,7 @@ _RESOURCEMONITOR = _descriptor.ServiceDescriptor(
index=0,
serialized_options=None,
serialized_start=1514,
serialized_end=1962,
serialized_end=2035,
methods=[
_descriptor.MethodDescriptor(
name='SupportsFeature',
@ -711,10 +711,19 @@ _RESOURCEMONITOR = _descriptor.ServiceDescriptor(
output_type=provider__pb2._INVOKERESPONSE,
serialized_options=None,
),
_descriptor.MethodDescriptor(
name='StreamInvoke',
full_name='pulumirpc.ResourceMonitor.StreamInvoke',
index=2,
containing_service=None,
input_type=provider__pb2._INVOKEREQUEST,
output_type=provider__pb2._INVOKERESPONSE,
serialized_options=None,
),
_descriptor.MethodDescriptor(
name='ReadResource',
full_name='pulumirpc.ResourceMonitor.ReadResource',
index=2,
index=3,
containing_service=None,
input_type=_READRESOURCEREQUEST,
output_type=_READRESOURCERESPONSE,
@ -723,7 +732,7 @@ _RESOURCEMONITOR = _descriptor.ServiceDescriptor(
_descriptor.MethodDescriptor(
name='RegisterResource',
full_name='pulumirpc.ResourceMonitor.RegisterResource',
index=3,
index=4,
containing_service=None,
input_type=_REGISTERRESOURCEREQUEST,
output_type=_REGISTERRESOURCERESPONSE,
@ -732,7 +741,7 @@ _RESOURCEMONITOR = _descriptor.ServiceDescriptor(
_descriptor.MethodDescriptor(
name='RegisterResourceOutputs',
full_name='pulumirpc.ResourceMonitor.RegisterResourceOutputs',
index=4,
index=5,
containing_service=None,
input_type=_REGISTERRESOURCEOUTPUTSREQUEST,
output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,

View file

@ -26,6 +26,11 @@ class ResourceMonitorStub(object):
request_serializer=provider__pb2.InvokeRequest.SerializeToString,
response_deserializer=provider__pb2.InvokeResponse.FromString,
)
self.StreamInvoke = channel.unary_stream(
'/pulumirpc.ResourceMonitor/StreamInvoke',
request_serializer=provider__pb2.InvokeRequest.SerializeToString,
response_deserializer=provider__pb2.InvokeResponse.FromString,
)
self.ReadResource = channel.unary_unary(
'/pulumirpc.ResourceMonitor/ReadResource',
request_serializer=resource__pb2.ReadResourceRequest.SerializeToString,
@ -61,6 +66,13 @@ class ResourceMonitorServicer(object):
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def StreamInvoke(self, request, context):
# missing associated documentation comment in .proto file
pass
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def ReadResource(self, request, context):
# missing associated documentation comment in .proto file
pass
@ -95,6 +107,11 @@ def add_ResourceMonitorServicer_to_server(servicer, server):
request_deserializer=provider__pb2.InvokeRequest.FromString,
response_serializer=provider__pb2.InvokeResponse.SerializeToString,
),
'StreamInvoke': grpc.unary_stream_rpc_method_handler(
servicer.StreamInvoke,
request_deserializer=provider__pb2.InvokeRequest.FromString,
response_serializer=provider__pb2.InvokeResponse.SerializeToString,
),
'ReadResource': grpc.unary_unary_rpc_method_handler(
servicer.ReadResource,
request_deserializer=resource__pb2.ReadResourceRequest.FromString,