Commit graph

310 commits

Author SHA1 Message Date
Justin Van Patten 46c7c327dd
Install plugin dependencies (#5353)
When installing a plugin, if it contains a `PulumiPlugin.yaml` file with a `runtime` value of `nodejs` or `python`, install dependencies for the plugin.

For Node.js, `npm install` is run (or `yarn install` if `PULUMI_PREFER_YARN` is set).

For Python, a virtual environment is created and deps installed into it.
2020-09-14 13:54:26 -07:00
Paul Stack aafe84d823
Add support for cloning private repos as part of automation API (#5333) 2020-09-14 20:24:57 +01:00
Paul Stack 9a74064d2b
Allow passing a non-default secrets provider to AutomationAPI (#5320) 2020-09-10 19:25:47 +01:00
Mike Metral 49152e6331 feat(autoapi): add Upsert methods for stacks 2020-09-10 09:49:49 -07:00
Mike Metral 51c235352c feat(autoapi): add IsSelectStack404Error and IsCreateStack409Error 2020-09-09 17:13:50 -07:00
Mike Metral 3f445be494 fix(autoapi): return autoError for local_workspace ops 2020-09-09 17:13:50 -07:00
Lee Briggs 0ac075ef8f
add initial pull-request workflow (#5276)
* add initial pull-request workflow

* run SDK test all

* add SDK tests

* fixup make targets

* add dist target

* revert back to 5 updates

* disable test

* add issue for test disabling
2020-09-09 13:37:03 -07:00
Pat Gavlin 2585b86aa4
Initial support for remote component construction. (#5280)
These changes add initial support for the construction of remote
components. For now, this support is limited to the NodeJS SDK;
follow-up changes will implement support for the other SDKs.

Remote components are component resources that are constructed and
managed by plugins rather than by Pulumi programs. In this sense, they
are a bit like cloud resources, and are supported by the same
distribution and plugin loading mechanisms and described by the same
schema system.

The construction of a remote component is initiated by a
`RegisterResourceRequest` with the new `remote` field set to `true`.
When the resource monitor receives such a request, it loads the plugin
that implements the component resource and calls the `Construct`
method added to the resource provider interface as part of these
changes. This method accepts the information necessary to construct the
component and its children: the component's name, type, resource
options, inputs, and input dependencies. It is responsible for
dispatching to the appropriate component factory to create the
component, then returning its URN, resolved output properties, and
output property dependencies. The dependency information is necessary to
support features such as delete-before-replace, which rely on precise
dependency information for custom resources.

These changes also add initial support for more conveniently
implementing resource providers in NodeJS. The interface used to
implement such a provider is similar to the dynamic provider interface
(and may be unified with that interface in the future).

An example of a NodeJS program constructing a remote component resource
also implemented in NodeJS can be found in
`tests/construct_component/nodejs`.

This is the core of #2430.
2020-09-07 19:33:55 -07:00
Mike Metral 46da25492e feat(autoapi): add workspace scoped envvars to LocalWorkspace and Stack 2020-09-03 09:57:23 -07:00
Evan Boyle 9ef5c72f72
update go plugin acquisition to work for users who vendor dependencies (#5286) 2020-09-03 09:15:18 -07:00
Mike Metral dec6a6a49a refactor(autoapi-gitrepo): use Workspace in SetupFn callback 2020-09-02 19:15:40 -07:00
evanboyle d3cf745c59 First pass at Automation API README 2020-09-01 23:28:46 -07:00
Evan Boyle a0275ffbd1
check for nil resource and invoke options in go sdk (#5270) 2020-09-01 09:59:27 -07:00
Evan Boyle 741485d7d0
expose execution kind via update metadata (#5258) 2020-08-31 09:07:59 -07:00
evanboyle 5458e2f685 add expectnochanges to stack.refresh 2020-08-28 19:17:46 -07:00
evanboyle c23f26b335 docs and style updates 2020-08-28 19:10:39 -07:00
evanboyle b0d91478bf docs updates 2020-08-28 14:21:56 -07:00
evanboyle cf247c1245 update file headers 2020-08-27 10:43:23 -07:00
evanboyle ab03c53487 automation api godoc 2020-08-25 11:16:54 -07:00
evanboyle 463c7b6588 Merge branch 'master' of https://github.com/pulumi/pulumi into evan/auto 2020-08-24 17:51:40 -07:00
evanboyle 40701e6420 outputs should be map[string]interface{} 2020-08-24 06:51:49 -07:00
evanboyle ec98494e5a add auto tests to Makefile and fix up for CI 2020-08-23 21:36:21 -07:00
evanboyle 27db14791a auto error tests 2020-08-23 19:43:51 -07:00
evanboyle 47fb5a128d Add functional options for Up/Pre/Refresh/Destroy 2020-08-23 10:25:17 -07:00
evanboyle fa1590a67f propagate nested stack error 2020-08-22 12:01:55 -07:00
evanboyle 458fd59c24 Make Workspace and Stack commands contextful 2020-08-21 22:20:32 -07:00
evanboyle 4dacd506d3 propagate env vars and extensibility points from Workspace to Stack 2020-08-21 16:22:45 -07:00
evanboyle cc7cf7c476 Add Stack.Info 2020-08-21 15:26:58 -07:00
evanboyle 3531635294 Add NewStack helper methods and tests 2020-08-21 09:49:46 -07:00
evanboyle 7b58202938 Implement Stack based on Workspace interface 2020-08-20 19:37:39 -07:00
evanboyle 535d48ca72 Round out LocalWorkspace impl 2020-08-19 21:23:53 -07:00
evanboyle 93ff03a9d3 LocalWorkspace initial implementation 2020-08-19 11:13:42 -07:00
evanboyle 4a44b27b40 add automation api workspace interface 2020-08-18 11:07:03 -07:00
Lee Briggs c325e4f53b
Merge branch 'justin/testresource' into jar-extract 2020-08-10 18:14:43 -07:00
Lee Briggs 574a9151db
support jar files 2020-08-10 14:15:35 -07:00
Evan Boyle 996fd85e00
Add missing MapMap and ArrayArray types to Go SDK (#5092) 2020-08-03 11:37:28 -07:00
evanboyle 12d7216769 serve engine address via pulumi host command 2020-07-30 15:20:57 -07:00
evanboyle 9281e55e00 detect and throw errors for nested stacks 2020-07-29 19:01:51 -07:00
evanboyle 5d8aa34d09 run all commands in non-interactive mode 2020-07-29 11:22:46 -07:00
evanboyle 7e6a08dbe1 example update 2020-07-28 17:40:25 -07:00
evanboyle 34a86f54be godoc improvements 2020-07-28 17:32:38 -07:00
evanboyle 8a707e27e3 godoc pt. 1 2020-07-27 22:26:39 -07:00
evanboyle 4f653683ce validate project name 2020-07-27 18:51:29 -07:00
evanboyle 114e3c2aff provide defaults for pului.yaml for inline source 2020-07-27 18:22:01 -07:00
Lee Briggs bad67d3242
switch os/user with luser
We make several calls to `os/user`, which uses CGO and means
cross-compilation is not possible. This replaces `os/user` with the
`luser` package, which is a drop-in replacement which does not use `CGO`
2020-07-27 14:44:08 -07:00
evanboyle 45ed471a7d handle and detect runtime errors for inline source 2020-07-26 13:43:33 -07:00
evanboyle 41d6767e32 host error handling, inline concurrent update detection 2020-07-26 12:52:59 -07:00
evanboyle 15b8f03dc3 enable e2e up/pre/ref/dest/rm test for inline source 2020-07-25 15:08:10 -07:00
evanboyle ae76944b77 use ts seeds for random test names 2020-07-25 13:28:57 -07:00
evanboyle b21f4e0f7b inline preview 2020-07-24 10:54:18 -07:00
evanboyle b0468d4166 init inline prototype 2020-07-24 01:31:54 -07:00
evanboyle 0d3203c96d add ability to specify git URL instead of local source 2020-07-22 14:28:03 -07:00
evanboyle 6e7ce72db6 update error formatting 2020-07-21 18:44:53 -07:00
evanboyle e789ae9700 update test 2020-07-21 18:41:36 -07:00
evanboyle acc719e7c1 IsUnexpectedEngineError() 2020-07-21 18:39:35 -07:00
evanboyle be42f75d2c add some comments based on findings 2020-07-21 18:27:31 -07:00
evanboyle 0500aae0e0 IsRuntimeError() 2020-07-21 18:17:38 -07:00
evanboyle c360e4d3f1 Merge branch 'master' of https://github.com/pulumi/pulumi into evan/auto 2020-07-21 16:52:08 -07:00
evanboyle ff81dd8961 IsCompilationError 2020-07-21 16:21:47 -07:00
evanboyle f6bc545809 clean up test 2020-07-17 20:08:45 -07:00
evanboyle cf4e02d517 init error strategy 2020-07-17 20:04:37 -07:00
evanboyle 99d769b903 typo 2020-07-17 11:15:58 -07:00
evanboyle 5faf54cedd lint 2020-07-17 10:59:13 -07:00
evanboyle 5b9f1b60d4 tighten up the interface 2020-07-17 10:14:30 -07:00
Paul Stack 6d09fe32df
Add the ability to copy configs between stacks (#4971) 2020-07-17 11:14:10 +01:00
Pat Gavlin 418e2291a2
Protect against engine event mutation. (#5003)
Certain operations in `engine/diff` mutate engine events during display.
This mutation can occur concurrently with the serialization of the event
for persistence, which causes a panic in the CLI. These changes fix the
offending code and add code that copies each engine event before
persisteing it in order to guard against future issues.
2020-07-16 23:52:31 -07:00
evanboyle 96b9c74bda refresh, e2e test 2020-07-16 19:17:07 -07:00
evanboyle 7ac704125e pulumi stack rm 2020-07-16 18:50:34 -07:00
evanboyle 102dbad5ea destroy 2020-07-16 08:47:04 -07:00
evanboyle 30f0962529 preview 2020-07-16 00:34:13 -07:00
evanboyle c09a1cb351 capture last event from history for UpResult 2020-07-15 23:34:34 -07:00
evanboyle 13746f9c82 set config and secrets upon stack initialization 2020-07-14 23:35:26 -07:00
evanboyle ea6cd84dce add utils to round trip pulumi.yaml and pulumi.stack.yaml 2020-07-14 23:13:45 -07:00
evanboyle ae465a19c9 expose GetUser GetOutputs 2020-07-10 00:55:07 -07:00
evanboyle e08e362a85 init/select stack, improvements 2020-07-09 22:30:52 -07:00
Pat Gavlin 2119601023
Implement PropertyPath.Add. (#4976)
This function adds a property value to another property at a given path,
creating containing properties as required. If the property cannot be
added because of a mismatch between the value types required by the path
and the values present in the destination, the add will fail. If a value
already exists at the given path, the add will succeed.

Related to #1635.
2020-07-07 14:45:36 -07:00
evanboyle 2504db3cd2 prototype 2020-07-07 14:25:11 -07:00
Paul Stack 57b91d553e
Adding the ability to specify a version as a ResourceOption (#4945) 2020-07-07 20:20:01 +01:00
Levi Blackstone 8961f5b0ca
Rename RetrieveTemplate function to RetrieveGitFolder (#4912)
The new name better reflects the functionality for external
consumers of this package.
2020-06-26 15:01:51 -06:00
Evan Boyle 2351fc66cf
Go SDK interfaces should declare impl of Ptr types where appropriate (#4911) 2020-06-26 11:25:53 -07:00
Pat Gavlin 3e6e28af36
Fix lint errors. (#4856)
These errors appear when using golangci-lint 1.27.0.
2020-06-18 14:17:11 -07:00
Levi Blackstone 19a113de7a
Handle invalid UTF-8 characters before RPC calls (#4816)
Several users reported cases where error messages would
cause a panic if they contained accented characters. I wasn't
able to reproduce this failure locally, but tracked down the
panic to logging gRPC calls. The Message field is typed as
a string, which requires all of the characters to be valid UTF-8.

This change runs each log string through the strings.ToValidUTF8
function, which will replace any invalid characters with the
"unknown" character. This should prevent the the logger from
panicking.
2020-06-17 13:30:59 -06:00
Praneet Loke 2513709089
Use the GH webhook payload to parse PR details when CI system is GH Actions (#4817)
* Read the file and parse it. Also use the PR Head SHA instead of the GITHUB_REF if the build type is pull_request.

* Update changelog
2020-06-15 12:49:09 -07:00
Evan Boyle fa69a31c97
Set default namespace for go config for config-less get/try/require (#4802) 2020-06-12 16:35:06 -07:00
Evan Boyle 3d2df8992f
Use appropriate types for go config methods (#4800) 2020-06-10 18:24:05 -07:00
Justin Van Patten b77ec919d4
Install and use dependencies automatically for new Python projects (#4775)
Automatically create a virtual environment and install dependencies in it with `pulumi new` and `pulumi policy new` for Python templates.

This will save a new `virtualenv` runtime option in `Pulumi.yaml` (`PulumiPolicy.yaml` for policy packs):

```yaml
runtime:
  name: python
  options:
    virtualenv: venv
```

`virtualenv` is the path to a virtual environment that Pulumi will use when running `python` commands.

Existing projects are unaffected and can opt-in to using this by setting `virtualenv`, otherwise, they'll continue to work as-is.
2020-06-09 16:42:53 -07:00
Praneet Loke 407896730c
Add GitHub Actions detection and update the Pulumi CI escape hatch with more CI vars (#4758)
* Add GitHub Actions detection. Update the Pulumi CI escape hatch with more CI vars.
2020-06-08 17:24:12 -07:00
Lee Zen 0dac22c360
Escape the path to ensure we fetch plugins correctly (#4733) 2020-05-29 14:59:25 -07:00
Chris Smith f613b6917b
Download plugins from get.pulumi.com (#4692)
* Remove long-since deprecated --cloud-url flag

* Download plugins from get.pulumi.com

* Update CHANGELOG.md

* Use more straight forward TrimSuffix
2020-05-25 09:16:57 -07:00
Justin Van Patten 6b0a845cc1
Support publishing Python policy packs (#4644)
Adds support for publishing Python policy packs to the service, and downloading/using such policy packs when applied to stacks in an organization.
2020-05-22 15:01:15 -07:00
Pat Gavlin e677c7d6dc
[sdk/go] Add support for untagged outputs. (#4640)
With these changes, a resource struct may tag a field with the empty
string. If such a field is present, any resource outputs that were not
unmarshalled into other fields will be unmarshalled into this field,
which must be a `MapOutput`.

Fixes #4629.
2020-05-14 14:43:20 -06:00
Lee Briggs 8c314ec39a
Add brew make targets to sdk makefiles 2020-05-13 20:42:01 -07:00
Paul Stack 48f906e026
Allow pulumi stack export to decrypt secrets (#4046) 2020-05-11 19:16:30 +01:00
Levi Blackstone b445206101
Add ResourceOutput type to Go SDK (#4575) 2020-05-05 21:13:58 -06:00
Pat Gavlin 9b1b9cca24
Makefile: properly encode dependencies (#4541)
This allows for the use of `make -j`, which speeds up a full build
dramatically at the cost of rather incomprehensible logs.
2020-05-04 14:26:52 -07:00
Luke Hoban edf8bf5c30
Support map-typed inputs in Go SDK RegisterResource (#4521)
Adds support for RegisterResource to accept map-typed implementations if Input as well as the existing struct-typed implementations. Currently these must be fully untyped - but both map[string]pulumi.Input and map[string]interface{} are allowed. In the future, it's plausible that a mode where the data itself is a map, but the ElementType implementation returns a struct could be supported, with the struct used to provide type information over the untyped map.
2020-04-30 11:56:47 -07:00
Levi Blackstone d1ba572e1d
Fix infinite recursion bug for Go SDK (#4516)
gatherDependencySet was not checking for Resources
in the dependency set, which could lead to infinite
recursion.
2020-04-28 18:10:07 -06:00
Komal Ali 9cf635ad5a pr changes 2020-04-23 11:16:36 -07:00
Komal Ali cc96df7485 update channel options in go 2020-04-23 11:16:36 -07:00
Justin Van Patten 7f27618e2d
Avoid replace on second update with import applied (#4403)
After importing some resources, and running a second update with the
import still applied, an unexpected replace would occur. This wouldn't
happen for the vast majority of resources, but for some it would.

It turns out that the resources that trigger this are ones that use a
different format of identifier for the import input than they do for the
ID property.

Before this change, we would trigger an import-replacement when an
existing resource's ID property didn't match the import property, which
would be the case for the small set of resources where the input
identifier is different than the ID property.

To avoid this, we now store the `importID` in the statefile, and
compare that to the import property instead of comparing the ID.
2020-04-15 18:52:40 -07:00