Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Improve the error for a denied component provider #11093

Merged
merged 1 commit into from Oct 20, 2022

Conversation

iwahbe
Copy link
Member

@iwahbe iwahbe commented Oct 20, 2022

Description

This improves the error message for pulumi/pulumi-awsx#930.

Checklist

  • I have added tests that prove my fix is effective or that my feature works
  • I have run make changelog and committed the changelog/pending/<file> documenting my change
  • Yes, there are changes in this PR that warrants bumping the Pulumi Service API version

@iwahbe iwahbe added the impact/no-changelog-required This issue doesn't require a CHANGELOG update label Oct 20, 2022
@iwahbe iwahbe self-assigned this Oct 20, 2022
@pulumi-bot
Copy link
Contributor

Changelog

[uncommitted] (2022-10-20)

@iwahbe
Copy link
Member Author

iwahbe commented Oct 20, 2022

bors r+

@bors
Copy link
Contributor

bors bot commented Oct 20, 2022

Build succeeded:

@bors bors bot merged commit 41d582d into master Oct 20, 2022
@bors bors bot deleted the iwahbe/fix-denied-err-message branch October 20, 2022 17:34
justinvp added a commit that referenced this pull request Dec 2, 2022
#11093 changed the Node.js SDK to pass a provider specified in a MLC's `ResourceOptions.provider` to the engine.

Unfortunately, this regresses behavior that existing programs rely on. For example:

```ts
import * as aws from "@pulumi/aws";
import * as awsx from "@pulumi/awsx";

const myRegion = new aws.Provider("us-east-1", {
  region: "us-east-1",
});

const vpc = new awsx.ec2.Vpc("awsx-nodejs-default-args", {}, { provider: myRegion });
```

In the above program, an explicit _aws_ provider is being passed to the _awsx_ `VPC` component, with the intention that the _aws_ provider will be used as the provider for all of `Vpc`'s children.

With the change in #11093, the engine would try to call `Construct` for the `Vpc` using the specified `aws` provider, which does not work (it fails with `plugins that can construct components must support secrets`).

This change reverts the change from #11093 that included the `provider` in the `RegisterResourceRequest` for MLCs, and adds a regression test to lock-in the previous behavior.

Note: We do want to be able to support specifying a MLC's provider (to allow explicit providers for MLCs), but we'll address that in a separate change.
justinvp added a commit that referenced this pull request Dec 2, 2022
#11093 changed the Node.js SDK to pass a provider specified in a MLC's `ResourceOptions.provider` to the engine.

Unfortunately, this regresses behavior that existing programs rely on. For example:

```ts
import * as aws from "@pulumi/aws";
import * as awsx from "@pulumi/awsx";

const myRegion = new aws.Provider("us-east-1", {
  region: "us-east-1",
});

const vpc = new awsx.ec2.Vpc("awsx-nodejs-default-args", {}, { provider: myRegion });
```

In the above program, an explicit _aws_ provider is being passed to the _awsx_ `VPC` component, with the intention that the _aws_ provider will be used as the provider for all of `Vpc`'s children.

With the change in #11093, the engine would try to call `Construct` for the `Vpc` using the specified `aws` provider, which does not work (it fails with `plugins that can construct components must support secrets`).

This change reverts the change from #11093 that included the `provider` in the `RegisterResourceRequest` for MLCs, and adds a regression test to lock-in the previous behavior.

Note: We do want to be able to support specifying a MLC's provider (to allow explicit providers for MLCs), but we'll address that in a separate change.
bors bot added a commit that referenced this pull request Dec 2, 2022
11509: [sdk/nodejs] Fix regression when passing a provider to a MLC r=justinvp a=justinvp

#11093 changed the Node.js SDK to pass a provider specified in a MLC's `ResourceOptions.provider` to the engine.

Unfortunately, this regresses behavior that existing programs rely on. For example:

```ts
import * as aws from "`@pulumi/aws";`
import * as awsx from "`@pulumi/awsx";`

const myRegion = new aws.Provider("us-east-1", {
  region: "us-east-1",
});

const vpc = new awsx.ec2.Vpc("awsx-nodejs-default-args", {}, { provider: myRegion });
```

In the above program, an explicit _aws_ provider is being passed to the _aws**x**_ `VPC` component, with the intention that the _aws_ provider will be used as the provider for all of `Vpc`'s children.

With the change in #11093, the engine would try to call `Construct` for the `Vpc` using the specified `aws` provider, which does not work (it fails with `plugins that can construct components must support secrets`).

This change reverts the problematic change from #11093 and adds a regression test to lock-in the previous behavior.

Note: We do want to be able to support specifying a MLC's provider (to allow explicit providers for MLCs), but we'll address that in a separate change. (I'll open an issue).

Fixes #11316

Co-authored-by: Justin Van Patten <jvp@justinvp.com>
bors bot added a commit that referenced this pull request Dec 2, 2022
11509: [sdk/nodejs] Fix regression when passing a provider to a MLC r=justinvp a=justinvp

#11093 changed the Node.js SDK to pass a provider specified in a MLC's `ResourceOptions.provider` to the engine.

Unfortunately, this regresses behavior that existing programs rely on. For example:

```ts
import * as aws from "`@pulumi/aws";`
import * as awsx from "`@pulumi/awsx";`

const myRegion = new aws.Provider("us-east-1", {
  region: "us-east-1",
});

const vpc = new awsx.ec2.Vpc("awsx-nodejs-default-args", {}, { provider: myRegion });
```

In the above program, an explicit _aws_ provider is being passed to the _aws**x**_ `VPC` component, with the intention that the _aws_ provider will be used as the provider for all of `Vpc`'s children.

With the change in #11093, the engine would try to call `Construct` for the `Vpc` using the specified `aws` provider, which does not work (it fails with `plugins that can construct components must support secrets`).

This change reverts the problematic change from #11093 and adds a regression test to lock-in the previous behavior.

Note: We do want to be able to support specifying a MLC's provider (to allow explicit providers for MLCs), but we'll address that in a separate change. (I'll open an issue).

Fixes #11316

Co-authored-by: Justin Van Patten <jvp@justinvp.com>
bors bot added a commit that referenced this pull request Dec 2, 2022
11509: [sdk/nodejs] Fix regression when passing a provider to a MLC r=justinvp a=justinvp

#11093 changed the Node.js SDK to pass a provider specified in a MLC's `ResourceOptions.provider` to the engine.

Unfortunately, this regresses behavior that existing programs rely on. For example:

```ts
import * as aws from "`@pulumi/aws";`
import * as awsx from "`@pulumi/awsx";`

const myRegion = new aws.Provider("us-east-1", {
  region: "us-east-1",
});

const vpc = new awsx.ec2.Vpc("awsx-nodejs-default-args", {}, { provider: myRegion });
```

In the above program, an explicit _aws_ provider is being passed to the _aws**x**_ `VPC` component, with the intention that the _aws_ provider will be used as the provider for all of `Vpc`'s children.

With the change in #11093, the engine would try to call `Construct` for the `Vpc` using the specified `aws` provider, which does not work (it fails with `plugins that can construct components must support secrets`).

This change reverts the problematic change from #11093 and adds a regression test to lock-in the previous behavior.

Note: We do want to be able to support specifying a MLC's provider (to allow explicit providers for MLCs), but we'll address that in a separate change. (I'll open an issue).

Fixes #11316

Co-authored-by: Justin Van Patten <jvp@justinvp.com>
bors bot added a commit that referenced this pull request Jul 13, 2023
13282: [sdk/nodejs,python] Add support for explicit providers for packaged components r=justinvp a=justinvp

Add support for explicit providers for packaged components in the Node.js and Python SDKs.

Go already supports it. Node.js briefly supported it with #11093, but the change was reverted in #11509 due to an issue. Python has never supported it.

The PR is broken up into multiple commits for easier reviewing.

Fixes #13074
Part of #11520

Co-authored-by: Justin Van Patten <jvp@justinvp.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
impact/no-changelog-required This issue doesn't require a CHANGELOG update
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants