pulumi/sdk/python/lib/test
Justin Van Patten 3027d01f25
Enable output values by default (#8014)
* 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.
2021-09-24 08:57:04 -07:00
..
automation [auto/python] - Fix a bug in printing stack. (#8032) 2021-09-22 16:49:03 -07:00
data/lazy_import_test Fix issue with lazy_import affecting pulumi-eks (#7024) 2021-05-11 22:48:08 -04:00
langhost [sdk/python] Transitive component dependencies. (#7732) 2021-08-11 21:52:16 -05:00
provider [sdk/python] Support for implementing methods in provider (#7555) 2021-07-19 14:58:55 -07:00
runtime Fix 7862 (#7887) 2021-09-07 11:30:39 -04:00
__init__.py Fix a couple of issues when projecting Protobuf and UNKNOWN in Python (#1468) 2018-06-06 16:09:07 -07:00
helpers.py Lower the BrokenDynamicProvider regression test from integration to mock (#7951) 2021-09-10 17:25:48 -04:00
test_broken_dynamic_provider.py Lower the BrokenDynamicProvider regression test from integration to mock (#7951) 2021-09-10 17:25:48 -04:00
test_monitor_termination.py Lower the BrokenDynamicProvider regression test from integration to mock (#7951) 2021-09-10 17:25:48 -04:00
test_next_serialize.py Enable output values by default (#8014) 2021-09-24 08:57:04 -07:00
test_output.py [sdk/python] Ensure Output objects are not iterable (#7288) 2021-06-15 09:25:24 +10:00
test_resource.py Inputty depends_on support for Python (#7559) 2021-07-28 09:49:07 -04:00
test_runtime_to_json.py [sdk/python] Add pulumi.runtime.to_json utility (#5307) 2020-09-09 12:08:45 -07:00
test_test_mode.py Enable unit testing for Pulumi programs (#2638) 2019-04-16 22:20:01 -07:00
test_translate_output_properties.py [sdk/python] - Support enums (#5615) 2020-11-24 19:15:11 -06:00
test_types_input_type.py [sdk/python] Fix pulumi.property's default value handling (#7736) 2021-08-11 09:15:46 -07:00
test_types_input_type_types.py [sdk/python] Improved dict key translation support (#6695) 2021-04-14 19:32:18 +01:00
test_types_output_type.py Python SDK changes to support input/output classes (#5033) 2020-08-19 01:15:56 -07:00
test_types_resource_types.py Python SDK changes to support input/output classes (#5033) 2020-08-19 01:15:56 -07:00
test_urn.py Satisfy Python lint: factor out URN parsing in Python and other fixes (#7821) 2021-08-24 09:57:51 -04:00
test_utils.py Fix issue with lazy_import affecting pulumi-eks (#7024) 2021-05-11 22:48:08 -04:00