[sdk/dotnet] Don't send deps maps when using output values
This commit is contained in:
parent
fca55516e6
commit
52f3437100
|
@ -52,11 +52,13 @@ namespace Pulumi
|
||||||
argsDict = argsDict.SetItem("__self__", self);
|
argsDict = argsDict.SetItem("__self__", self);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var keepOutputs = await MonitorSupportsOutputValues().ConfigureAwait(false);
|
||||||
|
|
||||||
var (serialized, argDependencies) = await SerializeFilteredPropertiesAsync(
|
var (serialized, argDependencies) = await SerializeFilteredPropertiesAsync(
|
||||||
$"call:{token}",
|
$"call:{token}",
|
||||||
argsDict, _ => true,
|
argsDict, _ => true,
|
||||||
keepResources: true,
|
keepResources: true,
|
||||||
keepOutputValues: await MonitorSupportsOutputValues().ConfigureAwait(false)).ConfigureAwait(false);
|
keepOutputValues: keepOutputs).ConfigureAwait(false);
|
||||||
Log.Debug($"Call RPC prepared: token={token}" +
|
Log.Debug($"Call RPC prepared: token={token}" +
|
||||||
(_excessiveDebugOutput ? $", obj={serialized}" : ""));
|
(_excessiveDebugOutput ? $", obj={serialized}" : ""));
|
||||||
|
|
||||||
|
@ -84,13 +86,17 @@ namespace Pulumi
|
||||||
Args = serialized,
|
Args = serialized,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Add arg dependencies to the request.
|
// Only include the arg dependencies map in the request when *not* keeping output values.
|
||||||
foreach (var (argName, directDependencies) in argDependencies)
|
// When keeping output values, the dependencies will already exist within the args.
|
||||||
|
if (!keepOutputs)
|
||||||
{
|
{
|
||||||
var urns = await GetAllTransitivelyReferencedResourceUrnsAsync(directDependencies).ConfigureAwait(false);
|
foreach (var (argName, directDependencies) in argDependencies)
|
||||||
var deps = new CallRequest.Types.ArgumentDependencies();
|
{
|
||||||
deps.Urns.AddRange(urns);
|
var urns = await GetAllTransitivelyReferencedResourceUrnsAsync(directDependencies).ConfigureAwait(false);
|
||||||
request.ArgDependencies.Add(argName, deps);
|
var deps = new CallRequest.Types.ArgumentDependencies();
|
||||||
|
deps.Urns.AddRange(urns);
|
||||||
|
request.ArgDependencies.Add(argName, deps);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Kick off the call.
|
// Kick off the call.
|
||||||
|
|
|
@ -21,7 +21,10 @@ namespace Pulumi
|
||||||
var label = $"resource:{name}[{type}]";
|
var label = $"resource:{name}[{type}]";
|
||||||
Log.Debug($"Registering resource start: t={type}, name={name}, custom={custom}, remote={remote}");
|
Log.Debug($"Registering resource start: t={type}, name={name}, custom={custom}, remote={remote}");
|
||||||
|
|
||||||
var request = CreateRegisterResourceRequest(type, name, custom, remote, options);
|
// Keep track of whether we've kept output values when serializing.
|
||||||
|
var hasOutputs = remote && await MonitorSupportsOutputValues().ConfigureAwait(false);
|
||||||
|
|
||||||
|
var request = CreateRegisterResourceRequest(type, name, custom, remote, options, hasOutputs);
|
||||||
|
|
||||||
Log.Debug($"Preparing resource: t={type}, name={name}, custom={custom}, remote={remote}");
|
Log.Debug($"Preparing resource: t={type}, name={name}, custom={custom}, remote={remote}");
|
||||||
var prepareResult = await PrepareResourceAsync(label, resource, custom, remote, args, options).ConfigureAwait(false);
|
var prepareResult = await PrepareResourceAsync(label, resource, custom, remote, args, options).ConfigureAwait(false);
|
||||||
|
@ -65,7 +68,7 @@ namespace Pulumi
|
||||||
}
|
}
|
||||||
|
|
||||||
private static RegisterResourceRequest CreateRegisterResourceRequest(
|
private static RegisterResourceRequest CreateRegisterResourceRequest(
|
||||||
string type, string name, bool custom, bool remote, ResourceOptions options)
|
string type, string name, bool custom, bool remote, ResourceOptions options, bool hasOutputs)
|
||||||
{
|
{
|
||||||
var customOpts = options as CustomResourceOptions;
|
var customOpts = options as CustomResourceOptions;
|
||||||
var deleteBeforeReplace = customOpts?.DeleteBeforeReplace;
|
var deleteBeforeReplace = customOpts?.DeleteBeforeReplace;
|
||||||
|
@ -89,6 +92,7 @@ namespace Pulumi
|
||||||
Update = TimeoutString(options.CustomTimeouts?.Update),
|
Update = TimeoutString(options.CustomTimeouts?.Update),
|
||||||
},
|
},
|
||||||
Remote = remote,
|
Remote = remote,
|
||||||
|
HasOutputs = hasOutputs,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (customOpts != null)
|
if (customOpts != null)
|
||||||
|
|
Loading…
Reference in a new issue