Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pass through additional secret outputs from the provider schema #526

Merged
merged 4 commits into from
Nov 16, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG_PENDING.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
### Improvements

### Bug Fixes

- Fields marked as secret in the provider schema are now correctly handled as secrets. [#526](https://github.com/pulumi/pulumi-yaml/pull/526)
11 changes: 8 additions & 3 deletions pkg/pulumiyaml/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -1075,9 +1075,6 @@ func (e *programEvaluator) registerResource(kvp resourceNode) (lateboundResource
return p, isPoison
}

if v.Options.AdditionalSecretOutputs != nil {
opts = append(opts, pulumi.AdditionalSecretOutputs(listStrings(v.Options.AdditionalSecretOutputs)))
}
if v.Options.Aliases != nil {
var aliases []pulumi.Alias
for _, s := range v.Options.Aliases.Elements {
Expand Down Expand Up @@ -1236,6 +1233,14 @@ func (e *programEvaluator) registerResource(kvp resourceNode) (lateboundResource
state = &r
res = &r
}
if v.Options.AdditionalSecretOutputs != nil {
opts = append(opts, pulumi.AdditionalSecretOutputs(listStrings(v.Options.AdditionalSecretOutputs)))
}
for _, prop := range resourceSchema.Properties {
if prop.Secret {
opts = append(opts, pulumi.AdditionalSecretOutputs([]string{prop.Name}))
}
}

if !overallOk || e.sdiags.HasErrors() {
return nil, false
Expand Down
40 changes: 40 additions & 0 deletions pkg/pulumiyaml/run_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,16 @@ func newMockPackageMap() PackageLoader {
Name: "foo",
Type: schema.StringType,
})
case "test:resource:with-secret":
return inputProperties(typeName, schema.Property{
Name: "foo",
Type: schema.StringType,
}, schema.Property{
Name: "bar",
Type: schema.StringType,
Secret: true,
})

default:
return inputProperties(typeName)
}
Expand Down Expand Up @@ -1864,6 +1874,36 @@ resources:
})
}

func TestResourceWithSecret(t *testing.T) {
t.Parallel()

text := `
name: test-secret
runtime: yaml
resources:
sec:
type: test:resource:with-secret
properties:
foo: baz
bar: frotz
`
tmpl := yamlTemplate(t, strings.TrimSpace(text))
mocks := &testMonitor{
NewResourceF: func(args pulumi.MockResourceArgs) (string, resource.PropertyMap, error) {
assert.Equal(t, "bar", args.RegisterRPC.GetAdditionalSecretOutputs()[0])
return args.Name, args.Inputs, nil
},
}
err := pulumi.RunErr(func(ctx *pulumi.Context) error {
runner := newRunner(tmpl, newMockPackageMap())
err := runner.Evaluate(ctx)
assert.Len(t, err, 0)
assert.Equal(t, err.Error(), "no diagnostics")
return nil
}, pulumi.WithMocks("project", "stack", mocks))
assert.NoError(t, err)
}

func TestGetConfNodesFromMap(t *testing.T) {
t.Parallel()
tests := []struct {
Expand Down
Loading