From fd7a339d49fcf1051bcd6874291583a0eb8e1bba Mon Sep 17 00:00:00 2001 From: Richard Shade Date: Thu, 16 Feb 2023 10:31:05 -0600 Subject: [PATCH 1/2] Fix: Moving yaml_decode, and using it in ConfigGroup as well, Fixes #2309 --- provider/pkg/gen/python-templates/yaml/yaml.tmpl | 12 +++++++----- sdk/python/pulumi_kubernetes/yaml/yaml.py | 12 +++++++----- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/provider/pkg/gen/python-templates/yaml/yaml.tmpl b/provider/pkg/gen/python-templates/yaml/yaml.tmpl index 799a523f0a..e0f421741e 100644 --- a/provider/pkg/gen/python-templates/yaml/yaml.tmpl +++ b/provider/pkg/gen/python-templates/yaml/yaml.tmpl @@ -193,7 +193,7 @@ class ConfigGroup(pulumi.ComponentResource): invoke_opts = pulumi.InvokeOptions(version=_utilities.get_version(), provider=opts.provider if opts.provider else None) - __ret__ = pulumi.runtime.invoke('kubernetes:yaml:decode', {'text': text}, invoke_opts).value['result'] + __ret__ = invoke_yaml_decode(text, invoke_opts) resources = _parse_yaml_document(__ret__, opts, transformations, resource_prefix) # Add any new YAML resources to the ConfigGroup's resources self.resources = pulumi.Output.all(resources, self.resources).apply(lambda x: {**x[0], **x[1]}) @@ -344,10 +344,8 @@ class ConfigFile(pulumi.ComponentResource): # in package.json. invoke_opts = pulumi.InvokeOptions(version=_utilities.get_version(), provider=opts.provider if opts.provider else None) - def invoke_yaml_decode(text): - inv = pulumi.runtime.invoke('kubernetes:yaml:decode', {'text': text}, invoke_opts) - return inv.value['result'] if inv is not None and inv.value is not None else [] - __ret__ = invoke_yaml_decode(text) + + __ret__ = invoke_yaml_decode(text, invoke_opts) # Note: Unlike NodeJS, Python requires that we "pull" on our futures in order to get them scheduled for # execution. In order to do this, we leverage the engine's RegisterResourceOutputs to wait for the @@ -516,3 +514,7 @@ def _parse_yaml_object( return [identifier.apply( lambda x: (f"{gvk}:{x}", CustomResource(f"{x}", api_version, kind, spec, metadata, opts)))] + +def invoke_yaml_decode(text, invoke_opts): + inv = pulumi.runtime.invoke('kubernetes:yaml:decode', {'text': text}, invoke_opts) + return inv.value['result'] if inv is not None and inv.value is not None else [] \ No newline at end of file diff --git a/sdk/python/pulumi_kubernetes/yaml/yaml.py b/sdk/python/pulumi_kubernetes/yaml/yaml.py index a0fb47c648..c8d0386a8e 100644 --- a/sdk/python/pulumi_kubernetes/yaml/yaml.py +++ b/sdk/python/pulumi_kubernetes/yaml/yaml.py @@ -193,7 +193,7 @@ def omit_resource(obj, opts): invoke_opts = pulumi.InvokeOptions(version=_utilities.get_version(), provider=opts.provider if opts.provider else None) - __ret__ = pulumi.runtime.invoke('kubernetes:yaml:decode', {'text': text}, invoke_opts).value['result'] + __ret__ = invoke_yaml_decode(text, invoke_opts) resources = _parse_yaml_document(__ret__, opts, transformations, resource_prefix) # Add any new YAML resources to the ConfigGroup's resources self.resources = pulumi.Output.all(resources, self.resources).apply(lambda x: {**x[0], **x[1]}) @@ -344,10 +344,8 @@ def omit_resource(obj, opts): # in package.json. invoke_opts = pulumi.InvokeOptions(version=_utilities.get_version(), provider=opts.provider if opts.provider else None) - def invoke_yaml_decode(text): - inv = pulumi.runtime.invoke('kubernetes:yaml:decode', {'text': text}, invoke_opts) - return inv.value['result'] if inv is not None and inv.value is not None else [] - __ret__ = invoke_yaml_decode(text) + + __ret__ = invoke_yaml_decode(text, invoke_opts) # Note: Unlike NodeJS, Python requires that we "pull" on our futures in order to get them scheduled for # execution. In order to do this, we leverage the engine's RegisterResourceOutputs to wait for the @@ -1924,3 +1922,7 @@ def _parse_yaml_object( return [identifier.apply( lambda x: (f"{gvk}:{x}", CustomResource(f"{x}", api_version, kind, spec, metadata, opts)))] + +def invoke_yaml_decode(text, invoke_opts): + inv = pulumi.runtime.invoke('kubernetes:yaml:decode', {'text': text}, invoke_opts) + return inv.value['result'] if inv is not None and inv.value is not None else [] \ No newline at end of file From e10a7796208e265d3c5934018d31e0cdbef5cd9f Mon Sep 17 00:00:00 2001 From: Richard Shade Date: Thu, 16 Feb 2023 10:36:15 -0600 Subject: [PATCH 2/2] Chore: Updating changelog --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f8b0fcd5d7..8c9a2852d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,9 @@ ## Unreleased +- moves `invoke_yaml_decode` into ConfigGroup for python (https://github.com/pulumi/pulumi-kubernetes/pull/2317) ## 3.24.0 (February 6, 2023) -- Fix unencrypted secrets in the state `outputs` after `Secret.get` #2300 +- Fix unencrypted secrets in the state `outputs` after `Secret.get` (https://github.com/pulumi/pulumi-kubernetes/pull/2300) - Upgrade to latest helm and k8s client dependencies (https://github.com/pulumi/pulumi-kubernetes/pull/2292) - Fix await status for Job and Pod (https://github.com/pulumi/pulumi-kubernetes/pull/2299)