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

Unable to deploy component resource with disable-default-providers: ["*"] in TS after v3.43.1 #13074

Closed
iwahbe opened this issue Jun 1, 2023 · 4 comments · Fixed by #13282
Closed
Assignees
Labels
impact/regression Something that used to work, but is now broken kind/bug Some behavior is incorrect or out of spec p1 Bugs severe enough to be the next item assigned to an engineer resolution/fixed This issue was fixed
Milestone

Comments

@iwahbe
Copy link
Member

iwahbe commented Jun 1, 2023

What happened?

Me and @phillipedwards were debugging an issue with a customers provider. They were seeing an unexpected error of the same kind as:

  pulumi:pulumi:Stack (ts-dev):
    error: Error: failed to register new resource vpc [awsx:ec2:Vpc]: 2 UNKNOWN: Default provider for 'awsx' disabled. 'awsx:ec2:Vpc' must use an explicit provider.

Expected Behavior

I expect pulumi up to succeed (as it does in v3.43.1) on this project:

{
    "name": "ts",
    "devDependencies": {
        "@types/node": "^14"
    },
    "dependencies": {
        "@pulumi/pulumi": "3.43.1",
	"@pulumi/aws": "5.41.0",
        "@pulumi/awsx": "1.0.2"
    }
}
name: ts
runtime: nodejs
description: A minimal AWS TypeScript Pulumi program
config:
  pulumi:disable-default-providers: ["*"]
import * as awsx from "@pulumi/awsx";
import * as aws from  "@pulumi/aws";

const awsProvider = new aws.Provider("aws", {region: "us-west-2"})
const awsxProvider = new awsx.Provider("awsx")

new awsx.ec2.Vpc("vpc", {}, {provider: awsxProvider ,providers: [ awsProvider]});

Steps to reproduce

Change the TS @pulumi/pulumi dependency to v3.44.0 and run yarn install && pulumi up. You will see:

𝛌(1) yarn install && pulumi up
yarn install v1.22.19
warning package.json: No license field
warning ts: No license field
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
[4/4] 🔨  Building fresh packages...
success Saved lockfile.
✨  Done in 3.83s.
Previewing update (dev)

View in Browser (Ctrl+O): https://app.pulumi.com/pulumi-test/ts/dev/previews/e8ca3e1e-d2cf-4665-bc88-f09db78a84c8

     Type                      Name    Plan       Info
 +   pulumi:pulumi:Stack       ts-dev  create     1 error
 +   ├─ pulumi:providers:awsx  awsx    create     
 +   └─ pulumi:providers:aws   aws     create     


Diagnostics:
  pulumi:pulumi:Stack (ts-dev):
    error: Error: failed to register new resource vpc [awsx:ec2:Vpc]: 2 UNKNOWN: Default provider for 'awsx' disabled. 'awsx:ec2:Vpc' must use an explicit provider.
        at Object.registerResource (/Users/ianwahbe/Projects/pulumi/langs/typescript/node_modules/@pulumi/awsx/node_modules/@pulumi/runtime/resource.ts:292:27)
        at new Resource (/Users/ianwahbe/Projects/pulumi/langs/typescript/node_modules/@pulumi/awsx/node_modules/@pulumi/resource.ts:402:13)
        at new ComponentResource (/Users/ianwahbe/Projects/pulumi/langs/typescript/node_modules/@pulumi/awsx/node_modules/@pulumi/resource.ts:890:9)
        at new Vpc (/Users/ianwahbe/Projects/pulumi/langs/typescript/node_modules/@pulumi/ec2/vpc.ts:124:9)
        at Object.<anonymous> (/Users/ianwahbe/Projects/pulumi/langs/typescript/index.ts:7:1)
        at Module._compile (node:internal/modules/cjs/loader:1267:14)
        at Module.m._compile (/Users/ianwahbe/.pulumi-dev/node_modules/@pulumi/pulumi/node_modules/ts-node/src/index.ts:439:23)
        at Module._extensions..js (node:internal/modules/cjs/loader:1321:10)
        at Object.require.extensions.<computed> [as .ts] (/Users/ianwahbe/.pulumi-dev/node_modules/@pulumi/pulumi/node_modules/ts-node/src/index.ts:442:12)
        at Module.load (node:internal/modules/cjs/loader:1125:32)

Output of pulumi about

CLI          
Version      3.69.1-dev.0
Go Version   go1.20.4
Go Compiler  gc

Plugins
NAME    VERSION
aws     5.41.0
awsx    1.0.2
docker  3.6.1
nodejs  unknown

Host     
OS       darwin
Version  13.3.1
Arch     x86_64

This project is written in nodejs: executable='/usr/local/bin/node' version='v20.1.0'

Current Stack: pulumi-test/ts/dev

Found no resources associated with dev

Found no pending operations associated with dev

Backend        
Name           pulumi.com
URL            https://app.pulumi.com/iwahbe
User           iwahbe
Organizations  ***

Dependencies:
NAME            VERSION
@pulumi/pulumi  3.44.0
@pulumi/aws     5.41.0
@pulumi/awsx    1.0.2
@types/node     14.18.32

Pulumi locates its logs in /var/folders/fg/_1q36r4j6yx0rwz2fbhjd5y40000gn/T/ by default

Additional context

I'm marking this as a P1 since an upgrade breaks a user. I think there is some room to disagree here, since the breaking change happened many releases ago.

Contributing

Vote on this issue by adding a 👍 reaction.
To contribute a fix for this issue, leave a comment (and link to your pull request, if you've opened one already).

@iwahbe iwahbe added kind/bug Some behavior is incorrect or out of spec p1 Bugs severe enough to be the next item assigned to an engineer needs-triage Needs attention from the triage team impact/regression Something that used to work, but is now broken labels Jun 1, 2023
@justinvp
Copy link
Member

justinvp commented Jun 2, 2023

This looks like #11520

@RobbieMcKinstry RobbieMcKinstry removed the needs-triage Needs attention from the triage team label Jun 5, 2023
@justinvp justinvp self-assigned this Jun 10, 2023
@justinvp
Copy link
Member

I expect pulumi up to succeed (as it does in v3.43.1) on this project

I just tried this using v3.43.1 of @pulumi/pulumi and I get the same error that is posted above for v3.44.0

$ pulumi preview
Previewing update (dev)

View in Browser (Ctrl+O): https://app.pulumi.com/justin-pulumi-corp/nodemlcexplicit/dev/previews/15734e02-f37c-44be-98fe-c8eb58f67770

     Type                      Name                 Plan       Info
 +   pulumi:pulumi:Stack       nodemlcexplicit-dev  create     1 error
 +   ├─ pulumi:providers:awsx  awsx                 create     
 +   └─ pulumi:providers:aws   aws                  create     


Diagnostics:
  pulumi:pulumi:Stack (nodemlcexplicit-dev):
    error: Error: failed to register new resource vpc [awsx:ec2:Vpc]: 2 UNKNOWN: Default provider for 'awsx' disabled. 'awsx:ec2:Vpc' must use an explicit provider.
        at Object.registerResource (/Users/justin/Documents/2023/06/14/nodemlcexplicit/node_modules/@pulumi/runtime/resource.ts:292:27)
        at new Resource (/Users/justin/Documents/2023/06/14/nodemlcexplicit/node_modules/@pulumi/resource.ts:402:13)
        at new ComponentResource (/Users/justin/Documents/2023/06/14/nodemlcexplicit/node_modules/@pulumi/resource.ts:890:9)
        at new Vpc (/Users/justin/Documents/2023/06/14/nodemlcexplicit/node_modules/@pulumi/ec2/vpc.ts:124:9)
        at Object.<anonymous> (/Users/justin/Documents/2023/06/14/nodemlcexplicit/index.ts:7:1)
        at Module._compile (node:internal/modules/cjs/loader:1205:14)
        at Module.m._compile (/Users/justin/Documents/2023/06/14/nodemlcexplicit/node_modules/ts-node/src/index.ts:439:23)
        at Module._extensions..js (node:internal/modules/cjs/loader:1259:10)
        at Object.require.extensions.<computed> [as .ts] (/Users/justin/Documents/2023/06/14/nodemlcexplicit/node_modules/ts-node/src/index.ts:442:12)
        at Module.load (node:internal/modules/cjs/loader:1068:32)
$ pulumi about
CLI          
Version      3.71.1-dev.0
Go Version   go1.20.4
Go Compiler  gc

Plugins
NAME    VERSION
aws     5.41.0
awsx    1.0.2
docker  3.6.1
nodejs  unknown

Host     
OS       darwin
Version  12.6.6
Arch     arm64

This project is written in nodejs: executable='/Users/justin/.nvm/versions/node/v19.1.0/bin/node' version='v19.1.0'

Current Stack: justin-pulumi-corp/nodemlcexplicit/dev

Found no resources associated with dev

Found no pending operations associated with dev

Backend        
Name           pulumi.com
URL            https://app.pulumi.com/justin-pulumi-corp
User           justin-pulumi-corp
Organizations  justin-pulumi-corp, pulumi

Dependencies:
NAME            VERSION
@pulumi/aws     5.41.0
@pulumi/awsx    1.0.2
@pulumi/pulumi  3.43.1
@types/node     16.18.36

Pulumi locates its logs in /var/folders/xg/z6dhmklj23540z44cm7sgkcr0000gn/T/ by default

I don't think this has ever worked.

@iwahbe
Copy link
Member Author

iwahbe commented Jun 15, 2023

I am able to run this successfully on "@pulumi/pulumi": "3.43.1". This is the stack I used: https://app.pulumi.com/pulumi/ts/dev. Is it possible that you forgot to run yarn install? This definitely works consistently for me on @pulumi/pulumi@v3.43.1.

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

const awsProvider = new aws.Provider("aws", {region: "us-west-2"})
const awsxProvider = new awsx.Provider("awsx")

new awsx.ec2.Vpc("vpc", {}, {provider: awsxProvider ,providers: [ awsProvider]});
package.json
{
    "name": "ts",
    "devDependencies": {
        "@types/node": "^14"
    },
    "dependencies": {
        "@pulumi/pulumi": "3.43.1",
	"@pulumi/aws": "5.41.0",
        "@pulumi/awsx": "1.0.2"
    }
}
Pulumi.yaml
name: ts
runtime: nodejs
description: A minimal AWS TypeScript Pulumi program
config:
  pulumi:disable-default-providers: ["*"]
pulumi about ``` CLI Version 3.69.1-dev.0 Go Version go1.20.4 Go Compiler gc

Plugins
NAME VERSION
aws 5.41.0
awsx 1.0.2
docker 3.6.1
nodejs unknown

Host
OS darwin
Version 13.4
Arch x86_64

This project is written in nodejs: executable='/usr/local/bin/node' version='v20.2.0'

Current Stack: pulumi/ts/dev

TYPE URN
pulumi:pulumi:Stack urn:pulumi:dev::ts::pulumi:pulumi:Stack::ts-dev
pulumi:providers:awsx urn:pulumi:dev::ts::pulumi:providers:awsx::awsx
pulumi:providers:aws urn:pulumi:dev::ts::pulumi:providers:aws::aws
pulumi:providers:pulumi urn:pulumi:dev::ts::pulumi:providers:pulumi::default
awsx:ec2:Vpc urn:pulumi:dev::ts::awsx:ec2:Vpc::vpc
aws:ec2/vpc:Vpc urn:pulumi:dev::ts::awsx:ec2:Vpc$aws:ec2/vpc:Vpc::vpc
aws:ec2/internetGateway:InternetGateway urn:pulumi:dev::ts::awsx:ec2:Vpc$aws:ec2/vpc:Vpc$aws:ec2/internetGateway:InternetGateway::vpc
aws:ec2/subnet:Subnet urn:pulumi:dev::ts::awsx:ec2:Vpc$aws:ec2/vpc:Vpc$aws:ec2/subnet:Subnet::vpc-private-2
aws:ec2/subnet:Subnet urn:pulumi:dev::ts::awsx:ec2:Vpc$aws:ec2/vpc:Vpc$aws:ec2/subnet:Subnet::vpc-private-3
aws:ec2/subnet:Subnet urn:pulumi:dev::ts::awsx:ec2:Vpc$aws:ec2/vpc:Vpc$aws:ec2/subnet:Subnet::vpc-private-1
aws:ec2/routeTable:RouteTable urn:pulumi:dev::ts::awsx:ec2:Vpc$aws:ec2/vpc:Vpc$aws:ec2/subnet:Subnet$aws:ec2/routeTable:RouteTable::vpc-private-2
aws:ec2/routeTable:RouteTable urn:pulumi:dev::ts::awsx:ec2:Vpc$aws:ec2/vpc:Vpc$aws:ec2/subnet:Subnet$aws:ec2/routeTable:RouteTable::vpc-private-3
aws:ec2/routeTable:RouteTable urn:pulumi:dev::ts::awsx:ec2:Vpc$aws:ec2/vpc:Vpc$aws:ec2/subnet:Subnet$aws:ec2/routeTable:RouteTable::vpc-private-1
aws:ec2/routeTableAssociation:RouteTableAssociation urn:pulumi:dev::ts::awsx:ec2:Vpc$aws:ec2/vpc:Vpc$aws:ec2/subnet:Subnet$aws:ec2/routeTable:RouteTable$aws:ec2/routeTableAssociation:RouteTableAssociation::vpc-private-2
aws:ec2/routeTableAssociation:RouteTableAssociation urn:pulumi:dev::ts::awsx:ec2:Vpc$aws:ec2/vpc:Vpc$aws:ec2/subnet:Subnet$aws:ec2/routeTable:RouteTable$aws:ec2/routeTableAssociation:RouteTableAssociation::vpc-private-3
aws:ec2/subnet:Subnet urn:pulumi:dev::ts::awsx:ec2:Vpc$aws:ec2/vpc:Vpc$aws:ec2/subnet:Subnet::vpc-public-2
aws:ec2/subnet:Subnet urn:pulumi:dev::ts::awsx:ec2:Vpc$aws:ec2/vpc:Vpc$aws:ec2/subnet:Subnet::vpc-public-3
aws:ec2/subnet:Subnet urn:pulumi:dev::ts::awsx:ec2:Vpc$aws:ec2/vpc:Vpc$aws:ec2/subnet:Subnet::vpc-public-1
aws:ec2/routeTable:RouteTable urn:pulumi:dev::ts::awsx:ec2:Vpc$aws:ec2/vpc:Vpc$aws:ec2/subnet:Subnet$aws:ec2/routeTable:RouteTable::vpc-public-2
aws:ec2/routeTableAssociation:RouteTableAssociation urn:pulumi:dev::ts::awsx:ec2:Vpc$aws:ec2/vpc:Vpc$aws:ec2/subnet:Subnet$aws:ec2/routeTable:RouteTable$aws:ec2/routeTableAssociation:RouteTableAssociation::vpc-private-1
aws:ec2/eip:Eip urn:pulumi:dev::ts::awsx:ec2:Vpc$aws:ec2/vpc:Vpc$aws:ec2/subnet:Subnet$aws:ec2/eip:Eip::vpc-2
aws:ec2/routeTable:RouteTable urn:pulumi:dev::ts::awsx:ec2:Vpc$aws:ec2/vpc:Vpc$aws:ec2/subnet:Subnet$aws:ec2/routeTable:RouteTable::vpc-public-3
aws:ec2/eip:Eip urn:pulumi:dev::ts::awsx:ec2:Vpc$aws:ec2/vpc:Vpc$aws:ec2/subnet:Subnet$aws:ec2/eip:Eip::vpc-3
aws:ec2/eip:Eip urn:pulumi:dev::ts::awsx:ec2:Vpc$aws:ec2/vpc:Vpc$aws:ec2/subnet:Subnet$aws:ec2/eip:Eip::vpc-1
aws:ec2/routeTable:RouteTable urn:pulumi:dev::ts::awsx:ec2:Vpc$aws:ec2/vpc:Vpc$aws:ec2/subnet:Subnet$aws:ec2/routeTable:RouteTable::vpc-public-1
aws:ec2/routeTableAssociation:RouteTableAssociation urn:pulumi:dev::ts::awsx:ec2:Vpc$aws:ec2/vpc:Vpc$aws:ec2/subnet:Subnet$aws:ec2/routeTable:RouteTable$aws:ec2/routeTableAssociation:RouteTableAssociation::vpc-public-2
aws:ec2/route:Route urn:pulumi:dev::ts::awsx:ec2:Vpc$aws:ec2/vpc:Vpc$aws:ec2/subnet:Subnet$aws:ec2/routeTable:RouteTable$aws:ec2/route:Route::vpc-public-2
aws:ec2/routeTableAssociation:RouteTableAssociation urn:pulumi:dev::ts::awsx:ec2:Vpc$aws:ec2/vpc:Vpc$aws:ec2/subnet:Subnet$aws:ec2/routeTable:RouteTable$aws:ec2/routeTableAssociation:RouteTableAssociation::vpc-public-3
aws:ec2/route:Route urn:pulumi:dev::ts::awsx:ec2:Vpc$aws:ec2/vpc:Vpc$aws:ec2/subnet:Subnet$aws:ec2/routeTable:RouteTable$aws:ec2/route:Route::vpc-public-3
aws:ec2/routeTableAssociation:RouteTableAssociation urn:pulumi:dev::ts::awsx:ec2:Vpc$aws:ec2/vpc:Vpc$aws:ec2/subnet:Subnet$aws:ec2/routeTable:RouteTable$aws:ec2/routeTableAssociation:RouteTableAssociation::vpc-public-1
aws:ec2/route:Route urn:pulumi:dev::ts::awsx:ec2:Vpc$aws:ec2/vpc:Vpc$aws:ec2/subnet:Subnet$aws:ec2/routeTable:RouteTable$aws:ec2/route:Route::vpc-public-1
aws:ec2/natGateway:NatGateway urn:pulumi:dev::ts::awsx:ec2:Vpc$aws:ec2/vpc:Vpc$aws:ec2/subnet:Subnet$aws:ec2/natGateway:NatGateway::vpc-1
aws:ec2/route:Route urn:pulumi:dev::ts::awsx:ec2:Vpc$aws:ec2/vpc:Vpc$aws:ec2/subnet:Subnet$aws:ec2/routeTable:RouteTable$aws:ec2/route:Route::vpc-private-1
aws:ec2/natGateway:NatGateway urn:pulumi:dev::ts::awsx:ec2:Vpc$aws:ec2/vpc:Vpc$aws:ec2/subnet:Subnet$aws:ec2/natGateway:NatGateway::vpc-2
aws:ec2/route:Route urn:pulumi:dev::ts::awsx:ec2:Vpc$aws:ec2/vpc:Vpc$aws:ec2/subnet:Subnet$aws:ec2/routeTable:RouteTable$aws:ec2/route:Route::vpc-private-2
aws:ec2/natGateway:NatGateway urn:pulumi:dev::ts::awsx:ec2:Vpc$aws:ec2/vpc:Vpc$aws:ec2/subnet:Subnet$aws:ec2/natGateway:NatGateway::vpc-3
aws:ec2/route:Route urn:pulumi:dev::ts::awsx:ec2:Vpc$aws:ec2/vpc:Vpc$aws:ec2/subnet:Subnet$aws:ec2/routeTable:RouteTable$aws:ec2/route:Route::vpc-private-3

Found no pending operations associated with dev

Backend
Name pulumi.com
URL https://app.pulumi.com/ian-pulumi-corp
User ian-pulumi-corp
Organizations ian-pulumi-corp, pulumi

Dependencies:
NAME VERSION
@pulumi/pulumi 3.43.1
@pulumi/aws 5.41.0
@pulumi/awsx 1.0.2
@types/node 14.18.32

Pulumi locates its logs in /var/folders/fg/_1q36r4j6yx0rwz2fbhjd5y40000gn/T/ by default


</details>

@justinvp
Copy link
Member

Here's the history on this: Support was added in #11093 but it had to be reverted in #11509 because if a user specified provider: someProvider as shorthand for providers: [someProvider], and someProvider wasn't a provider for the component, it would fail because such a provider did not implement Construct for the component.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
impact/regression Something that used to work, but is now broken kind/bug Some behavior is incorrect or out of spec p1 Bugs severe enough to be the next item assigned to an engineer resolution/fixed This issue was fixed
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants