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

Adds a labels test matrix #1309

Conversation

t0yv0
Copy link
Member

@t0yv0 t0yv0 commented Nov 1, 2023

On top of #1238

The new release of GCP adds a DefaultLabels feature.

This change ports a test matrix from a similar feature of AWS provider. The matrix tests that for
all interesting label combinations (empty, non-empty, 0, 1, or two labels, at provider DefaultLabels
or resource Labels level), Pulumi provider can transition a sample resource from one combination to
another, and the actual effective set of labels is what you would expect.

What is currently not tested here but may need scrutiny based on similar issues in AWS:

  • passing unknowns into Labels or DefaultLabels
  • passing secrets into Labels and making sure this avoids secrets leaks
  • EffectiveLabels feature of the GCP provider that detects drift and pulls labels from the cloud
    into management under GCP; this is not tested here
  • working with labels in Plugin Framework based resources

The tests are currently failing likely due to a bridge issue:
pulumi/pulumi-terraform-bridge#1501

Copy link

github-actions bot commented Nov 1, 2023

Does the PR have any schema changes?

Does the PR have any schema changes?

Found 145 breaking changes:

Resources

  • 🟢 "gcp:bigquery/dataset:Dataset": required: "labels" property is no longer Required
  • 🟢 "gcp:bigquery/routine:Routine": required inputs: "routineType" input has changed to Required
  • 🟡 "gcp:certificateauthority/certificate:Certificate": properties: "pemCertificates" missing output "pemCertificates"
  • 🟢 "gcp:certificatemanager/certificateMap:CertificateMap": required: "labels" property is no longer Required
  • 🟢 "gcp:certificatemanager/certificateMapEntry:CertificateMapEntry": required: "labels" property is no longer Required
  • 🟢 "gcp:cloudfunctionsv2/function:Function": required inputs: "location" input has changed to Required
  • 🔴 "gcp:compute/autoscalar:Autoscalar" missing
  • "gcp:compute/forwardingRule:ForwardingRule":
    • 🟡 inputs: "serviceDirectoryRegistrations" type changed from "array" to "#/types/gcp:compute/ForwardingRuleServiceDirectoryRegistrations:ForwardingRuleServiceDirectoryRegistrations":
      • 🟡 items had &{Type: Ref:#/types/gcp:compute/ForwardingRuleServiceDirectoryRegistration:ForwardingRuleServiceDirectoryRegistration AdditionalProperties: Items: OneOf:[] Discriminator: Plain:false} but now has no type
    • 🟡 properties: "serviceDirectoryRegistrations" type changed from "array" to "#/types/gcp:compute/ForwardingRuleServiceDirectoryRegistrations:ForwardingRuleServiceDirectoryRegistrations":
      • 🟡 items had &{Type: Ref:#/types/gcp:compute/ForwardingRuleServiceDirectoryRegistration:ForwardingRuleServiceDirectoryRegistration AdditionalProperties: Items: OneOf:[] Discriminator: Plain:false} but now has no type
  • 🟡 "gcp:compute/nodeGroup:NodeGroup": inputs: "size" missing
  • 🟢 "gcp:compute/routerNat:RouterNat": required: "natIpAllocateOption" property is no longer Required
  • "gcp:container/cluster:Cluster":
    • 🟡 inputs: "enableBinaryAuthorization" missing
    • 🟡 properties: "enableBinaryAuthorization" missing output "enableBinaryAuthorization"
  • 🟢 "gcp:dataflow/job:Job": required: "labels" property is no longer Required
  • "gcp:dataplex/datascan:Datascan": properties:
    • 🟡 "dataProfileResults" missing output "dataProfileResults"
    • 🟡 "dataQualityResults" missing output "dataQualityResults"
  • 🟢 "gcp:dataproc/cluster:Cluster": required: "labels" property is no longer Required
  • "gcp:eventarc/trigger:Trigger":
    • 🟡 inputs: "transports" missing
    • 🟡 properties: "transports" missing output "transports"
  • 🔴 "gcp:firebase/projectLocation:ProjectLocation" missing
  • 🔴 "gcp:gameservices/gameServerCluster:GameServerCluster" missing
  • 🔴 "gcp:gameservices/gameServerConfig:GameServerConfig" missing
  • 🔴 "gcp:gameservices/gameServerDeployment:GameServerDeployment" missing
  • 🔴 "gcp:gameservices/gameServerDeploymentRollout:GameServerDeploymentRollout" missing
  • 🔴 "gcp:gameservices/realm:Realm" missing
  • 🟢 "gcp:gkeonprem/bareMetalCluster:BareMetalCluster": required: "annotations" property is no longer Required
  • 🟢 "gcp:gkeonprem/bareMetalNodePool:BareMetalNodePool": required: "annotations" property is no longer Required
  • 🟢 "gcp:gkeonprem/vMwareCluster:VMwareCluster": required: "annotations" property is no longer Required
  • 🟢 "gcp:gkeonprem/vMwareNodePool:VMwareNodePool": required: "annotations" property is no longer Required
  • 🔴 "gcp:iot/device:Device" missing
  • 🔴 "gcp:iot/registry:Registry" missing
  • 🔴 "gcp:iot/registryIamBinding:RegistryIamBinding" missing
  • 🔴 "gcp:iot/registryIamMember:RegistryIamMember" missing
  • 🔴 "gcp:iot/registryIamPolicy:RegistryIamPolicy" missing
  • 🔴 "gcp:kms/registry:Registry" missing
  • 🟢 "gcp:notebooks/instance:Instance": required: "labels" property is no longer Required
  • 🟡 "gcp:redis/instance:Instance": properties: "maintenanceSchedule" missing output "maintenanceSchedule"
  • 🟢 "gcp:storage/bucket:Bucket": required: "labels" property is no longer Required
  • 🟢 "gcp:vertex/aiDataset:AiDataset": required: "labels" property is no longer Required

Functions

  • 🔴 "gcp:gameservices/getGameServerDeploymentRollout:getGameServerDeploymentRollout" missing
  • 🔴 "gcp:iot/getRegistryIamPolicy:getRegistryIamPolicy" missing

Types

  • "gcp:artifactregistry/getRepositoryRemoteRepositoryConfig:getRepositoryRemoteRepositoryConfig": required:
    • 🟢 "aptRepositories" property has changed to Required
    • 🟢 "yumRepositories" property has changed to Required
  • 🟡 "gcp:certificateauthority/CertificateCertificateDescription:CertificateCertificateDescription": properties: "configValues" missing
  • 🔴 "gcp:certificateauthority/CertificateCertificateDescriptionConfigValue:CertificateCertificateDescriptionConfigValue" missing
  • 🔴 "gcp:certificateauthority/CertificateCertificateDescriptionConfigValueKeyUsage:CertificateCertificateDescriptionConfigValueKeyUsage" missing
  • 🔴 "gcp:certificateauthority/CertificateCertificateDescriptionConfigValueKeyUsageBaseKeyUsage:CertificateCertificateDescriptionConfigValueKeyUsageBaseKeyUsage" missing
  • 🔴 "gcp:certificateauthority/CertificateCertificateDescriptionConfigValueKeyUsageBaseKeyUsageKeyUsageOption:CertificateCertificateDescriptionConfigValueKeyUsageBaseKeyUsageKeyUsageOption" missing
  • 🔴 "gcp:certificateauthority/CertificateCertificateDescriptionConfigValueKeyUsageExtendedKeyUsage:CertificateCertificateDescriptionConfigValueKeyUsageExtendedKeyUsage" missing
  • 🔴 "gcp:certificateauthority/CertificateCertificateDescriptionConfigValueKeyUsageUnknownExtendedKeyUsage:CertificateCertificateDescriptionConfigValueKeyUsageUnknownExtendedKeyUsage" missing
  • 🔴 "gcp:certificateauthority/CertificateCertificateDescriptionConfigValueKeyUsageUnknownExtendedKeyUsageObectId:CertificateCertificateDescriptionConfigValueKeyUsageUnknownExtendedKeyUsageObectId" missing
  • "gcp:cloudrun/getServiceMetadata:getServiceMetadata": required:
    • 🟢 "effectiveAnnotations" property has changed to Required
    • 🟢 "effectiveLabels" property has changed to Required
    • 🟢 "terraformLabels" property has changed to Required
  • "gcp:cloudrunv2/JobTemplateTemplateContainer:JobTemplateTemplateContainer": properties:
    • 🟡 "livenessProbe" missing
    • 🟡 "startupProbe" missing
  • 🔴 "gcp:cloudrunv2/JobTemplateTemplateContainerLivenessProbe:JobTemplateTemplateContainerLivenessProbe" missing
  • 🔴 "gcp:cloudrunv2/JobTemplateTemplateContainerLivenessProbeHttpGet:JobTemplateTemplateContainerLivenessProbeHttpGet" missing
  • 🔴 "gcp:cloudrunv2/JobTemplateTemplateContainerLivenessProbeHttpGetHttpHeader:JobTemplateTemplateContainerLivenessProbeHttpGetHttpHeader" missing
  • 🔴 "gcp:cloudrunv2/JobTemplateTemplateContainerLivenessProbeTcpSocket:JobTemplateTemplateContainerLivenessProbeTcpSocket" missing
  • 🔴 "gcp:cloudrunv2/JobTemplateTemplateContainerStartupProbe:JobTemplateTemplateContainerStartupProbe" missing
  • 🔴 "gcp:cloudrunv2/JobTemplateTemplateContainerStartupProbeHttpGet:JobTemplateTemplateContainerStartupProbeHttpGet" missing
  • 🔴 "gcp:cloudrunv2/JobTemplateTemplateContainerStartupProbeHttpGetHttpHeader:JobTemplateTemplateContainerStartupProbeHttpGetHttpHeader" missing
  • 🔴 "gcp:cloudrunv2/JobTemplateTemplateContainerStartupProbeTcpSocket:JobTemplateTemplateContainerStartupProbeTcpSocket" missing
  • 🟡 "gcp:cloudrunv2/ServiceTemplateContainerLivenessProbe:ServiceTemplateContainerLivenessProbe": properties: "tcpSocket" missing
  • 🔴 "gcp:cloudrunv2/ServiceTemplateContainerLivenessProbeTcpSocket:ServiceTemplateContainerLivenessProbeTcpSocket" missing
  • 🔴 "gcp:compute/AutoscalarAutoscalingPolicy:AutoscalarAutoscalingPolicy" missing
  • 🔴 "gcp:compute/AutoscalarAutoscalingPolicyCpuUtilization:AutoscalarAutoscalingPolicyCpuUtilization" missing
  • 🔴 "gcp:compute/AutoscalarAutoscalingPolicyLoadBalancingUtilization:AutoscalarAutoscalingPolicyLoadBalancingUtilization" missing
  • 🔴 "gcp:compute/AutoscalarAutoscalingPolicyMetric:AutoscalarAutoscalingPolicyMetric" missing
  • 🔴 "gcp:compute/AutoscalarAutoscalingPolicyScaleDownControl:AutoscalarAutoscalingPolicyScaleDownControl" missing
  • 🔴 "gcp:compute/AutoscalarAutoscalingPolicyScaleDownControlMaxScaledDownReplicas:AutoscalarAutoscalingPolicyScaleDownControlMaxScaledDownReplicas" missing
  • 🔴 "gcp:compute/AutoscalarAutoscalingPolicyScaleInControl:AutoscalarAutoscalingPolicyScaleInControl" missing
  • 🔴 "gcp:compute/AutoscalarAutoscalingPolicyScaleInControlMaxScaledInReplicas:AutoscalarAutoscalingPolicyScaleInControlMaxScaledInReplicas" missing
  • 🔴 "gcp:compute/AutoscalarAutoscalingPolicyScalingSchedule:AutoscalarAutoscalingPolicyScalingSchedule" missing
  • 🔴 "gcp:compute/ForwardingRuleServiceDirectoryRegistration:ForwardingRuleServiceDirectoryRegistration" missing
  • "gcp:compute/getInstanceNetworkInterface:getInstanceNetworkInterface": required:
    • 🟢 "networkAttachment" property has changed to Required
    • 🟢 "securityPolicy" property has changed to Required
  • 🟢 "gcp:compute/getInstanceNetworkInterfaceAccessConfig:getInstanceNetworkInterfaceAccessConfig": required: "securityPolicy" property has changed to Required
  • 🟢 "gcp:compute/getInstanceNetworkInterfaceIpv6AccessConfig:getInstanceNetworkInterfaceIpv6AccessConfig": required: "securityPolicy" property has changed to Required
  • "gcp:compute/getRouterNatRuleAction:getRouterNatRuleAction": required:
    • 🟢 "sourceNatActiveRanges" property has changed to Required
    • 🟢 "sourceNatDrainRanges" property has changed to Required
  • 🟢 "gcp:container/getClusterNodeConfig:getClusterNodeConfig": required: "effectiveTaints" property has changed to Required
  • 🟢 "gcp:container/getClusterNodePoolNodeConfig:getClusterNodePoolNodeConfig": required: "effectiveTaints" property has changed to Required
  • 🔴 "gcp:dataplex/DatascanDataProfileResult:DatascanDataProfileResult" missing
  • 🔴 "gcp:dataplex/DatascanDataProfileResultProfile:DatascanDataProfileResultProfile" missing
  • 🔴 "gcp:dataplex/DatascanDataProfileResultProfileField:DatascanDataProfileResultProfileField" missing
  • 🔴 "gcp:dataplex/DatascanDataProfileResultProfileFieldProfile:DatascanDataProfileResultProfileFieldProfile" missing
  • 🔴 "gcp:dataplex/DatascanDataProfileResultProfileFieldProfileDoubleProfile:DatascanDataProfileResultProfileFieldProfileDoubleProfile" missing
  • 🔴 "gcp:dataplex/DatascanDataProfileResultProfileFieldProfileIntegerProfile:DatascanDataProfileResultProfileFieldProfileIntegerProfile" missing
  • 🔴 "gcp:dataplex/DatascanDataProfileResultProfileFieldProfileStringProfile:DatascanDataProfileResultProfileFieldProfileStringProfile" missing
  • 🔴 "gcp:dataplex/DatascanDataProfileResultProfileFieldProfileTopNValues:DatascanDataProfileResultProfileFieldProfileTopNValues" missing
  • 🔴 "gcp:dataplex/DatascanDataProfileResultScannedData:DatascanDataProfileResultScannedData" missing
  • 🔴 "gcp:dataplex/DatascanDataProfileResultScannedDataIncrementalField:DatascanDataProfileResultScannedDataIncrementalField" missing
  • 🔴 "gcp:dataplex/DatascanDataQualityResult:DatascanDataQualityResult" missing
  • 🔴 "gcp:dataplex/DatascanDataQualityResultDimension:DatascanDataQualityResultDimension" missing
  • 🔴 "gcp:dataplex/DatascanDataQualityResultRule:DatascanDataQualityResultRule" missing
  • 🔴 "gcp:dataplex/DatascanDataQualityResultRuleRule:DatascanDataQualityResultRuleRule" missing
  • 🔴 "gcp:dataplex/DatascanDataQualityResultRuleRuleNonNullExpectation:DatascanDataQualityResultRuleRuleNonNullExpectation" missing
  • 🔴 "gcp:dataplex/DatascanDataQualityResultRuleRuleRangeExpectation:DatascanDataQualityResultRuleRuleRangeExpectation" missing
  • 🔴 "gcp:dataplex/DatascanDataQualityResultRuleRuleRegexExpectation:DatascanDataQualityResultRuleRuleRegexExpectation" missing
  • 🔴 "gcp:dataplex/DatascanDataQualityResultRuleRuleRowConditionExpectation:DatascanDataQualityResultRuleRuleRowConditionExpectation" missing
  • 🔴 "gcp:dataplex/DatascanDataQualityResultRuleRuleSetExpectation:DatascanDataQualityResultRuleRuleSetExpectation" missing
  • 🔴 "gcp:dataplex/DatascanDataQualityResultRuleRuleStatisticRangeExpectation:DatascanDataQualityResultRuleRuleStatisticRangeExpectation" missing
  • 🔴 "gcp:dataplex/DatascanDataQualityResultRuleRuleTableConditionExpectation:DatascanDataQualityResultRuleRuleTableConditionExpectation" missing
  • 🔴 "gcp:dataplex/DatascanDataQualityResultRuleRuleUniquenessExpectation:DatascanDataQualityResultRuleRuleUniquenessExpectation" missing
  • 🔴 "gcp:dataplex/DatascanDataQualityResultScannedData:DatascanDataQualityResultScannedData" missing
  • 🔴 "gcp:dataplex/DatascanDataQualityResultScannedDataIncrementalField:DatascanDataQualityResultScannedDataIncrementalField" missing
  • 🟡 "gcp:eventarc/TriggerTransport:TriggerTransport": properties: "pubsubs" missing
  • 🔴 "gcp:gameservices/GameServerClusterConnectionInfo:GameServerClusterConnectionInfo" missing
  • 🔴 "gcp:gameservices/GameServerClusterConnectionInfoGkeClusterReference:GameServerClusterConnectionInfoGkeClusterReference" missing
  • 🔴 "gcp:gameservices/GameServerConfigFleetConfig:GameServerConfigFleetConfig" missing
  • 🔴 "gcp:gameservices/GameServerConfigScalingConfig:GameServerConfigScalingConfig" missing
  • 🔴 "gcp:gameservices/GameServerConfigScalingConfigSchedule:GameServerConfigScalingConfigSchedule" missing
  • 🔴 "gcp:gameservices/GameServerConfigScalingConfigSelector:GameServerConfigScalingConfigSelector" missing
  • 🔴 "gcp:gameservices/GameServerDeploymentRolloutGameServerConfigOverride:GameServerDeploymentRolloutGameServerConfigOverride" missing
  • 🔴 "gcp:gameservices/GameServerDeploymentRolloutGameServerConfigOverrideRealmsSelector:GameServerDeploymentRolloutGameServerConfigOverrideRealmsSelector" missing
  • 🔴 "gcp:gameservices/getGameServerDeploymentRolloutGameServerConfigOverride:getGameServerDeploymentRolloutGameServerConfigOverride" missing
  • 🔴 "gcp:gameservices/getGameServerDeploymentRolloutGameServerConfigOverrideRealmsSelector:getGameServerDeploymentRolloutGameServerConfigOverrideRealmsSelector" missing
  • 🔴 "gcp:iot/DeviceConfig:DeviceConfig" missing
  • 🔴 "gcp:iot/DeviceCredential:DeviceCredential" missing
  • 🔴 "gcp:iot/DeviceCredentialPublicKey:DeviceCredentialPublicKey" missing
  • 🔴 "gcp:iot/DeviceGatewayConfig:DeviceGatewayConfig" missing
  • 🔴 "gcp:iot/DeviceLastErrorStatus:DeviceLastErrorStatus" missing
  • 🔴 "gcp:iot/DeviceState:DeviceState" missing
  • 🔴 "gcp:iot/RegistryCredential:RegistryCredential" missing
  • 🔴 "gcp:iot/RegistryEventNotificationConfigItem:RegistryEventNotificationConfigItem" missing
  • 🔴 "gcp:iot/RegistryIamBindingCondition:RegistryIamBindingCondition" missing
  • 🔴 "gcp:iot/RegistryIamMemberCondition:RegistryIamMemberCondition" missing
  • 🔴 "gcp:kms/RegistryCredential:RegistryCredential" missing
  • 🔴 "gcp:kms/RegistryEventNotificationConfigItem:RegistryEventNotificationConfigItem" missing
  • "gcp:logging/MetricBucketOptionsExponentialBuckets:MetricBucketOptionsExponentialBuckets": required:
    • 🟢 "growthFactor" property has changed to Required
    • 🟢 "numFiniteBuckets" property has changed to Required
    • 🟢 "scale" property has changed to Required
  • "gcp:logging/MetricBucketOptionsLinearBuckets:MetricBucketOptionsLinearBuckets": required:
    • 🟢 "numFiniteBuckets" property has changed to Required
    • 🟢 "offset" property has changed to Required
    • 🟢 "width" property has changed to Required
  • 🟡 "gcp:secretmanager/SecretReplication:SecretReplication": properties: "automatic" missing
  • "gcp:secretmanager/getSecretReplication:getSecretReplication":
    • 🟡 properties: "automatic" missing
    • 🟢 required: "automatic" property is no longer Required
  • 🟢 "gcp:sql/getDatabaseInstanceClone:getDatabaseInstanceClone": required: "preferredZone" property has changed to Required
  • 🟢 "gcp:sql/getDatabaseInstancesInstanceClone:getDatabaseInstancesInstanceClone": required: "preferredZone" property has changed to Required
  • 🟢 "gcp:vertex/AiIndexMetadata:AiIndexMetadata": required: "contentsDeltaUri" property has changed to Required

New resources:

  • securitycenter/folderCustomModule.FolderCustomModule
  • securitycenter/organizationCustomModule.OrganizationCustomModule

Maintainer note: consult the runbook for dealing with any breaking changes.

@iwahbe iwahbe changed the base branch from master to upgrade-terraform-provider-google-beta-to-v5.0.0 November 2, 2023 20:18
@@ -1,15 +1,15 @@
// Copyright 2016-2017, Pulumi Corporation. All rights reserved.
//go:build go || all
// +build go all
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we need to put these back or our go tests will run for each language.

Copy link
Contributor

@guineveresaenger guineveresaenger left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's pull in the bridge commit here so we show the tests will pass.

…ffForChanges. Re-add Go build tags to Go test file.
@guineveresaenger guineveresaenger merged commit 788bf91 into upgrade-terraform-provider-google-beta-to-v5.0.0 Nov 2, 2023
@guineveresaenger guineveresaenger deleted the t0yv0/add-labels-test-matrix branch November 2, 2023 21:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants