Commit graph

2686 commits

Author SHA1 Message Date
Vivek Lakshmanan
84d1505807 Switch to using t.Logf instead of printf 2020-11-17 23:09:18 -08:00
Vivek Lakshmanan
d12f59be46 Reduce verbosity on tests 2020-11-17 23:09:18 -08:00
Paul Stack
41a881a374
Small UX change to the output of policy violations (#5773)
Fixes: #5626

It used to be:

```
Policy Violations:
    [advisory]  aws v0.1.20200912  allowed-image-owner (demo-aws-ts-webserver-server-0: aws:ec2/instance:Instance)
    Check machine image is from an approved publisher.
    Publisher [137112412989] is not one of [self,099720109477].

```

Notice that it was name: type

We would rather this was type: name

```
Policy Violations:
    [advisory]  aws v0.1.20200912  allowed-image-owner (aws:ec2/instance:Instance: demo-aws-ts-webserver-server-0)
    Check machine image is from an approved publisher.
    Publisher [137112412989] is not one of [self,099720109477].

```
2020-11-17 21:14:28 +00:00
Justin Van Patten
bfe4969f35
.NET: Report plugin install errors during pulumi new (#5760)
The way `pulumi new` installs dependencies for .NET projects is slightly different from other languages. For Node.js, Python, and Go, `pulumi new` runs the appropriate command to install project dependencies (e.g. `npm install`, `pip install`, or `go mod download`). For .NET, it calls the same routine used during `preview|up` to ensure required plugins are installed. For .NET, this ends up running `dotnet build` which implicitly installs Nuget packages, builds the project, and also attempts to determine and install the needed Pulumi plugins. When this operation runs during `preview|up`, and there are failures installing a plugin, the error is logged, but deliberately not returned, because an error will be shown for missing plugins later on during the `preview|up` operation. However, during `pulumi new`, we should show any plugin install errors.
2020-11-16 21:56:13 -08:00
Paul Stack
50725543a0
Ensure resource docs have a newline after description but before examples to render correctly (#5762) 2020-11-14 00:20:33 +00:00
Mikhail Shilkov
66c5cdb7a1
Parse string arrays from env in Go first-class provider (#5744) 2020-11-13 10:59:41 +01:00
Vivek Lakshmanan
9d6e380680
Merge pull request #5741 from pulumi/vl/GoVersion
Pulumi-language-go and pulumi new now checks go version is at least 1.14.0
2020-11-12 15:40:57 -08:00
Pat Gavlin
1e0c9efdd7
Respect provider config secretness. (#5742)
Just what it says on the tin. This is implemented by changing the
`GetPackageConfig` method of `ConfigSource` to return a `PropertyMap`
and ensuring that any secret config is represented by a `Secret`.
2020-11-12 12:18:12 -08:00
Vivek Lakshmanan
bcb9d0f4c8 Refactor to add version check to pulumi new as well 2020-11-12 09:20:28 -08:00
Komal
8fb8ea80c0
[codegen/*] - Extract common enum name replacer (#5721)
* Extract common enum char replacer

* PR feedback
2020-11-11 10:42:08 -08:00
Pat Gavlin
0ec12d01f9
Create a builtin provider during import. (#5730)
`pulumi import` may otherwise fail if there are providers in the
statefile.
2020-11-10 21:11:30 -08:00
Paul Stack
a6f8b9b205
Ensure we split the import away from the docs description (#5719) 2020-11-09 23:00:29 +00:00
Komal
a259d59624
[codegen/dotnet,nodejs] - Improve makeSafeEnumName (#5711)
* Improve makeSafeEnumName

* Improve nodejs enumName generator

* Fix comment

* PR feedback
2020-11-09 11:33:22 -08:00
Levi Blackstone
64e5de1edc
[codegen/go] Add support for ResourceType and isComponent (#5497) 2020-11-09 11:55:53 -07:00
Komal
783f116fb3
[codegen/dotnet] - Fix isValueType to include enums (#5710) 2020-11-09 10:45:19 -08:00
stack72
f1b8bc79e2 Prevent panic when assembling the import details 2020-11-09 14:45:55 +00:00
Paul Stack
c389dec868
Ensure multi-line deprecation warnings are escaped correctly in Python (#5718)
Fixes: https://github.com/pulumi/pulumi-vsphere/issues/143
2020-11-09 14:28:28 +00:00
Paul Stack
3d8068e355
adding the import documentation where specified (#5667) 2020-11-09 14:12:58 +00:00
Justin Van Patten
88f6b4c560
Report feature "resourceReferences" is not supported (#5709)
This feature isn't fully supported yet, so stop reporting it is.
2020-11-06 18:56:23 -08:00
Paul Stack
8685f96ce6
Ensure pulumi history marks secrets that can't be un-encrypted as such (#5701) 2020-11-06 19:54:33 +00:00
Komal
00f8966a9a
[codegen/nodejs] - Fix typescript enum issues (#5696)
Co-authored-by: Levi Blackstone <levi@pulumi.com>
2020-11-06 09:29:49 -08:00
Komal
e9dbada593
[codegen/dotnet] - Enums (#5551) 2020-11-06 09:01:03 -08:00
Paul Stack
d43f8bd311
Fix the go sum files to ensure non dirty tree (#5683) 2020-11-04 20:04:03 +00:00
Paul Stack
596ee7c668
Ensure CLI doesn't panic when trying to decrypt a config value in stack history (#5680) 2020-11-04 17:40:17 +00:00
Paul Stack
a42bafcf5c
Ensure the CLI doesn't panic when trying to build a graph for a stack with no snapshot (#5678)
Fixes: #4952
2020-11-04 17:33:39 +00:00
Lee Briggs
4d96994fd1
switch uuid packages (#5608)
Co-authored-by: Pat Gavlin <pat@pulumi.com>
2020-11-04 03:13:04 +00:00
Paul Stack
056c82cd09
Ensure CLI doesn't panic when using pulumi watch and ComponentResources (#5675) 2020-11-04 01:14:43 +00:00
Pat Gavlin
696cff10ec
Add engine support for getResource. (#5646)
The langauge SDKs will use this function to fetch the state required to
deserialize a resource reference. SDK support will be added as a follow-up
change.

Contributes to #2430.
2020-11-02 13:36:12 -08:00
Levi Blackstone
5188ec4c9f
[codegen/schema] Add support for external schema refs (#5606) 2020-10-29 17:41:12 -06:00
Mikhail Shilkov
5cef84f036
Read .NET plugin name from version.txt (#5629) 2020-10-28 15:53:29 +01:00
Pat Gavlin
3d2e31289a
Add support for serialized resource references. (#5041)
Resources are serialized as their URN, ID, and package version. Each
Pulumi package is expected to register itself with the SDK. The package
will be invoked to construct appropriate instances of rehydrated
resources. Packages are distinguished by their name and their version.

This is the foundation of cross-process resources.

Related to #2430.

Co-authored-by: Mikhail Shilkov <github@mikhail.io>
Co-authored-by: Luke Hoban <luke@pulumi.com>
Co-authored-by: Levi Blackstone <levi@pulumi.com>
2020-10-27 10:12:12 -07:00
Paul Stack
83f2aa613b
Adding the Venafi provider to the docs generation (#5620) 2020-10-23 20:25:37 +01:00
Paul Stack
b75ca2602f
Ensure policy events do not cause a panic when using preview --json (#5610) 2020-10-22 20:28:39 +01:00
Komal
ec9c02f578
Add tests for ts enums (#5605) 2020-10-22 10:53:29 -07:00
Paul Stack
7f0bc891c4
Ensure CLI doesn't panic when pulumi watch is used with policies enabled (#5569)
Fixes: #5561
2020-10-17 21:29:16 +01:00
Pat Gavlin
eaac9280f5
Refactor lifecycle tests. (#5575)
Move these tests to a new package, `lifecycletest`, that also exposes
APIs that allow consumers to implement their own lifecycle tests. This
is intended to ease the burden of testing plugin implementations and to
set the stage for cleaning up the lifecycle tests themselves.

This involves two changes to the public API, only one of which is
strictly necessary:

- The `host` field of `UpdateOptions` is now exported
- The `Journal` type has been moved from test-only code to the package
  proper

The former change is necessary, as it is the mechanism by which package
consumers may inject their own plugin loaders. I was reluctant to expose
this field originally because I wanted to ensure that the behavior of
packages that embed Pulumi is consistent with that of the Pulumi CLI
with respect to plugin loading. I now believe that the risk of consumers
changing this behavior outside of test scenarios is low enough that we
can expose this field. This may also be useful for future scenarios,
e.g. statically linking providers and Pulumi programs.

The latter change is not necessary, but fleshes out the engine package
into a more complete toolkit. Downstream consumers may use the Journal
type to conveniently implement snapshotting.
2020-10-15 10:35:09 -07:00
Pat Gavlin
89c71bb49e
[cli] Add an import command. (#4765)
Co-authored-by: stack72 <public@paulstack.co.uk>
2020-10-14 12:51:53 +01:00
Levi Blackstone
99ba1ab943
[codegen/dotnet] Add support for ResourceType and isComponent (#5460) 2020-10-13 12:33:22 -06:00
Paul Stack
186e2f059e
Respect logging verbosity as part of pulumi plugin install (#5549)
Fixes: #4427

By default, there is no indepth logging:

```
pulumi plugin install resource azure-nextgen v0.2.1
[resource plugin azure-nextgen-0.2.1] installing
Downloading plugin: 17.82 MiB / 17.82 MiB [=========================] 100.00% 2s
Moving plugin... done.
```

We can increase the logging verosity get more detailed logging:
```
pulumi plugin install resource azure-nextgen v0.2.1 -v=1 --logtostderr
[resource plugin azure-nextgen-0.2.1] installing
I1010 19:30:58.472772    7128 plugins.go:201] azure-nextgen downloading from https://get.pulumi.com/releases/plugins
Downloading plugin: 0 B / 17.82 MiB [----------------------------------]   0.00%I1010 19:30:58.704168    7128 plugin_install.go:136] [resource plugin azure-nextgen-0.2.1] installing tarball ...
Downloading plugin: 17.82 MiB / 17.82 MiB [=========================] 100.00% 3s
Moving plugin...I1010 19:31:01.874427    7128 plugins.go:304] moving plugin from "/Users/myuser/.pulumi/plugins/resource-azure-nextgen-v0.2.1.tmp884796935" to "/Users/myuser/.pulumi/plugins/resource-azure-nextgen-v0.2.1"
 done.
```

The most verbose logging level will log the request and response headers
```
pulumi plugin install resource azure-nextgen v0.2.1 -v=9 --logtostderr
I1010 19:29:46.989150    7089 sink.go:146] defaultSink::Infoerr([resource plugin azure-nextgen-0.2.1] installing)
[resource plugin azure-nextgen-0.2.1] installing
I1010 19:29:46.989295    7089 plugins.go:591] SelectCompatiblePlugin(..., azure-nextgen): beginning
I1010 19:29:46.989300    7089 plugins.go:630] SelectCompatiblePlugin(..., azure-nextgen): failed to find match
I1010 19:29:46.989323    7089 plugins.go:201] azure-nextgen downloading from https://get.pulumi.com/releases/plugins
I1010 19:29:46.989333    7089 plugins.go:208] full plugin download url: https://get.pulumi.com/releases/plugins/pulumi-resource-azure-nextgen-v0.2.1-darwin-amd64.tar.gz
I1010 19:29:46.989360    7089 plugins.go:218] plugin install request headers: map[User-Agent:[pulumi-cli/1 (; darwin)]]
I1010 19:29:47.242941    7089 plugins.go:225] plugin install response headers: map[Accept-Ranges:[bytes] Age:[370098] Content-Disposition:[attachment; filename=pulumi-resource-azure-nextgen-v0.2.1-darwin-amd64.tar.gz] Content-Length:[18684382] Content-Type:[application/x-gzip] Date:[Tue, 06 Oct 2020 11:41:30 GMT] Etag:["518f2e7efd46fe5b7be9508dc785b9c9-4"] Last-Modified:[Sat, 03 Oct 2020 20:57:45 GMT] Server:[AmazonS3] Via:[1.1 198b7d1bb217783eef010e6636984c9f.cloudfront.net (CloudFront)] X-Amz-Cf-Id:[aaC3Q0WcecspsFbWROLxXnD6iF7sYoAfShQKYiS2xkFKAWlFRBu-1Q==] X-Amz-Cf-Pop:[MAN50-C2] X-Cache:[Hit from cloudfront]]
Downloading plugin: 0 B / 17.82 MiB [----------------------------------]   0.00%I1010 19:29:47.243189    7089 plugin_install.go:136] [resource plugin azure-nextgen-0.2.1] installing tarball ...
Downloading plugin: 17.82 MiB / 17.82 MiB [=========================] 100.00% 2s
Moving plugin...I1010 19:29:50.031099    7089 plugins.go:304] moving plugin from "/Users/myuser/.pulumi/plugins/resource-azure-nextgen-v0.2.1.tmp960784076" to "/Users/myuser/.pulumi/plugins/resource-azure-nextgen-v0.2.1"
 done.
```
2020-10-13 13:09:29 +01:00
Paul Stack
095da7084c
Accept -f as a shorthand for --skip-preview on up, refresh and destroy operations (#5556)
Fixes: #2321
2020-10-13 11:10:59 +01:00
Paul Stack
38152ba6f0
Improve user message when pulumi plugin rm --all has no plugins to remove (#5547)
Fixes: #5376

```                                                                                                                                                                                          ⍉
pulumi plugin rm --all --yes
no plugins found to uninstall
echo $?
0
```
2020-10-12 18:31:55 +01:00
Paul Stack
df9c9f195f
Validate and error on invalid cloudUrl formats on pulumi login (#5550)
Fixes: #3382

```
▶ pulumi login --cloud-url az://myblob
error: unknown backend cloudUrl format 'az' (supported Url formats are: azblob://, gs:// and s3://)
```
2020-10-12 17:35:22 +01:00
Paul Stack
64577f5b10
Protect against panic in finding go executable and finding resources (#5548)
Fixes: #5131
Fixes: #5016
2020-10-11 07:13:54 +01:00
Komal
af9f636eef
Split schema tests by language (#5540) 2020-10-10 13:47:23 -07:00
Paul Stack
36db22d488
Ensure secret provider variables are cleaned up when changing secret providers (#5545)
Fixes: #5509

When changing from a passphrase provider to a cloud secrets provider,
the encryptionsalt is not required, so we should ensure this is removed
2020-10-10 19:04:07 +01:00
Pat Gavlin
249140242e
Add support for provider-side preview. (#5443)
These changes add support for provider-side previews of create and
update operations, which allows resource providers to supply output
property values for resources that are being created or updated during a
preview.

If a plugin supports provider-side preview, its create/update methods
will be invoked during previews with the `preview` property set to true.
It is the responsibility of the provider to fill in any output
properties that are known before returning. It is a best practice for
providers to only fill in property values that are guaranteed to be
identical if the preview were instead an update (i.e. only those output
properties whose values can be conclusively determined without
actually performing the create/update operation should be populated).
Providers that support previews must accept unknown values in their
create and update methods.

If a plugin does not support provider-side preview, the inputs to a
create or update operation will be propagated to the outputs as they are
today.

Fixes #4992.
2020-10-09 13:13:55 -07:00
Paul Stack
5430586a9e
Upgrade to Go v1.15.x (#5467) 2020-10-09 17:35:12 +01:00
Komal
6c51e6ce1c
[codegen/nodejs] - Update enum generation (#5525) 2020-10-09 08:27:01 -07:00
Lee Briggs
7093565e2c
jaxxstorm/build fixes (#5483)
* fix pulumi bot token and env var

* use commit hash non-marketplace actions

* fix goreleaser binaries

foo

* fix goreleaser archive format

* update workflows to use repo-dispatch

* fixing tag naming

* add support for beta tags

* add prerelease workflow

* remove windows builds

* only use travis for tags

* remove prerelease steps

* fix container build indentation

* check the policy tempdir exists
2020-10-08 12:43:38 -07:00
Vivek Lakshmanan
08272ff49a
Merge pull request #5520 from pulumi/vl/dotnetProgramGen
Fix config params and default handling for .NET programgen
2020-10-08 00:30:11 -07:00
Komal
7039e67284
[codegen/nodejs] - Enums (#5472) 2020-10-07 18:13:10 -07:00
Paul Stack
5e8f219652
Reorder resource docs templates to make deprecated more prominent (#5523)
Fixes: https://github.com/pulumi/docs/issues/4340

The deprecated message sits below the examples so it is not clear
to the user that the resource / datasource is deprecated
2020-10-07 21:25:25 +01:00
Vivek Lakshmanan
a0ee220243 Convert config params to outputs only if promise types are seen 2020-10-07 12:29:33 -07:00
Vivek Lakshmanan
f4235f27a1 Fix config params and default handling for .NET programgen
Fixes https://github.com/pulumi/pulumi-azure-nextgen/issues/42
2020-10-07 09:59:23 -07:00
Komal
b531038d33
[codegen/schema] - Add deprecation messages for enum values (#5521) 2020-10-07 09:32:00 -07:00
Vivek Lakshmanan
2b67c6ea81
Merge pull request #5514 from pulumi/vl/AddGoConfigGen
[codegen] Add support for config generation in go programgen
2020-10-06 16:54:41 -07:00
Vivek Lakshmanan
e49ba01f8f PR comments 2020-10-06 16:13:49 -07:00
Vivek Lakshmanan
ea75755d88 Add test scaffolding for azure provider 2020-10-06 16:13:30 -07:00
Vivek Lakshmanan
8f7874b3e2 Handle aliases correctly for invokes 2020-10-05 22:57:00 -07:00
Vivek Lakshmanan
739b664046 Add support for go config generation 2020-10-05 22:55:41 -07:00
Luke Hoban
32f13fabfa Merge branch 'fix_gzip_compression' of https://github.com/birdypme/pulumi into birdypme-fix_gzip_compression 2020-10-05 13:52:23 -07:00
Joe Duffy
12e5e46c73
Handle blank project names in 'new' (#5504)
The logic for validating prompted values in 'new' wasn't quite right,
leading to the possibility of creating Pulumi.yaml files with blank
project names.

This manifests in various ways and I've hit it a number of times
over the past few months because of the way we handle project/stack
name conflicts in 'new' -- which itself is a bit annoying too:

https://github.com/pulumi/pulumi/blob/master/pkg/cmd/pulumi/new.go#L206-L207

Because we substitue a default value of "", and because the prompting
logic assumed default values are always valid, we would skip validation
and therefore accept a blank Pulumi.yaml file.

This generates an invalid project which causes errors elsewhere, such as

    error: failed to load Pulumi project located at ".../Pulumi.yaml":
        project is missing a 'name' attribute

I hit this all the time with our getting started guide because I've
gone through it so many times and have leftover stacks from prior
run-throughs. I wouldn't be surprised if a lot of people hit this.

The solution here validates all values, including the default.

Note also that we failed to validate the value used by 'new --yes'
which meant you could bypass all validation by passing --yes, leading
to similar outcomes.

I've added a couple new tests for these cases. There is a risk we
depend on illegal default values somewhere which will now be rejected,
but that would seem strange, and assuming the tests pass, I would
assume that's not true. Let me know if that's wrong.

Fixes pulumi/pulumi#3255.
2020-10-05 13:40:24 -07:00
Mikhail Shilkov
98f04cd2fc
Ensure top-level precedence to avoid flaky tests (#5508) 2020-10-05 19:50:51 +02:00
Mikhail Shilkov
3a2d7356a2
Quit if a static passphrase is invalid (#5507) 2020-10-05 14:57:48 +01:00
Luke Hoban
3be1ea9592
Fix panic with logs (#5503)
Fixes #5112.
2020-10-02 14:09:34 -07:00
Julien Champseix
f2b75b1e5f Merge branch 'master' into fix_gzip_compression 2020-10-01 09:22:12 +02:00
Julien Champseix
f9eae8b8e9 Merge branch 'master' of https://github.com/pulumi/pulumi 2020-10-01 09:17:14 +02:00
Julien Champseix
3df5d55256 removed superfluous Flush() 2020-10-01 09:07:30 +02:00
Justin Van Patten
9bcf02e7ed
Support remote components in Python (#5375) 2020-09-30 14:09:20 -07:00
Julien Champseix
88c556d2fe restored contract.IgnoreClose on gzip reader, but only when pointer is valid 2020-09-30 22:57:09 +02:00
Levi Blackstone
38172999e7
[codegen] Extract common test logic (#5480) 2020-09-30 14:41:52 -06:00
Julien Champseix
370125868d Merge branch 'master' of github.com:birdypme/pulumi 2020-09-30 22:31:36 +02:00
Julien Champseix
bcac6cf1d7 only close the gzip reader if a valid pointer was returned 2020-09-30 21:52:35 +02:00
Levi Blackstone
64602798b1
[codegen/python] Don't generate get methods for ComponentResources (#5459) 2020-09-30 10:16:25 -06:00
Komal
59b906eb76
Update nodejs gen-tests (#5477) 2020-09-29 16:00:03 -07:00
Julien Champseix
2aa950f7de call Close() explicitly after compressing bytes
this writes the expected gzip checksum data mandatory for decompression
2020-09-25 23:17:37 +02:00
Levi Blackstone
f048c04782
[codegen/nodejs] Add support for ResourceType and isComponent (#5454) 2020-09-25 13:35:27 -06:00
Levi Blackstone
9363f606b6
[codegen/schema] Add IsComponent to resource schema (#5395)
Add support for ComponentResources to the schema by
adding a new IsComponent field to the Resource spec.
2020-09-23 18:23:46 -06:00
Levi Blackstone
81580289a7
[codegen/python] Handle ResourceType (#5444) 2020-09-23 13:39:25 -06:00
Pat Gavlin
3278b6bf91
Simplify types more precisely. (#5440)
Instead of simplifying any module that ends with `/<name>`, only simplify
types where `<name>` matches the type name portion after camel-casing.
This continues to simplify tfbridge types like `aws:s3/bucket:Bucket`,
but would not simplify a type like `aws:s3:Bucket`.
2020-09-22 10:34:16 -07:00
Levi Blackstone
3ea59ebbb8
[codegen/schema]: Add ResourceType to support resource refs (#5325) 2020-09-22 11:09:27 -06:00
Komal
a334b60193
Only allow type-matching enum values (#5417)
* Only allow type-matching enum values

* More tests and fixes
2020-09-21 12:23:04 -07:00
Justin Van Patten
988ebd8b8e
[codegen/docs] Don't emit API links in Azure NextGen resource docs (#5421)
We're not going to generate language-specific API docs for the Azure NextGen provider, only resource docs. This change makes it so the resource docs do not emit any links to nonexistent API docs.
2020-09-20 11:56:52 -07:00
Luke Hoban
a2a64e55d0
Support recursive object types in pkg/codegen model (#5404)
Fixes #5228.
2020-09-18 17:29:21 -07:00
Vivek Lakshmanan
5027eddce6
Merge pull request #5415 from pulumi/vl/ImportBasePath
[codegen] Allow ImportBasePath to override presumed golang import path
2020-09-18 16:16:13 -07:00
Vivek Lakshmanan
a7680884eb Allow ImportBasePath to override presumed golang import path 2020-09-18 12:48:14 -07:00
Sean Holung
c6dcb67677
Add pulumi console command (#5368) 2020-09-18 12:47:18 -07:00
Vivek Lakshmanan
2a23af6892 Fix panics when running invokes with modules containing slashes 2020-09-18 11:15:56 -07:00
Mikhail Shilkov
428225f992
[codegen/nodejs] Format dashed import for invokes (#5399) 2020-09-17 18:23:54 +02:00
Komal
92a7d717a4
[codegen/schema] - Expand ObjectTypeSpec to ComplexTypeSpec (#5379)
Co-authored-by: Mikhail Shilkov <github@mikhail.io>
2020-09-16 13:47:40 -07:00
Mikhail Shilkov
0d38c6737e
[codegen] Tweak docs and example generation for azure-nextgen (#5390)
[codegen] Tweak docs and example generation so that azure-nextgen is represented correctly
2020-09-16 20:11:56 +02:00
Mikhail Shilkov
573b95afaf
Add missing provider names for docs (#5374) 2020-09-16 11:28:34 +02:00
Evan Boyle
0e3666cc36
Automation API - add recovery APIs (cancel/export/import) (#5369) 2020-09-15 14:20:58 -07:00
Mikhail Shilkov
da1f25928d
[codegen] Adjust Go/Python package naming for Azure NextGen (#5373) 2020-09-15 13:56:58 +02:00
Mikhail Shilkov
07a923e494 Revert Go input/output generation 2020-09-15 12:36:04 +02:00
Mikhail Shilkov
3a16cf55f0
[codegen/dotnet] Don't append Result to mixed output type names (#5321) 2020-09-15 09:33:41 +02:00
Mikhail Shilkov
bbf403ba85
Do not generate unused input/output types in Go (#5345)
Do not generate unused input/output types in Go
2020-09-15 09:33:13 +02:00
Pat Gavlin
855f1fd1cd
Revise host mode. (#5317)
* Revise host mode.

The current implementation of host mode uses a `pulumi host` command and
an ad-hoc communication protocol between the engine and client to
connect a language host after the host has begun listening. The most
significant disadvantages of this approach are the communication
protocol (which currently requires the use of stdout), the host-specific
command, and the difficulty of accommodating the typical program-bound
lifetime for an update.

These changes reimplement host mode by adding engine support for
connecting to an existing language runtime service rather than launching
a plugin. This capability is provided via an engine-specific language
runtime, `client`, which accepts the address of the existing languge
runtime service as a runtime option. The CLI exposes this runtime via
the `--client` flag to the `up` and `preview` commands, which similarly
accepts the address of an existing language runtime service as an
argument. These changes also adjust the automation API to consume the
new host mode implementation.
2020-09-14 17:40:17 -07:00
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
Justin Van Patten
5164725cb5
[codegen/python] Remove panic from PyName (#5341)
The codegen updates have been run against all providers, so there's no longer a need to keep the panic.
2020-09-14 08:42:01 -07:00
Justin Van Patten
5e06da464a
[codege/python] Use int as the type annotation for integers (#5309) 2020-09-11 14:56:29 -07:00
Justin Van Patten
4dd40e4490
[codegen/python] Use pulumi.runtime.to_json (#5308)
Non-string provider inputs must be projected as JSON formatted strings. The current codegen simply calls `json.dumps` for such properties, but this does not work for the new input types, which aren't JSON serializable.

To address this, make use of the new `pulumi.runtime.to_json` utility function, which is capable of serializing raw dicts and input types as JSON.
2020-09-11 14:27:36 -07:00
Paul Stack
9a46dad7d0
Add the ability to set the passphrase secrets provider to read from a passphrase file (#5327)
* Addthe ability to set the passphrase secrets provider to read from a passphrase file

* Feedback about removing newlines
2020-09-11 22:25:47 +01:00
Justin Van Patten
dee923d99c
[codegen/python] Emit array types as Sequence (#5283)
We currently emit array types as `List[T]` for Python, but `List[T]` is invariant, which causes type checkers like mypy to produce errors when values like `["foo", "bar"]` are passed as args typed as `List[pulumi.Input[str]]`. Instead, we should move to using `Sequence[T]` which is covariant, and does not have this problem.

We actually already do this for `Dict` vs. `Mapping`, emitting map types as `Mapping[str, T]` rather than `Dict[str, T]` because `Mapping[str, T]` is covariant. This change makes us consistent for array types.
2020-09-10 14:54:27 -07:00
Vivek Lakshmanan
e84e0401f0
Speed up doc generation by avoiding repeated python language import (#5277)
Fixes https://github.com/pulumi/pulumi/issues/5184
2020-09-10 16:12:09 +02: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
Mikhail Shilkov
53b48cef2f
Exclude two more names from PyName (#5285) 2020-09-03 18:02:21 +02:00
Albert Zhong
69c57f8b47
Add ignorePyNamePanic python flag (#5268) 2020-09-02 16:25:19 -07:00
Justin Van Patten
d583bcb915
[codegen/nodejs] Remove unnecessary ctor overload (#5274)
An extra constructor overload was recently added to pass undefined state from
`get` for resources that do not have any state inputs (notably Kubernetes
resources). This ended up breaking PaC's `validateResourceOfType`, which relies
on type inference in common usage to determine the resource's args type based
on the signature of the constructor.

This constructor overload isn't necessary. Instead, we can remove it and modify
how the constructor is called inside `get`. This also makes it so we're not
exposing details about `get`'s implementation in the public API.
2020-09-02 09:09:41 -06:00
Levi Blackstone
5ec0b985d4
[codegen/nodejs] Fix omitted output properties in constructor (#5273)
Changed the codegen in 6fd72dc0 but missed a condition that
is causing incorrect code in pulumi-kubernetes. This change
correctly generates inputs in both conditional branches.
2020-09-01 17:56:38 -06:00
Levi Blackstone
6fd72dc0db
[codegen/nodejs] Fix constructors to populate inputs on get (#5272) 2020-09-01 16:37:03 -06:00
Lee Briggs
f5a54cf6bb
add more tests 2020-08-31 19:01:23 -07:00
Lee Briggs
ed94132080
make function name clearer 2020-08-31 18:57:05 -07:00
Lee Briggs
0459767ceb
handle cases with no subpackages 2020-08-31 18:54:14 -07:00
Lee Briggs
6c2f7994fa
refactor and add tests 2020-08-31 16:08:15 -07:00
Lee Briggs
759019a7ad
use string index to calc package name 2020-08-31 15:36:02 -07:00
Lee Briggs
40745c126c
improve go mod replace logic
this commit updates the way we do the go mod replace during tests
2020-08-31 13:45:10 -07:00
Evan Boyle
741485d7d0
expose execution kind via update metadata (#5258) 2020-08-31 09:07:59 -07:00
Evan Boyle
09964d2031
Merge branch 'master' into evan/auto 2020-08-28 19:11:14 -07:00
evanboyle
b0d91478bf docs updates 2020-08-28 14:21:56 -07:00
Scott Murray
60fcc1951b Added --suppress-permalink option
Added `--suppress-permalink` option to suppress the permalink output which addresses https://github.com/pulumi/pulumi/issues/4103
2020-08-28 21:37:48 +01:00
Jamie Kinkead
cb7fa3029e
Increase visibility of console link (#5222) 2020-08-28 13:08:10 -07:00
Mikhail Shilkov
81992485dd
Full name for aliases in .NET codegen (#5245) 2020-08-28 18:57:57 +02:00
Justin Van Patten
7eb99fe7bb
[codegen/python] Emit properties named "property" last (#5247)
This avoids conflicting with the built-in `@property` decorator function for other properties.
2020-08-28 08:55:02 -07:00
Evan Boyle
ed2e5c6680
Merge branch 'master' into evan/auto 2020-08-28 08:48:08 -07:00
evanboyle
aba397a8c8 hide host command 2020-08-28 08:43:35 -07:00
Komal
5caa5616f7
[codegen/nodejs] - Fix whitespace in genNamespace code (#5240) 2020-08-27 14:50:34 -07:00
evanboyle
cf247c1245 update file headers 2020-08-27 10:43:23 -07:00
Justin Van Patten
910aa96016
[codegen/python] Add type annotation to resource_name arg (#5217) 2020-08-25 12:07:08 -07:00
Justin Van Patten
502685ed0e
[codegen/python] Fix resource outputs type annotations (#5221)
These should be typed as `Output[T]`.
2020-08-25 11:07:22 -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
27db14791a auto error tests 2020-08-23 19:43:51 -07:00
Mikhail Shilkov
4c42e5e850
Relax submodule generation for Node and Python (#5204) 2020-08-23 00:00:21 +02:00
Praneet Loke
072aac2c79
[codegen/docs] Lower-case the module name for Go. (#5207) 2020-08-21 15:34:57 -07:00
Mikhail Shilkov
b9b3c836bc
Exclude more names from Python name validation (#5205) 2020-08-21 20:41:33 +02:00
Justin Van Patten
6292543342
[codegen/python] Fix unintended name changes from PyName and some whitespace cleanup (#5202)
If PyName(name) != PyNameLegacy(name), we panic, unless name is in an exclusion list.

Once all providers have been updated to this codegen (and we've added to `useLegacyName` and `excludeFromPanic` as appropriate), we can go back and remove the panic behavior along with the `excludeFromPanic` behavior.
2020-08-20 20:51:32 -07:00
Justin Van Patten
ca7536e17f
[codgen/python] Always consider the config subpackage non-empty (#5195)
If there's a config subpackage, we had explicitly added it to the map of modules because there *are* config properties, so we know it will be non-empty. This change ensures the config subpackage is imported in the top-level package's __init__.py and that the config subpackage itself has an __init__.py emitted.
2020-08-20 11:07:09 -07:00
Evan Boyle
0f98bac105
fix unchecked type assertion (#5194) 2020-08-19 13:58:13 -07:00
Praneet Loke
e3b436211d
[codegen/docs] Link to Pulumi.Input-1.html when generating the doc link for the Pulumi.Input type. (#5187) 2020-08-19 11:21:54 -07:00
Justin Van Patten
92c0d1dc30
Docgen changes for Python input/output types (#5137)
Resource doc changes for Python:

- Types are included in constructor/function args
- The property names for input/output types are now always snake_case, regardless of the generated mapping tables, to match the new input/output classes
- Some other minor tweaks to function/constructor signatures (e.g. removed the `__props__` arg, as it's not meant to be used directly; use `@staticmethod` for static `get` methods).
2020-08-19 08:34:06 -07:00
Mikhail Shilkov
6cc7b3c107
Docs for versioned modules (#5183) 2020-08-19 14:57:39 +02:00
Justin Van Patten
78edb28590
Add Python input/output classes to provider codegen (#5034)
This updates the Python codegen to emit input/output classes.
2020-08-19 01:16:47 -07:00
Luke Hoban
2470d59efb
Revert "Added --suppress-permalink option (#5177)" (#5185)
This reverts commit f8d929d197.
2020-08-18 08:50:44 -07:00
Scott Murray
f8d929d197
Added --suppress-permalink option (#5177) 2020-08-17 22:11:44 -07:00
Vivek Lakshmanan
8777dd77ca
Merge pull request #5170 from pulumi/vl/ResourceOptions
Map python resource options to provider options
2020-08-17 17:36:05 -07:00
Vivek Lakshmanan
f6fd98544d
Update pkg/codegen/python/gen.go
Co-authored-by: Justin Van Patten <jvp@justinvp.com>
2020-08-17 16:58:59 -07:00
Komal
d7ce0e586c
[codegen/python] - Include single word props in casing tables. (#5181) 2020-08-17 16:44:55 -07:00
Vivek Lakshmanan
38387f1742 Set the snake case translation for provider input properties
Fixes https://github.com/pulumi/pulumi-kubernetes/issues/1244
2020-08-14 14:34:46 -07:00
Praneet Loke
99fcd359ee
[codegen/docs] Fix the case used in links for Node.js modules. (#5165) 2020-08-13 17:29:56 -07:00