Skip to content

Commit

Permalink
Automatically set Secret inputs as pulumi.secret (#961)
Browse files Browse the repository at this point in the history
  • Loading branch information
lblackstone committed Jan 28, 2020
1 parent bcdbc9e commit dfe5183
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 6 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
### Improvements

- Update nodejs SDK to use optional chaining in constructor. (https://github.com/pulumi/pulumi-kubernetes/pull/959).
- Automatically set Secret inputs as pulumi.secret. (https://github.com/pulumi/pulumi-kubernetes/pull/961).

## 1.4.5 (January 22, 2020)

Expand Down
4 changes: 2 additions & 2 deletions pkg/gen/python-templates/kind.py.mustache
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,10 @@ class {{Kind}}(pulumi.CustomResource):
{{#RequiredInputProperties}}
if {{LanguageName}} is None:
raise TypeError('Missing required property {{LanguageName}}')
__props__['{{Name}}'] = {{LanguageName}}
__props__['{{Name}}'] = {{DefaultValue}}
{{/RequiredInputProperties}}
{{#OptionalInputProperties}}
__props__['{{Name}}'] = {{LanguageName}}
__props__['{{Name}}'] = {{DefaultValue}}
{{/OptionalInputProperties}}

__props__['status'] = None
Expand Down
13 changes: 13 additions & 0 deletions pkg/gen/typegen.go
Original file line number Diff line number Diff line change
Expand Up @@ -1020,6 +1020,7 @@ func createGroups(definitionsJSON map[string]interface{}, opts groupOpts) []*Gro
languageName = propName
case python:
languageName = pycodegen.PyName(propName)
defaultValue = languageName
case dotnet:
name := propName
if name[0] == '$' {
Expand All @@ -1037,6 +1038,18 @@ func createGroups(definitionsJSON map[string]interface{}, opts groupOpts) []*Gro
panic(fmt.Sprintf("Unsupported language '%s'", opts.language))
}

// Set Secret input fields to pulumi.secret
if d.gvk.Kind == "Secret" && (propName == "stringData" || propName == "data") {
switch opts.language {
case typescript:
defaultValue = fmt.Sprintf(
"args?.%s === undefined ? undefined : pulumi.secret(args?.%s)", propName, propName)
case python:
defaultValue = fmt.Sprintf("pulumi.Output.secret(%s) if %s is not None else None",
languageName, languageName)
}
}

return &Property{
comment: fmtComment(prop["description"], prefix, false, opts, d.gvk),
pythonConstructorComment: fmtComment(prop["description"], prefix+prefix+" ", true, opts, d.gvk),
Expand Down
4 changes: 2 additions & 2 deletions sdk/nodejs/core/v1/Secret.ts
Original file line number Diff line number Diff line change
Expand Up @@ -105,10 +105,10 @@ import { getVersion } from "../../version";
const props: pulumi.Inputs = {};

props["apiVersion"] = "v1";
props["data"] = args?.data;
props["data"] = args?.data === undefined ? undefined : pulumi.secret(args?.data);
props["kind"] = "Secret";
props["metadata"] = args?.metadata;
props["stringData"] = args?.stringData;
props["stringData"] = args?.stringData === undefined ? undefined : pulumi.secret(args?.stringData);
props["type"] = args?.type;

props["status"] = undefined;
Expand Down
4 changes: 2 additions & 2 deletions sdk/python/pulumi_kubernetes/core/v1/Secret.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,9 +102,9 @@ def __init__(self, resource_name, opts=None, data=None, metadata=None, string_da

__props__['apiVersion'] = 'v1'
__props__['kind'] = 'Secret'
__props__['data'] = data
__props__['data'] = pulumi.Output.secret(data) if data is not None else None
__props__['metadata'] = metadata
__props__['stringData'] = string_data
__props__['stringData'] = pulumi.Output.secret(string_data) if string_data is not None else None
__props__['type'] = type

__props__['status'] = None
Expand Down

0 comments on commit dfe5183

Please sign in to comment.