mirror of https://github.com/pulumi/pulumi.git
3027d01f25
* Enable output values by default Enable output values by default in the resource monitor and change the polarity of the envvar from `PULUMI_ENABLE_OUTPUT_VALUES` to `PULUMI_DISABLE_OUTPUT_VALUES`. * Marshal unknown as unknown string when `!KeepOutputValues` Marshal all unknown output values as `resource.MakeComputed(resource.NewStringProperty(""))` when not keeping output values, which is consistent with what the SDKs do. Otherwise, when `v.OutputValue().Element` is nil, `resource.MakeComputed(v.OutputValue().Element)` will be marshaled as a null value rather than as an unknown sentinel. * Add MarshalOptions.DontSkipOutputs and use where needed Before we expanded the meaning of `resource.Output`, `MarshalProperties` always skipped output values: ```go if v.IsOutput() { logging.V(9).Infof("Skipping output property for RPC[%s]: %v", opts.Label, key) } ``` As part of expanding the meaning of `resource.Output`, I'd adjusted `MarshalProperties` to only skip output values when the value was unknown and when not keeping output values: ```go if v.IsOutput() && !v.OutputValue().Known && !opts.KeepOutputValues { logging.V(9).Infof("Skipping output property for RPC[%s]: %v", opts.Label, key) } ``` However, this doesn't work the way we want when marshaling properties that include unknown output values to a provider that does not accept outputs. In that case, `opts.KeepOutputValues` will be `false` because we want the marshaler to fall back to returning non-output-values (e.g. unknown sentinel value for unknown output values), but instead of getting the intended fallback values, the unknown output values are skipped (not what we want). I suspect we may be able to delete the output value skipping in `MarshalProperties` altogether (it's odd that it is skipping `resource.Output` but not `resource.Computed`), but to avoid any unintended side effects of doing that, instead, this commit introduces a new `MarshalOptions.DontSkipOutputs` option that can be set to `true` to opt-in to not skipping output values when marshaling. The check in `MarshalProperties` now looks like this: ```go if !opts.DontSkipOutputs && v.IsOutput() && !v.OutputValue().Known { logging.V(9).Infof("Skipping output property for RPC[%s]: %v", opts.Label, key) } ``` `opts.DontSkipOutputs` is set to `true` when marshaling properties for calls to a provider's `Construct` and `Call`. * [sdk/nodejs] Deserialize output values This commit adds support for deserializing output values, which is needed in some cases when serialized inputs are returned as outputs in the SDK. * [sdk/python] Deserialize output values This commit adds support for deserializing output values, which is needed in some cases when serialized inputs are returned as outputs in the SDK. |
||
---|---|---|
.. | ||
closure | ||
asyncIterableUtil.ts | ||
config.ts | ||
debuggable.ts | ||
index.ts | ||
invoke.ts | ||
mocks.ts | ||
resource.ts | ||
rpc.ts | ||
settings.ts | ||
stack.ts |