pulumi / pulumi

Pulumi - Infrastructure as Code in any programming language 🚀
https://www.pulumi.com
Apache License 2.0
20.49k stars 1.06k forks source link

Difference between pulumi refresh and pulumi up --refresh #13356

Open jlp-mobilo opened 1 year ago

jlp-mobilo commented 1 year ago

What happened?

When running pulumi refresh and pulumi up --refresh I get two different results

pulumi refresh

Previewing refresh (stag):
     Type                                       Name                                 Plan       Info
     pulumi:pulumi:Stack                        mobilo-infra-stag
     ├─ gcp:projects:Service                    srv-apigtw
     ├─ gcp:projects:Service                    srv-compute
     ├─ gcp:projects:Service                    srv-control
     ├─ gcp:projects:Service                    ghp-functions-srv-iamcreds
     ├─ gcp:apigateway:Api                      webhook-gtw-stag
     ├─ gcp:serviceAccount:Account              ghp-functions-sa
     ├─ gcp:compute:ManagedSslCertificate       util-gtw-stag-sslCertificate
     ├─ gcp:projects:Service                    srv-iamcreds
     ├─ gcp:apigateway:Api                      api-gtw-stag
     ├─ gcp:compute:GlobalAddress               webhook-gtw-stag-ipAddress-
     ├─ gcp:compute:ManagedSslCertificate       webhook-gtw-stag-sslCertificate
     ├─ gcp:compute:ManagedSslCertificate       api-gtw-stag-sslCertificate
     ├─ gcp:projects:Service                    srv-certmanager
 ~   ├─ gcp:projects:IAMBinding                 mobilo-staging-binding-functions     update     [diff: ~etag]
     ├─ gcp:projects:Service                    srv-management
     ├─ gcp:projects:Service                    srv-iam
     ├─ gcp:apigateway:Api                      util-gtw-stag
     ├─ gcp:iam:WorkloadIdentityPool            ghp-functions
     ├─ gcp:compute:GlobalAddress               util-gtw-stag-ipAddress-
     ├─ gcp:apigateway:ApiConfig                webhook-gtw-stag-api-config
     ├─ gcp:compute:GlobalAddress               api-gtw-stag-ipAddress-
     ├─ gcp:serviceAccount:IAMBinding           mobilo-staging-biding-workload
 ~   ├─ gcp:projects:IAMBinding                 mobilo-staging-binding-access-token  update     [diff: ~etag]
     ├─ gcp:apigateway:ApiConfig                api-gtw-stag-api-config
     ├─ gcp:apigateway:ApiConfig                util-gtw-stag-api-config
     ├─ gcp:apigateway:Gateway                  api-gtw-stag-gateway
     ├─ gcp:projects:Service                    srv-run
     ├─ gcp:compute:RegionNetworkEndpointGroup  webhook-gtw-stag-neg
     ├─ gcp:apigateway:Gateway                  webhook-gtw-stag-gateway
     ├─ gcp:apigateway:Gateway                  util-gtw-stag-gateway
     ├─ gcp:iam:WorkloadIdentityPoolProvider    ghp-functions-provider
     ├─ gcp:compute:RegionNetworkEndpointGroup  util-gtw-stag-neg
     ├─ gcp:compute:RegionNetworkEndpointGroup  api-gtw-stag-neg
     ├─ pulumi:providers:gcp                    mobistrano-provider
     ├─ gcp:compute:BackendService              webhook-gtw-stag-backendService
     ├─ gcp:compute:BackendService              util-gtw-stag-backendService
     ├─ gcp:compute:BackendService              api-gtw-stag-backendService
     ├─ gcp:compute:URLMap                      webhook-gtw-stag-urlMap
     ├─ gcp:compute:URLMap                      api-gtw-stag-urlMap
 ~   ├─ gcp:projects:IAMMember                  compute-sa-cloudfunctions-invoker    update     [diff: ~etag]
     ├─ gcp:compute:URLMap                      util-gtw-stag-urlMap
 ~   ├─ gcp:projects:IAMMember                  compute-sa-editor                    update     [diff: ~etag]
 ~   ├─ gcp:projects:IAMMember                  compute-sa-secretmanager-admin       update     [diff: ~etag]
     ├─ gcp:compute:TargetHttpsProxy            api-gtw-stag-targetHttpsProxy
     ├─ gcp:compute:GlobalForwardingRule        webhook-gtw-stag-forwardingRule
     ├─ gcp:compute:TargetHttpsProxy            util-gtw-stag-targetHttpsProxy
     ├─ gcp:compute:TargetHttpsProxy            webhook-gtw-stag-targetHttpsProxy
     ├─ gcp:compute:GlobalForwardingRule        util-gtw-stag-forwardingRule
     ├─ gcp:compute:GlobalForwardingRule        api-gtw-stag-forwardingRule
 ~   └─ gcp:projects:IAMMember                  mobistrano-sa                        update     [diff: ~etag]

pulumi up --refresh

\Previewing update (stag):
     Type                                       Name                                 Plan     Info
     pulumi:pulumi:Stack                        mobilo-infra-stag
     ├─ gcp:projects:Service                    srv-compute
     ├─ gcp:projects:Service                    srv-apigtw
     ├─ gcp:apigateway:Api                      webhook-gtw-stag
     ├─ gcp:projects:Service                    srv-control
     ├─ gcp:compute:ManagedSslCertificate       webhook-gtw-stag-sslCertificate
     ├─ gcp:apigateway:Api                      api-gtw-stag
     ├─ gcp:serviceAccount:Account              ghp-functions-sa
     ├─ gcp:projects:Service                    srv-run
     ├─ gcp:projects:Service                    srv-iamcreds
     ├─ gcp:projects:Service                    ghp-functions-srv-iamcreds
     ├─ gcp:compute:ManagedSslCertificate       util-gtw-stag-sslCertificate
     ├─ gcp:projects:Service                    srv-certmanager
     ├─ gcp:iam:WorkloadIdentityPool            ghp-functions
     ├─ gcp:compute:ManagedSslCertificate       api-gtw-stag-sslCertificate
     ├─ gcp:compute:GlobalAddress               webhook-gtw-stag-ipAddress-
     ├─ gcp:projects:Service                    srv-management
     ├─ gcp:projects:Service                    srv-iam
     ├─ gcp:projects:IAMBinding                 mobilo-staging-binding-functions
     ├─ gcp:apigateway:Api                      util-gtw-stag
     ├─ gcp:compute:GlobalAddress               util-gtw-stag-ipAddress-
     ├─ gcp:compute:GlobalAddress               api-gtw-stag-ipAddress-
     ├─ gcp:projects:IAMBinding                 mobilo-staging-binding-access-token
     ├─ gcp:apigateway:ApiConfig                webhook-gtw-stag-api-config
     ├─ gcp:serviceAccount:IAMBinding           mobilo-staging-biding-workload
     ├─ gcp:apigateway:ApiConfig                api-gtw-stag-api-config
     ├─ gcp:apigateway:ApiConfig                util-gtw-stag-api-config
     ├─ gcp:iam:WorkloadIdentityPoolProvider    ghp-functions-provider
     ├─ gcp:apigateway:Gateway                  webhook-gtw-stag-gateway                      [diff: ~apiConfig]
     ├─ gcp:apigateway:Gateway                  api-gtw-stag-gateway                          [diff: ~apiConfig]
     ├─ gcp:apigateway:Gateway                  util-gtw-stag-gateway                         [diff: ~apiConfig]
     ├─ gcp:compute:RegionNetworkEndpointGroup  webhook-gtw-stag-neg                          [diff: ~region]
     ├─ gcp:compute:RegionNetworkEndpointGroup  util-gtw-stag-neg                             [diff: ~region]
     ├─ pulumi:providers:gcp                    mobistrano-provider
     ├─ gcp:compute:RegionNetworkEndpointGroup  api-gtw-stag-neg                              [diff: ~region]
     ├─ gcp:compute:URLMap                      api-gtw-stag-urlMap                           [diff: ~defaultService]
     ├─ gcp:compute:URLMap                      webhook-gtw-stag-urlMap                       [diff: ~defaultService]
     ├─ gcp:compute:BackendService              webhook-gtw-stag-backendService               [diff: ~backends,customResponseHeaders]
     ├─ gcp:compute:BackendService              api-gtw-stag-backendService                   [diff: ~backends,customResponseHeaders]
     ├─ gcp:compute:URLMap                      util-gtw-stag-urlMap                          [diff: ~defaultService]
     ├─ gcp:projects:IAMMember                  compute-sa-cloudfunctions-invoker
     ├─ gcp:projects:IAMMember                  compute-sa-secretmanager-admin
     ├─ gcp:compute:BackendService              util-gtw-stag-backendService                  [diff: ~backends,customResponseHeaders]
     ├─ gcp:projects:IAMMember                  compute-sa-editor
     ├─ gcp:compute:TargetHttpsProxy            api-gtw-stag-targetHttpsProxy                 [diff: ~sslCertificates,urlMap]
     ├─ gcp:compute:TargetHttpsProxy            webhook-gtw-stag-targetHttpsProxy             [diff: ~sslCertificates,urlMap]
     ├─ gcp:compute:GlobalForwardingRule        webhook-gtw-stag-forwardingRule
     ├─ gcp:compute:TargetHttpsProxy            util-gtw-stag-targetHttpsProxy                [diff: ~sslCertificates,urlMap]
     ├─ gcp:compute:GlobalForwardingRule        api-gtw-stag-forwardingRule
     ├─ gcp:compute:GlobalForwardingRule        util-gtw-stag-forwardingRule
     └─ gcp:projects:IAMMember                  mobistrano-sa

Expected Behavior

I would expect to receive the same output.

Steps to reproduce

run pulumi refresh and then pulumi up --refresh

Output of pulumi about

Enter your passphrase to unlock config/secrets (set PULUMI_CONFIG_PASSPHRASE or PULUMI_CONFIG_PASSPHRASE_FILE to remember): \CLI Version 3.74.0 Go Version go1.20.5 Go Compiler gc

Plugins NAME VERSION gcp 6.55.1 nodejs unknown

Host OS darwin Version 13.4 Arch arm64

This project is written in nodejs: executable='/Users/jlp/.nvm/versions/node/v18.16.0/bin/node' version='v18.16.0'

Current Stack: organization/mobilo-infra/stag

TYPE URN pulumi:pulumi:Stack urn:pulumi:stag::mobilo-infra::pulumi:pulumi:Stack::mobilo-infra-stag pulumi:providers:gcp urn:pulumi:stag::mobilo-infra::pulumi:providers:gcp::default_6_55_1 gcp:projects/service:Service urn:pulumi:stag::mobilo-infra::gcp:projects/service:Service::srv-compute gcp:apigateway/api:Api urn:pulumi:stag::mobilo-infra::gcp:apigateway/api:Api::webhook-gtw-stag gcp:projects/service:Service urn:pulumi:stag::mobilo-infra::gcp:projects/service:Service::srv-apigtw gcp:projects/service:Service urn:pulumi:stag::mobilo-infra::gcp:projects/service:Service::srv-control gcp:compute/managedSslCertificate:ManagedSslCertificate urn:pulumi:stag::mobilo-infra::gcp:compute/managedSslCertificate:ManagedSslCertificate::webhook-gtw-stag-sslCertificate gcp:serviceAccount/account:Account urn:pulumi:stag::mobilo-infra::gcp:serviceAccount/account:Account::ghp-functions-sa gcp:apigateway/api:Api urn:pulumi:stag::mobilo-infra::gcp:apigateway/api:Api::api-gtw-stag gcp:projects/service:Service urn:pulumi:stag::mobilo-infra::gcp:projects/service:Service::ghp-functions-srv-iamcreds gcp:projects/service:Service urn:pulumi:stag::mobilo-infra::gcp:projects/service:Service::srv-run gcp:compute/managedSslCertificate:ManagedSslCertificate urn:pulumi:stag::mobilo-infra::gcp:compute/managedSslCertificate:ManagedSslCertificate::util-gtw-stag-sslCertificate gcp:projects/service:Service urn:pulumi:stag::mobilo-infra::gcp:projects/service:Service::srv-iamcreds gcp:compute/globalAddress:GlobalAddress urn:pulumi:stag::mobilo-infra::gcp:compute/globalAddress:GlobalAddress::webhook-gtw-stag-ipAddress- gcp:projects/service:Service urn:pulumi:stag::mobilo-infra::gcp:projects/service:Service::srv-certmanager gcp:compute/managedSslCertificate:ManagedSslCertificate urn:pulumi:stag::mobilo-infra::gcp:compute/managedSslCertificate:ManagedSslCertificate::api-gtw-stag-sslCertificate gcp:iam/workloadIdentityPool:WorkloadIdentityPool urn:pulumi:stag::mobilo-infra::gcp:iam/workloadIdentityPool:WorkloadIdentityPool::ghp-functions gcp:projects/service:Service urn:pulumi:stag::mobilo-infra::gcp:projects/service:Service::srv-iam gcp:projects/iAMBinding:IAMBinding urn:pulumi:stag::mobilo-infra::gcp:projects/iAMBinding:IAMBinding::mobilo-staging-binding-functions gcp:apigateway/api:Api urn:pulumi:stag::mobilo-infra::gcp:apigateway/api:Api::util-gtw-stag gcp:projects/service:Service urn:pulumi:stag::mobilo-infra::gcp:projects/service:Service::srv-management gcp:compute/globalAddress:GlobalAddress urn:pulumi:stag::mobilo-infra::gcp:compute/globalAddress:GlobalAddress::api-gtw-stag-ipAddress- gcp:compute/globalAddress:GlobalAddress urn:pulumi:stag::mobilo-infra::gcp:compute/globalAddress:GlobalAddress::util-gtw-stag-ipAddress- gcp:projects/iAMBinding:IAMBinding urn:pulumi:stag::mobilo-infra::gcp:projects/iAMBinding:IAMBinding::mobilo-staging-binding-access-token gcp:apigateway/apiConfig:ApiConfig urn:pulumi:stag::mobilo-infra::gcp:apigateway/apiConfig:ApiConfig::webhook-gtw-stag-api-config gcp:serviceAccount/iAMBinding:IAMBinding urn:pulumi:stag::mobilo-infra::gcp:serviceAccount/iAMBinding:IAMBinding::mobilo-staging-biding-workload gcp:apigateway/apiConfig:ApiConfig urn:pulumi:stag::mobilo-infra::gcp:apigateway/apiConfig:ApiConfig::api-gtw-stag-api-config gcp:iam/workloadIdentityPoolProvider:WorkloadIdentityPoolProvider urn:pulumi:stag::mobilo-infra::gcp:iam/workloadIdentityPoolProvider:WorkloadIdentityPoolProvider::ghp-functions-provider gcp:apigateway/apiConfig:ApiConfig urn:pulumi:stag::mobilo-infra::gcp:apigateway/apiConfig:ApiConfig::util-gtw-stag-api-config gcp:apigateway/gateway:Gateway urn:pulumi:stag::mobilo-infra::gcp:apigateway/gateway:Gateway::webhook-gtw-stag-gateway gcp:apigateway/gateway:Gateway urn:pulumi:stag::mobilo-infra::gcp:apigateway/gateway:Gateway::api-gtw-stag-gateway gcp:apigateway/gateway:Gateway urn:pulumi:stag::mobilo-infra::gcp:apigateway/gateway:Gateway::util-gtw-stag-gateway gcp:compute/regionNetworkEndpointGroup:RegionNetworkEndpointGroup urn:pulumi:stag::mobilo-infra::gcp:compute/regionNetworkEndpointGroup:RegionNetworkEndpointGroup::webhook-gtw-stag-neg gcp:compute/regionNetworkEndpointGroup:RegionNetworkEndpointGroup urn:pulumi:stag::mobilo-infra::gcp:compute/regionNetworkEndpointGroup:RegionNetworkEndpointGroup::api-gtw-stag-neg gcp:compute/regionNetworkEndpointGroup:RegionNetworkEndpointGroup urn:pulumi:stag::mobilo-infra::gcp:compute/regionNetworkEndpointGroup:RegionNetworkEndpointGroup::util-gtw-stag-neg pulumi:providers:gcp urn:pulumi:stag::mobilo-infra::pulumi:providers:gcp::mobistrano-provider gcp:compute/backendService:BackendService urn:pulumi:stag::mobilo-infra::gcp:compute/backendService:BackendService::webhook-gtw-stag-backendService gcp:compute/backendService:BackendService urn:pulumi:stag::mobilo-infra::gcp:compute/backendService:BackendService::api-gtw-stag-backendService gcp:compute/backendService:BackendService urn:pulumi:stag::mobilo-infra::gcp:compute/backendService:BackendService::util-gtw-stag-backendService gcp:compute/uRLMap:URLMap urn:pulumi:stag::mobilo-infra::gcp:compute/uRLMap:URLMap::webhook-gtw-stag-urlMap gcp:compute/uRLMap:URLMap urn:pulumi:stag::mobilo-infra::gcp:compute/uRLMap:URLMap::api-gtw-stag-urlMap gcp:compute/uRLMap:URLMap urn:pulumi:stag::mobilo-infra::gcp:compute/uRLMap:URLMap::util-gtw-stag-urlMap gcp:projects/iAMMember:IAMMember urn:pulumi:stag::mobilo-infra::gcp:projects/iAMMember:IAMMember::compute-sa-cloudfunctions-invoker gcp:projects/iAMMember:IAMMember urn:pulumi:stag::mobilo-infra::gcp:projects/iAMMember:IAMMember::compute-sa-secretmanager-admin gcp:projects/iAMMember:IAMMember urn:pulumi:stag::mobilo-infra::gcp:projects/iAMMember:IAMMember::compute-sa-editor gcp:compute/targetHttpsProxy:TargetHttpsProxy urn:pulumi:stag::mobilo-infra::gcp:compute/targetHttpsProxy:TargetHttpsProxy::webhook-gtw-stag-targetHttpsProxy gcp:compute/targetHttpsProxy:TargetHttpsProxy urn:pulumi:stag::mobilo-infra::gcp:compute/targetHttpsProxy:TargetHttpsProxy::api-gtw-stag-targetHttpsProxy gcp:compute/targetHttpsProxy:TargetHttpsProxy urn:pulumi:stag::mobilo-infra::gcp:compute/targetHttpsProxy:TargetHttpsProxy::util-gtw-stag-targetHttpsProxy gcp:compute/globalForwardingRule:GlobalForwardingRule urn:pulumi:stag::mobilo-infra::gcp:compute/globalForwardingRule:GlobalForwardingRule::webhook-gtw-stag-forwardingRule gcp:compute/globalForwardingRule:GlobalForwardingRule urn:pulumi:stag::mobilo-infra::gcp:compute/globalForwardingRule:GlobalForwardingRule::api-gtw-stag-forwardingRule gcp:compute/globalForwardingRule:GlobalForwardingRule urn:pulumi:stag::mobilo-infra::gcp:compute/globalForwardingRule:GlobalForwardingRule::util-gtw-stag-forwardingRule gcp:projects/iAMMember:IAMMember urn:pulumi:stag::mobilo-infra::gcp:projects/iAMMember:IAMMember::mobistrano-sa

Found no pending operations associated with stag

Backend Name JLPs-MacBook-Pro.local URL gs://mobilo-pulumi-state User jlp Organizations

Dependencies: NAME VERSION @types/js-yaml 4.0.5 @types/node 16.18.26 js-yaml 4.1.0 @pulumi/gcp 6.55.1 @pulumi/pulumi 3.66.0

Pulumi locates its logs in /var/folders/l5/62z0rpz91_l22dfxqlx6g9b80000gp/T/ by default

Additional context

No response

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).

dixler commented 12 months ago

Hi thanks for filing this. If you made changes to your pulumi program, the changes would not be seen in a pulumi refresh, but would be seen in a pulumi up --refresh.

Does this explain the behavior that you are seeing? If not, a small repro program would be helpful :pray:

For context, pulumi refresh does not run your pulumi program. pulumi up --refresh does run your pulumi program.

jlp-mobilo commented 12 months ago

as you can see the diff I sent, the program did not have any changes. My programs are quite elaborated. I was just curious to see if anyone else has encounter this difference.

Frassle commented 12 months ago

Yeh I'd expect pulumi refresh and the refresh part of pulumi up --refresh to look the same, but I'm pretty sure they have unique code paths which could be causing this. I'll have a dig around the code next week.