pulumi/sdk/go
Will Jones 1515db22f1 Support `pulumi.Config` in dynamic providers
As well as responding to `Configure` gRPC calls, a resource provider
binary can also accept configuration from the engine via the
`PULUMI_CONFIG` environment variable. Presently, the engine will only
send configuration namespaced to the provider in question, and will
strip namespaces when doing so. So, given an example host configuration
of:

```
config:
  aws:region: eu-west-1
  foo:bar: baz
```

an `aws` provider will be provided with
`PULUMI_CONFIG='{"region":"eu-west-1"}'`, whereas a `gcp` provider will
receive `PULUMI_CONFIG='{}'`, matching neither `aws:region` nor
`foo:bar`.

This is problematic for dynamic providers, since they are authored in
and typically considered part of the user's program, and not as a
separate entity. Consequently it is not unreasonable for a dynamic
provider author to expect to have access to the entirety of the Pulumi
configuration through e.g. `pulumi.Config`, just like any other code in
their program -- #17050 and #4512 are two examples.

This commit makes us live up to this expectation. Dynamic providers now
receive all configuration values, with the namespaces preserved so that
existing `pulumi.Config` code can work in a dynamic provider like it
works everywhere else.

Fixes #17050
2024-09-10 17:21:20 +01:00
..
auto Enable goheader rule and add missing license headers (#15473) 2024-09-09 12:05:45 +00:00
common Support `pulumi.Config` in dynamic providers 2024-09-10 17:21:20 +01:00
internal Prepare golangci-lint upgrade (#17065) 2024-08-28 07:57:38 +00:00
property Enable goheader rule and add missing license headers (#15473) 2024-09-09 12:05:45 +00:00
pulumi [go] Allow output-versioned invokes to resolve and maintain secrets (#17132) 2024-09-09 12:57:43 +00:00
pulumi-language-go Enable goheader rule and add missing license headers (#15473) 2024-09-09 12:05:45 +00:00
pulumix Enable goheader rule and add missing license headers (#15473) 2024-09-09 12:05:45 +00:00
Makefile sdk/go: fix test_fast Makefile target (#16811) 2024-07-26 10:25:04 +00:00
README.md `pulumi update` => `pulumi up` (#2702) 2019-05-06 14:00:18 -07:00

README.md

Pulumi Golang SDK

This directory contains support for writing Pulumi programs in the Go language. There are two aspects to this:

  • pulumi/ contains the client language bindings Pulumi program's code directly against;
  • pulumi-language-go/ contains the language host plugin that the Pulumi engine uses to orchestrate updates.

To author a Pulumi program in Go, simply say so in your Pulumi.yaml

name: <my-project>
runtime: go

and ensure you have pulumi-language-go on your path (it is distributed in the Pulumi download automatically).

By default, the language plugin will use your project's name, <my-project>, as the executable that it loads. This too must be on your path for the language provider to load it when you run pulumi preview or pulumi up.