Skip to content

Commit

Permalink
Monitor.Call and Provider.Call take different arguments
Browse files Browse the repository at this point in the history
In a similar vein to #9323, we we're reusing the same protobuf message for sending to Monitor.Call and Provider.Call.

The majority of fields on this message we're only set for the provider call, while some were only set for the monitor call.
  • Loading branch information
Frassle committed Apr 26, 2022
1 parent c8a3688 commit e51373e
Show file tree
Hide file tree
Showing 22 changed files with 1,368 additions and 515 deletions.
2 changes: 1 addition & 1 deletion pkg/resource/deploy/deploytest/resourcemonitor.go
Expand Up @@ -325,7 +325,7 @@ func (rm *ResourceMonitor) Call(tok tokens.ModuleMember, inputs resource.Propert
}

// submit request
resp, err := rm.resmon.Call(context.Background(), &pulumirpc.CallRequest{
resp, err := rm.resmon.Call(context.Background(), &pulumirpc.CallResourceRequest{
Tok: string(tok),
Provider: provider,
Args: ins,
Expand Down
2 changes: 1 addition & 1 deletion pkg/resource/deploy/source.go
Expand Up @@ -63,7 +63,7 @@ type SourceResourceMonitor interface {
Address() string
Cancel() error
Invoke(ctx context.Context, req *pulumirpc.ResourceInvokeRequest) (*pulumirpc.InvokeResponse, error)
Call(ctx context.Context, req *pulumirpc.CallRequest) (*pulumirpc.CallResponse, error)
Call(ctx context.Context, req *pulumirpc.CallResourceRequest) (*pulumirpc.CallResponse, error)
ReadResource(ctx context.Context,
req *pulumirpc.ReadResourceRequest) (*pulumirpc.ReadResourceResponse, error)
RegisterResource(ctx context.Context,
Expand Down
2 changes: 1 addition & 1 deletion pkg/resource/deploy/source_eval.go
Expand Up @@ -684,7 +684,7 @@ func (rm *resmon) Invoke(ctx context.Context, req *pulumirpc.ResourceInvokeReque
}

// Call dynamically executes a method in the provider associated with a component resource.
func (rm *resmon) Call(ctx context.Context, req *pulumirpc.CallRequest) (*pulumirpc.CallResponse, error) {
func (rm *resmon) Call(ctx context.Context, req *pulumirpc.CallResourceRequest) (*pulumirpc.CallResponse, error) {
// Fetch the token and load up the resource provider if necessary.
tok := tokens.ModuleMember(req.GetTok())
providerReq, err := parseProviderRequest(tok.Package(), req.GetVersion(), req.GetPluginDownloadURL())
Expand Down
2 changes: 1 addition & 1 deletion pkg/resource/deploy/source_query.go
Expand Up @@ -427,7 +427,7 @@ func (rm *queryResmon) StreamInvoke(
}

// Call dynamically executes a method in the provider associated with a component resource.
func (rm *queryResmon) Call(ctx context.Context, req *pulumirpc.CallRequest) (*pulumirpc.CallResponse, error) {
func (rm *queryResmon) Call(ctx context.Context, req *pulumirpc.CallResourceRequest) (*pulumirpc.CallResponse, error) {
tok := tokens.ModuleMember(req.GetTok())
label := fmt.Sprintf("QueryResourceMonitor.Call(%s)", tok)

Expand Down
4 changes: 2 additions & 2 deletions sdk/dotnet/Pulumi/Deployment/Deployment_Call.cs
Expand Up @@ -79,7 +79,7 @@ private Output<T> Call<T>(string token, CallArgs args, Resource? self, CallOptio
var providerReference = await ProviderResource.RegisterAsync(provider).ConfigureAwait(false);

// Create the request.
var request = new CallRequest
var request = new CallResourceRequest
{
Tok = token,
Provider = providerReference ?? "",
Expand All @@ -92,7 +92,7 @@ private Output<T> Call<T>(string token, CallArgs args, Resource? self, CallOptio
foreach (var (argName, directDependencies) in argDependencies)
{
var urns = await GetAllTransitivelyReferencedResourceUrnsAsync(directDependencies).ConfigureAwait(false);
var deps = new CallRequest.Types.ArgumentDependencies();
var deps = new CallResourceRequest.Types.ArgumentDependencies();
deps.Urns.AddRange(urns);
request.ArgDependencies.Add(argName, deps);
}
Expand Down
2 changes: 1 addition & 1 deletion sdk/dotnet/Pulumi/Deployment/GrpcMonitor.cs
Expand Up @@ -61,7 +61,7 @@ public async Task<SupportsFeatureResponse> SupportsFeatureAsync(SupportsFeatureR
public async Task<InvokeResponse> InvokeAsync(ResourceInvokeRequest request)
=> await this._client.InvokeAsync(request);

public async Task<CallResponse> CallAsync(CallRequest request)
public async Task<CallResponse> CallAsync(CallResourceRequest request)
=> await this._client.CallAsync(request);

public async Task<ReadResourceResponse> ReadResourceAsync(Resource resource, ReadResourceRequest request)
Expand Down
2 changes: 1 addition & 1 deletion sdk/dotnet/Pulumi/Deployment/IMonitor.cs
Expand Up @@ -11,7 +11,7 @@ internal interface IMonitor

Task<InvokeResponse> InvokeAsync(ResourceInvokeRequest request);

Task<CallResponse> CallAsync(CallRequest request);
Task<CallResponse> CallAsync(CallResourceRequest request);

Task<ReadResourceResponse> ReadResourceAsync(Resource resource, ReadResourceRequest request);

Expand Down
2 changes: 1 addition & 1 deletion sdk/dotnet/Pulumi/Testing/MockMonitor.cs
Expand Up @@ -58,7 +58,7 @@ public async Task<InvokeResponse> InvokeAsync(ResourceInvokeRequest request)
return new InvokeResponse { Return = await SerializeAsync(result).ConfigureAwait(false) };
}

public async Task<CallResponse> CallAsync(CallRequest request)
public async Task<CallResponse> CallAsync(CallResourceRequest request)
{
// For now, we'll route both Invoke and Call through IMocks.CallAsync.
var args = ToDictionary(request.Args);
Expand Down
10 changes: 5 additions & 5 deletions sdk/go/pulumi/context.go
Expand Up @@ -353,7 +353,7 @@ func (ctx *Context) Call(tok string, args Input, output Output, self Resource, o
return nil, err
}

prepareCallRequest := func() (*pulumirpc.CallRequest, error) {
prepareCallRequest := func() (*pulumirpc.CallResourceRequest, error) {
// Determine the provider, version and url to use.
var provider ProviderResource
var version string
Expand Down Expand Up @@ -417,7 +417,7 @@ func (ctx *Context) Call(tok string, args Input, output Output, self Resource, o
}

// Convert the arg dependencies map for RPC and remove duplicates.
rpcArgDeps := make(map[string]*pulumirpc.CallRequest_ArgumentDependencies)
rpcArgDeps := make(map[string]*pulumirpc.CallResourceRequest_ArgumentDependencies)
for k, deps := range argDeps {
sort.Slice(deps, func(i, j int) bool { return deps[i] < deps[j] })

Expand All @@ -429,12 +429,12 @@ func (ctx *Context) Call(tok string, args Input, output Output, self Resource, o
urns = append(urns, string(d))
}

rpcArgDeps[k] = &pulumirpc.CallRequest_ArgumentDependencies{
rpcArgDeps[k] = &pulumirpc.CallResourceRequest_ArgumentDependencies{
Urns: urns,
}
}

return &pulumirpc.CallRequest{
return &pulumirpc.CallResourceRequest{
Tok: tok,
Args: rpcArgs,
ArgDependencies: rpcArgDeps,
Expand Down Expand Up @@ -480,7 +480,7 @@ func (ctx *Context) Call(tok string, args Input, output Output, self Resource, o
}()

// Prepare the RPC request.
var req *pulumirpc.CallRequest
var req *pulumirpc.CallResourceRequest
req, err = prepareCallRequest()
if err != nil {
return
Expand Down
2 changes: 1 addition & 1 deletion sdk/go/pulumi/mocks.go
Expand Up @@ -145,7 +145,7 @@ func (m *mockMonitor) StreamInvoke(ctx context.Context, in *pulumirpc.ResourceIn
panic("not implemented")
}

func (m *mockMonitor) Call(ctx context.Context, in *pulumirpc.CallRequest,
func (m *mockMonitor) Call(ctx context.Context, in *pulumirpc.CallResourceRequest,
opts ...grpc.CallOption) (*pulumirpc.CallResponse, error) {

panic("not implemented")
Expand Down
2 changes: 1 addition & 1 deletion sdk/nodejs/cmd/pulumi-language-nodejs/proxy.go
Expand Up @@ -215,7 +215,7 @@ func (p *monitorProxy) StreamInvoke(
}

func (p *monitorProxy) Call(
ctx context.Context, req *pulumirpc.CallRequest) (*pulumirpc.CallResponse, error) {
ctx context.Context, req *pulumirpc.CallResourceRequest) (*pulumirpc.CallResponse, error) {
return p.target.Call(ctx, req)
}

Expand Down
90 changes: 0 additions & 90 deletions sdk/nodejs/proto/provider_pb.js
Expand Up @@ -2158,9 +2158,6 @@ proto.pulumirpc.CallRequest.toObject = function(includeInstance, msg) {
tok: jspb.Message.getFieldWithDefault(msg, 1, ""),
args: (f = msg.getArgs()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f),
argdependenciesMap: (f = msg.getArgdependenciesMap()) ? f.toObject(includeInstance, proto.pulumirpc.CallRequest.ArgumentDependencies.toObject) : [],
provider: jspb.Message.getFieldWithDefault(msg, 4, ""),
version: jspb.Message.getFieldWithDefault(msg, 5, ""),
plugindownloadurl: jspb.Message.getFieldWithDefault(msg, 13, ""),
project: jspb.Message.getFieldWithDefault(msg, 6, ""),
stack: jspb.Message.getFieldWithDefault(msg, 7, ""),
configMap: (f = msg.getConfigMap()) ? f.toObject(includeInstance, undefined) : [],
Expand Down Expand Up @@ -2219,18 +2216,6 @@ proto.pulumirpc.CallRequest.deserializeBinaryFromReader = function(msg, reader)
jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readMessage, proto.pulumirpc.CallRequest.ArgumentDependencies.deserializeBinaryFromReader, "", new proto.pulumirpc.CallRequest.ArgumentDependencies());
});
break;
case 4:
var value = /** @type {string} */ (reader.readString());
msg.setProvider(value);
break;
case 5:
var value = /** @type {string} */ (reader.readString());
msg.setVersion(value);
break;
case 13:
var value = /** @type {string} */ (reader.readString());
msg.setPlugindownloadurl(value);
break;
case 6:
var value = /** @type {string} */ (reader.readString());
msg.setProject(value);
Expand Down Expand Up @@ -2309,27 +2294,6 @@ proto.pulumirpc.CallRequest.serializeBinaryToWriter = function(message, writer)
if (f && f.getLength() > 0) {
f.serializeBinary(3, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeMessage, proto.pulumirpc.CallRequest.ArgumentDependencies.serializeBinaryToWriter);
}
f = message.getProvider();
if (f.length > 0) {
writer.writeString(
4,
f
);
}
f = message.getVersion();
if (f.length > 0) {
writer.writeString(
5,
f
);
}
f = message.getPlugindownloadurl();
if (f.length > 0) {
writer.writeString(
13,
f
);
}
f = message.getProject();
if (f.length > 0) {
writer.writeString(
Expand Down Expand Up @@ -2612,60 +2576,6 @@ proto.pulumirpc.CallRequest.prototype.clearArgdependenciesMap = function() {
return this;};


/**
* optional string provider = 4;
* @return {string}
*/
proto.pulumirpc.CallRequest.prototype.getProvider = function() {
return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, ""));
};


/**
* @param {string} value
* @return {!proto.pulumirpc.CallRequest} returns this
*/
proto.pulumirpc.CallRequest.prototype.setProvider = function(value) {
return jspb.Message.setProto3StringField(this, 4, value);
};


/**
* optional string version = 5;
* @return {string}
*/
proto.pulumirpc.CallRequest.prototype.getVersion = function() {
return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, ""));
};


/**
* @param {string} value
* @return {!proto.pulumirpc.CallRequest} returns this
*/
proto.pulumirpc.CallRequest.prototype.setVersion = function(value) {
return jspb.Message.setProto3StringField(this, 5, value);
};


/**
* optional string pluginDownloadURL = 13;
* @return {string}
*/
proto.pulumirpc.CallRequest.prototype.getPlugindownloadurl = function() {
return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 13, ""));
};


/**
* @param {string} value
* @return {!proto.pulumirpc.CallRequest} returns this
*/
proto.pulumirpc.CallRequest.prototype.setPlugindownloadurl = function(value) {
return jspb.Message.setProto3StringField(this, 13, value);
};


/**
* optional string project = 6;
* @return {string}
Expand Down
16 changes: 8 additions & 8 deletions sdk/nodejs/proto/resource_grpc_pb.js
Expand Up @@ -33,15 +33,15 @@ function deserialize_google_protobuf_Empty(buffer_arg) {
return google_protobuf_empty_pb.Empty.deserializeBinary(new Uint8Array(buffer_arg));
}

function serialize_pulumirpc_CallRequest(arg) {
if (!(arg instanceof provider_pb.CallRequest)) {
throw new Error('Expected argument of type pulumirpc.CallRequest');
function serialize_pulumirpc_CallResourceRequest(arg) {
if (!(arg instanceof resource_pb.CallResourceRequest)) {
throw new Error('Expected argument of type pulumirpc.CallResourceRequest');
}
return Buffer.from(arg.serializeBinary());
}

function deserialize_pulumirpc_CallRequest(buffer_arg) {
return provider_pb.CallRequest.deserializeBinary(new Uint8Array(buffer_arg));
function deserialize_pulumirpc_CallResourceRequest(buffer_arg) {
return resource_pb.CallResourceRequest.deserializeBinary(new Uint8Array(buffer_arg));
}

function serialize_pulumirpc_CallResponse(arg) {
Expand Down Expand Up @@ -194,10 +194,10 @@ var ResourceMonitorService = exports.ResourceMonitorService = {
path: '/pulumirpc.ResourceMonitor/Call',
requestStream: false,
responseStream: false,
requestType: provider_pb.CallRequest,
requestType: resource_pb.CallResourceRequest,
responseType: provider_pb.CallResponse,
requestSerialize: serialize_pulumirpc_CallRequest,
requestDeserialize: deserialize_pulumirpc_CallRequest,
requestSerialize: serialize_pulumirpc_CallResourceRequest,
requestDeserialize: deserialize_pulumirpc_CallResourceRequest,
responseSerialize: serialize_pulumirpc_CallResponse,
responseDeserialize: deserialize_pulumirpc_CallResponse,
},
Expand Down

0 comments on commit e51373e

Please sign in to comment.