CHANGELOG ========= ## HEAD (Unreleased) - [CLI] Fix malformed resource value bug. [#6164](https://github.com/pulumi/pulumi/pull/6164) ## 2.18.1 (2021-01-21) - Revert [#6125](https://github.com/pulumi/pulumi/pull/6125) as it caused a which introduced a bug with serializing resource IDs ## 2.18.0 (2021-01-20) - [CLI] Add the ability to log out of all Pulumi backends at once. [#6101](https://github.com/pulumi/pulumi/pull/6101) - [sdk/go] Added `pulumi.Unsecret` which will take an existing secret output and create a non-secret variant with an unwrapped secret value. Also adds, `pulumi.IsSecret` which will take an existing output and determine if an output has a secret within the output. [#6085](https://github.com/pulumi/pulumi/pull/6085) ## 2.17.2 (2021-01-14) - .NET: Allow `IMock.NewResourceAsync` to return a null ID for component resources. Note that this may require mocks written in C# to be updated to account for the change in nullability. [#6104](https://github.com/pulumi/pulumi/pull/6104) - [automation/go] Add debug logging settings for common automation API operations [#6095](https://github.com/pulumi/pulumi/pull/6095) - [automation/go] Set DryRun on previews so unknowns are identified correctly. [#6099](https://github.com/pulumi/pulumi/pull/6099) - [sdk/python] Fix python 3.6 support by removing annotations import. [#6109](https://github.com/pulumi/pulumi/pull/6109) - [sdk/nodejs] Added `pulumi.unsecret` which will take an existing secret output and create a non-secret variant with an unwrapped secret value. Also adds, `pulumi.isSecret` which will take an existing output and determine if an output has a secret within the output. [#6086](https://github.com/pulumi/pulumi/pull/6086) - [sdk/python] Added `pulumi.unsecret` which will take an existing secret output and create a non-secret variant with an unwrapped secret value. Also adds, `pulumi.is_secret` which will take an existing output and determine if an output has a secret within the output. [#6111](https://github.com/pulumi/pulumi/pull/6111) ## 2.17.1 (2021-01-13) - Fix an issue with go sdk generation where optional strict enum values could not be omitted. Note - this is a breaking change to go sdk's enum values. However we currently only support strict enums in the azure-nextgen provider's schema. [#6069](https://github.com/pulumi/pulumi/pull/6069) - Fix an issue where python debug messages print unexpectedly. [#6967](https://github.com/pulumi/pulumi/pull/6067) - [CLI] Add `version` to the stack history output to be able to correlate events back to the Pulumi SaaS [#6063](https://github.com/pulumi/pulumi/pull/6063) - Fix a typo in the unit testing mocks to get the outputs while registering them [#6040](https://github.com/pulumi/pulumi/pull/6040) - [sdk/dotnet] Moved urn value retrieval into if statement for MockMonitor [#6081](https://github.com/pulumi/pulumi/pull/6081) - [sdk/dotnet] Added `Pulumi.Output.Unsecret` which will take an existing secret output and create a non-secret variant with an unwrapped secret value. [#6092](https://github.com/pulumi/pulumi/pull/6092) - [sdk/dotnet] Added `Pulumi.Output.IsSecretAsync` which will take an existing output and determine if an output has a secret within the output. [#6092](https://github.com/pulumi/pulumi/pull/6092) - [sdk/dotnet] Fix looking up empty version in `ResourcePackages.TryGetResourceType`. [#6084](https://github.com/pulumi/pulumi/pull/6084) - Python Automation API. [#5979](https://github.com/pulumi/pulumi/pull/5979) - Support recovery workflow (import/export/cancel) in Python Automation API. [#6037](https://github.com/pulumi/pulumi/pull/6037) ## 2.17.0 (2021-01-06) - Respect the `version` resource option for provider resources. [#6055](https://github.com/pulumi/pulumi/pull/6055) - Allow `serializeFunction` to capture secrets. [#6013](https://github.com/pulumi/pulumi/pull/6013) - [CLI] Allow `pulumi console` to accept a stack name [#6031](https://github.com/pulumi/pulumi/pull/6031) - Support recovery workflow (import/export/cancel) in NodeJS Automation API. [#6038](https://github.com/pulumi/pulumi/pull/6038) - [CLI] Add a confirmation prompt when using `pulumi policy rm` [#6034](https://github.com/pulumi/pulumi/pull/6034) - [CLI] Ensure errors with the Pulumi credentials file give the user some information on how to resolve the problem [#6044](https://github.com/pulumi/pulumi/pull/6044) - [sdk/go] Support maps in Invoke outputs and Read inputs [#6014](https://github.com/pulumi/pulumi/pull/6014) ## 2.16.2 (2020-12-23) - Fix a bug in the core engine that could cause previews to fail if a resource with changes had unknown output property values. [#6006](https://github.com/pulumi/pulumi/pull/6006) ## 2.16.1 (2020-12-22) - Fix a panic due to unsafe concurrent map access. [#5995](https://github.com/pulumi/pulumi/pull/5995) - Fix regression in `venv` creation for python policy packs. [#5992](https://github.com/pulumi/pulumi/pull/5992) ## 2.16.0 (2020-12-21) - Do not read plugins and policy packs into memory prior to extraction, as doing so can exhaust the available memory on lower-end systems. [#5983](https://github.com/pulumi/pulumi/pull/5983) - Fix a bug in the core engine where deleting/renaming a resource would panic on update + refresh. [#5980](https://github.com/pulumi/pulumi/pull/5980) - Fix a bug in the core engine that caused `ignoreChanges` to fail for resources being imported. [#5976](https://github.com/pulumi/pulumi/pull/5976) - Fix a bug in the core engine that could cause resources references to marshal improperly during preview. [#5960](https://github.com/pulumi/pulumi/pull/5960) - [sdk/dotnet] Add collection initializers for smooth support of Union as element type [#5938](https://github.com/pulumi/pulumi/pull/5938) - Fix a bug in the core engine where ComponentResource state would be accessed before initialization. [#5949](https://github.com/pulumi/pulumi/pull/5949) - Prevent a panic by not attempting to show progress for zero width/height terminals. [#5957](https://github.com/pulumi/pulumi/issues/5957) ## 2.15.6 (2020-12-12) - Fix a bug in the Go SDK that could result in dropped resource dependencies. [#5930](https://github.com/pulumi/pulumi/pull/5930) - Temporarily disable resource ref feature. [#5932](https://github.com/pulumi/pulumi/pull/5932) ## 2.15.5 (2020-12-11) - Re-apply fix for running multiple `pulumi` processes concurrently. [#5893](https://github.com/pulumi/pulumi/issues/5893) - [cli] Prevent a panic when using `pulumi import` with local filesystems [#5906](https://github.com/pulumi/pulumi/issues/5906) - [sdk/nodejs] Fix issue that would cause unit tests using mocks to fail with unhandled errors when a resource references another resources that's been registered with `registerResourceModule`. [#5914](https://github.com/pulumi/pulumi/pull/5914) - Enable resource reference feature by default. [#5905](https://github.com/pulumi/pulumi/pull/5905) - [codegen/go] Fix Input/Output methods for Go resources. [#5916](https://github.com/pulumi/pulumi/pull/5916) - [sdk/python] Implement getResource in the mock monitor. [#5919](https://github.com/pulumi/pulumi/pull/5919) - [sdk/dotnet] Implement getResource in the mock monitor and fix some issues around deserializing resources. [#5921](https://github.com/pulumi/pulumi/pull/5921) ## 2.15.4 (2020-12-08) - Fix a problem where `pulumi import` could panic on an import error due to missing error message. [#5884](https://github.com/pulumi/pulumi/pull/5884) - Correct the system name detected for Jenkins CI. [#5891](https://github.com/pulumi/pulumi/pull/5891) - Fix python execution for users running Python installed through the Windows App Store on Windows 10 [#5874](https://github.com/pulumi/pulumi/pull/5874) ## 2.15.3 (2020-12-07) - Fix errors when running `pulumi` in Windows-based CI environments. [#5879](https://github.com/pulumi/pulumi/issues/5879) ## 2.15.2 (2020-12-07) - Fix a problem where `pulumi import` could panic on importing arrays and sets, due to incorrect array resizing logic. [#5872](https://github.com/pulumi/pulumi/pull/5872). ## 2.15.1 (2020-12-04) - Address potential issues when running multiple `pulumi` processes concurrently. [#5857](https://github.com/pulumi/pulumi/pull/5857) - Automatically install missing Python dependencies. [#5787](https://github.com/pulumi/pulumi/pull/5787) - [cli] Ensure `pulumi stack change-secrets-provider` allows rotating the key for a passphrase provider [#5865](https://github.com/pulumi/pulumi/pull/5865/) ## 2.15.0 (2020-12-02) - [sdk/python] Add deserialization support for enums. [#5615](https://github.com/pulumi/pulumi/pull/5615) - Correctly rename `Pulumi.*.yaml` stack files during a rename that includes an organization in its name [#5812](https://github.com/pulumi/pulumi/pull/5812). - Respect `PULUMI_PYTHON_CMD` in scripts. [#5782](https://github.com/pulumi/pulumi/pull/5782) - Add `PULUMI_BACKEND_URL` environment variable to configure the state backend. [#5789](https://github.com/pulumi/pulumi/pull/5789) - [sdk/dotnet] Add support for dependency injection into TStack instance by adding an overload to `Deployment.RunAsync`. The overload accepts an `IServiceProvider` that is used to create the instance of TStack. Also added a new method `Deployment.TestWithServiceProviderAsync` for testing stacks that use dependency injection. [#5723](https://github.com/pulumi/pulumi/pull/5723/) - [cli] Ensure `pulumi stack change-secrets-provider` allows rotating the key in Azure KeyVault [#5842](https://github.com/pulumi/pulumi/pull/5842/) ## 2.14.0 (2020-11-18) - Propagate secretness of provider configuration through to the statefile. This ensures that any configuration values marked as secret (i.e. values set with `pulumi config set --secret`) that are used as inputs to providers are encrypted before they are stored. [#5742](https://github.com/pulumi/pulumi/pull/5742) - Fix a bug that could prevent `pulumi import` from succeeding. [#5730](https://github.com/pulumi/pulumi/pull/5730) - [Docs] Add support for the generation of Import documentation in the resource docs. This documentation will only be available if the resource is importable. [#5667](https://github.com/pulumi/pulumi/pull/5667) - [codegen/go] Add support for ResourceType and isComponent to enable multi-language components in Go. This change also generates Input/Output types for all resources in downstream Go SDKs. [#5497](https://github.com/pulumi/pulumi/pull/5497) - Support python 3.9 on Windows. [#5739](https://github.com/pulumi/pulumi/pull/5739) - `pulumi-language-go` and `pulumi new` now explicitly requires Go 1.14.0 or greater. [#5741](https://github.com/pulumi/pulumi/pull/5741) - Update .NET `Grpc` libraries to 2.33.1 and `Protobuf` to 3.13.0 (forked to increase the recursion limit) [#5757](https://github.com/pulumi/pulumi/pull/5757) - Fix plugin install failures on Windows. [#5759](https://github.com/pulumi/pulumi/pull/5759) - .NET: Report plugin install errors during `pulumi new`. [#5760](https://github.com/pulumi/pulumi/pull/5760) - Correct error message on KeyNotFoundException against StackReference. [#5740](https://github.com/pulumi/pulumi/pull/5740) - [cli] Small UX change on the policy violations output to render as `type: name` [#5773](https://github.com/pulumi/pulumi/pull/5773) ## 2.13.2 (2020-11-06) - Fix a bug that was causing errors when (de)serializing custom resources. [#5709](https://github.com/pulumi/pulumi/pull/5709) ## 2.13.1 (2020-11-06) - [cli] Ensure `pulumi history` annotes when secrets are unable to be decrypted [#5701](https://github.com/pulumi/pulumi/pull/5701) - Fix a bug in the Python SDK that caused incompatibilities with versions of the CLI prior to 2.13.0. [#5702](https://github.com/pulumi/pulumi/pull/5702) ## 2.13.0 (2020-11-04) - Add internal scaffolding for using cross-language components from Go. [#5558](https://github.com/pulumi/pulumi/pull/5558) - Support python 3.9. [#5669](https://github.com/pulumi/pulumi/pull/5669) - [cli] Ensure that the CLI doesn't panic when using pulumi watch and using ComponentResources with non-standard naming [#5675](https://github.com/pulumi/pulumi/pull/5675) - [cli] Ensure that the CLI doesn't panic when trying to assemble a graph on a stack that has no snapshot available [#5678](https://github.com/pulumi/pulumi/pull/5678) - Add boolean values to Go SDK [#5687](https://github.com/pulumi/pulumi/pull/5687) ## 2.12.1 (2020-10-23) - [cli] Ensure that the CLI doesn't panic when using pulumi watch and policies are enabled [#5569](https://github.com/pulumi/pulumi/pull/5569) - [cli] Ensure that the CLI doesn't panic when using the JSON output as part of previews and policies are enabled [#5610](https://github.com/pulumi/pulumi/pull/5610) ## 2.12.0 (2020-10-14) - NodeJS Automation API. [#5347](https://github.com/pulumi/pulumi/pull/5347) - Improve the accuracy of previews by allowing providers to participate in determining what the impact of a change will be on output properties. Previously, Pulumi previews conservatively assumed that any output-only properties changed their values when an update occurred. For many properties, this was guaranteed to not be the case (because those properties are immutable, for example), and by suggesting the value might change, this could lead to the preview suggesting additional transitive updates of even replaces that would not actually happen during an update. Pulumi now allows the provider to specify the details of what properties will change during a preview, allowing them to expose more accurate provider-specific knowledge. This change is less conservative than the previous behavior, and so in case it causes preview results which are not deemed correct in some case - the `PULUMI_DISABLE_PROVIDER_PREVIEW` flag can be set to a truthy value (e.g. `1`) to enable the previous and more conservative behavior for previews. [#5443](https://github.com/pulumi/pulumi/pull/5443). - Add an import command to the Pulumi CLI. This command can be used to import existing resources into a Pulumi stack. [#4765](https://github.com/pulumi/pulumi/pull/4765) - [cli] Remove eternal loop if a configured passphrase is invalid. [#5507](https://github.com/pulumi/pulumi/pull/5507) - Correctly validate project names during 'pulumi new' [#5504](https://github.com/pulumi/pulumi/pull/5504) - Fixing gzip compression for alternative backends. [#5484](https://github.com/pulumi/pulumi/pull/5484) - Add internal scaffolding for using cross-language components from .NET. [#5485](https://github.com/pulumi/pulumi/pull/5485) - Support self-contained executables as binary option for .NET programs. [#5519](https://github.com/pulumi/pulumi/pull/5519) - [cli] Ensure old secret provider variables are cleaned up when changing between secret providers [#5545](https://github.com/pulumi/pulumi/pull/5545) - [cli] Respect logging verbosity as part of pulumi plugin install commands [#5549](https://github.com/pulumi/pulumi/pull/5549) - [cli] Accept `-f` as a shorthand for `--skip-preview` on `pulumi up`, `pulumi refresh` and `pulumi destroy` operations [#5556](https://github.com/pulumi/pulumi/pull/5556) - [cli] Validate cloudUrl formats before `pulumi login` and throw an error if incorrect format specified [#5550](https://github.com/pulumi/pulumi/pull/5545) - [automation api] Add support for passing a private ssh key for git authentication that doesn't rely on a file path [#5557](https://github.com/pulumi/pulumi/pull/5557) - [cli] Improve user experience when pulumi plugin rm --all finds no plugins to remove. The previous behaviour was an error and should not be so. [#5547](https://github.com/pulumi/pulumi/pull/5547) - [sdk/python] Fix ResourceOptions annotations and doc strings. [#5559](https://github.com/pulumi/pulumi/pull/5559) - [sdk/dotnet] Fix HashSet concurrency issue. [#5563](https://github.com/pulumi/pulumi/pull/5563) ## 2.11.2 (2020-10-01) - feat(autoapi): expose EnvVars LocalWorkspaceOption to set in ctor [#5499](https://github.com/pulumi/pulumi/pull/5499) - [sdk/python] Fix secret regression: ensure unwrapped secrets during deserialization are rewrapped before being returned. [#5496](https://github.com/pulumi/pulumi/pull/5496) ## 2.11.1 (2020-09-30) - Add internal scaffolding for using cross-language components from Python. [#5375](https://github.com/pulumi/pulumi/pull/5375) ## 2.11.0 (2020-09-30) - Do not oversimplify types for display when running an update or preview. [#5440](https://github.com/pulumi/pulumi/pull/5440) - Pulumi Windows CLI now uploads all VCS information to console (fixes [#5014](https://github.com/pulumi/pulumi/issues/5014)) [#5406](https://github.com/pulumi/pulumi/pull/5406) - .NET SDK: Support `Output` for resource output properties (fixes [#5446](https://github.com/pulumi/pulumi/issues/5446)) [#5465](https://github.com/pulumi/pulumi/pull/5465) ## 2.10.2 (2020-09-21) - [sdk/go] Add missing Version field to invokeOptions [#5401](https://github.com/pulumi/pulumi/pull/5401) - Add `pulumi console` command which opens the currently selected stack in the Pulumi console. [#5368](https://github.com/pulumi/pulumi/pull/5368) - Python SDK: Cast numbers intended to be integers to `int`. [#5419](https://github.com/pulumi/pulumi/pull/5419) ## 2.10.1 (2020-09-16) - feat(autoapi): add GetPermalink for operation result [#5363](https://github.com/pulumi/pulumi/pull/5363) - Relax stack name validations for Automation API [#5337](https://github.com/pulumi/pulumi/pull/5337) - Allow Pulumi to read a passphrase file, via `PULUMI_CONFIG_PASSPHRASE_FILE` to interact with the passphrase secrets provider. Pulumi will first try and use the `PULUMI_CONFIG_PASSPHRASE` to get the passphrase then will check `PULUMI_CONFIG_PASSPHRASE_FILE` and then all through to asking interactively as the final option. [#5327](https://github.com/pulumi/pulumi/pull/5327) - feat(autoapi): Add support for working with private Git repos. Either `SSHPrivateKeyPath`, `PersonalAccessToken` or `UserName` and `Password` can be pushed to the `auto.GitRepo` struct when interacting with a private repo [#5333](https://github.com/pulumi/pulumi/pull/5333) - Revise the design for connecting an existing language runtime to a CLI invocation. Note that this is a protocol breaking change for the Automation API, so both the API and the CLI must be updated together. [#5317](https://github.com/pulumi/pulumi/pull/5317) - Automation API - support streaming output for Up/Refresh/Destroy operations. [#5367](https://github.com/pulumi/pulumi/pull/5367) - Automation API - add recovery APIs (cancel/export/import) [#5369](https://github.com/pulumi/pulumi/pull/5369) ## 2.10.0 (2020-09-10) - feat(autoapi): add Upsert methods for stacks [#5316](https://github.com/pulumi/pulumi/pull/5316) - Add IsSelectStack404Error and IsCreateStack409Error [#5314](https://github.com/pulumi/pulumi/pull/5314) - Add internal scaffolding for cross-language components. [#5280](https://github.com/pulumi/pulumi/pull/5280) - feat(autoapi): add workspace scoped envvars to LocalWorkspace and Stack [#5275](https://github.com/pulumi/pulumi/pull/5275) - refactor(autoapi-gitrepo): use Workspace in SetupFn callback [#5279](https://github.com/pulumi/pulumi/pull/5279) - Fix Go SDK plugin acquisition for programs with vendored dependencies [#5286](https://github.com/pulumi/pulumi/pull/5286) - Python SDK: Add support for `Sequence[T]` for array types [#5282](https://github.com/pulumi/pulumi/pull/5282) - feat(autoapi): Add support for non default secret providers in local workspaces [#5320](https://github.com/pulumi/pulumi/pull/5320) - .NET SDK: Prevent a task completion race condition [#5324](https://github.com/pulumi/pulumi/pull/5324) ## 2.9.2 (2020-08-31) - Alpha version of the Automation API for Go [#4977](https://github.com/pulumi/pulumi/pull/4977) - Python SDK: Avoid raising an error when internal properties don't match the expected type. [#5251](https://github.com/pulumi/pulumi/pull/5251) - Added `--suppress-permalink` option to suppress the permalink output (fixes [#4103](https://github.com/pulumi/pulumi/issues/4103)) [#5191](https://github.com/pulumi/pulumi/pull/5191) ## 2.9.1 (2020-08-27) - Python SDK: Avoid raising an error when an output has a type annotation of Any and the value is a list or dict. [#5238](https://github.com/pulumi/pulumi/pull/5238) ## 2.9.0 (2020-08-19) - Fix support for CheckFailures in Python Dynamic Providers [#5138](https://github.com/pulumi/pulumi/pull/5138) - Upgrade version of `gocloud.dev`. This ensures that 'AWSKMS' secrets providers can now be used with full ARNs rather than just Aliases [#5138](https://github.com/pulumi/pulumi/pull/5138) - Ensure the 'history' command is a subcommand of 'stack'. This means that `pulumi history` has been deprecated in favour of `pulumi stack history`. [#5158](https://github.com/pulumi/pulumi/pull/5158) - Add support for extracting jar files in archive resources [#5150](https://github.com/pulumi/pulumi/pull/5150) - SDK changes to support Python input/output classes [#5033](https://github.com/pulumi/pulumi/pull/5033) ## 2.8.2 (2020-08-07) - Add nuget badge to README [#5117](https://github.com/pulumi/pulumi/pull/5117) - Support publishing and consuming Policy Packs using any runtime [#5102](https://github.com/pulumi/pulumi/pull/5102) - Fix regression where any CLI integration for any stack with a default secrets provider would sort the config alphabetically and new stacks created would get created with an empty map `{}` in the config file [#5132](https://github.com/pulumi/pulumi/pull/5132) ## 2.8.1 (2020-08-05) - Fix a bug where passphrase managers were not being recognised correctly when getting the configuration for the current stack. **Please Note:** This specific bug may have caused the stack config file to remove the password encryption salt. [#5110](https://github.com/pulumi/pulumi/pull/5110) ## 2.8.0 (2020-08-04) - Add missing MapMap and ArrayArray types to Go SDK [#5092](https://github.com/pulumi/pulumi/pull/5092) - Switch os/user package with luser drop in replacement [#5065](https://github.com/pulumi/pulumi/pull/5065) - Update pip/setuptools/wheel in virtual environment before installing dependencies [#5042](https://github.com/pulumi/pulumi/pull/5042) - Add ability to change a secrets provider for the current stack [#5031](https://github.com/pulumi/pulumi/pull/5031) - Add ability to create a stack based on the config from an existing stack [#5062](https://github.com/pulumi/pulumi/pull/5062) - Python: Improved error message when `virtualenv` doesn't exist [#5069](https://github.com/pulumi/pulumi/pull/5069) - Enable pushing to Artifact Registry in actions [#5075](https://github.com/pulumi/pulumi/pull/5075) ## 2.7.1 (2020-07-22) - Fix logic to parse pulumi venv on github action [5038](https://github.com/pulumi/pulumi/pull/5038) ## 2.7.0 (2020-07-22) - Add pluginDownloadURL field to package definition [#4947](https://github.com/pulumi/pulumi/pull/4947) - Add support for streamInvoke during update [#4990](https://github.com/pulumi/pulumi/pull/4990) - Add ability to copy configuration values between stacks [#4971](https://github.com/pulumi/pulumi/pull/4971) - Add logic to parse pulumi venv on github action [#4994](https://github.com/pulumi/pulumi/pull/4994) - Better performance for stacks with many resources using the .NET SDK [#5015](https://github.com/pulumi/pulumi/pull/5015) - Output PDB files and enable SourceLink integration for .NET assemblies [#4967](https://github.com/pulumi/pulumi/pull/4967) ## 2.6.1 (2020-07-09) - Fix a panic in the display during CLI operations [#4987](https://github.com/pulumi/pulumi/pull/4987) ## 2.6.0 (2020-07-08) - Go program gen: Improved handling for pulumi.Map types [#4914](https://github.com/pulumi/pulumi/pull/4914) - Go SDK: Input type interfaces should declare pointer type impls where appropriate [#4911](https://github.com/pulumi/pulumi/pull/4911) - Fixes issue where base64-encoded GOOGLE_CREDENTIALS causes problems with other commands [#4972](https://github.com/pulumi/pulumi/pull/4972) ## 2.5.0 (2020-06-25) - Go program gen: prompt array conversion, unused range vars, id handling [#4884](https://github.com/pulumi/pulumi/pull/4884) - Go program gen handling for prompt optional primitives [#4875](https://github.com/pulumi/pulumi/pull/4875) - Go program gen All().Apply rewriter [#4858](https://github.com/pulumi/pulumi/pull/4858) - Go program gen improvements (multiline strings, get/lookup disambiguation, invoke improvements) [#4850](https://github.com/pulumi/pulumi/pull/4850) - Go program gen improvements (splat, all, index, traversal, range) [#4831](https://github.com/pulumi/pulumi/pull/4831) - Go program gen improvements (resource range, readDir, fileArchive) [#4818](https://github.com/pulumi/pulumi/pull/4818) - Set default config namespace for Get/Try/Require methods in Go SDK. [#4802](https://github.com/pulumi/pulumi/pull/4802) - Handle invalid UTF-8 characters before RPC calls [#4816](https://github.com/pulumi/pulumi/pull/4816) - Improve typing for Go SDK secret config values [#4800](https://github.com/pulumi/pulumi/pull/4800) - Fix panic on `pulumi up` prompt after preview when filtering and hitting arrow keys. [#4808](https://github.com/pulumi/pulumi/pull/4808) - Ensure GitHub Action authenticates to GCR when `$GOOGLE_CREDENTIALS` specified [#4812](https://github.com/pulumi/pulumi/pull/4812) - Fix `pylint(no-member)` when accessing `resource.id`. [#4813](https://github.com/pulumi/pulumi/pull/4813) - Fix GitHub Actions environment detection for PRs. [#4817](https://github.com/pulumi/pulumi/pull/4817) - Adding language sdk specific docker containers. [#4837](https://github.com/pulumi/pulumi/pull/4837) - Workaround bug in grcpio v1.30.0 by excluding this version from required dependencies. [#4883](https://github.com/pulumi/pulumi/pull/4883) ## 2.4.0 (2020-06-10) - Turn program generation NYIs into diagnostic errors [#4794](https://github.com/pulumi/pulumi/pull/4794) - Improve dev version detection logic [#4732](https://github.com/pulumi/pulumi/pull/4732) - Export `CustomTimeouts` in the Python SDK [#4747](https://github.com/pulumi/pulumi/pull/4747) - Add GitHub Actions CI detection [#4758](https://github.com/pulumi/pulumi/pull/4758) - Allow users to specify base64 encoded strings as GOOGLE_CREDENTIALS [#4773](https://github.com/pulumi/pulumi/pull/4773) - Install and use dependencies automatically for new Python projects. [#4775](https://github.com/pulumi/pulumi/pull/4775) ## 2.3.0 (2020-05-27) - Add F# operators for InputUnion. [#4699](https://github.com/pulumi/pulumi/pull/4699) - Add support for untagged outputs in Go SDK. [#4640](https://github.com/pulumi/pulumi/pull/4640) - Update go-cloud to support all Azure regions [#4643](https://github.com/pulumi/pulumi/pull/4643) - Fix a Regression in .NET unit testing. [#4656](https://github.com/pulumi/pulumi/pull/4656) - Allow `pulumi.export` calls from Python unit tests. [#4670](https://github.com/pulumi/pulumi/pull/4670) - Add support for publishing Python policy packs. [#4644](https://github.com/pulumi/pulumi/pull/4644) - Improve download perf by fetching plugins from a CDN. [#4692](https://github.com/pulumi/pulumi/pull/4692) ## 2.2.1 (2020-05-13) - Add new brew target to fix homebrew builds [#4633](https://github.com/pulumi/pulumi/pull/4633) ## 2.2.0 (2020-05-13) - Fixed ResourceOptions issue with stack references in Python SDK [#4553](https://github.com/pulumi/pulumi/pull/4553) - Add runTask to F# Deployment module [#3858](https://github.com/pulumi/pulumi/pull/3858) - Add support for generating Fish completions [#4401](https://github.com/pulumi/pulumi/pull/4401) - Support map-typed inputs in RegisterResource for Go SDK [#4522](https://github.com/pulumi/pulumi/pull/4522) - Don't call IMocks.NewResourceAsync for the root stack resource [#4527](https://github.com/pulumi/pulumi/pull/4527) - Add ResourceOutput type to Go SDK [#4575](https://github.com/pulumi/pulumi/pull/4575) - Allow secrets to be decrypted when exporting a stack [#4046](https://github.com/pulumi/pulumi/pull/4046) - Commands checking for a confirmation or requiring a `--yes` flag can now be skipped by setting `PULUMI_SKIP_CONFIRMATIONS` to `1` or `true`. [#4477](https://github.com/pulumi/pulumi/pull/4477) ## 2.1.1 (2020-05-11) - Add retry support when writing to state buckets [#4494](https://github.com/pulumi/pulumi/pull/4494) ## 2.1.0 (2020-04-28) - Fix infinite recursion bug for Go SDK [#4516](https://github.com/pulumi/pulumi/pull/4516) - Order secretOutputNames when used in stack references [#4489](https://github.com/pulumi/pulumi/pull/4489) - Add support for a `PULUMI_CONSOLE_DOMAIN` environment variable to override the behavior for how URLs to the Pulumi Console are generated. [#4410](https://github.com/pulumi/pulumi/pull/4410) - Protect against panic when unprotecting non-existant resources [#4441](https://github.com/pulumi/pulumi/pull/4441) - Add flag to `pulumi stack` to output only the stack name [#4450](https://github.com/pulumi/pulumi/pull/4450) - Ensure Go accessor methods correctly support nested fields of optional outputs [#4456](https://github.com/pulumi/pulumi/pull/4456) - Improve `ResourceOptions.merge` type in Python SDK [#4484](https://github.com/pulumi/pulumi/pull/4484) - Ensure generated Python module names are keyword-safe. [#4473](https://github.com/pulumi/pulumi/pull/4473) - Explicitly set XDG_CONFIG_HOME and XDG_CACHE_HOME env vars for helm in the pulumi docker image [#4474](https://github.com/pulumi/pulumi/pull/4474) - Increase the MaxCallRecvMsgSize for all RPC calls. [#4455](https://github.com/pulumi/pulumi/pull/4455) ## 2.0.0 (2020-04-16) - CLI behavior change. Commands in non-interactive mode (i.e. when `pulumi` has its output piped to another process or running on CI) will not default to assuming that `--yes` was passed in. `--yes` is now explicitly required to proceed in non-interactive scenarios. This affects: * `pulumi destroy` * `pulumi new` * `pulumi refresh` * `pulumi up` - Fixed [crashes and hangs](https://github.com/pulumi/pulumi/issues/3528) introduced by usage of another library. - @pulumi/pulumi now requires Node.js version >=10.10.0. - All data-source invocations are now asynchronous (Promise-returning) by default. - C# code generation switched to schema. - .NET API: replace `IDeployment` interface with `DeploymentInstance` class. - Fix Go SDK secret propagation for Resource inputs/outputs. [#4387](https://github.com/pulumi/pulumi/pull/4387) - Fix Go codegen to emit config packages [#4388](https://github.com/pulumi/pulumi/pull/4388) - Treat config values set with `--path` that start with '0' as strings rather than numbers. [#4393](https://github.com/pulumi/pulumi/pull/4393) - Switch .NET projects to .NET Core 3.1 [#4400](https://github.com/pulumi/pulumi/pull/4400) - Avoid unexpected replace on resource with `import` applied on second update. [#4403](https://github.com/pulumi/pulumi/pull/4403) ## 1.14.1 (2020-04-13) - Propagate `additionalSecretOutputs` opt to Read in NodeJS. [#4307](https://github.com/pulumi/pulumi/pull/4307) - Fix handling of `nil` values in Outputs in Go. [#4268](https://github.com/pulumi/pulumi/pull/4268) - Include usage hints for Input types in Go SDK [#4279](https://github.com/pulumi/pulumi/pull/4279) - Fix secretness propagation in Python `apply`. [#4273](https://github.com/pulumi/pulumi/pull/4273) - Fix the `call` mock in Python. [#4274](https://github.com/pulumi/pulumi/pull/4274) - Fix handling of secret values in mock-based tests. [#4272](https://github.com/pulumi/pulumi/pull/4272) - Automatic plugin acquisition for Go [#4297](https://github.com/pulumi/pulumi/pull/4297) - Define merge behavior for resource options in Go SDK [#4316](https://github.com/pulumi/pulumi/pull/4316) - Add overloads to Output.All in .NET [#4321](https://github.com/pulumi/pulumi/pull/4321) - Make prebuilt executables opt-in only for the Go SDK [#4338](https://github.com/pulumi/pulumi/pull/4338) - Support the `binary` option (prebuilt executables) for the .NET SDK [#4355](https://github.com/pulumi/pulumi/pull/4355) - Add helper methods for stack outputs in the Go SDK [#4341](https://github.com/pulumi/pulumi/pull/4341) - Add additional overloads to Deployment.RunAsync in .NET API. [#4286](https://github.com/pulumi/pulumi/pull/4286) - Automate execution of `go mod download` for `pulumi new` Go templates [#4353](https://github.com/pulumi/pulumi/pull/4353) - Fix `pulumi up -r -t $URN` not refreshing only the target [#4217](https://github.com/pulumi/pulumi/pull/4217) - Fix logout with file backend when state is deleted [#4218](https://github.com/pulumi/pulumi/pull/4218) - Fix specific flags for `pulumi stack` being global [#4294](https://github.com/pulumi/pulumi/pull/4294) - Fix error when setting config without value in non-interactive mode [#4358](https://github.com/pulumi/pulumi/pull/4358) - Propagate unknowns in Go SDK during marshal operations [#4369](https://github.com/pulumi/pulumi/pull/4369/files) - Fix Go SDK stack reference helpers to handle nil values [#4370](https://github.com/pulumi/pulumi/pull/4370) - Fix propagation of unknown status for secrets [#4377](https://github.com/pulumi/pulumi/pull/4377) ## 1.14.0 (2020-04-01) - Fix error related to side-by-side versions of `@pulumi/pulumi`. [#4235](https://github.com/pulumi/pulumi/pull/4235) - Allow users to specify an alternate backend URL when using the GitHub Actions container with the env var `PULUMI_BACKEND_URL`. [#4243](https://github.com/pulumi/pulumi/pull/4243) ## 1.13.1 (2020-03-27) - Move to a multi-module repo to enable modules for the Go SDK [#4109](https://github.com/pulumi/pulumi/pull/4109) - Report compile time errors for Go programs during plugin acquisition. [#4141](https://github.com/pulumi/pulumi/pull/4141) - Add missing builtin `MapArray` to Go SDK. [#4144](https://github.com/pulumi/pulumi/pull/4144) - Add aliases to Go SDK codegen pkg. [#4157](https://github.com/pulumi/pulumi/pull/4157) - Discontinue testing on Node 8 (which has been end-of-life since January 2020), and start testing on Node 13. [#4156](https://github.com/pulumi/pulumi/pull/4156) - Add support for enabling Policy Packs with configuration. [#3756](https://github.com/pulumi/pulumi/pull/4127) - Remove obsolete .NET serialization attributes. [#4190](https://github.com/pulumi/pulumi/pull/4190) - Add support for validating Policy Pack configuration. [#4179](https://github.com/pulumi/pulumi/pull/4186) ## 1.13.0 (2020-03-18) - Add support for plugin acquisition for Go programs [#4060](https://github.com/pulumi/pulumi/pull/4060) - Display resource type in PAC violation output [#4061](https://github.com/pulumi/pulumi/issues/4061) - Update to Helm v3 in pulumi Docker image [#4090](https://github.com/pulumi/pulumi/pull/4090) - Add ArrayMap builtin types to Go SDK [#4086](https://github.com/pulumi/pulumi/pull/4086) - Improve documentation of URL formats for `pulumi login` [#4059](https://github.com/pulumi/pulumi/pull/4059) - Add support for stack transformations in the .NET SDK. [#4008](https://github.com/pulumi/pulumi/pull/4008) - Fix `pulumi stack ls` on Windows [#4094](https://github.com/pulumi/pulumi/pull/4094) - Add support for running Python policy packs. [#4057](https://github.com/pulumi/pulumi/pull/4057) ## 1.12.1 (2020-03-11) - Fix Kubernetes YAML parsing error in .NET. [#4023](https://github.com/pulumi/pulumi/pull/4023) - Avoid projects beginning with `Pulumi` to stop cyclic imports [#4013](https://github.com/pulumi/pulumi/pull/4013) - Ensure we can locate Go created application binaries on Windows [#4030](https://github.com/pulumi/pulumi/pull/4030) - Ensure Python overlays work as part of our SDK generation [#4043](https://github.com/pulumi/pulumi/pull/4043) - Fix terminal gets into a state where UP/DOWN don't work with prompts. [#4042](https://github.com/pulumi/pulumi/pull/4042) - Ensure old provider is not used when configuration has changed [#4051](https://github.com/pulumi/pulumi/pull/4051) - Support for unit testing and mocking in the .NET SDK. [#3696](https://github.com/pulumi/pulumi/pull/3696) ## 1.12.0 (2020-03-04) - Avoid Configuring providers which are not used during preview. [#4004](https://github.com/pulumi/pulumi/pull/4004) - Fix missing module import on Windows platform. [#3983](https://github.com/pulumi/pulumi/pull/3983) - Add support for mocking the resource monitor to the NodeJS and Python SDKs. [#3738](https://github.com/pulumi/pulumi/pull/3738) - Reinstate caching of TypeScript compilation. [#4007](https://github.com/pulumi/pulumi/pull/4007) - Remove the need to set PULUMI_EXPERIMENTAL to use the policy and watch commands. [#4001](https://github.com/pulumi/pulumi/pull/4001) - Fix type annotations for `Output.all` and `Output.concat` in Python SDK. [#4016](https://github.com/pulumi/pulumi/pull/4016) - Add support for configuring policies. [#4015](https://github.com/pulumi/pulumi/pull/4015) ## 1.11.1 (2020-02-26) - Fix a regression for CustomTimeouts in Python SDK. [#3964](https://github.com/pulumi/pulumi/pull/3964) - Avoid panic when displaying failed stack policies. [#3960](https://github.com/pulumi/pulumi/pull/3960) - Add support for secrets in the Go SDK. [3938](https://github.com/pulumi/pulumi/pull/3938) - Add support for transformations in the Go SDK. [3978](https://github.com/pulumi/pulumi/pull/3938) ## 1.11.0 (2020-02-19) - Allow oversize protocol buffers for Python SDK. [#3895](https://github.com/pulumi/pulumi/pull/3895) - Avoid duplicated messages in preview/update progress display. [#3890](https://github.com/pulumi/pulumi/pull/3890) - Improve CPU utilization in the Python SDK when waiting for resource operations. [#3892](https://github.com/pulumi/pulumi/pull/3892) - Expose resource options, parent, dependencies, and provider config to policies. [#3862](https://github.com/pulumi/pulumi/pull/3862) - Move .NET SDK attributes to the root namespace. [#3902](https://github.com/pulumi/pulumi/pull/3902) - Support exporting older stack versions. [#3906](https://github.com/pulumi/pulumi/pull/3906) - Disable interactive progress display when no terminal size is available. [#3936](https://github.com/pulumi/pulumi/pull/3936) - Mark `ResourceOptions` class as abstract in the .NET SDK. Require the use of derived classes. [#3943](https://github.com/pulumi/pulumi/pull/3943) ## 1.10.1 (2020-02-06) - Support stack references in the Go SDK. [#3829](https://github.com/pulumi/pulumi/pull/3829) - Fix the Windows release process. [#3875](https://github.com/pulumi/pulumi/pull/3875) ## 1.10.0 (2020-02-05) - Avoid writing checkpoints to backend storage in common case where no changes are being made. [#3860](https://github.com/pulumi/pulumi/pull/3860) - Add information about an in-flight operation to the stack command output, if applicable. [#3822](https://github.com/pulumi/pulumi/pull/3822) - Update `SummaryEvent` to include the actual name and local file path for locally-executed policy packs. - Add support for aliases in the Go SDK [3853](https://github.com/pulumi/pulumi/pull/3853) - Fix Python Dynamic Providers on Windows. [#3855](https://github.com/pulumi/pulumi/pull/3855) ## 1.9.1 (2020-01-27) - Fix a stack reference regression in the Python SDK. [#3798](https://github.com/pulumi/pulumi/pull/3798) - Fix a buggy assertion in the Go SDK. [#3794](https://github.com/pulumi/pulumi/pull/3794) - Add `--latest` flag to `pulumi policy enable`. - Breaking change for Policy which removes requirement for version when running `pulumi policy disable`. Add `--version` flag if user wants to specify version of Policy Pack to disable. - Fix rendering of Policy Packs to ensure they are always displayed. - Primitive input types in the Go SDK (e.g. Int, String, etc.) now implement the corresponding Ptr type e.g. IntPtr, StringPtr, etc.). This is consistent with the output of the Go code generator and is much more ergonomic for optional inputs than manually converting to pointer types. [#3806](https://github.com/pulumi/pulumi/pull/3806) - Add ability to specify all versions when removing a Policy Pack. - Breaking change to Policy command: Change enable command to use `pulumi policy enable / latest` instead of a `--latest` flag. ## 1.9.0 (2020-01-22) - Publish python types for PEP 561 [#3704](https://github.com/pulumi/pulumi/pull/3704) - Lock dep ts-node to v8.5.4 [#3733](https://github.com/pulumi/pulumi/pull/3733) - Improvements to `pulumi policy` functionality. Add ability to remove & disable Policy Packs. - Breaking change for Policy which is in Public Preview: Change `pulumi policy apply` to `pulumi policy enable`, and allow users to specify the Policy Group. - Add Permalink to output when publishing a Policy Pack. - Add `pulumi policy ls` and `pulumi policy group ls` to list Policy related resources. - Add `BuildNumber` to CI vars and backend metadata property bag for CI systems that have separate ID and a user-friendly number. [#3766](https://github.com/pulumi/pulumi/pull/3766) - Breaking changes for the Go SDK. Complete details are in [#3506](https://github.com/pulumi/pulumi/pull/3506). ## 1.8.1 (2019-12-20) - Fix a panic in `pulumi stack select`. [#3687](https://github.com/pulumi/pulumi/pull/3687) ## 1.8.0 (2019-12-19) - Update version of TypeScript used by Pulumi to `3.7.3`. [#3627](https://github.com/pulumi/pulumi/pull/3627) - Add support for GOOGLE_CREDENTIALS when using Google Cloud Storage backend. [#2906](https://github.com/pulumi/pulumi/pull/2906) ```sh export GOOGLE_CREDENTIALS="$(cat ~/service-account-credentials.json)" pulumi login gs://my-bucket ``` - Support for using `Config`, `getProject()`, `getStack()`, and `isDryRun()` from Policy Packs. [#3612](https://github.com/pulumi/pulumi/pull/3612) - Top-level Stack component in the .NET SDK. [#3618](https://github.com/pulumi/pulumi/pull/3618) - Add the .NET Core 3.0 runtime to the `pulumi/pulumi` container. [#3616](https://github.com/pulumi/pulumi/pull/3616) - Add `pulumi preview` support for `--refresh`, `--target`, `--replace`, `--target-replace` and `--target-dependents` to align with `pulumi up`. [#3675](https://github.com/pulumi/pulumi/pull/3675) - `ComponentResource`s now have built-in support for asynchronously constructing their children. [#3676](https://github.com/pulumi/pulumi/pull/3676) - `Output.apply` (for the JS, Python and .Net sdks) has updated semantics, and will lift dependencies from inner Outputs to the returned Output. [#3663](https://github.com/pulumi/pulumi/pull/3663) - Fix bug in determining PRNumber and BuildURL for an Azure Pipelines CI environment. [#3677](https://github.com/pulumi/pulumi/pull/3677) - Improvements to `pulumi policy` functionality. Add ability to remove & disable Policy Packs. - Breaking change for Policy which is in Public Preview: Change `pulumi policy apply` to `pulumi policy enable`, and allow users to specify the Policy Group. ## 1.7.1 (2019-12-13) - Fix [SxS issue](https://github.com/pulumi/pulumi/issues/3652) introduced in 1.7.0 when assigning `Output`s across different versions of the `@pulumi/pulumi` SDK. [#3658](https://github.com/pulumi/pulumi/pull/3658) ## 1.7.0 (2019-12-11) - A Pulumi JavaScript/TypeScript program can now consist of a single exported top level function. This allows for an easy approach to create a Pulumi program that needs to perform `async`/`await` operations at the top-level. [#3321](https://github.com/pulumi/pulumi/pull/3321) ```ts // JavaScript module.exports = async () => { } //TypeScript export = async () => { } ``` ## 1.6.1 (2019-11-26) - Support passing a parent and providers for `ReadResource`, `RegisterResource`, and `Invoke` in the go SDK. [#3563](https://github.com/pulumi/pulumi/pull/3563) - Fix go SDK ReadResource. [#3581](https://github.com/pulumi/pulumi/pull/3581) - Fix go SDK DeleteBeforeReplace. [#3572](https://github.com/pulumi/pulumi/pull/3572) - Support for setting the `PULUMI_PREFER_YARN` environment variable to opt-in to using `yarn` instead of `npm` for installing Node.js dependencies. [#3556](https://github.com/pulumi/pulumi/pull/3556) - Fix regression that prevented relative paths passed to `--policy-pack` from working. [#3565](https://github.com/pulumi/pulumi/issues/3564) ## 1.6.0 (2019-11-20) - Support for config.GetObject and related variants for Golang. [#3526](https://github.com/pulumi/pulumi/pull/3526) - Add support for IgnoreChanges in the go SDK. [#3514](https://github.com/pulumi/pulumi/pull/3514) - Support for a `go run` style workflow. Building or installing a pulumi program written in go is now optional. [#3503](https://github.com/pulumi/pulumi/pull/3503) - Re-apply "propagate resource inputs to resource state during preview, including first-class unknown values." The new set of changes have additional fixes to ensure backwards compatibility with earlier code. This allows the preview to better estimate the state of a resource after an update, including property values that were populated using defaults calculated by the provider. [#3327](https://github.com/pulumi/pulumi/pull/3327) - Validate StackName when passing a non-default secrets provider to `pulumi stack init` - Add support for go1.13.x - `pulumi update --target` and `pulumi destroy --target` will both error if they determine a dependent resource needs to be updated, destroyed, or created that was not was specified in the `--target` list. To proceed with an `update/destroy` after this error, either specify all the reported resources as `--target`s, or pass the `--target-dependents` flag to allow necessary changes to unspecified dependent targets. - Support for node 13.x, building with gcc 8 and newer. [#3512] (https://github.com/pulumi/pulumi/pull/3512) - Codepaths which could result in a hang will print a message to the console indicating the problem, along with a link to documentation on how to restructure code to best address it. ### Compatibility - `StackReference.getOutputSync` and `requireOutputSync` are deprecated as they may cause hangs on some combinations of Node and certain OS platforms. `StackReference.getOutput` and `requireOutput` should be used instead. ## 1.5.2 (2019-11-13) - `pulumi policy publish` now determines the Policy Pack name from the Policy Pack, and the the `org-name` CLI argument is now optional. If not specified; the current user account is used. [#3459](https://github.com/pulumi/pulumi/pull/3459) - Refactor the Output API in the Go SDK. [#3496](https://github.com/pulumi/pulumi/pull/3496) ## 1.5.1 (2019-11-06) - Include the .NET language provider in the Windows SDK. ## 1.5.0 (2019-11-06) - Gracefully handle errors when resources use duplicate aliases. - Use the update token for renew_lease calls and update the API version to 5. [#3348](https://github.com/pulumi/pulumi/pull/3348) - Improve startup time performance by 0.5-1s by checking for a newer CLI release in parallel. [#3441](https://github.com/pulumi/pulumi/pull/3441) - Add an experimental `pulumi watch` command. [#3391](https://github.com/pulumi/pulumi/pull/3391) ## 1.4.1 (2019-11-01) - Adds a **preview** of .NET support for Pulumi. This code is an preview state and is subject to change at any point. - Fix another colorizer issue that could cause garbled output for messages that did not end in colorization tags. [#3417](https://github.com/pulumi/pulumi/pull/3417) - Verify deployment integrity during import and issue an error if verification fails. The state file can still be imported by passing the `--force` flag. [#3422](https://github.com/pulumi/pulumi/pull/3422) - Omit unknowns in resources in stack outputs during preview. [#3427](https://github.com/pulumi/pulumi/pull/3427) - `pulumi update` can now be instructed that a set of resources should be replaced by adding a `--replace urn` argument. Multiple resources can be specified using `--replace urn1 --replace urn2`. In order to replace exactly one resource and leave other resources unchanged, invoke `pulumi update --replace urn --target urn`, or `pulumi update --target-replace urn` for short. [#3418](https://github.com/pulumi/pulumi/pull/3418) - `pulumi stack` now renders the stack as a tree view. [#3430](https://github.com/pulumi/pulumi/pull/3430) - Support for lists and maps in config. [#3342](https://github.com/pulumi/pulumi/pull/3342) - `ResourceProvider#StreamInvoke` implemented, will be the basis for streaming APIs in `pulumi query`. [#3424](https://github.com/pulumi/pulumi/pull/3424) ## 1.4.0 (2019-10-24) - `FileAsset` in the Python SDK now accepts anything implementing `os.PathLike` in addition to `str`. [#3368](https://github.com/pulumi/pulumi/pull/3368) - Fix colorization on Windows 10, and fix a colorizer bug that could cause garbled output for resources with long status messages. [#3385](https://github.com/pulumi/pulumi/pull/3385) ## 1.3.4 (2019-10-18) - Remove unintentional console outupt introduced in 1.3.3. ## 1.3.3 (2019-10-17) - Fix an issue with first-class providers introduced in 1.3.2. ## 1.3.2 (2019-10-16) - Fix hangs and crashes related to use of `getResource` (i.e. `aws.ec2.getSubnetIds(...)`) methods, including frequent hangs on Node.js 12. This fixes https://github.com/pulumi/pulumi/issues/3260) and [hangs](https://github.com/pulumi/pulumi/issues/3309). Some less common existing styles of using `getResource` calls are also deprecated as part of this change, and users should see https://www.pulumi.com/docs/troubleshooting/#synchronous-call for details on adjusting their code if needed. ## 1.3.1 (2019-10-09) - Revert "propagate resource inputs to resource state during preview". These changes had a critical issue that needs further investigation. ## 1.3.0 (2019-10-09) - Propagate resource inputs to resource state during preview, including first-class unknown values. This allows the preview to better estimate the state of a resource after an update, including property values that were populated using defaults calculated by the provider. [#3245](https://github.com/pulumi/pulumi/pull/3245) - Fetch version information from the Homebrew JSON API for CLIs installed using `brew`. [#3290](https://github.com/pulumi/pulumi/pull/3290) - Support renaming stack projects via `pulumi stack rename`. [#3292](https://github.com/pulumi/pulumi/pull/3292) - Add `helm` to `pulumi/pulumi` Dockerhub container [#3294](https://github.com/pulumi/pulumi/pull/3294) - Make the location of `.pulumi` folder configurable with an environment variable. [#3300](https://github.com/pulumi/pulumi/pull/3300) (Fixes [#2966](https://github.com/pulumi/pulumi/issues/2966)) - `pulumi update` can now be scoped to update a single resource by adding a `--target urn` or `-t urn` argument. Multiple resources can be specified using `-t urn1 -t urn2`. - Adds the ability to provide transformations to modify the properties and resource options that will be used for any child resource of a component or stack. [#3174](https://github.com/pulumi/pulumi/pull/3174) - Add resource transformations support in Python. [#3319](https://github.com/pulumi/pulumi/pull/3319) ## 1.2.0 (2019-09-26) - Support emitting high-level execution trace data to a file and add a debug-only command to view trace data. [#3238](https://github.com/pulumi/pulumi/pull/3238) - Fix parsing of GitLab urls with subgroups. [#3239](https://github.com/pulumi/pulumi/pull/3239) - `pulumi refresh` can now be scoped to refresh a subset of resources by adding a `--target urn` or `-t urn` argument. Multiple resources can be specified using `-t urn1 -t urn2`. - `pulumi destroy` can now be scoped to delete a single resource (and its dependents) by adding a `--target urn` or `-t urn` argument. Multiple resources can be specified using `-t urn1 -t urn2`. - Avoid re-encrypting secret values on each checkpoint write. These changes should improve update times for stacks that contain secret values. [#3183](https://github.com/pulumi/pulumi/pull/3183) - Add Codefresh CI detection. - Add `-c` (config array) flag to the `preview` command. ## 1.1.0 (2019-09-11) - Fix a bug that caused the Python runtime to ignore unhandled exceptions and erroneously report that a Pulumi program executed successfully. [#3170](https://github.com/pulumi/pulumi/pull/3170) - Read operations are no longer considered changes for the purposes of `--expect-no-changes`. [#3197](https://github.com/pulumi/pulumi/pull/3197) - Increase the MaxCallRecvMsgSize for interacting with the gRPC server. [#3201](https://github.com/pulumi/pulumi/pull/3201) - Do not ask for a passphrase in non-interactive sessions (fix [#2758](https://github.com/pulumi/pulumi/issues/2758)). [#3204](https://github.com/pulumi/pulumi/pull/3204) - Support combining the filestate backend (local or remote storage) with the cloud-backed secrets providers (KMS, etc.). [#3198](https://github.com/pulumi/pulumi/pull/3198) - Moved `@pulumi/pulumi` to target `es2016` instead of `es6`. As `@pulumi/pulumi` programs run inside Nodejs, this should not change anything externally as Nodejs already provides es2016 support. Internally, this makes more APIs available for `@pulumi/pulumi` to use in its implementation. - Fix the --stack option of the `pulumi new` command. ([#3131](https://github.com/pulumi/pulumi/pull/3131) fixes [#2880](https://github.com/pulumi/pulumi/issues/2880)) ## 1.0.0 (2019-09-03) - No significant changes. ## 1.0.0-rc.1 (2019-08-28) - Print a Welcome to Pulumi message for users during interactive logins to the Pulumi CLI. [#3145](https://github.com/pulumi/pulumi/pull/3145) - Filter the list of templates shown by default during `pulumi new`. [#3147](https://github.com/pulumi/pulumi/pull/3147) ## 1.0.0-beta.4 (2019-08-22) - Fix a crash when using StackReference from the `1.0.0-beta.3` version of `@pulumi/pulumi` and `1.0.0-beta.2` or earlier of the CLI. - Allow Un/MashalProperties to reject Asset and AssetArchive types. (partial fix for https://github.com/pulumi/pulumi-kubernetes/issues/737) ## 1.0.0-beta.3 (2019-08-21) - When using StackReference to fetch output values from another stack, do not mark a value as secret if it was not secret in the stack you referenced. (fixes [#2744](https://github.com/pulumi/pulumi/issues/2744)). - Allow resource IDs to be changed during `pulumi refresh` operations - Do not crash when renaming a stack that has never been updated, when using the local backend. (fixes [#2654](https://github.com/pulumi/pulumi/issues/2654)) - Fix intermittet "NoSuchKey" issues when using the S3 based backend. (fixes [#2714](https://github.com/pulumi/pulumi/issues/2714)). - Support filting stacks by organization or tags when using `pulumi stack ls`. (fixes [#2712](https://github.com/pulumi/pulumi/issues/), [#2769](https://github.com/pulumi/pulumi/issues/2769) - Explicitly setting `deleteBeforeReplace` to `false` now overrides the provider's decision. [#3118](https://github.com/pulumi/pulumi/pull/3118) - Fail read steps (e.g. the step generated by a call to `aws.s3.Bucket.get()`) if the requested resource does not exist. [#3123](https://github.com/pulumi/pulumi/pull/3123) ## 1.0.0-beta.2 (2019-08-13) - Fix the package version compatibility checks in the NodeJS language host. [#3083](https://github.com/pulumi/pulumi/pull/3083) ## 1.0.0-beta.1 (2019-08-13) - Do not propagate input properties to missing output properties during preview. The old behavior can cause issues that are difficult to diagnose in cases where the actual value of the output property differs from the value of the input property, and can cause `apply`s to run at unexpected times. If this change causes issues in a Pulumi program, the original behavior can be enabled by setting the `PULUMI_ENABLE_LEGACY_APPLY` environment variable to `true`. - Fix a bug in the GitHub Actions program preventing errors from being rendered in the Actions log on github.com. [#3036](https://github.com/pulumi/pulumi/pull/3036) - Fix a bug in the Node.JS SDK that caused failure details for provider functions to go unreported. [#3048](https://github.com/pulumi/pulumi/pull/3048) - Fix a bug in the Python SDK that caused crashes when using asynchronous data sources. [#3056](https://github.com/pulumi/pulumi/pull/3056) - Fix crash when exporting secrets from a pulumi app [#2962](https://github.com/pulumi/pulumi/issues/2962) - Fix a panic in logger when a secret contains non-printable characters [#3074](https://github.com/pulumi/pulumi/pull/3074) - Check the uniqueness of the project name during pulumi new [#3065](https://github.com/pulumi/pulumi/pull/3065) ## 0.17.28 (2019-08-05) - Retry renaming a temporary folder during plugin installation [#3008](https://github.com/pulumi/pulumi/pull/3008) - Add support for additional Pulumi secrets providers using AWS KMS, Azure KeyVault, Google Cloud KMS and HashiCorp Vault. These secrets providers can be configured at stack creation time using `pulumi stack init b --secrets-provider="awskms://alias/LukeTesting?region=us-west-2"`, and ensure that all encrypted data associated with the stack is encrypted using the target cloud platform encryption keys. This augments the previous choice between using the app.pulumi.com-managed secrets encryption or a fully-client-side local passphrase encryption. [#2994](https://github.com/pulumi/pulumi/pull/2994) - Add `Output.concat` to Python SDK [#3006](https://github.com/pulumi/pulumi/pull/3006) - Add `requireOutput` to `StackReference` [#3007](https://github.com/pulumi/pulumi/pull/3007) - Arbitrary values can now be exported from a Python app. This includes dictionaries, lists, class instances, and the like. Values are treated as "plain old python data" and generally kept as simple values (like strings, numbers, etc.) or the simple collections supported by the Pulumi data model (specifically, dictionaries and lists). - Fix `get_secret` in Python SDK always returning None. - Make `pulumi.runtime.invoke` synchronous in the Python SDK [#3019](https://github.com/pulumi/pulumi/pull/3019) - Fix a bug in the Python SDK that caused input properties that are coroutines to be awaited twice. [#3024](https://github.com/pulumi/pulumi/pull/3024) ### Compatibility - Deprecated functions in `@pulumi/pulumi` will now issue warnings if you call them. Please migrate off of these functions as they will be removed in a future release. The deprecated functions are. 1. `function computeCodePaths(extraIncludePaths?: string[], ...)`. Use the `computeCodePaths` overload that takes a `CodePathOptions` instead. 2. `function serializeFunctionAsync`. Please use `serializeFunction` instead. ## 0.17.27 (2019-07-29) - Fix an error message from the logging subsystem which was introduced in v0.17.26 [#2989](https://github.com/pulumi/pulumi/pull/2997) - Add support for property paths in `ignoreChanges`, and pass `ignoreChanges` to providers [#3005](https://github.com/pulumi/pulumi/pull/3005). This allows differences between the actual and desired state of the resource that are not captured by differences in the resource's inputs to be ignored (including differences that may occur due to resource provider bugs). ## 0.17.26 (2019-07-26) - Add `get_object`, `require_object`, `get_secret_object` and `require_secret_object` APIs to Python `config` module [#2959](https://github.com/pulumi/pulumi/pull/2959) - Fix unexpected provider replacements when upgrading from older CLIs and older providers [pulumi/pulumi-kubernetes#645](https://github.com/pulumi/pulumi-kubernetes/issues/645) - Add *Python* support for renaming resources via the `aliases` resource option. Adding aliases allows new resources to match resources from previous deployments which used different names, maintaining the identity of the resource and avoiding replacements or re-creation of the resource. This was previously added to the *JavaScript* sdk in 0.17.15. [#2974](https://github.com/pulumi/pulumi/pull/2974) ## 0.17.25 (2019-07-19) - Support for Dynamic Providers in Python [#2900](https://github.com/pulumi/pulumi/pull/2900) ## 0.17.24 (2019-07-19) - Fix a crash when two different versions of `@pulumi/pulumi` are used in the same Pulumi program [#2942](https://github.com/pulumi/pulumi/issues/2942) ## 0.17.23 (2019-07-16) - `pulumi new` allows specifying a local path to templates (resolves [#2672](https://github.com/pulumi/pulumi/issues/2672)) - Fix an issue where a file archive created on Windows would contain back-slashes [#2784](https://github.com/pulumi/pulumi/issues/2784) - Fix an issue where output values of a resource would not be present when they contained secret values, when using Python. - Fix an issue where emojis are printed in non-interactive mode. (fixes [#2871](https://github.com/pulumi/pulumi/issues/2871)) - Promises/Outputs can now be directly exported as the top-level (i.e. not-named) output of a Stack. (fixes [#2910](https://github.com/pulumi/pulumi/issues/2910)) - Add support for importing existing resources to be managed using Pulumi. A resource can be imported by setting the `import` property in the resource options bag when instantiating a resource. In order to successfully import a resource, its desired configuration (i.e. its inputs) must not differ from its actual configuration (i.e. its state) as calculated by the resource's provider. - Better error message for missing npm on `pulumi new` (fixes [#1511](https://github.com/pulumi/pulumi/issues/1511)) - Add the ability to pass a customTimeouts object from the providers across the engine to resource management. (fixes [#2655](https://github.com/pulumi/pulumi/issues/2655)) ### Breaking Changes - Defer to resource providers in all cases where the engine must determine whether or not a resource has changed. Note that this can expose bugs in the resources providers that cause diffs to be present even if the desired configuration matches the actual state of the resource: in these cases, users can set the `PULUMI_ENABLE_LEGACY_DIFF` environment variable to `1` or `true` to enable the old diff behavior. https://github.com/pulumi/pulumi/issues/2971 lists the known provider bugs exposed by these changes and links to appropriate workarounds or tracking issues. ## 0.17.22 (2019-07-11) - Improve update performance in cases where a large number of log messages are reported during an update. ## 0.17.21 (2019-06-26) - Python SDK fix for a crash resulting from a KeyError if secrets were used in configuration. - Fix an issue where a secret would not be encrypted in the state file if it was a property of a resource which was used as a stack output (fixes [#2862](https://github.com/pulumi/pulumi/issues/2862)) ## 0.17.20 (2019-06-23) - SDK fix for crash that could occasionally happen if there were multiple identical aliases to the same Resource. ## 0.17.19 (2019-06-23) - Engine fix for crash that could occasionally happen if there were multiple identical aliases to the same Resource. ## 0.17.18 (2019-06-20) - Allow setting backend URL explicitly in `Pulumi.yaml` file - `StackReference` now has a `.getOutputSync` function to retrieve exported values from an existing stack synchronously. This can be valuable when creating another stack that wants to base flow-control off of the values of an existing stack (i.e. importing the information about all AZs and basing logic off of that in a new stack). Note: this only works for importing values from Stacks that have not exported `secrets`. - When the environment variable `PULUMI_TEST_MODE` is set to `true`, the Python runtime will now behave as if `pulumi.runtime.settings._set_test_mode_enabled(True)` had been called. This mirrors the behavior for NodeJS programs (fixes [#2818](https://github.com/pulumi/pulumi/issues/2818)). - Resources that are only 'read' will no longer be displayed in the terminal tree-display anymore. These ended up heavily cluttering the display and often meant that programs without updates still showed a bunch of resources that weren't important. There will still be a message displayed indicating that a 'read' has happened to help know that these are going on and that the program is making progress. ## 0.17.17 (2019-06-12) ### Improvements - docs(login): escape codeblocks, and add object store state instructions [#2810](https://github.com/pulumi/pulumi/pull/2810) - The API for passing along a custom provider to a ComponentResource has been simplified. You can now just say `new SomeComponentResource(name, props, { provider: awsProvider })` instead of `new SomeComponentResource(name, props, { providers: { "aws" : awsProvider } })` - Fix a bug where the path provided to a URL in `pulumi login` is lost are dropped, so if you `pulumi login s3://bucketname/afolder`, the Pulumi files will be inside of `s3://bucketname/afolder/.pulumi` rather than `s3://bucketname/.pulumi` (thanks, [@bigkraig](https://github.com/bigkraig)!). **NOTE**: If you have been logging in to the s3 backend with a path after the bucket name, you will need to either move the .pulumi folder in the bucket to the correct location or log in again without the path prefix to see your previous stacks. - Fix a crash that would happen if you ran `pulumi stack output` against an empty stack (fixes [pulumi/pulumi#2792](https://github.com/pulumi/pulumi/issues/2792)). - Unparented Pulumi `CustomResource`s now support calling `.getProvider(...)` on them. ## 0.17.16 (2019-06-06) ### Improvements - Fixed a bug that caused an assertion when dealing with unchanged resources across version upgrades. ## 0.17.15 (2019-06-05) ### Improvements - Pulumi now allows Python programs to "read" existing resources instead of just creating them. This feature enables Pulumi Python packages to expose ".get()" methods that allow for reading of resources that already exist. - Support for referencing the outputs of other Pulumi stacks has been added to the Pulumi Python libraries via the `StackReference` type. - Add CI system detection for Bitbucket Pipelines. - Pulumi now tolerates changes in default providers in certain cases, which fixes an issue where users would see unexpected replaces when upgrading a Pulumi package. - Add support for renaming resources via the `aliases` resource option. Adding aliases allows new resources to match resources from previous deployments which used different names, maintaining the identity of the resource and avoiding replacements or re-creation of the resource. - `pulumi plugin install` gained a new optional argument `--server` which can be used to provide a custom server to be used when downloading a plugin. ## 0.17.14 (2019-05-28) ### Improvements - `pulumi refresh` now tries to install any missing plugins automatically like `pulumi destroy` and `pulumi update` do (fixes [pulumi/pulumi#2669](https://github.com/pulumi/pulumi/issues/2669)). - `pulumi whoami` now outputs the URL of the currently connected backend. - Correctly suppress stack outputs when serializing previews to JSON, i.e. `pulumi preview --json --suppress-outputs`. Fixes [pulumi/pulumi#2765](https://github.com/pulumi/pulumi/issues/2765). ## 0.17.13 (2019-05-21) ### Improvements - Fix an issue where creating a first class provider would fail if any of the configuration values for the providers were secrets. (fixes [pulumi/pulumi#2741](https://github.com/pulumi/pulumi/issues/2741)). - Fix an issue where when using `--diff` or looking at details for a proposed updated, the CLI might print text like: `<{%reset%}> --outputs:--<{%reset%}>` instead of just `--outputs:--`. - Fixes local login on Windows. Specifically, windows local paths are properly understood and backslashes `\` are not converted to `__5c__` in paths. - Fix an issue where some operations would fail with `error: could not deserialize deployment: unknown secrets provider type`. - Fix an issue where pulumi might try to replace existing resources when upgrading to the newest version of some resource providers. ## 0.17.12 (2019-05-15) ### Improvements - Pulumi now tells you much earlier when the `--secrets-provider` argument to `up` `init` or `new` has the wrong value. In addition, supported values are now listed in the help text. (fixes [pulumi/pulumi#2727](https://github.com/pulumi/pulumi/issues/2727)). - Pulumi no longer prompts for your passphrase twice during operations when you are using the passphrase based secrets provider. (fixes [pulumi/pulumi#2729](https://github.com/pulumi/pulumi/issues/2729)). - Fix an issue where complex inputs to a resource which contained secret values would not be stored correctly. - Fix a panic during property diffing when comparing two secret arrays. ## 0.17.11 (2019-05-13) ### Major Changes #### Secrets and Pluggable Encryption - The Pulumi engine and Python and NodeJS SDKs now have support for tracking values as "secret" to ensure they are encrypted when being persisted in a state file. `[pulumi/pulumi#397](https://github.com/pulumi/pulumi/issues/397)` Any existing value may be turned into a secret by calling `pulumi.secret()` (NodeJS) or `Output.secret(`) (Python). In both cases, the returned value is an output which may be passed around like any other. If this value flows into a resource, the plaintext will not be stored in the state file, but instead It will be encrypted, just like values added to config with `pulumi config set --secret`. You can verify that values are being stored as you expect by running `pulumi stack export`, When values are encrypted in the state file, they appear as an object with a special signature key and a ciphertext property. When outputs of a stack are secrets, `pulumi stack output` will show `[secret]` as the value, by default. You can pass `--show-secrets` to `pulumi stack output` in order to see the actual raw value. - When storing state with the Pulumi Service, you may now elect to use the passphrase based encryption for both secret configuration values and values that are encrypted in a state file. To use this new feature, pass `--secrets-provider passphrase` to `pulumi new` or `pulumi stack init` when you initally create the stack. When you create the stack, you will be prompted for a passphrase (or if `PULUMI_CONFIG_PASSPHRASE` is set, it will be used). This passphrase is used to generate a unique key for your stack, and config values and encrypted state values are encrypted using AES-256-GCM. The key is derived from your passphrase, and while information to re-create it when provided with your passphrase is stored in both the `Pulumi..yaml` file and the state file for your stack, this information can not be used to recover the key. When using this mode, the Pulumi Service is unable to decrypt either your secret configuration values or and secret values in your state file. We will be adding gestures to move existing stacks managed by the service to use passphrase based encryption soon as well as gestures to change the passphrase for an existing stack. ** Note ** Stacks with encrypted secrets in their state files can only be managed by 0.17.11 or later of the CLI. Attempting to use a previous version of the CLI with these stacks will result in an error. Fixes #397 ### Improvements - Add support for Azure Pipelines in CI environment detection. - Minor fix to how Azure repository information is extracted to allow proper grouping of Azure repositories when various remote URLs are used to pull the repository. ## 0.17.10 (2019-05-02) ### Improvements - Fixes issue introduced in 0.17.9 where local-login broke on Windows due to the new support for `s3://`, `azblob://` and `gs://` save locations. - Minor contributing document improvement. - Warnings from `npm` about missing description, repository, and license fields in package.json are now suppressed when `npm install` is run from `pulumi new` (via `npm install --loglevel=error`). - Depend on newer version of gRPC package in the NodeJS SDK. This version has prebuilt binaries for Node 12, which should make installing `@pulumi/pulumi` more reliable when running on Node 12. ## 0.17.9 (2019-04-30) ### Improvements - `pulumi login` now supports `s3://`, `azblob://` and `gs://` paths (on top of `file://`) for storing stack information. These are passed the location of a desired bucket for each respective cloud provider (i.e. `pulumi login s3://mybucket`). Pulumi artifacts (like the `xxx.checkpoint.json` file) will then be stored in that bucket. Credentials for accessing the bucket operate in the normal manner for each cloud provider. i.e. for AWS this can come from the environment, or your `.aws/credentials` file, etc. - The pulumi version update check can be skipped by setting the environment variable `PULUMI_SKIP_UPDATE_CHECK` to `1` or `true`. - Fix an issue where the stack would not be selected when an existing stack is specified when running `pulumi new