pulumi / pulumi-gcp

A Google Cloud Platform (GCP) Pulumi resource package, providing multi-language access to GCP
Apache License 2.0
179 stars 52 forks source link

Removing serviceAccountEmail from gcp.cloudfunctions.HttpCallbackFunction does not amend the Google Cloud Function #997

Open 0xJem opened 1 year ago

0xJem commented 1 year ago

What happened?

Removing the service account assigned to a Google Cloud Function (using the gcp package) does not re-deploy the function, nor does it change the configured service account in GCP. Running refresh makes no difference, either.

Expected Behavior

The function should be re-deployed and the setting to run the function as the service account should be removed

Steps to reproduce

Before:

  const pubSubHandlerFunction = new gcp.cloudfunctions.HttpCallbackFunction(
    name,
    {
      runtime: "nodejs18",
      timeout: 30,
      availableMemoryMb: 256,
      serviceAccountEmail: serviceAccount.email,
      callback: callbackFn,
      environmentVariables: environment,
    },
  );

After:

  const pubSubHandlerFunction = new gcp.cloudfunctions.HttpCallbackFunction(
    name,
    {
      runtime: "nodejs18",
      timeout: 30,
      availableMemoryMb: 256,
      //serviceAccountEmail: serviceAccount.email,
      callback: callbackFn,
      environmentVariables: environment,
    },
  );

Output of pulumi about

CLI
Version 3.54.0 Go Version go1.19.5 Go Compiler gc

Plugins NAME VERSION gcp 6.49.0 nodejs unknown

Host
OS darwin Version 13.2.1 Arch arm64

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

Current Stack: 0xJem/notifications/dev

TYPE URN pulumi:pulumi:Stack urn:pulumi:dev::notifications::pulumi:pulumi:Stack::notifications-dev pulumi:providers:gcp urn:pulumi:dev::notifications::pulumi:providers:gcp::default_6_49_0 gcp:pubsub/topic:Topic urn:pulumi:dev::notifications::gcp:pubsub/topic:Topic::runner-alert gcp:pubsub/topic:Topic urn:pulumi:dev::notifications::gcp:pubsub/topic:Topic::email-notf gcp:pubsub/topic:Topic urn:pulumi:dev::notifications::gcp:pubsub/topic:Topic::email-inv gcp:serviceAccount/account:Account urn:pulumi:dev::notifications::gcp:serviceAccount/account:Account::email-notf gcp:projects/serviceIdentity:ServiceIdentity urn:pulumi:dev::notifications::gcp:projects/serviceIdentity:ServiceIdentity::runner-alert gcp:serviceAccount/account:Account urn:pulumi:dev::notifications::gcp:serviceAccount/account:Account::discord gcp:serviceAccount/account:Account urn:pulumi:dev::notifications::gcp:serviceAccount/account:Account::email-inv gcp:projects/serviceIdentity:ServiceIdentity urn:pulumi:dev::notifications::gcp:projects/serviceIdentity:ServiceIdentity::email-notf gcp:pubsub/topic:Topic urn:pulumi:dev::notifications::gcp:pubsub/topic:Topic::discord-dlq gcp:storage/bucket:Bucket urn:pulumi:dev::notifications::gcp:storage/bucket:Bucket::notification-data gcp:pubsub/topic:Topic urn:pulumi:dev::notifications::gcp:pubsub/topic:Topic::email-inv-dlq gcp:serviceAccount/account:Account urn:pulumi:dev::notifications::gcp:serviceAccount/account:Account::runner-alert gcp:pubsub/topic:Topic urn:pulumi:dev::notifications::gcp:pubsub/topic:Topic::discord gcp:pubsub/topic:Topic urn:pulumi:dev::notifications::gcp:pubsub/topic:Topic::runner-alert-dlq gcp:projects/serviceIdentity:ServiceIdentity urn:pulumi:dev::notifications::gcp:projects/serviceIdentity:ServiceIdentity::email-inv gcp:storage/bucket:Bucket urn:pulumi:dev::notifications::gcp:storage/bucket:Bucket::assets gcp:pubsub/topic:Topic urn:pulumi:dev::notifications::gcp:pubsub/topic:Topic::email-notf-dlq gcp:cloudfunctions:CallbackFunction urn:pulumi:dev::notifications::gcp:cloudfunctions:CallbackFunction::email-notf gcp:cloudfunctions:CallbackFunction urn:pulumi:dev::notifications::gcp:cloudfunctions:CallbackFunction::discord gcp:cloudfunctions:CallbackFunction urn:pulumi:dev::notifications::gcp:cloudfunctions:CallbackFunction::email-inv gcp:projects/serviceIdentity:ServiceIdentity urn:pulumi:dev::notifications::gcp:projects/serviceIdentity:ServiceIdentity::discord gcp:cloudfunctions:CallbackFunction urn:pulumi:dev::notifications::gcp:cloudfunctions:CallbackFunction::runner-alert gcp:storage/bucketIAMBinding:BucketIAMBinding urn:pulumi:dev::notifications::gcp:storage/bucketIAMBinding:BucketIAMBinding::notification-data gcp:storage/bucketIAMBinding:BucketIAMBinding urn:pulumi:dev::notifications::gcp:storage/bucketIAMBinding:BucketIAMBinding::public gcp:storage/bucketObject:BucketObject urn:pulumi:dev::notifications::gcp:storage/bucketObject:BucketObject::logo gcp:storage/bucket:Bucket urn:pulumi:dev::notifications::gcp:cloudfunctions:CallbackFunction$gcp:storage/bucket:Bucket::email-notf gcp:storage/bucket:Bucket urn:pulumi:dev::notifications::gcp:cloudfunctions:CallbackFunction$gcp:storage/bucket:Bucket::discord gcp:storage/bucket:Bucket urn:pulumi:dev::notifications::gcp:cloudfunctions:CallbackFunction$gcp:storage/bucket:Bucket::email-inv gcp:storage/bucket:Bucket urn:pulumi:dev::notifications::gcp:cloudfunctions:CallbackFunction$gcp:storage/bucket:Bucket::runner-alert gcp:storage/bucketObject:BucketObject urn:pulumi:dev::notifications::gcp:cloudfunctions:CallbackFunction$gcp:storage/bucketObject:BucketObject::email-notf gcp:storage/bucketObject:BucketObject urn:pulumi:dev::notifications::gcp:cloudfunctions:CallbackFunction$gcp:storage/bucketObject:BucketObject::discord gcp:storage/bucketObject:BucketObject urn:pulumi:dev::notifications::gcp:cloudfunctions:CallbackFunction$gcp:storage/bucketObject:BucketObject::email-inv gcp:storage/bucketObject:BucketObject urn:pulumi:dev::notifications::gcp:cloudfunctions:CallbackFunction$gcp:storage/bucketObject:BucketObject::runner-alert gcp:cloudfunctions/function:Function urn:pulumi:dev::notifications::gcp:cloudfunctions:CallbackFunction$gcp:cloudfunctions/function:Function::email-notf gcp:cloudfunctions/function:Function urn:pulumi:dev::notifications::gcp:cloudfunctions:CallbackFunction$gcp:cloudfunctions/function:Function::discord gcp:cloudfunctions/function:Function urn:pulumi:dev::notifications::gcp:cloudfunctions:CallbackFunction$gcp:cloudfunctions/function:Function::email-inv gcp:cloudfunctions/function:Function urn:pulumi:dev::notifications::gcp:cloudfunctions:CallbackFunction$gcp:cloudfunctions/function:Function::runner-alert gcp:cloudfunctions/functionIamMember:FunctionIamMember urn:pulumi:dev::notifications::gcp:cloudfunctions:CallbackFunction$gcp:cloudfunctions/functionIamMember:FunctionIamMember::email-notf-invoker gcp:cloudfunctions/functionIamMember:FunctionIamMember urn:pulumi:dev::notifications::gcp:cloudfunctions:CallbackFunction$gcp:cloudfunctions/functionIamMember:FunctionIamMember::discord-invoker gcp:cloudfunctions/functionIamMember:FunctionIamMember urn:pulumi:dev::notifications::gcp:cloudfunctions:CallbackFunction$gcp:cloudfunctions/functionIamMember:FunctionIamMember::email-inv-invoker gcp:cloudfunctions/functionIamMember:FunctionIamMember urn:pulumi:dev::notifications::gcp:cloudfunctions:CallbackFunction$gcp:cloudfunctions/functionIamMember:FunctionIamMember::runner-alert-invoker gcp:pubsub/subscription:Subscription urn:pulumi:dev::notifications::gcp:pubsub/subscription:Subscription::email-notf gcp:pubsub/subscription:Subscription urn:pulumi:dev::notifications::gcp:pubsub/subscription:Subscription::discord gcp:pubsub/subscription:Subscription urn:pulumi:dev::notifications::gcp:pubsub/subscription:Subscription::email-inv gcp:pubsub/subscription:Subscription urn:pulumi:dev::notifications::gcp:pubsub/subscription:Subscription::runner-alert gcp:pubsub/topicIAMMember:TopicIAMMember urn:pulumi:dev::notifications::gcp:pubsub/topicIAMMember:TopicIAMMember::runner-alert-dlq gcp:pubsub/topicIAMMember:TopicIAMMember urn:pulumi:dev::notifications::gcp:pubsub/topicIAMMember:TopicIAMMember::email-inv-dlq gcp:pubsub/topicIAMMember:TopicIAMMember urn:pulumi:dev::notifications::gcp:pubsub/topicIAMMember:TopicIAMMember::email-notf-dlq gcp:pubsub/topicIAMMember:TopicIAMMember urn:pulumi:dev::notifications::gcp:pubsub/topicIAMMember:TopicIAMMember::discord-dlq gcp:pubsub/subscriptionIAMMember:SubscriptionIAMMember urn:pulumi:dev::notifications::gcp:pubsub/subscriptionIAMMember:SubscriptionIAMMember::email-notf gcp:pubsub/subscriptionIAMMember:SubscriptionIAMMember urn:pulumi:dev::notifications::gcp:pubsub/subscriptionIAMMember:SubscriptionIAMMember::discord gcp:pubsub/subscriptionIAMMember:SubscriptionIAMMember urn:pulumi:dev::notifications::gcp:pubsub/subscriptionIAMMember:SubscriptionIAMMember::email-inv gcp:pubsub/subscriptionIAMMember:SubscriptionIAMMember urn:pulumi:dev::notifications::gcp:pubsub/subscriptionIAMMember:SubscriptionIAMMember::runner-alert

Found no pending operations associated with dev

Backend
Name pulumi.com URL https://app.pulumi.com/0xJem User 0xJem Organizations 0xJem

Dependencies: NAME VERSION @google-cloud/pubsub 3.3.0 @google-cloud/storage 6.9.3 @pulumi/gcp 6.50.0 @pulumi/pulumi 3.54.0 @sendgrid/mail 7.7.0 catch-unknown 1.0.0 cross-fetch 3.1.5 discord.js 14.7.1 firebase-admin 11.5.0 randomstring 1.2.3 @types/express 4.17.17 @types/jest 29.4.0 @types/jest-when 3.5.2 @types/node 18.13.0 @types/randomstring 1.1.8 @types/supertest 2.0.12 @typescript-eslint/eslint-plugin 5.51.0 @typescript-eslint/parser 5.51.0 eslint 8.33.0 eslint-config-prettier 8.6.0 eslint-plugin-import 2.27.5 eslint-plugin-jest 27.2.1 eslint-plugin-no-relative-import-paths 1.5.2 eslint-plugin-prettier 4.2.1 eslint-plugin-simple-import-sort 8.0.0 eslint-plugin-unused-imports 2.0.0 jest 29.4.3 jest-mock-fetch 2.0.5 jest-when 3.5.2 prettier 2.8.4 ts-jest 29.0.5 ts-node 10.9.1 typescript 4.9.5

Pulumi locates its logs in /var/folders/q6/70msdz2n1s30d81hgj7jjg940000gn/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).

thomas11 commented 1 year ago

Hi @0xJem, thank you for reporting this!

The property is definitely marked as willReplaceOnChanges in the Pulumi schema.

I suspect the reason the removal is not picked up is some issue in the interaction between the argument handling here and in the parent, and the fact that the property is not required.

We will queue this up for a deeper look.