diff --git a/provider/cmd/pulumi-resource-gcp/bridge-metadata.json b/provider/cmd/pulumi-resource-gcp/bridge-metadata.json index 339f15cdf8..8650d88860 100644 --- a/provider/cmd/pulumi-resource-gcp/bridge-metadata.json +++ b/provider/cmd/pulumi-resource-gcp/bridge-metadata.json @@ -1812,16 +1812,44 @@ } }, "docker_repository": { - "maxItemsOne": true + "maxItemsOne": true, + "elem": { + "fields": { + "custom_repository": { + "maxItemsOne": true + } + } + } }, "maven_repository": { - "maxItemsOne": true + "maxItemsOne": true, + "elem": { + "fields": { + "custom_repository": { + "maxItemsOne": true + } + } + } }, "npm_repository": { - "maxItemsOne": true + "maxItemsOne": true, + "elem": { + "fields": { + "custom_repository": { + "maxItemsOne": true + } + } + } }, "python_repository": { - "maxItemsOne": true + "maxItemsOne": true, + "elem": { + "fields": { + "custom_repository": { + "maxItemsOne": true + } + } + } }, "upstream_credentials": { "maxItemsOne": true, @@ -5796,6 +5824,9 @@ "named_port": { "maxItemsOne": false }, + "params": { + "maxItemsOne": true + }, "stateful_disk": { "maxItemsOne": false }, @@ -6669,6 +6700,9 @@ "named_port": { "maxItemsOne": false }, + "params": { + "maxItemsOne": true + }, "stateful_disk": { "maxItemsOne": false }, @@ -21782,6 +21816,10 @@ } } }, + "google_project_iam_member_remove": { + "current": "gcp:projects/iamMemberRemove:IamMemberRemove", + "majorVersion": 7 + }, "google_project_iam_policy": { "current": "gcp:projects/iAMPolicy:IAMPolicy", "majorVersion": 7 @@ -23934,6 +23972,9 @@ "fields": { "node_type_configs": { "maxItemsOne": false + }, + "stretched_cluster_config": { + "maxItemsOne": true } } } @@ -24428,16 +24469,44 @@ } }, "docker_repository": { - "maxItemsOne": false + "maxItemsOne": false, + "elem": { + "fields": { + "custom_repository": { + "maxItemsOne": false + } + } + } }, "maven_repository": { - "maxItemsOne": false + "maxItemsOne": false, + "elem": { + "fields": { + "custom_repository": { + "maxItemsOne": false + } + } + } }, "npm_repository": { - "maxItemsOne": false + "maxItemsOne": false, + "elem": { + "fields": { + "custom_repository": { + "maxItemsOne": false + } + } + } }, "python_repository": { - "maxItemsOne": false + "maxItemsOne": false, + "elem": { + "fields": { + "custom_repository": { + "maxItemsOne": false + } + } + } }, "upstream_credentials": { "maxItemsOne": false, @@ -26195,6 +26264,9 @@ "named_port": { "maxItemsOne": false }, + "params": { + "maxItemsOne": false + }, "stateful_disk": { "maxItemsOne": false }, @@ -29414,6 +29486,9 @@ "fields": { "node_type_configs": { "maxItemsOne": false + }, + "stretched_cluster_config": { + "maxItemsOne": false } } } @@ -31072,6 +31147,7 @@ "gcp:projects/iAMCustomRole:IAMCustomRole": 0, "gcp:projects/iAMMember:IAMMember": 0, "gcp:projects/iAMPolicy:IAMPolicy": 0, + "gcp:projects/iamMemberRemove:IamMemberRemove": 0, "gcp:projects/organizationPolicy:OrganizationPolicy": 0, "gcp:projects/service:Service": 0, "gcp:projects/serviceIdentity:ServiceIdentity": 0, @@ -31376,11 +31452,11 @@ "gcp:dataproc/getMetastoreService:getMetastoreService": 0, "gcp:dataproc/getMetastoreServiceIamPolicy:getMetastoreServiceIamPolicy": 0, "gcp:datastream/getStaticIps:getStaticIps": 0, - "gcp:dns/getKeys:getKeys": 1, - "gcp:dns/getManagedZone:getManagedZone": 1, + "gcp:dns/getKeys:getKeys": 0, + "gcp:dns/getManagedZone:getManagedZone": 0, "gcp:dns/getManagedZoneIamPolicy:getManagedZoneIamPolicy": 0, - "gcp:dns/getManagedZones:getManagedZones": 1, - "gcp:dns/getRecordSet:getRecordSet": 1, + "gcp:dns/getManagedZones:getManagedZones": 0, + "gcp:dns/getRecordSet:getRecordSet": 0, "gcp:endpoints/getServiceConsumersIamPolicy:getServiceConsumersIamPolicy": 0, "gcp:endpoints/getServiceIamPolicy:getServiceIamPolicy": 0, "gcp:filestore/getInstance:getInstance": 0, diff --git a/provider/cmd/pulumi-resource-gcp/schema.json b/provider/cmd/pulumi-resource-gcp/schema.json index 52509072c9..c89cb806d9 100644 --- a/provider/cmd/pulumi-resource-gcp/schema.json +++ b/provider/cmd/pulumi-resource-gcp/schema.json @@ -5864,6 +5864,10 @@ "description": "The description of the remote source.\n", "willReplaceOnChanges": true }, + "disableUpstreamValidation": { + "type": "boolean", + "description": "If true, the remote repository upstream and upstream credentials will\nnot be validated.\n" + }, "dockerRepository": { "$ref": "#/types/gcp:artifactregistry/RepositoryRemoteRepositoryConfigDockerRepository:RepositoryRemoteRepositoryConfigDockerRepository", "description": "Specific settings for a Docker remote repository.\nStructure is documented below.\n", @@ -5928,6 +5932,11 @@ }, "gcp:artifactregistry/RepositoryRemoteRepositoryConfigDockerRepository:RepositoryRemoteRepositoryConfigDockerRepository": { "properties": { + "customRepository": { + "$ref": "#/types/gcp:artifactregistry/RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository:RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository", + "description": "Settings for a remote repository with a custom uri.\nStructure is documented below.\n", + "willReplaceOnChanges": true + }, "publicRepository": { "type": "string", "description": "Address of the remote repository.\nDefault value is `DOCKER_HUB`.\nPossible values are: `DOCKER_HUB`.\n", @@ -5936,8 +5945,23 @@ }, "type": "object" }, + "gcp:artifactregistry/RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository:RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository": { + "properties": { + "uri": { + "type": "string", + "description": "Specific uri to the registry, e.g. `\"https://pypi.io\"`\n", + "willReplaceOnChanges": true + } + }, + "type": "object" + }, "gcp:artifactregistry/RepositoryRemoteRepositoryConfigMavenRepository:RepositoryRemoteRepositoryConfigMavenRepository": { "properties": { + "customRepository": { + "$ref": "#/types/gcp:artifactregistry/RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository:RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository", + "description": "Settings for a remote repository with a custom uri.\nStructure is documented below.\n", + "willReplaceOnChanges": true + }, "publicRepository": { "type": "string", "description": "Address of the remote repository.\nDefault value is `MAVEN_CENTRAL`.\nPossible values are: `MAVEN_CENTRAL`.\n", @@ -5946,8 +5970,23 @@ }, "type": "object" }, + "gcp:artifactregistry/RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository:RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository": { + "properties": { + "uri": { + "type": "string", + "description": "Specific uri to the registry, e.g. `\"https://pypi.io\"`\n", + "willReplaceOnChanges": true + } + }, + "type": "object" + }, "gcp:artifactregistry/RepositoryRemoteRepositoryConfigNpmRepository:RepositoryRemoteRepositoryConfigNpmRepository": { "properties": { + "customRepository": { + "$ref": "#/types/gcp:artifactregistry/RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository:RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository", + "description": "Settings for a remote repository with a custom uri.\nStructure is documented below.\n", + "willReplaceOnChanges": true + }, "publicRepository": { "type": "string", "description": "Address of the remote repository.\nDefault value is `NPMJS`.\nPossible values are: `NPMJS`.\n", @@ -5956,8 +5995,23 @@ }, "type": "object" }, + "gcp:artifactregistry/RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository:RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository": { + "properties": { + "uri": { + "type": "string", + "description": "Specific uri to the registry, e.g. `\"https://pypi.io\"`\n", + "willReplaceOnChanges": true + } + }, + "type": "object" + }, "gcp:artifactregistry/RepositoryRemoteRepositoryConfigPythonRepository:RepositoryRemoteRepositoryConfigPythonRepository": { "properties": { + "customRepository": { + "$ref": "#/types/gcp:artifactregistry/RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository:RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository", + "description": "Settings for a remote repository with a custom uri.\nStructure is documented below.\n", + "willReplaceOnChanges": true + }, "publicRepository": { "type": "string", "description": "Address of the remote repository.\nDefault value is `PYPI`.\nPossible values are: `PYPI`.\n", @@ -5966,6 +6020,16 @@ }, "type": "object" }, + "gcp:artifactregistry/RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository:RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository": { + "properties": { + "uri": { + "type": "string", + "description": "Specific uri to the registry, e.g. `\"https://pypi.io\"`\n", + "willReplaceOnChanges": true + } + }, + "type": "object" + }, "gcp:artifactregistry/RepositoryRemoteRepositoryConfigUpstreamCredentials:RepositoryRemoteRepositoryConfigUpstreamCredentials": { "properties": { "usernamePasswordCredentials": { @@ -6214,6 +6278,10 @@ "type": "string", "description": "The description of the remote source.\n" }, + "disableUpstreamValidation": { + "type": "boolean", + "description": "If true, the remote repository upstream and upstream credentials will\nnot be validated.\n" + }, "dockerRepositories": { "type": "array", "items": { @@ -6261,6 +6329,7 @@ "required": [ "aptRepositories", "description", + "disableUpstreamValidation", "dockerRepositories", "mavenRepositories", "npmRepositories", @@ -6318,6 +6387,13 @@ }, "gcp:artifactregistry/getRepositoryRemoteRepositoryConfigDockerRepository:getRepositoryRemoteRepositoryConfigDockerRepository": { "properties": { + "customRepositories": { + "type": "array", + "items": { + "$ref": "#/types/gcp:artifactregistry/getRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository:getRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository" + }, + "description": "Settings for a remote repository with a custom uri.\n" + }, "publicRepository": { "type": "string", "description": "Address of the remote repository. Default value: \"DOCKER_HUB\" Possible values: [\"DOCKER_HUB\"]\n" @@ -6325,6 +6401,7 @@ }, "type": "object", "required": [ + "customRepositories", "publicRepository" ], "language": { @@ -6333,8 +6410,32 @@ } } }, + "gcp:artifactregistry/getRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository:getRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository": { + "properties": { + "uri": { + "type": "string", + "description": "Specific uri to the registry, e.g. '\"https://registry-1.docker.io\"'\n" + } + }, + "type": "object", + "required": [ + "uri" + ], + "language": { + "nodejs": { + "requiredInputs": [] + } + } + }, "gcp:artifactregistry/getRepositoryRemoteRepositoryConfigMavenRepository:getRepositoryRemoteRepositoryConfigMavenRepository": { "properties": { + "customRepositories": { + "type": "array", + "items": { + "$ref": "#/types/gcp:artifactregistry/getRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository:getRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository" + }, + "description": "Settings for a remote repository with a custom uri.\n" + }, "publicRepository": { "type": "string", "description": "Address of the remote repository. Default value: \"MAVEN_CENTRAL\" Possible values: [\"MAVEN_CENTRAL\"]\n" @@ -6342,6 +6443,7 @@ }, "type": "object", "required": [ + "customRepositories", "publicRepository" ], "language": { @@ -6350,8 +6452,32 @@ } } }, + "gcp:artifactregistry/getRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository:getRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository": { + "properties": { + "uri": { + "type": "string", + "description": "Specific uri to the registry, e.g. '\"https://repo.maven.apache.org/maven2\"'\n" + } + }, + "type": "object", + "required": [ + "uri" + ], + "language": { + "nodejs": { + "requiredInputs": [] + } + } + }, "gcp:artifactregistry/getRepositoryRemoteRepositoryConfigNpmRepository:getRepositoryRemoteRepositoryConfigNpmRepository": { "properties": { + "customRepositories": { + "type": "array", + "items": { + "$ref": "#/types/gcp:artifactregistry/getRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository:getRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository" + }, + "description": "Settings for a remote repository with a custom uri.\n" + }, "publicRepository": { "type": "string", "description": "Address of the remote repository. Default value: \"NPMJS\" Possible values: [\"NPMJS\"]\n" @@ -6359,6 +6485,7 @@ }, "type": "object", "required": [ + "customRepositories", "publicRepository" ], "language": { @@ -6367,8 +6494,32 @@ } } }, + "gcp:artifactregistry/getRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository:getRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository": { + "properties": { + "uri": { + "type": "string", + "description": "Specific uri to the registry, e.g. '\"https://registry.npmjs.org\"'\n" + } + }, + "type": "object", + "required": [ + "uri" + ], + "language": { + "nodejs": { + "requiredInputs": [] + } + } + }, "gcp:artifactregistry/getRepositoryRemoteRepositoryConfigPythonRepository:getRepositoryRemoteRepositoryConfigPythonRepository": { "properties": { + "customRepositories": { + "type": "array", + "items": { + "$ref": "#/types/gcp:artifactregistry/getRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository:getRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository" + }, + "description": "Settings for a remote repository with a custom uri.\n" + }, "publicRepository": { "type": "string", "description": "Address of the remote repository. Default value: \"PYPI\" Possible values: [\"PYPI\"]\n" @@ -6376,6 +6527,7 @@ }, "type": "object", "required": [ + "customRepositories", "publicRepository" ], "language": { @@ -6384,6 +6536,23 @@ } } }, + "gcp:artifactregistry/getRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository:getRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository": { + "properties": { + "uri": { + "type": "string", + "description": "Specific uri to the registry, e.g. '\"https://pypi.io\"'\n" + } + }, + "type": "object", + "required": [ + "uri" + ], + "language": { + "nodejs": { + "requiredInputs": [] + } + } + }, "gcp:artifactregistry/getRepositoryRemoteRepositoryConfigUpstreamCredential:getRepositoryRemoteRepositoryConfigUpstreamCredential": { "properties": { "usernamePasswordCredentials": { @@ -17996,6 +18165,10 @@ "type": "string", "description": "The runtime in which to run the function. Required when deploying a new\nfunction, optional when updating an existing function.\n" }, + "serviceAccount": { + "type": "string", + "description": "The fully-qualified name of the service account to be used for building the container.\n" + }, "source": { "$ref": "#/types/gcp:cloudfunctionsv2/FunctionBuildConfigSource:FunctionBuildConfigSource", "description": "The location of the function source code.\nStructure is documented below.\n" @@ -18011,7 +18184,8 @@ "requiredOutputs": [ "build", "dockerRepository", - "environmentVariables" + "environmentVariables", + "serviceAccount" ] } } @@ -18401,6 +18575,10 @@ "type": "string", "description": "The runtime in which to run the function. Required when deploying a new\nfunction, optional when updating an existing function.\n" }, + "serviceAccount": { + "type": "string", + "description": "The fully-qualified name of the service account to be used for building the container.\n" + }, "sources": { "type": "array", "items": { @@ -18420,6 +18598,7 @@ "entryPoint", "environmentVariables", "runtime", + "serviceAccount", "sources", "workerPool" ], @@ -30601,6 +30780,19 @@ "port" ] }, + "gcp:compute/InstanceGroupManagerParams:InstanceGroupManagerParams": { + "properties": { + "resourceManagerTags": { + "type": "object", + "additionalProperties": { + "$ref": "pulumi.json#/Any" + }, + "description": "Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources)\n", + "willReplaceOnChanges": true + } + }, + "type": "object" + }, "gcp:compute/InstanceGroupManagerStatefulDisk:InstanceGroupManagerStatefulDisk": { "properties": { "deleteRule": { @@ -33910,6 +34102,19 @@ "port" ] }, + "gcp:compute/RegionInstanceGroupManagerParams:RegionInstanceGroupManagerParams": { + "properties": { + "resourceManagerTags": { + "type": "object", + "additionalProperties": { + "$ref": "pulumi.json#/Any" + }, + "description": "Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources)\n", + "willReplaceOnChanges": true + } + }, + "type": "object" + }, "gcp:compute/RegionInstanceGroupManagerStatefulDisk:RegionInstanceGroupManagerStatefulDisk": { "properties": { "deleteRule": { @@ -42192,6 +42397,26 @@ } } }, + "gcp:compute/getInstanceGroupManagerParam:getInstanceGroupManagerParam": { + "properties": { + "resourceManagerTags": { + "type": "object", + "additionalProperties": { + "$ref": "pulumi.json#/Any" + }, + "description": "Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456.\n" + } + }, + "type": "object", + "required": [ + "resourceManagerTags" + ], + "language": { + "nodejs": { + "requiredInputs": [] + } + } + }, "gcp:compute/getInstanceGroupManagerStatefulDisk:getInstanceGroupManagerStatefulDisk": { "properties": { "deleteRule": { @@ -52343,7 +52568,7 @@ }, "gcpPublicCidrsAccessEnabled": { "type": "boolean", - "description": "Whether master is accessbile via Google Compute Engine Public IP addresses.\n" + "description": "Whether Kubernetes master is accessible via Google Compute Engine Public IPs.\n" } }, "type": "object", @@ -54874,7 +55099,7 @@ "properties": { "enabled": { "type": "boolean", - "description": "When enabled, services with exterenal ips specified will be allowed.\n" + "description": "When enabled, services with external ips specified will be allowed.\n" } }, "type": "object", @@ -73093,16 +73318,7 @@ "description": "Specifies the algorithm used to calculate this digest. Possible values are `sha1`, `sha256` and `sha384`\n" } }, - "type": "object", - "required": [ - "digest", - "type" - ], - "language": { - "nodejs": { - "requiredInputs": [] - } - } + "type": "object" }, "gcp:dns/getKeysZoneSigningKey:getKeysZoneSigningKey": { "properties": { @@ -73175,53 +73391,37 @@ "description": "Specifies the algorithm used to calculate this digest. Possible values are `sha1`, `sha256` and `sha384`\n" } }, - "type": "object", - "required": [ - "digest", - "type" - ], - "language": { - "nodejs": { - "requiredInputs": [] - } - } + "type": "object" }, "gcp:dns/getManagedZonesManagedZone:getManagedZonesManagedZone": { "properties": { "description": { - "type": "string", - "description": "A textual description field.\n" + "type": "string" }, "dnsName": { - "type": "string", - "description": "The fully qualified DNS name of this zone.\n" + "type": "string" }, "id": { - "type": "string", - "description": "DNS managed zone identifier\n" + "type": "string" }, "managedZoneId": { - "type": "integer", - "description": "Unique identifier for the resource; defined by the server.\n" + "type": "integer" }, "name": { - "type": "string", - "description": "A unique name for the resource.\n" + "type": "string" }, "nameServers": { "type": "array", "items": { "type": "string" - }, - "description": "The list of nameservers that will be authoritative for this domain. Use NS records to redirect from your DNS provider to these names, thus making Google Cloud DNS authoritative for this zone.\n" + } }, "project": { "type": "string", "description": "The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used.\n" }, "visibility": { - "type": "string", - "description": "The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources.\n" + "type": "string" } }, "type": "object", @@ -73230,9 +73430,7 @@ "dnsName", "id", "managedZoneId", - "name", "nameServers", - "project", "visibility" ], "language": { @@ -101496,6 +101694,10 @@ "$ref": "#/types/gcp:vmwareengine/PrivateCloudManagementClusterNodeTypeConfig:PrivateCloudManagementClusterNodeTypeConfig" }, "description": "The map of cluster node types in this cluster,\nwhere the key is canonical identifier of the node type (corresponds to the NodeType).\nStructure is documented below.\n" + }, + "stretchedClusterConfig": { + "$ref": "#/types/gcp:vmwareengine/PrivateCloudManagementClusterStretchedClusterConfig:PrivateCloudManagementClusterStretchedClusterConfig", + "description": "The stretched cluster configuration for the private cloud.\nStructure is documented below.\n" } }, "type": "object", @@ -101507,7 +101709,7 @@ "properties": { "customCoreCount": { "type": "integer", - "description": "Customized number of cores available to each node of the type.\nThis number must always be one of `nodeType.availableCustomCoreCounts`.\nIf zero is provided max value from `nodeType.availableCustomCoreCounts` will be used.\nThis cannot be changed once the PrivateCloud is created.\n\n- - -\n" + "description": "Customized number of cores available to each node of the type.\nThis number must always be one of `nodeType.availableCustomCoreCounts`.\nIf zero is provided max value from `nodeType.availableCustomCoreCounts` will be used.\nThis cannot be changed once the PrivateCloud is created.\n" }, "nodeCount": { "type": "integer", @@ -101524,6 +101726,19 @@ "nodeTypeId" ] }, + "gcp:vmwareengine/PrivateCloudManagementClusterStretchedClusterConfig:PrivateCloudManagementClusterStretchedClusterConfig": { + "properties": { + "preferredLocation": { + "type": "string", + "description": "Zone that will remain operational when connection between the two zones is lost.\n" + }, + "secondaryLocation": { + "type": "string", + "description": "Additional zone for a higher level of availability and load balancing.\n\n- - -\n" + } + }, + "type": "object" + }, "gcp:vmwareengine/PrivateCloudNetworkConfig:PrivateCloudNetworkConfig": { "properties": { "dnsServerIp": { @@ -101805,12 +102020,20 @@ "$ref": "#/types/gcp:vmwareengine/getPrivateCloudManagementClusterNodeTypeConfig:getPrivateCloudManagementClusterNodeTypeConfig" }, "description": "The map of cluster node types in this cluster,\nwhere the key is canonical identifier of the node type (corresponds to the NodeType).\n" + }, + "stretchedClusterConfigs": { + "type": "array", + "items": { + "$ref": "#/types/gcp:vmwareengine/getPrivateCloudManagementClusterStretchedClusterConfig:getPrivateCloudManagementClusterStretchedClusterConfig" + }, + "description": "The stretched cluster configuration for the private cloud.\n" } }, "type": "object", "required": [ "clusterId", - "nodeTypeConfigs" + "nodeTypeConfigs", + "stretchedClusterConfigs" ], "language": { "nodejs": { @@ -101844,6 +102067,28 @@ } } }, + "gcp:vmwareengine/getPrivateCloudManagementClusterStretchedClusterConfig:getPrivateCloudManagementClusterStretchedClusterConfig": { + "properties": { + "preferredLocation": { + "type": "string", + "description": "Zone that will remain operational when connection between the two zones is lost.\n" + }, + "secondaryLocation": { + "type": "string", + "description": "Additional zone for a higher level of availability and load balancing.\n" + } + }, + "type": "object", + "required": [ + "preferredLocation", + "secondaryLocation" + ], + "language": { + "nodejs": { + "requiredInputs": [] + } + } + }, "gcp:vmwareengine/getPrivateCloudNetworkConfig:getPrivateCloudNetworkConfig": { "properties": { "dnsServerIp": { @@ -110343,6 +110588,14 @@ "type": "string", "description": "Primary GCP region for analytics data storage. For valid values, see [Create an Apigee organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org).\n" }, + "apiConsumerDataEncryptionKeyName": { + "type": "string", + "description": "Cloud KMS key name used for encrypting API consumer data.\n" + }, + "apiConsumerDataLocation": { + "type": "string", + "description": "This field is needed only for customers using non-default data residency regions.\nApigee stores some control plane data only in single region.\nThis field determines which single region Apigee should use.\n" + }, "apigeeProjectId": { "type": "string", "description": "Output only. Project ID of the Apigee Tenant Project.\n" @@ -110359,6 +110612,10 @@ "type": "string", "description": "Output only. Base64-encoded public certificate for the root CA of the Apigee organization.\nValid only when `RuntimeType` is CLOUD. A base64-encoded string.\n" }, + "controlPlaneEncryptionKeyName": { + "type": "string", + "description": "Cloud KMS key name used for encrypting control plane data that is stored in a multi region.\nOnly used for the data residency region \"US\" or \"EU\".\n" + }, "description": { "type": "string", "description": "Description of the Apigee organization.\n" @@ -110415,6 +110672,16 @@ "description": "Primary GCP region for analytics data storage. For valid values, see [Create an Apigee organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org).\n", "willReplaceOnChanges": true }, + "apiConsumerDataEncryptionKeyName": { + "type": "string", + "description": "Cloud KMS key name used for encrypting API consumer data.\n", + "willReplaceOnChanges": true + }, + "apiConsumerDataLocation": { + "type": "string", + "description": "This field is needed only for customers using non-default data residency regions.\nApigee stores some control plane data only in single region.\nThis field determines which single region Apigee should use.\n", + "willReplaceOnChanges": true + }, "authorizedNetwork": { "type": "string", "description": "Compute Engine network used for Service Networking to be peered with Apigee runtime instances.\nSee [Getting started with the Service Networking API](https://cloud.google.com/service-infrastructure/docs/service-networking/getting-started).\nValid only when `RuntimeType` is set to CLOUD. The value can be updated only when there are no runtime instances. For example: \"default\".\n" @@ -110424,6 +110691,11 @@ "description": "Billing type of the Apigee organization. See [Apigee pricing](https://cloud.google.com/apigee/pricing).\n", "willReplaceOnChanges": true }, + "controlPlaneEncryptionKeyName": { + "type": "string", + "description": "Cloud KMS key name used for encrypting control plane data that is stored in a multi region.\nOnly used for the data residency region \"US\" or \"EU\".\n", + "willReplaceOnChanges": true + }, "description": { "type": "string", "description": "Description of the Apigee organization.\n" @@ -110471,6 +110743,16 @@ "description": "Primary GCP region for analytics data storage. For valid values, see [Create an Apigee organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org).\n", "willReplaceOnChanges": true }, + "apiConsumerDataEncryptionKeyName": { + "type": "string", + "description": "Cloud KMS key name used for encrypting API consumer data.\n", + "willReplaceOnChanges": true + }, + "apiConsumerDataLocation": { + "type": "string", + "description": "This field is needed only for customers using non-default data residency regions.\nApigee stores some control plane data only in single region.\nThis field determines which single region Apigee should use.\n", + "willReplaceOnChanges": true + }, "apigeeProjectId": { "type": "string", "description": "Output only. Project ID of the Apigee Tenant Project.\n" @@ -110488,6 +110770,11 @@ "type": "string", "description": "Output only. Base64-encoded public certificate for the root CA of the Apigee organization.\nValid only when `RuntimeType` is CLOUD. A base64-encoded string.\n" }, + "controlPlaneEncryptionKeyName": { + "type": "string", + "description": "Cloud KMS key name used for encrypting control plane data that is stored in a multi region.\nOnly used for the data residency region \"US\" or \"EU\".\n", + "willReplaceOnChanges": true + }, "description": { "type": "string", "description": "Description of the Apigee organization.\n" @@ -113002,7 +113289,7 @@ } }, "gcp:artifactregistry/repository:Repository": { - "description": "A repository for storing artifacts\n\n\nTo get more information about Repository, see:\n\n* [API documentation](https://cloud.google.com/artifact-registry/docs/reference/rest/v1/projects.locations.repositories)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/artifact-registry/docs/overview)\n\n## Example Usage\n\n### Artifact Registry Repository Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example docker repository\",\n format: \"DOCKER\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example docker repository\",\n format=\"DOCKER\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example docker repository\",\n Format = \"DOCKER\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder() \n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example docker repository\")\n .format(\"DOCKER\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example docker repository\n format: DOCKER\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Docker\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example docker repository\",\n format: \"DOCKER\",\n dockerConfig: {\n immutableTags: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example docker repository\",\n format=\"DOCKER\",\n docker_config=gcp.artifactregistry.RepositoryDockerConfigArgs(\n immutable_tags=True,\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example docker repository\",\n Format = \"DOCKER\",\n DockerConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryDockerConfigArgs\n {\n ImmutableTags = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tDockerConfig: \u0026artifactregistry.RepositoryDockerConfigArgs{\n\t\t\t\tImmutableTags: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryDockerConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder() \n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example docker repository\")\n .format(\"DOCKER\")\n .dockerConfig(RepositoryDockerConfigArgs.builder()\n .immutableTags(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example docker repository\n format: DOCKER\n dockerConfig:\n immutableTags: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example docker repository with cmek\",\n format: \"DOCKER\",\n kmsKeyName: \"kms-key\",\n});\nconst project = gcp.organizations.getProject({});\nconst cryptoKey = new gcp.kms.CryptoKeyIAMMember(\"crypto_key\", {\n cryptoKeyId: \"kms-key\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example docker repository with cmek\",\n format=\"DOCKER\",\n kms_key_name=\"kms-key\")\nproject = gcp.organizations.get_project()\ncrypto_key = gcp.kms.CryptoKeyIAMMember(\"crypto_key\",\n crypto_key_id=\"kms-key\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example docker repository with cmek\",\n Format = \"DOCKER\",\n KmsKeyName = \"kms-key\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKey = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key\", new()\n {\n CryptoKeyId = \"kms-key\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository with cmek\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tKmsKeyName: pulumi.String(\"kms-key\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kms.NewCryptoKeyIAMMember(ctx, \"crypto_key\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"kms-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder() \n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example docker repository with cmek\")\n .format(\"DOCKER\")\n .kmsKeyName(\"kms-key\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var cryptoKey = new CryptoKeyIAMMember(\"cryptoKey\", CryptoKeyIAMMemberArgs.builder() \n .cryptoKeyId(\"kms-key\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example docker repository with cmek\n format: DOCKER\n kmsKeyName: kms-key\n cryptoKey:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key\n properties:\n cryptoKeyId: kms-key\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Virtual\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo_upstream_1 = new gcp.artifactregistry.Repository(\"my-repo-upstream-1\", {\n location: \"us-central1\",\n repositoryId: \"my-repository-upstream-1\",\n description: \"example docker repository (upstream source) 1\",\n format: \"DOCKER\",\n});\nconst my_repo_upstream_2 = new gcp.artifactregistry.Repository(\"my-repo-upstream-2\", {\n location: \"us-central1\",\n repositoryId: \"my-repository-upstream-2\",\n description: \"example docker repository (upstream source) 2\",\n format: \"DOCKER\",\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example virtual docker repository\",\n format: \"DOCKER\",\n mode: \"VIRTUAL_REPOSITORY\",\n virtualRepositoryConfig: {\n upstreamPolicies: [\n {\n id: \"my-repository-upstream-1\",\n repository: my_repo_upstream_1.id,\n priority: 20,\n },\n {\n id: \"my-repository-upstream-2\",\n repository: my_repo_upstream_2.id,\n priority: 10,\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo_upstream_1 = gcp.artifactregistry.Repository(\"my-repo-upstream-1\",\n location=\"us-central1\",\n repository_id=\"my-repository-upstream-1\",\n description=\"example docker repository (upstream source) 1\",\n format=\"DOCKER\")\nmy_repo_upstream_2 = gcp.artifactregistry.Repository(\"my-repo-upstream-2\",\n location=\"us-central1\",\n repository_id=\"my-repository-upstream-2\",\n description=\"example docker repository (upstream source) 2\",\n format=\"DOCKER\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example virtual docker repository\",\n format=\"DOCKER\",\n mode=\"VIRTUAL_REPOSITORY\",\n virtual_repository_config=gcp.artifactregistry.RepositoryVirtualRepositoryConfigArgs(\n upstream_policies=[\n gcp.artifactregistry.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs(\n id=\"my-repository-upstream-1\",\n repository=my_repo_upstream_1.id,\n priority=20,\n ),\n gcp.artifactregistry.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs(\n id=\"my-repository-upstream-2\",\n repository=my_repo_upstream_2.id,\n priority=10,\n ),\n ],\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo_upstream_1 = new Gcp.ArtifactRegistry.Repository(\"my-repo-upstream-1\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository-upstream-1\",\n Description = \"example docker repository (upstream source) 1\",\n Format = \"DOCKER\",\n });\n\n var my_repo_upstream_2 = new Gcp.ArtifactRegistry.Repository(\"my-repo-upstream-2\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository-upstream-2\",\n Description = \"example docker repository (upstream source) 2\",\n Format = \"DOCKER\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example virtual docker repository\",\n Format = \"DOCKER\",\n Mode = \"VIRTUAL_REPOSITORY\",\n VirtualRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryVirtualRepositoryConfigArgs\n {\n UpstreamPolicies = new[]\n {\n new Gcp.ArtifactRegistry.Inputs.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs\n {\n Id = \"my-repository-upstream-1\",\n Repository = my_repo_upstream_1.Id,\n Priority = 20,\n },\n new Gcp.ArtifactRegistry.Inputs.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs\n {\n Id = \"my-repository-upstream-2\",\n Repository = my_repo_upstream_2.Id,\n Priority = 10,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo-upstream-1\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository-upstream-1\"),\n\t\t\tDescription: pulumi.String(\"example docker repository (upstream source) 1\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo-upstream-2\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository-upstream-2\"),\n\t\t\tDescription: pulumi.String(\"example docker repository (upstream source) 2\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example virtual docker repository\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tMode: pulumi.String(\"VIRTUAL_REPOSITORY\"),\n\t\t\tVirtualRepositoryConfig: \u0026artifactregistry.RepositoryVirtualRepositoryConfigArgs{\n\t\t\t\tUpstreamPolicies: artifactregistry.RepositoryVirtualRepositoryConfigUpstreamPolicyArray{\n\t\t\t\t\t\u0026artifactregistry.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs{\n\t\t\t\t\t\tId: pulumi.String(\"my-repository-upstream-1\"),\n\t\t\t\t\t\tRepository: my_repo_upstream_1.ID(),\n\t\t\t\t\t\tPriority: pulumi.Int(20),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026artifactregistry.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs{\n\t\t\t\t\t\tId: pulumi.String(\"my-repository-upstream-2\"),\n\t\t\t\t\t\tRepository: my_repo_upstream_2.ID(),\n\t\t\t\t\t\tPriority: pulumi.Int(10),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryVirtualRepositoryConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo_upstream_1 = new Repository(\"my-repo-upstream-1\", RepositoryArgs.builder() \n .location(\"us-central1\")\n .repositoryId(\"my-repository-upstream-1\")\n .description(\"example docker repository (upstream source) 1\")\n .format(\"DOCKER\")\n .build());\n\n var my_repo_upstream_2 = new Repository(\"my-repo-upstream-2\", RepositoryArgs.builder() \n .location(\"us-central1\")\n .repositoryId(\"my-repository-upstream-2\")\n .description(\"example docker repository (upstream source) 2\")\n .format(\"DOCKER\")\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder() \n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example virtual docker repository\")\n .format(\"DOCKER\")\n .mode(\"VIRTUAL_REPOSITORY\")\n .virtualRepositoryConfig(RepositoryVirtualRepositoryConfigArgs.builder()\n .upstreamPolicies( \n RepositoryVirtualRepositoryConfigUpstreamPolicyArgs.builder()\n .id(\"my-repository-upstream-1\")\n .repository(my_repo_upstream_1.id())\n .priority(20)\n .build(),\n RepositoryVirtualRepositoryConfigUpstreamPolicyArgs.builder()\n .id(\"my-repository-upstream-2\")\n .repository(my_repo_upstream_2.id())\n .priority(10)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo-upstream-1:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository-upstream-1\n description: example docker repository (upstream source) 1\n format: DOCKER\n my-repo-upstream-2:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository-upstream-2\n description: example docker repository (upstream source) 2\n format: DOCKER\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example virtual docker repository\n format: DOCKER\n mode: VIRTUAL_REPOSITORY\n virtualRepositoryConfig:\n upstreamPolicies:\n - id: my-repository-upstream-1\n repository: ${[\"my-repo-upstream-1\"].id}\n priority: 20\n - id: my-repository-upstream-2\n repository: ${[\"my-repo-upstream-2\"].id}\n priority: 10\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example remote docker repository\",\n format: \"DOCKER\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"docker hub\",\n dockerRepository: {\n publicRepository: \"DOCKER_HUB\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example remote docker repository\",\n format=\"DOCKER\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config=gcp.artifactregistry.RepositoryRemoteRepositoryConfigArgs(\n description=\"docker hub\",\n docker_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs(\n public_repository=\"DOCKER_HUB\",\n ),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example remote docker repository\",\n Format = \"DOCKER\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"docker hub\",\n DockerRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs\n {\n PublicRepository = \"DOCKER_HUB\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example remote docker repository\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"docker hub\"),\n\t\t\t\tDockerRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs{\n\t\t\t\t\tPublicRepository: pulumi.String(\"DOCKER_HUB\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder() \n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example remote docker repository\")\n .format(\"DOCKER\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"docker hub\")\n .dockerRepository(RepositoryRemoteRepositoryConfigDockerRepositoryArgs.builder()\n .publicRepository(\"DOCKER_HUB\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example remote docker repository\n format: DOCKER\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: docker hub\n dockerRepository:\n publicRepository: DOCKER_HUB\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Apt\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"debian-buster\",\n description: \"example remote apt repository\",\n format: \"APT\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"Debian buster remote repository\",\n aptRepository: {\n publicRepository: {\n repositoryBase: \"DEBIAN\",\n repositoryPath: \"debian/dists/buster\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"debian-buster\",\n description=\"example remote apt repository\",\n format=\"APT\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config=gcp.artifactregistry.RepositoryRemoteRepositoryConfigArgs(\n description=\"Debian buster remote repository\",\n apt_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigAptRepositoryArgs(\n public_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs(\n repository_base=\"DEBIAN\",\n repository_path=\"debian/dists/buster\",\n ),\n ),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"debian-buster\",\n Description = \"example remote apt repository\",\n Format = \"APT\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"Debian buster remote repository\",\n AptRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigAptRepositoryArgs\n {\n PublicRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs\n {\n RepositoryBase = \"DEBIAN\",\n RepositoryPath = \"debian/dists/buster\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"debian-buster\"),\n\t\t\tDescription: pulumi.String(\"example remote apt repository\"),\n\t\t\tFormat: pulumi.String(\"APT\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"Debian buster remote repository\"),\n\t\t\t\tAptRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigAptRepositoryArgs{\n\t\t\t\t\tPublicRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs{\n\t\t\t\t\t\tRepositoryBase: pulumi.String(\"DEBIAN\"),\n\t\t\t\t\t\tRepositoryPath: pulumi.String(\"debian/dists/buster\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigAptRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder() \n .location(\"us-central1\")\n .repositoryId(\"debian-buster\")\n .description(\"example remote apt repository\")\n .format(\"APT\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"Debian buster remote repository\")\n .aptRepository(RepositoryRemoteRepositoryConfigAptRepositoryArgs.builder()\n .publicRepository(RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs.builder()\n .repositoryBase(\"DEBIAN\")\n .repositoryPath(\"debian/dists/buster\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: debian-buster\n description: example remote apt repository\n format: APT\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: Debian buster remote repository\n aptRepository:\n publicRepository:\n repositoryBase: DEBIAN\n repositoryPath: debian/dists/buster\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Yum\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"centos-8\",\n description: \"example remote yum repository\",\n format: \"YUM\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"Centos 8 remote repository\",\n yumRepository: {\n publicRepository: {\n repositoryBase: \"CENTOS\",\n repositoryPath: \"centos/8-stream/BaseOS/x86_64/os\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"centos-8\",\n description=\"example remote yum repository\",\n format=\"YUM\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config=gcp.artifactregistry.RepositoryRemoteRepositoryConfigArgs(\n description=\"Centos 8 remote repository\",\n yum_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigYumRepositoryArgs(\n public_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs(\n repository_base=\"CENTOS\",\n repository_path=\"centos/8-stream/BaseOS/x86_64/os\",\n ),\n ),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"centos-8\",\n Description = \"example remote yum repository\",\n Format = \"YUM\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"Centos 8 remote repository\",\n YumRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigYumRepositoryArgs\n {\n PublicRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs\n {\n RepositoryBase = \"CENTOS\",\n RepositoryPath = \"centos/8-stream/BaseOS/x86_64/os\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"centos-8\"),\n\t\t\tDescription: pulumi.String(\"example remote yum repository\"),\n\t\t\tFormat: pulumi.String(\"YUM\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"Centos 8 remote repository\"),\n\t\t\t\tYumRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigYumRepositoryArgs{\n\t\t\t\t\tPublicRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs{\n\t\t\t\t\t\tRepositoryBase: pulumi.String(\"CENTOS\"),\n\t\t\t\t\t\tRepositoryPath: pulumi.String(\"centos/8-stream/BaseOS/x86_64/os\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigYumRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder() \n .location(\"us-central1\")\n .repositoryId(\"centos-8\")\n .description(\"example remote yum repository\")\n .format(\"YUM\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"Centos 8 remote repository\")\n .yumRepository(RepositoryRemoteRepositoryConfigYumRepositoryArgs.builder()\n .publicRepository(RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs.builder()\n .repositoryBase(\"CENTOS\")\n .repositoryPath(\"centos/8-stream/BaseOS/x86_64/os\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: centos-8\n description: example remote yum repository\n format: YUM\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: Centos 8 remote repository\n yumRepository:\n publicRepository:\n repositoryBase: CENTOS\n repositoryPath: centos/8-stream/BaseOS/x86_64/os\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Cleanup\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example docker repository with cleanup policies\",\n format: \"DOCKER\",\n cleanupPolicyDryRun: false,\n cleanupPolicies: [\n {\n id: \"delete-prerelease\",\n action: \"DELETE\",\n condition: {\n tagState: \"TAGGED\",\n tagPrefixes: [\n \"alpha\",\n \"v0\",\n ],\n olderThan: \"2592000s\",\n },\n },\n {\n id: \"keep-tagged-release\",\n action: \"KEEP\",\n condition: {\n tagState: \"TAGGED\",\n tagPrefixes: [\"release\"],\n packageNamePrefixes: [\n \"webapp\",\n \"mobile\",\n ],\n },\n },\n {\n id: \"keep-minimum-versions\",\n action: \"KEEP\",\n mostRecentVersions: {\n packageNamePrefixes: [\n \"webapp\",\n \"mobile\",\n \"sandbox\",\n ],\n keepCount: 5,\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example docker repository with cleanup policies\",\n format=\"DOCKER\",\n cleanup_policy_dry_run=False,\n cleanup_policies=[\n gcp.artifactregistry.RepositoryCleanupPolicyArgs(\n id=\"delete-prerelease\",\n action=\"DELETE\",\n condition=gcp.artifactregistry.RepositoryCleanupPolicyConditionArgs(\n tag_state=\"TAGGED\",\n tag_prefixes=[\n \"alpha\",\n \"v0\",\n ],\n older_than=\"2592000s\",\n ),\n ),\n gcp.artifactregistry.RepositoryCleanupPolicyArgs(\n id=\"keep-tagged-release\",\n action=\"KEEP\",\n condition=gcp.artifactregistry.RepositoryCleanupPolicyConditionArgs(\n tag_state=\"TAGGED\",\n tag_prefixes=[\"release\"],\n package_name_prefixes=[\n \"webapp\",\n \"mobile\",\n ],\n ),\n ),\n gcp.artifactregistry.RepositoryCleanupPolicyArgs(\n id=\"keep-minimum-versions\",\n action=\"KEEP\",\n most_recent_versions=gcp.artifactregistry.RepositoryCleanupPolicyMostRecentVersionsArgs(\n package_name_prefixes=[\n \"webapp\",\n \"mobile\",\n \"sandbox\",\n ],\n keep_count=5,\n ),\n ),\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example docker repository with cleanup policies\",\n Format = \"DOCKER\",\n CleanupPolicyDryRun = false,\n CleanupPolicies = new[]\n {\n new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyArgs\n {\n Id = \"delete-prerelease\",\n Action = \"DELETE\",\n Condition = new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyConditionArgs\n {\n TagState = \"TAGGED\",\n TagPrefixes = new[]\n {\n \"alpha\",\n \"v0\",\n },\n OlderThan = \"2592000s\",\n },\n },\n new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyArgs\n {\n Id = \"keep-tagged-release\",\n Action = \"KEEP\",\n Condition = new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyConditionArgs\n {\n TagState = \"TAGGED\",\n TagPrefixes = new[]\n {\n \"release\",\n },\n PackageNamePrefixes = new[]\n {\n \"webapp\",\n \"mobile\",\n },\n },\n },\n new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyArgs\n {\n Id = \"keep-minimum-versions\",\n Action = \"KEEP\",\n MostRecentVersions = new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyMostRecentVersionsArgs\n {\n PackageNamePrefixes = new[]\n {\n \"webapp\",\n \"mobile\",\n \"sandbox\",\n },\n KeepCount = 5,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository with cleanup policies\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tCleanupPolicyDryRun: pulumi.Bool(false),\n\t\t\tCleanupPolicies: artifactregistry.RepositoryCleanupPolicyArray{\n\t\t\t\t\u0026artifactregistry.RepositoryCleanupPolicyArgs{\n\t\t\t\t\tId: pulumi.String(\"delete-prerelease\"),\n\t\t\t\t\tAction: pulumi.String(\"DELETE\"),\n\t\t\t\t\tCondition: \u0026artifactregistry.RepositoryCleanupPolicyConditionArgs{\n\t\t\t\t\t\tTagState: pulumi.String(\"TAGGED\"),\n\t\t\t\t\t\tTagPrefixes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"alpha\"),\n\t\t\t\t\t\t\tpulumi.String(\"v0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tOlderThan: pulumi.String(\"2592000s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026artifactregistry.RepositoryCleanupPolicyArgs{\n\t\t\t\t\tId: pulumi.String(\"keep-tagged-release\"),\n\t\t\t\t\tAction: pulumi.String(\"KEEP\"),\n\t\t\t\t\tCondition: \u0026artifactregistry.RepositoryCleanupPolicyConditionArgs{\n\t\t\t\t\t\tTagState: pulumi.String(\"TAGGED\"),\n\t\t\t\t\t\tTagPrefixes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"release\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPackageNamePrefixes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"webapp\"),\n\t\t\t\t\t\t\tpulumi.String(\"mobile\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026artifactregistry.RepositoryCleanupPolicyArgs{\n\t\t\t\t\tId: pulumi.String(\"keep-minimum-versions\"),\n\t\t\t\t\tAction: pulumi.String(\"KEEP\"),\n\t\t\t\t\tMostRecentVersions: \u0026artifactregistry.RepositoryCleanupPolicyMostRecentVersionsArgs{\n\t\t\t\t\t\tPackageNamePrefixes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"webapp\"),\n\t\t\t\t\t\t\tpulumi.String(\"mobile\"),\n\t\t\t\t\t\t\tpulumi.String(\"sandbox\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tKeepCount: pulumi.Int(5),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryCleanupPolicyArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryCleanupPolicyConditionArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryCleanupPolicyMostRecentVersionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder() \n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example docker repository with cleanup policies\")\n .format(\"DOCKER\")\n .cleanupPolicyDryRun(false)\n .cleanupPolicies( \n RepositoryCleanupPolicyArgs.builder()\n .id(\"delete-prerelease\")\n .action(\"DELETE\")\n .condition(RepositoryCleanupPolicyConditionArgs.builder()\n .tagState(\"TAGGED\")\n .tagPrefixes( \n \"alpha\",\n \"v0\")\n .olderThan(\"2592000s\")\n .build())\n .build(),\n RepositoryCleanupPolicyArgs.builder()\n .id(\"keep-tagged-release\")\n .action(\"KEEP\")\n .condition(RepositoryCleanupPolicyConditionArgs.builder()\n .tagState(\"TAGGED\")\n .tagPrefixes(\"release\")\n .packageNamePrefixes( \n \"webapp\",\n \"mobile\")\n .build())\n .build(),\n RepositoryCleanupPolicyArgs.builder()\n .id(\"keep-minimum-versions\")\n .action(\"KEEP\")\n .mostRecentVersions(RepositoryCleanupPolicyMostRecentVersionsArgs.builder()\n .packageNamePrefixes( \n \"webapp\",\n \"mobile\",\n \"sandbox\")\n .keepCount(5)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example docker repository with cleanup policies\n format: DOCKER\n cleanupPolicyDryRun: false\n cleanupPolicies:\n - id: delete-prerelease\n action: DELETE\n condition:\n tagState: TAGGED\n tagPrefixes:\n - alpha\n - v0\n olderThan: 2592000s\n - id: keep-tagged-release\n action: KEEP\n condition:\n tagState: TAGGED\n tagPrefixes:\n - release\n packageNamePrefixes:\n - webapp\n - mobile\n - id: keep-minimum-versions\n action: KEEP\n mostRecentVersions:\n packageNamePrefixes:\n - webapp\n - mobile\n - sandbox\n keepCount: 5\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Custom\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_custom_remote_secret = new gcp.secretmanager.Secret(\"example-custom-remote-secret\", {\n secretId: \"example-secret\",\n replication: {\n auto: {},\n },\n});\nconst example_custom_remote_secretVersion = new gcp.secretmanager.SecretVersion(\"example-custom-remote-secret_version\", {\n secret: example_custom_remote_secret.id,\n secretData: \"remote-password\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: example_custom_remote_secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-custom-remote\",\n description: \"example remote docker repository with credentials\",\n format: \"DOCKER\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"docker hub with custom credentials\",\n dockerRepository: {\n publicRepository: \"DOCKER_HUB\",\n },\n upstreamCredentials: {\n usernamePasswordCredentials: {\n username: \"remote-username\",\n passwordSecretVersion: example_custom_remote_secretVersion.name,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_custom_remote_secret = gcp.secretmanager.Secret(\"example-custom-remote-secret\",\n secret_id=\"example-secret\",\n replication=gcp.secretmanager.SecretReplicationArgs(\n auto=gcp.secretmanager.SecretReplicationAutoArgs(),\n ))\nexample_custom_remote_secret_version = gcp.secretmanager.SecretVersion(\"example-custom-remote-secret_version\",\n secret=example_custom_remote_secret.id,\n secret_data=\"remote-password\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=example_custom_remote_secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-custom-remote\",\n description=\"example remote docker repository with credentials\",\n format=\"DOCKER\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config=gcp.artifactregistry.RepositoryRemoteRepositoryConfigArgs(\n description=\"docker hub with custom credentials\",\n docker_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs(\n public_repository=\"DOCKER_HUB\",\n ),\n upstream_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs(\n username_password_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs(\n username=\"remote-username\",\n password_secret_version=example_custom_remote_secret_version.name,\n ),\n ),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example_custom_remote_secret = new Gcp.SecretManager.Secret(\"example-custom-remote-secret\", new()\n {\n SecretId = \"example-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var example_custom_remote_secretVersion = new Gcp.SecretManager.SecretVersion(\"example-custom-remote-secret_version\", new()\n {\n Secret = example_custom_remote_secret.Id,\n SecretData = \"remote-password\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = example_custom_remote_secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-custom-remote\",\n Description = \"example remote docker repository with credentials\",\n Format = \"DOCKER\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"docker hub with custom credentials\",\n DockerRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs\n {\n PublicRepository = \"DOCKER_HUB\",\n },\n UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs\n {\n UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs\n {\n Username = \"remote-username\",\n PasswordSecretVersion = example_custom_remote_secretVersion.Name,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"example-custom-remote-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"example-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"example-custom-remote-secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: example_custom_remote_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"remote-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: example_custom_remote_secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-custom-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote docker repository with credentials\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"docker hub with custom credentials\"),\n\t\t\t\tDockerRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs{\n\t\t\t\t\tPublicRepository: pulumi.String(\"DOCKER_HUB\"),\n\t\t\t\t},\n\t\t\t\tUpstreamCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{\n\t\t\t\t\tUsernamePasswordCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"remote-username\"),\n\t\t\t\t\t\tPasswordSecretVersion: example_custom_remote_secretVersion.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example_custom_remote_secret = new Secret(\"example-custom-remote-secret\", SecretArgs.builder() \n .secretId(\"example-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var example_custom_remote_secretVersion = new SecretVersion(\"example-custom-remote-secretVersion\", SecretVersionArgs.builder() \n .secret(example_custom_remote_secret.id())\n .secretData(\"remote-password\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder() \n .secretId(example_custom_remote_secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder() \n .location(\"us-central1\")\n .repositoryId(\"example-custom-remote\")\n .description(\"example remote docker repository with credentials\")\n .format(\"DOCKER\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"docker hub with custom credentials\")\n .dockerRepository(RepositoryRemoteRepositoryConfigDockerRepositoryArgs.builder()\n .publicRepository(\"DOCKER_HUB\")\n .build())\n .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()\n .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()\n .username(\"remote-username\")\n .passwordSecretVersion(example_custom_remote_secretVersion.name())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-custom-remote-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: example-secret\n replication:\n auto: {}\n example-custom-remote-secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: example-custom-remote-secret_version\n properties:\n secret: ${[\"example-custom-remote-secret\"].id}\n secretData: remote-password\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${[\"example-custom-remote-secret\"].id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-custom-remote\n description: example remote docker repository with credentials\n format: DOCKER\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: docker hub with custom credentials\n dockerRepository:\n publicRepository: DOCKER_HUB\n upstreamCredentials:\n usernamePasswordCredentials:\n username: remote-username\n passwordSecretVersion: ${[\"example-custom-remote-secretVersion\"].name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRepository can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/repositories/{{repository_id}}`\n\n* `{{project}}/{{location}}/{{repository_id}}`\n\n* `{{location}}/{{repository_id}}`\n\n* `{{repository_id}}`\n\nWhen using the `pulumi import` command, Repository can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:artifactregistry/repository:Repository default projects/{{project}}/locations/{{location}}/repositories/{{repository_id}}\n```\n\n```sh\n$ pulumi import gcp:artifactregistry/repository:Repository default {{project}}/{{location}}/{{repository_id}}\n```\n\n```sh\n$ pulumi import gcp:artifactregistry/repository:Repository default {{location}}/{{repository_id}}\n```\n\n```sh\n$ pulumi import gcp:artifactregistry/repository:Repository default {{repository_id}}\n```\n\n", + "description": "A repository for storing artifacts\n\n\nTo get more information about Repository, see:\n\n* [API documentation](https://cloud.google.com/artifact-registry/docs/reference/rest/v1/projects.locations.repositories)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/artifact-registry/docs/overview)\n\n## Example Usage\n\n### Artifact Registry Repository Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example docker repository\",\n format: \"DOCKER\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example docker repository\",\n format=\"DOCKER\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example docker repository\",\n Format = \"DOCKER\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder() \n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example docker repository\")\n .format(\"DOCKER\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example docker repository\n format: DOCKER\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Docker\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example docker repository\",\n format: \"DOCKER\",\n dockerConfig: {\n immutableTags: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example docker repository\",\n format=\"DOCKER\",\n docker_config=gcp.artifactregistry.RepositoryDockerConfigArgs(\n immutable_tags=True,\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example docker repository\",\n Format = \"DOCKER\",\n DockerConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryDockerConfigArgs\n {\n ImmutableTags = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tDockerConfig: \u0026artifactregistry.RepositoryDockerConfigArgs{\n\t\t\t\tImmutableTags: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryDockerConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder() \n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example docker repository\")\n .format(\"DOCKER\")\n .dockerConfig(RepositoryDockerConfigArgs.builder()\n .immutableTags(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example docker repository\n format: DOCKER\n dockerConfig:\n immutableTags: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example docker repository with cmek\",\n format: \"DOCKER\",\n kmsKeyName: \"kms-key\",\n});\nconst project = gcp.organizations.getProject({});\nconst cryptoKey = new gcp.kms.CryptoKeyIAMMember(\"crypto_key\", {\n cryptoKeyId: \"kms-key\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example docker repository with cmek\",\n format=\"DOCKER\",\n kms_key_name=\"kms-key\")\nproject = gcp.organizations.get_project()\ncrypto_key = gcp.kms.CryptoKeyIAMMember(\"crypto_key\",\n crypto_key_id=\"kms-key\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example docker repository with cmek\",\n Format = \"DOCKER\",\n KmsKeyName = \"kms-key\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKey = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key\", new()\n {\n CryptoKeyId = \"kms-key\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository with cmek\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tKmsKeyName: pulumi.String(\"kms-key\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kms.NewCryptoKeyIAMMember(ctx, \"crypto_key\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"kms-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder() \n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example docker repository with cmek\")\n .format(\"DOCKER\")\n .kmsKeyName(\"kms-key\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var cryptoKey = new CryptoKeyIAMMember(\"cryptoKey\", CryptoKeyIAMMemberArgs.builder() \n .cryptoKeyId(\"kms-key\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example docker repository with cmek\n format: DOCKER\n kmsKeyName: kms-key\n cryptoKey:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key\n properties:\n cryptoKeyId: kms-key\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Virtual\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo_upstream_1 = new gcp.artifactregistry.Repository(\"my-repo-upstream-1\", {\n location: \"us-central1\",\n repositoryId: \"my-repository-upstream-1\",\n description: \"example docker repository (upstream source) 1\",\n format: \"DOCKER\",\n});\nconst my_repo_upstream_2 = new gcp.artifactregistry.Repository(\"my-repo-upstream-2\", {\n location: \"us-central1\",\n repositoryId: \"my-repository-upstream-2\",\n description: \"example docker repository (upstream source) 2\",\n format: \"DOCKER\",\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example virtual docker repository\",\n format: \"DOCKER\",\n mode: \"VIRTUAL_REPOSITORY\",\n virtualRepositoryConfig: {\n upstreamPolicies: [\n {\n id: \"my-repository-upstream-1\",\n repository: my_repo_upstream_1.id,\n priority: 20,\n },\n {\n id: \"my-repository-upstream-2\",\n repository: my_repo_upstream_2.id,\n priority: 10,\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo_upstream_1 = gcp.artifactregistry.Repository(\"my-repo-upstream-1\",\n location=\"us-central1\",\n repository_id=\"my-repository-upstream-1\",\n description=\"example docker repository (upstream source) 1\",\n format=\"DOCKER\")\nmy_repo_upstream_2 = gcp.artifactregistry.Repository(\"my-repo-upstream-2\",\n location=\"us-central1\",\n repository_id=\"my-repository-upstream-2\",\n description=\"example docker repository (upstream source) 2\",\n format=\"DOCKER\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example virtual docker repository\",\n format=\"DOCKER\",\n mode=\"VIRTUAL_REPOSITORY\",\n virtual_repository_config=gcp.artifactregistry.RepositoryVirtualRepositoryConfigArgs(\n upstream_policies=[\n gcp.artifactregistry.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs(\n id=\"my-repository-upstream-1\",\n repository=my_repo_upstream_1.id,\n priority=20,\n ),\n gcp.artifactregistry.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs(\n id=\"my-repository-upstream-2\",\n repository=my_repo_upstream_2.id,\n priority=10,\n ),\n ],\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo_upstream_1 = new Gcp.ArtifactRegistry.Repository(\"my-repo-upstream-1\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository-upstream-1\",\n Description = \"example docker repository (upstream source) 1\",\n Format = \"DOCKER\",\n });\n\n var my_repo_upstream_2 = new Gcp.ArtifactRegistry.Repository(\"my-repo-upstream-2\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository-upstream-2\",\n Description = \"example docker repository (upstream source) 2\",\n Format = \"DOCKER\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example virtual docker repository\",\n Format = \"DOCKER\",\n Mode = \"VIRTUAL_REPOSITORY\",\n VirtualRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryVirtualRepositoryConfigArgs\n {\n UpstreamPolicies = new[]\n {\n new Gcp.ArtifactRegistry.Inputs.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs\n {\n Id = \"my-repository-upstream-1\",\n Repository = my_repo_upstream_1.Id,\n Priority = 20,\n },\n new Gcp.ArtifactRegistry.Inputs.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs\n {\n Id = \"my-repository-upstream-2\",\n Repository = my_repo_upstream_2.Id,\n Priority = 10,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo-upstream-1\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository-upstream-1\"),\n\t\t\tDescription: pulumi.String(\"example docker repository (upstream source) 1\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo-upstream-2\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository-upstream-2\"),\n\t\t\tDescription: pulumi.String(\"example docker repository (upstream source) 2\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example virtual docker repository\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tMode: pulumi.String(\"VIRTUAL_REPOSITORY\"),\n\t\t\tVirtualRepositoryConfig: \u0026artifactregistry.RepositoryVirtualRepositoryConfigArgs{\n\t\t\t\tUpstreamPolicies: artifactregistry.RepositoryVirtualRepositoryConfigUpstreamPolicyArray{\n\t\t\t\t\t\u0026artifactregistry.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs{\n\t\t\t\t\t\tId: pulumi.String(\"my-repository-upstream-1\"),\n\t\t\t\t\t\tRepository: my_repo_upstream_1.ID(),\n\t\t\t\t\t\tPriority: pulumi.Int(20),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026artifactregistry.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs{\n\t\t\t\t\t\tId: pulumi.String(\"my-repository-upstream-2\"),\n\t\t\t\t\t\tRepository: my_repo_upstream_2.ID(),\n\t\t\t\t\t\tPriority: pulumi.Int(10),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryVirtualRepositoryConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo_upstream_1 = new Repository(\"my-repo-upstream-1\", RepositoryArgs.builder() \n .location(\"us-central1\")\n .repositoryId(\"my-repository-upstream-1\")\n .description(\"example docker repository (upstream source) 1\")\n .format(\"DOCKER\")\n .build());\n\n var my_repo_upstream_2 = new Repository(\"my-repo-upstream-2\", RepositoryArgs.builder() \n .location(\"us-central1\")\n .repositoryId(\"my-repository-upstream-2\")\n .description(\"example docker repository (upstream source) 2\")\n .format(\"DOCKER\")\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder() \n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example virtual docker repository\")\n .format(\"DOCKER\")\n .mode(\"VIRTUAL_REPOSITORY\")\n .virtualRepositoryConfig(RepositoryVirtualRepositoryConfigArgs.builder()\n .upstreamPolicies( \n RepositoryVirtualRepositoryConfigUpstreamPolicyArgs.builder()\n .id(\"my-repository-upstream-1\")\n .repository(my_repo_upstream_1.id())\n .priority(20)\n .build(),\n RepositoryVirtualRepositoryConfigUpstreamPolicyArgs.builder()\n .id(\"my-repository-upstream-2\")\n .repository(my_repo_upstream_2.id())\n .priority(10)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo-upstream-1:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository-upstream-1\n description: example docker repository (upstream source) 1\n format: DOCKER\n my-repo-upstream-2:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository-upstream-2\n description: example docker repository (upstream source) 2\n format: DOCKER\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example virtual docker repository\n format: DOCKER\n mode: VIRTUAL_REPOSITORY\n virtualRepositoryConfig:\n upstreamPolicies:\n - id: my-repository-upstream-1\n repository: ${[\"my-repo-upstream-1\"].id}\n priority: 20\n - id: my-repository-upstream-2\n repository: ${[\"my-repo-upstream-2\"].id}\n priority: 10\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example remote docker repository\",\n format: \"DOCKER\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"docker hub\",\n dockerRepository: {\n publicRepository: \"DOCKER_HUB\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example remote docker repository\",\n format=\"DOCKER\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config=gcp.artifactregistry.RepositoryRemoteRepositoryConfigArgs(\n description=\"docker hub\",\n docker_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs(\n public_repository=\"DOCKER_HUB\",\n ),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example remote docker repository\",\n Format = \"DOCKER\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"docker hub\",\n DockerRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs\n {\n PublicRepository = \"DOCKER_HUB\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example remote docker repository\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"docker hub\"),\n\t\t\t\tDockerRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs{\n\t\t\t\t\tPublicRepository: pulumi.String(\"DOCKER_HUB\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder() \n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example remote docker repository\")\n .format(\"DOCKER\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"docker hub\")\n .dockerRepository(RepositoryRemoteRepositoryConfigDockerRepositoryArgs.builder()\n .publicRepository(\"DOCKER_HUB\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example remote docker repository\n format: DOCKER\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: docker hub\n dockerRepository:\n publicRepository: DOCKER_HUB\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Apt\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"debian-buster\",\n description: \"example remote apt repository\",\n format: \"APT\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"Debian buster remote repository\",\n aptRepository: {\n publicRepository: {\n repositoryBase: \"DEBIAN\",\n repositoryPath: \"debian/dists/buster\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"debian-buster\",\n description=\"example remote apt repository\",\n format=\"APT\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config=gcp.artifactregistry.RepositoryRemoteRepositoryConfigArgs(\n description=\"Debian buster remote repository\",\n apt_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigAptRepositoryArgs(\n public_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs(\n repository_base=\"DEBIAN\",\n repository_path=\"debian/dists/buster\",\n ),\n ),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"debian-buster\",\n Description = \"example remote apt repository\",\n Format = \"APT\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"Debian buster remote repository\",\n AptRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigAptRepositoryArgs\n {\n PublicRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs\n {\n RepositoryBase = \"DEBIAN\",\n RepositoryPath = \"debian/dists/buster\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"debian-buster\"),\n\t\t\tDescription: pulumi.String(\"example remote apt repository\"),\n\t\t\tFormat: pulumi.String(\"APT\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"Debian buster remote repository\"),\n\t\t\t\tAptRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigAptRepositoryArgs{\n\t\t\t\t\tPublicRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs{\n\t\t\t\t\t\tRepositoryBase: pulumi.String(\"DEBIAN\"),\n\t\t\t\t\t\tRepositoryPath: pulumi.String(\"debian/dists/buster\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigAptRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder() \n .location(\"us-central1\")\n .repositoryId(\"debian-buster\")\n .description(\"example remote apt repository\")\n .format(\"APT\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"Debian buster remote repository\")\n .aptRepository(RepositoryRemoteRepositoryConfigAptRepositoryArgs.builder()\n .publicRepository(RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs.builder()\n .repositoryBase(\"DEBIAN\")\n .repositoryPath(\"debian/dists/buster\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: debian-buster\n description: example remote apt repository\n format: APT\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: Debian buster remote repository\n aptRepository:\n publicRepository:\n repositoryBase: DEBIAN\n repositoryPath: debian/dists/buster\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Yum\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"centos-8\",\n description: \"example remote yum repository\",\n format: \"YUM\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"Centos 8 remote repository\",\n yumRepository: {\n publicRepository: {\n repositoryBase: \"CENTOS\",\n repositoryPath: \"centos/8-stream/BaseOS/x86_64/os\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"centos-8\",\n description=\"example remote yum repository\",\n format=\"YUM\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config=gcp.artifactregistry.RepositoryRemoteRepositoryConfigArgs(\n description=\"Centos 8 remote repository\",\n yum_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigYumRepositoryArgs(\n public_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs(\n repository_base=\"CENTOS\",\n repository_path=\"centos/8-stream/BaseOS/x86_64/os\",\n ),\n ),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"centos-8\",\n Description = \"example remote yum repository\",\n Format = \"YUM\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"Centos 8 remote repository\",\n YumRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigYumRepositoryArgs\n {\n PublicRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs\n {\n RepositoryBase = \"CENTOS\",\n RepositoryPath = \"centos/8-stream/BaseOS/x86_64/os\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"centos-8\"),\n\t\t\tDescription: pulumi.String(\"example remote yum repository\"),\n\t\t\tFormat: pulumi.String(\"YUM\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"Centos 8 remote repository\"),\n\t\t\t\tYumRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigYumRepositoryArgs{\n\t\t\t\t\tPublicRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs{\n\t\t\t\t\t\tRepositoryBase: pulumi.String(\"CENTOS\"),\n\t\t\t\t\t\tRepositoryPath: pulumi.String(\"centos/8-stream/BaseOS/x86_64/os\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigYumRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder() \n .location(\"us-central1\")\n .repositoryId(\"centos-8\")\n .description(\"example remote yum repository\")\n .format(\"YUM\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"Centos 8 remote repository\")\n .yumRepository(RepositoryRemoteRepositoryConfigYumRepositoryArgs.builder()\n .publicRepository(RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs.builder()\n .repositoryBase(\"CENTOS\")\n .repositoryPath(\"centos/8-stream/BaseOS/x86_64/os\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: centos-8\n description: example remote yum repository\n format: YUM\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: Centos 8 remote repository\n yumRepository:\n publicRepository:\n repositoryBase: CENTOS\n repositoryPath: centos/8-stream/BaseOS/x86_64/os\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Cleanup\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example docker repository with cleanup policies\",\n format: \"DOCKER\",\n cleanupPolicyDryRun: false,\n cleanupPolicies: [\n {\n id: \"delete-prerelease\",\n action: \"DELETE\",\n condition: {\n tagState: \"TAGGED\",\n tagPrefixes: [\n \"alpha\",\n \"v0\",\n ],\n olderThan: \"2592000s\",\n },\n },\n {\n id: \"keep-tagged-release\",\n action: \"KEEP\",\n condition: {\n tagState: \"TAGGED\",\n tagPrefixes: [\"release\"],\n packageNamePrefixes: [\n \"webapp\",\n \"mobile\",\n ],\n },\n },\n {\n id: \"keep-minimum-versions\",\n action: \"KEEP\",\n mostRecentVersions: {\n packageNamePrefixes: [\n \"webapp\",\n \"mobile\",\n \"sandbox\",\n ],\n keepCount: 5,\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example docker repository with cleanup policies\",\n format=\"DOCKER\",\n cleanup_policy_dry_run=False,\n cleanup_policies=[\n gcp.artifactregistry.RepositoryCleanupPolicyArgs(\n id=\"delete-prerelease\",\n action=\"DELETE\",\n condition=gcp.artifactregistry.RepositoryCleanupPolicyConditionArgs(\n tag_state=\"TAGGED\",\n tag_prefixes=[\n \"alpha\",\n \"v0\",\n ],\n older_than=\"2592000s\",\n ),\n ),\n gcp.artifactregistry.RepositoryCleanupPolicyArgs(\n id=\"keep-tagged-release\",\n action=\"KEEP\",\n condition=gcp.artifactregistry.RepositoryCleanupPolicyConditionArgs(\n tag_state=\"TAGGED\",\n tag_prefixes=[\"release\"],\n package_name_prefixes=[\n \"webapp\",\n \"mobile\",\n ],\n ),\n ),\n gcp.artifactregistry.RepositoryCleanupPolicyArgs(\n id=\"keep-minimum-versions\",\n action=\"KEEP\",\n most_recent_versions=gcp.artifactregistry.RepositoryCleanupPolicyMostRecentVersionsArgs(\n package_name_prefixes=[\n \"webapp\",\n \"mobile\",\n \"sandbox\",\n ],\n keep_count=5,\n ),\n ),\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example docker repository with cleanup policies\",\n Format = \"DOCKER\",\n CleanupPolicyDryRun = false,\n CleanupPolicies = new[]\n {\n new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyArgs\n {\n Id = \"delete-prerelease\",\n Action = \"DELETE\",\n Condition = new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyConditionArgs\n {\n TagState = \"TAGGED\",\n TagPrefixes = new[]\n {\n \"alpha\",\n \"v0\",\n },\n OlderThan = \"2592000s\",\n },\n },\n new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyArgs\n {\n Id = \"keep-tagged-release\",\n Action = \"KEEP\",\n Condition = new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyConditionArgs\n {\n TagState = \"TAGGED\",\n TagPrefixes = new[]\n {\n \"release\",\n },\n PackageNamePrefixes = new[]\n {\n \"webapp\",\n \"mobile\",\n },\n },\n },\n new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyArgs\n {\n Id = \"keep-minimum-versions\",\n Action = \"KEEP\",\n MostRecentVersions = new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyMostRecentVersionsArgs\n {\n PackageNamePrefixes = new[]\n {\n \"webapp\",\n \"mobile\",\n \"sandbox\",\n },\n KeepCount = 5,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository with cleanup policies\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tCleanupPolicyDryRun: pulumi.Bool(false),\n\t\t\tCleanupPolicies: artifactregistry.RepositoryCleanupPolicyArray{\n\t\t\t\t\u0026artifactregistry.RepositoryCleanupPolicyArgs{\n\t\t\t\t\tId: pulumi.String(\"delete-prerelease\"),\n\t\t\t\t\tAction: pulumi.String(\"DELETE\"),\n\t\t\t\t\tCondition: \u0026artifactregistry.RepositoryCleanupPolicyConditionArgs{\n\t\t\t\t\t\tTagState: pulumi.String(\"TAGGED\"),\n\t\t\t\t\t\tTagPrefixes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"alpha\"),\n\t\t\t\t\t\t\tpulumi.String(\"v0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tOlderThan: pulumi.String(\"2592000s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026artifactregistry.RepositoryCleanupPolicyArgs{\n\t\t\t\t\tId: pulumi.String(\"keep-tagged-release\"),\n\t\t\t\t\tAction: pulumi.String(\"KEEP\"),\n\t\t\t\t\tCondition: \u0026artifactregistry.RepositoryCleanupPolicyConditionArgs{\n\t\t\t\t\t\tTagState: pulumi.String(\"TAGGED\"),\n\t\t\t\t\t\tTagPrefixes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"release\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPackageNamePrefixes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"webapp\"),\n\t\t\t\t\t\t\tpulumi.String(\"mobile\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026artifactregistry.RepositoryCleanupPolicyArgs{\n\t\t\t\t\tId: pulumi.String(\"keep-minimum-versions\"),\n\t\t\t\t\tAction: pulumi.String(\"KEEP\"),\n\t\t\t\t\tMostRecentVersions: \u0026artifactregistry.RepositoryCleanupPolicyMostRecentVersionsArgs{\n\t\t\t\t\t\tPackageNamePrefixes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"webapp\"),\n\t\t\t\t\t\t\tpulumi.String(\"mobile\"),\n\t\t\t\t\t\t\tpulumi.String(\"sandbox\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tKeepCount: pulumi.Int(5),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryCleanupPolicyArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryCleanupPolicyConditionArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryCleanupPolicyMostRecentVersionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder() \n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example docker repository with cleanup policies\")\n .format(\"DOCKER\")\n .cleanupPolicyDryRun(false)\n .cleanupPolicies( \n RepositoryCleanupPolicyArgs.builder()\n .id(\"delete-prerelease\")\n .action(\"DELETE\")\n .condition(RepositoryCleanupPolicyConditionArgs.builder()\n .tagState(\"TAGGED\")\n .tagPrefixes( \n \"alpha\",\n \"v0\")\n .olderThan(\"2592000s\")\n .build())\n .build(),\n RepositoryCleanupPolicyArgs.builder()\n .id(\"keep-tagged-release\")\n .action(\"KEEP\")\n .condition(RepositoryCleanupPolicyConditionArgs.builder()\n .tagState(\"TAGGED\")\n .tagPrefixes(\"release\")\n .packageNamePrefixes( \n \"webapp\",\n \"mobile\")\n .build())\n .build(),\n RepositoryCleanupPolicyArgs.builder()\n .id(\"keep-minimum-versions\")\n .action(\"KEEP\")\n .mostRecentVersions(RepositoryCleanupPolicyMostRecentVersionsArgs.builder()\n .packageNamePrefixes( \n \"webapp\",\n \"mobile\",\n \"sandbox\")\n .keepCount(5)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example docker repository with cleanup policies\n format: DOCKER\n cleanupPolicyDryRun: false\n cleanupPolicies:\n - id: delete-prerelease\n action: DELETE\n condition:\n tagState: TAGGED\n tagPrefixes:\n - alpha\n - v0\n olderThan: 2592000s\n - id: keep-tagged-release\n action: KEEP\n condition:\n tagState: TAGGED\n tagPrefixes:\n - release\n packageNamePrefixes:\n - webapp\n - mobile\n - id: keep-minimum-versions\n action: KEEP\n mostRecentVersions:\n packageNamePrefixes:\n - webapp\n - mobile\n - sandbox\n keepCount: 5\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Dockerhub Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_remote_secret = new gcp.secretmanager.Secret(\"example-remote-secret\", {\n secretId: \"example-secret\",\n replication: {\n auto: {},\n },\n});\nconst example_remote_secretVersion = new gcp.secretmanager.SecretVersion(\"example-remote-secret_version\", {\n secret: example_remote_secret.id,\n secretData: \"remote-password\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: example_remote_secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-dockerhub-remote\",\n description: \"example remote dockerhub repository with credentials\",\n format: \"DOCKER\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"docker hub with custom credentials\",\n disableUpstreamValidation: true,\n dockerRepository: {\n publicRepository: \"DOCKER_HUB\",\n },\n upstreamCredentials: {\n usernamePasswordCredentials: {\n username: \"remote-username\",\n passwordSecretVersion: example_remote_secretVersion.name,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_remote_secret = gcp.secretmanager.Secret(\"example-remote-secret\",\n secret_id=\"example-secret\",\n replication=gcp.secretmanager.SecretReplicationArgs(\n auto=gcp.secretmanager.SecretReplicationAutoArgs(),\n ))\nexample_remote_secret_version = gcp.secretmanager.SecretVersion(\"example-remote-secret_version\",\n secret=example_remote_secret.id,\n secret_data=\"remote-password\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=example_remote_secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-dockerhub-remote\",\n description=\"example remote dockerhub repository with credentials\",\n format=\"DOCKER\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config=gcp.artifactregistry.RepositoryRemoteRepositoryConfigArgs(\n description=\"docker hub with custom credentials\",\n disable_upstream_validation=True,\n docker_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs(\n public_repository=\"DOCKER_HUB\",\n ),\n upstream_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs(\n username_password_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs(\n username=\"remote-username\",\n password_secret_version=example_remote_secret_version.name,\n ),\n ),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example_remote_secret = new Gcp.SecretManager.Secret(\"example-remote-secret\", new()\n {\n SecretId = \"example-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion(\"example-remote-secret_version\", new()\n {\n Secret = example_remote_secret.Id,\n SecretData = \"remote-password\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = example_remote_secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-dockerhub-remote\",\n Description = \"example remote dockerhub repository with credentials\",\n Format = \"DOCKER\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"docker hub with custom credentials\",\n DisableUpstreamValidation = true,\n DockerRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs\n {\n PublicRepository = \"DOCKER_HUB\",\n },\n UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs\n {\n UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs\n {\n Username = \"remote-username\",\n PasswordSecretVersion = example_remote_secretVersion.Name,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"example-remote-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"example-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"example-remote-secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: example_remote_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"remote-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: example_remote_secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-dockerhub-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote dockerhub repository with credentials\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"docker hub with custom credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tDockerRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs{\n\t\t\t\t\tPublicRepository: pulumi.String(\"DOCKER_HUB\"),\n\t\t\t\t},\n\t\t\t\tUpstreamCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{\n\t\t\t\t\tUsernamePasswordCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"remote-username\"),\n\t\t\t\t\t\tPasswordSecretVersion: example_remote_secretVersion.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example_remote_secret = new Secret(\"example-remote-secret\", SecretArgs.builder() \n .secretId(\"example-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var example_remote_secretVersion = new SecretVersion(\"example-remote-secretVersion\", SecretVersionArgs.builder() \n .secret(example_remote_secret.id())\n .secretData(\"remote-password\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder() \n .secretId(example_remote_secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder() \n .location(\"us-central1\")\n .repositoryId(\"example-dockerhub-remote\")\n .description(\"example remote dockerhub repository with credentials\")\n .format(\"DOCKER\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"docker hub with custom credentials\")\n .disableUpstreamValidation(true)\n .dockerRepository(RepositoryRemoteRepositoryConfigDockerRepositoryArgs.builder()\n .publicRepository(\"DOCKER_HUB\")\n .build())\n .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()\n .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()\n .username(\"remote-username\")\n .passwordSecretVersion(example_remote_secretVersion.name())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-remote-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: example-secret\n replication:\n auto: {}\n example-remote-secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: example-remote-secret_version\n properties:\n secret: ${[\"example-remote-secret\"].id}\n secretData: remote-password\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${[\"example-remote-secret\"].id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-dockerhub-remote\n description: example remote dockerhub repository with credentials\n format: DOCKER\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: docker hub with custom credentials\n disableUpstreamValidation: true\n dockerRepository:\n publicRepository: DOCKER_HUB\n upstreamCredentials:\n usernamePasswordCredentials:\n username: remote-username\n passwordSecretVersion: ${[\"example-remote-secretVersion\"].name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Docker Custom With Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_remote_secret = new gcp.secretmanager.Secret(\"example-remote-secret\", {\n secretId: \"example-secret\",\n replication: {\n auto: {},\n },\n});\nconst example_remote_secretVersion = new gcp.secretmanager.SecretVersion(\"example-remote-secret_version\", {\n secret: example_remote_secret.id,\n secretData: \"remote-password\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: example_remote_secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-docker-custom-remote\",\n description: \"example remote custom docker repository with credentials\",\n format: \"DOCKER\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"custom docker remote with credentials\",\n disableUpstreamValidation: true,\n dockerRepository: {\n customRepository: {\n uri: \"https://registry-1.docker.io\",\n },\n },\n upstreamCredentials: {\n usernamePasswordCredentials: {\n username: \"remote-username\",\n passwordSecretVersion: example_remote_secretVersion.name,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_remote_secret = gcp.secretmanager.Secret(\"example-remote-secret\",\n secret_id=\"example-secret\",\n replication=gcp.secretmanager.SecretReplicationArgs(\n auto=gcp.secretmanager.SecretReplicationAutoArgs(),\n ))\nexample_remote_secret_version = gcp.secretmanager.SecretVersion(\"example-remote-secret_version\",\n secret=example_remote_secret.id,\n secret_data=\"remote-password\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=example_remote_secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-docker-custom-remote\",\n description=\"example remote custom docker repository with credentials\",\n format=\"DOCKER\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config=gcp.artifactregistry.RepositoryRemoteRepositoryConfigArgs(\n description=\"custom docker remote with credentials\",\n disable_upstream_validation=True,\n docker_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs(\n custom_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs(\n uri=\"https://registry-1.docker.io\",\n ),\n ),\n upstream_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs(\n username_password_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs(\n username=\"remote-username\",\n password_secret_version=example_remote_secret_version.name,\n ),\n ),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example_remote_secret = new Gcp.SecretManager.Secret(\"example-remote-secret\", new()\n {\n SecretId = \"example-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion(\"example-remote-secret_version\", new()\n {\n Secret = example_remote_secret.Id,\n SecretData = \"remote-password\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = example_remote_secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-docker-custom-remote\",\n Description = \"example remote custom docker repository with credentials\",\n Format = \"DOCKER\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"custom docker remote with credentials\",\n DisableUpstreamValidation = true,\n DockerRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs\n {\n CustomRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs\n {\n Uri = \"https://registry-1.docker.io\",\n },\n },\n UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs\n {\n UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs\n {\n Username = \"remote-username\",\n PasswordSecretVersion = example_remote_secretVersion.Name,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"example-remote-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"example-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"example-remote-secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: example_remote_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"remote-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: example_remote_secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-docker-custom-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote custom docker repository with credentials\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"custom docker remote with credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tDockerRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs{\n\t\t\t\t\tCustomRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs{\n\t\t\t\t\t\tUri: pulumi.String(\"https://registry-1.docker.io\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tUpstreamCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{\n\t\t\t\t\tUsernamePasswordCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"remote-username\"),\n\t\t\t\t\t\tPasswordSecretVersion: example_remote_secretVersion.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example_remote_secret = new Secret(\"example-remote-secret\", SecretArgs.builder() \n .secretId(\"example-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var example_remote_secretVersion = new SecretVersion(\"example-remote-secretVersion\", SecretVersionArgs.builder() \n .secret(example_remote_secret.id())\n .secretData(\"remote-password\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder() \n .secretId(example_remote_secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder() \n .location(\"us-central1\")\n .repositoryId(\"example-docker-custom-remote\")\n .description(\"example remote custom docker repository with credentials\")\n .format(\"DOCKER\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"custom docker remote with credentials\")\n .disableUpstreamValidation(true)\n .dockerRepository(RepositoryRemoteRepositoryConfigDockerRepositoryArgs.builder()\n .customRepository(RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs.builder()\n .uri(\"https://registry-1.docker.io\")\n .build())\n .build())\n .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()\n .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()\n .username(\"remote-username\")\n .passwordSecretVersion(example_remote_secretVersion.name())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-remote-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: example-secret\n replication:\n auto: {}\n example-remote-secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: example-remote-secret_version\n properties:\n secret: ${[\"example-remote-secret\"].id}\n secretData: remote-password\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${[\"example-remote-secret\"].id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-docker-custom-remote\n description: example remote custom docker repository with credentials\n format: DOCKER\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: custom docker remote with credentials\n disableUpstreamValidation: true\n dockerRepository:\n customRepository:\n uri: https://registry-1.docker.io\n upstreamCredentials:\n usernamePasswordCredentials:\n username: remote-username\n passwordSecretVersion: ${[\"example-remote-secretVersion\"].name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Maven Custom With Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_remote_secret = new gcp.secretmanager.Secret(\"example-remote-secret\", {\n secretId: \"example-secret\",\n replication: {\n auto: {},\n },\n});\nconst example_remote_secretVersion = new gcp.secretmanager.SecretVersion(\"example-remote-secret_version\", {\n secret: example_remote_secret.id,\n secretData: \"remote-password\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: example_remote_secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-maven-custom-remote\",\n description: \"example remote custom maven repository with credentials\",\n format: \"MAVEN\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"custom maven remote with credentials\",\n disableUpstreamValidation: true,\n mavenRepository: {\n customRepository: {\n uri: \"https://my.maven.registry\",\n },\n },\n upstreamCredentials: {\n usernamePasswordCredentials: {\n username: \"remote-username\",\n passwordSecretVersion: example_remote_secretVersion.name,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_remote_secret = gcp.secretmanager.Secret(\"example-remote-secret\",\n secret_id=\"example-secret\",\n replication=gcp.secretmanager.SecretReplicationArgs(\n auto=gcp.secretmanager.SecretReplicationAutoArgs(),\n ))\nexample_remote_secret_version = gcp.secretmanager.SecretVersion(\"example-remote-secret_version\",\n secret=example_remote_secret.id,\n secret_data=\"remote-password\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=example_remote_secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-maven-custom-remote\",\n description=\"example remote custom maven repository with credentials\",\n format=\"MAVEN\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config=gcp.artifactregistry.RepositoryRemoteRepositoryConfigArgs(\n description=\"custom maven remote with credentials\",\n disable_upstream_validation=True,\n maven_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigMavenRepositoryArgs(\n custom_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs(\n uri=\"https://my.maven.registry\",\n ),\n ),\n upstream_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs(\n username_password_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs(\n username=\"remote-username\",\n password_secret_version=example_remote_secret_version.name,\n ),\n ),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example_remote_secret = new Gcp.SecretManager.Secret(\"example-remote-secret\", new()\n {\n SecretId = \"example-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion(\"example-remote-secret_version\", new()\n {\n Secret = example_remote_secret.Id,\n SecretData = \"remote-password\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = example_remote_secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-maven-custom-remote\",\n Description = \"example remote custom maven repository with credentials\",\n Format = \"MAVEN\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"custom maven remote with credentials\",\n DisableUpstreamValidation = true,\n MavenRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigMavenRepositoryArgs\n {\n CustomRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs\n {\n Uri = \"https://my.maven.registry\",\n },\n },\n UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs\n {\n UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs\n {\n Username = \"remote-username\",\n PasswordSecretVersion = example_remote_secretVersion.Name,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"example-remote-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"example-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"example-remote-secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: example_remote_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"remote-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: example_remote_secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-maven-custom-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote custom maven repository with credentials\"),\n\t\t\tFormat: pulumi.String(\"MAVEN\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"custom maven remote with credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tMavenRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigMavenRepositoryArgs{\n\t\t\t\t\tCustomRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs{\n\t\t\t\t\t\tUri: pulumi.String(\"https://my.maven.registry\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tUpstreamCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{\n\t\t\t\t\tUsernamePasswordCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"remote-username\"),\n\t\t\t\t\t\tPasswordSecretVersion: example_remote_secretVersion.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigMavenRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example_remote_secret = new Secret(\"example-remote-secret\", SecretArgs.builder() \n .secretId(\"example-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var example_remote_secretVersion = new SecretVersion(\"example-remote-secretVersion\", SecretVersionArgs.builder() \n .secret(example_remote_secret.id())\n .secretData(\"remote-password\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder() \n .secretId(example_remote_secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder() \n .location(\"us-central1\")\n .repositoryId(\"example-maven-custom-remote\")\n .description(\"example remote custom maven repository with credentials\")\n .format(\"MAVEN\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"custom maven remote with credentials\")\n .disableUpstreamValidation(true)\n .mavenRepository(RepositoryRemoteRepositoryConfigMavenRepositoryArgs.builder()\n .customRepository(RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs.builder()\n .uri(\"https://my.maven.registry\")\n .build())\n .build())\n .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()\n .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()\n .username(\"remote-username\")\n .passwordSecretVersion(example_remote_secretVersion.name())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-remote-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: example-secret\n replication:\n auto: {}\n example-remote-secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: example-remote-secret_version\n properties:\n secret: ${[\"example-remote-secret\"].id}\n secretData: remote-password\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${[\"example-remote-secret\"].id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-maven-custom-remote\n description: example remote custom maven repository with credentials\n format: MAVEN\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: custom maven remote with credentials\n disableUpstreamValidation: true\n mavenRepository:\n customRepository:\n uri: https://my.maven.registry\n upstreamCredentials:\n usernamePasswordCredentials:\n username: remote-username\n passwordSecretVersion: ${[\"example-remote-secretVersion\"].name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Npm Custom With Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_remote_secret = new gcp.secretmanager.Secret(\"example-remote-secret\", {\n secretId: \"example-secret\",\n replication: {\n auto: {},\n },\n});\nconst example_remote_secretVersion = new gcp.secretmanager.SecretVersion(\"example-remote-secret_version\", {\n secret: example_remote_secret.id,\n secretData: \"remote-password\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: example_remote_secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-npm-custom-remote\",\n description: \"example remote custom npm repository with credentials\",\n format: \"NPM\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"custom npm with credentials\",\n disableUpstreamValidation: true,\n npmRepository: {\n customRepository: {\n uri: \"https://my.npm.registry\",\n },\n },\n upstreamCredentials: {\n usernamePasswordCredentials: {\n username: \"remote-username\",\n passwordSecretVersion: example_remote_secretVersion.name,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_remote_secret = gcp.secretmanager.Secret(\"example-remote-secret\",\n secret_id=\"example-secret\",\n replication=gcp.secretmanager.SecretReplicationArgs(\n auto=gcp.secretmanager.SecretReplicationAutoArgs(),\n ))\nexample_remote_secret_version = gcp.secretmanager.SecretVersion(\"example-remote-secret_version\",\n secret=example_remote_secret.id,\n secret_data=\"remote-password\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=example_remote_secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-npm-custom-remote\",\n description=\"example remote custom npm repository with credentials\",\n format=\"NPM\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config=gcp.artifactregistry.RepositoryRemoteRepositoryConfigArgs(\n description=\"custom npm with credentials\",\n disable_upstream_validation=True,\n npm_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigNpmRepositoryArgs(\n custom_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs(\n uri=\"https://my.npm.registry\",\n ),\n ),\n upstream_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs(\n username_password_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs(\n username=\"remote-username\",\n password_secret_version=example_remote_secret_version.name,\n ),\n ),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example_remote_secret = new Gcp.SecretManager.Secret(\"example-remote-secret\", new()\n {\n SecretId = \"example-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion(\"example-remote-secret_version\", new()\n {\n Secret = example_remote_secret.Id,\n SecretData = \"remote-password\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = example_remote_secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-npm-custom-remote\",\n Description = \"example remote custom npm repository with credentials\",\n Format = \"NPM\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"custom npm with credentials\",\n DisableUpstreamValidation = true,\n NpmRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigNpmRepositoryArgs\n {\n CustomRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs\n {\n Uri = \"https://my.npm.registry\",\n },\n },\n UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs\n {\n UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs\n {\n Username = \"remote-username\",\n PasswordSecretVersion = example_remote_secretVersion.Name,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"example-remote-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"example-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"example-remote-secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: example_remote_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"remote-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: example_remote_secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-npm-custom-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote custom npm repository with credentials\"),\n\t\t\tFormat: pulumi.String(\"NPM\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"custom npm with credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tNpmRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigNpmRepositoryArgs{\n\t\t\t\t\tCustomRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs{\n\t\t\t\t\t\tUri: pulumi.String(\"https://my.npm.registry\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tUpstreamCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{\n\t\t\t\t\tUsernamePasswordCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"remote-username\"),\n\t\t\t\t\t\tPasswordSecretVersion: example_remote_secretVersion.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigNpmRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example_remote_secret = new Secret(\"example-remote-secret\", SecretArgs.builder() \n .secretId(\"example-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var example_remote_secretVersion = new SecretVersion(\"example-remote-secretVersion\", SecretVersionArgs.builder() \n .secret(example_remote_secret.id())\n .secretData(\"remote-password\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder() \n .secretId(example_remote_secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder() \n .location(\"us-central1\")\n .repositoryId(\"example-npm-custom-remote\")\n .description(\"example remote custom npm repository with credentials\")\n .format(\"NPM\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"custom npm with credentials\")\n .disableUpstreamValidation(true)\n .npmRepository(RepositoryRemoteRepositoryConfigNpmRepositoryArgs.builder()\n .customRepository(RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs.builder()\n .uri(\"https://my.npm.registry\")\n .build())\n .build())\n .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()\n .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()\n .username(\"remote-username\")\n .passwordSecretVersion(example_remote_secretVersion.name())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-remote-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: example-secret\n replication:\n auto: {}\n example-remote-secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: example-remote-secret_version\n properties:\n secret: ${[\"example-remote-secret\"].id}\n secretData: remote-password\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${[\"example-remote-secret\"].id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-npm-custom-remote\n description: example remote custom npm repository with credentials\n format: NPM\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: custom npm with credentials\n disableUpstreamValidation: true\n npmRepository:\n customRepository:\n uri: https://my.npm.registry\n upstreamCredentials:\n usernamePasswordCredentials:\n username: remote-username\n passwordSecretVersion: ${[\"example-remote-secretVersion\"].name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Python Custom With Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_remote_secret = new gcp.secretmanager.Secret(\"example-remote-secret\", {\n secretId: \"example-secret\",\n replication: {\n auto: {},\n },\n});\nconst example_remote_secretVersion = new gcp.secretmanager.SecretVersion(\"example-remote-secret_version\", {\n secret: example_remote_secret.id,\n secretData: \"remote-password\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: example_remote_secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-python-custom-remote\",\n description: \"example remote custom python repository with credentials\",\n format: \"PYTHON\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"custom npm with credentials\",\n disableUpstreamValidation: true,\n pythonRepository: {\n customRepository: {\n uri: \"https://my.python.registry\",\n },\n },\n upstreamCredentials: {\n usernamePasswordCredentials: {\n username: \"remote-username\",\n passwordSecretVersion: example_remote_secretVersion.name,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_remote_secret = gcp.secretmanager.Secret(\"example-remote-secret\",\n secret_id=\"example-secret\",\n replication=gcp.secretmanager.SecretReplicationArgs(\n auto=gcp.secretmanager.SecretReplicationAutoArgs(),\n ))\nexample_remote_secret_version = gcp.secretmanager.SecretVersion(\"example-remote-secret_version\",\n secret=example_remote_secret.id,\n secret_data=\"remote-password\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=example_remote_secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-python-custom-remote\",\n description=\"example remote custom python repository with credentials\",\n format=\"PYTHON\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config=gcp.artifactregistry.RepositoryRemoteRepositoryConfigArgs(\n description=\"custom npm with credentials\",\n disable_upstream_validation=True,\n python_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigPythonRepositoryArgs(\n custom_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs(\n uri=\"https://my.python.registry\",\n ),\n ),\n upstream_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs(\n username_password_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs(\n username=\"remote-username\",\n password_secret_version=example_remote_secret_version.name,\n ),\n ),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example_remote_secret = new Gcp.SecretManager.Secret(\"example-remote-secret\", new()\n {\n SecretId = \"example-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion(\"example-remote-secret_version\", new()\n {\n Secret = example_remote_secret.Id,\n SecretData = \"remote-password\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = example_remote_secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-python-custom-remote\",\n Description = \"example remote custom python repository with credentials\",\n Format = \"PYTHON\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"custom npm with credentials\",\n DisableUpstreamValidation = true,\n PythonRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigPythonRepositoryArgs\n {\n CustomRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs\n {\n Uri = \"https://my.python.registry\",\n },\n },\n UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs\n {\n UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs\n {\n Username = \"remote-username\",\n PasswordSecretVersion = example_remote_secretVersion.Name,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"example-remote-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"example-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"example-remote-secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: example_remote_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"remote-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: example_remote_secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-python-custom-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote custom python repository with credentials\"),\n\t\t\tFormat: pulumi.String(\"PYTHON\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"custom npm with credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tPythonRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigPythonRepositoryArgs{\n\t\t\t\t\tCustomRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs{\n\t\t\t\t\t\tUri: pulumi.String(\"https://my.python.registry\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tUpstreamCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{\n\t\t\t\t\tUsernamePasswordCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"remote-username\"),\n\t\t\t\t\t\tPasswordSecretVersion: example_remote_secretVersion.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigPythonRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example_remote_secret = new Secret(\"example-remote-secret\", SecretArgs.builder() \n .secretId(\"example-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var example_remote_secretVersion = new SecretVersion(\"example-remote-secretVersion\", SecretVersionArgs.builder() \n .secret(example_remote_secret.id())\n .secretData(\"remote-password\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder() \n .secretId(example_remote_secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder() \n .location(\"us-central1\")\n .repositoryId(\"example-python-custom-remote\")\n .description(\"example remote custom python repository with credentials\")\n .format(\"PYTHON\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"custom npm with credentials\")\n .disableUpstreamValidation(true)\n .pythonRepository(RepositoryRemoteRepositoryConfigPythonRepositoryArgs.builder()\n .customRepository(RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs.builder()\n .uri(\"https://my.python.registry\")\n .build())\n .build())\n .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()\n .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()\n .username(\"remote-username\")\n .passwordSecretVersion(example_remote_secretVersion.name())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-remote-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: example-secret\n replication:\n auto: {}\n example-remote-secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: example-remote-secret_version\n properties:\n secret: ${[\"example-remote-secret\"].id}\n secretData: remote-password\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${[\"example-remote-secret\"].id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-python-custom-remote\n description: example remote custom python repository with credentials\n format: PYTHON\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: custom npm with credentials\n disableUpstreamValidation: true\n pythonRepository:\n customRepository:\n uri: https://my.python.registry\n upstreamCredentials:\n usernamePasswordCredentials:\n username: remote-username\n passwordSecretVersion: ${[\"example-remote-secretVersion\"].name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRepository can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/repositories/{{repository_id}}`\n\n* `{{project}}/{{location}}/{{repository_id}}`\n\n* `{{location}}/{{repository_id}}`\n\n* `{{repository_id}}`\n\nWhen using the `pulumi import` command, Repository can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:artifactregistry/repository:Repository default projects/{{project}}/locations/{{location}}/repositories/{{repository_id}}\n```\n\n```sh\n$ pulumi import gcp:artifactregistry/repository:Repository default {{project}}/{{location}}/{{repository_id}}\n```\n\n```sh\n$ pulumi import gcp:artifactregistry/repository:Repository default {{location}}/{{repository_id}}\n```\n\n```sh\n$ pulumi import gcp:artifactregistry/repository:Repository default {{repository_id}}\n```\n\n", "properties": { "cleanupPolicies": { "type": "array", @@ -118051,6 +118338,13 @@ "type": "boolean", "description": "If set to true, queries over this table\nrequire a partition filter that can be used for partition elimination to be\nspecified.\n" }, + "resourceTags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "The tags attached to this table. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for\nexample \"123456789012/environment\" where 123456789012 is the ID of the parent organization or project resource for this\ntag key. Tag value is expected to be the short name, for example \"Production\".\n" + }, "schema": { "type": "string", "description": "A JSON schema for the table.\n" @@ -118168,6 +118462,13 @@ "type": "boolean", "description": "If set to true, queries over this table\nrequire a partition filter that can be used for partition elimination to be\nspecified.\n" }, + "resourceTags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "The tags attached to this table. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for\nexample \"123456789012/environment\" where 123456789012 is the ID of the parent organization or project resource for this\ntag key. Tag value is expected to be the short name, for example \"Production\".\n" + }, "schema": { "type": "string", "description": "A JSON schema for the table.\n" @@ -118311,6 +118612,13 @@ "type": "boolean", "description": "If set to true, queries over this table\nrequire a partition filter that can be used for partition elimination to be\nspecified.\n" }, + "resourceTags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "The tags attached to this table. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for\nexample \"123456789012/environment\" where 123456789012 is the ID of the parent organization or project resource for this\ntag key. Tag value is expected to be the short name, for example \"Production\".\n" + }, "schema": { "type": "string", "description": "A JSON schema for the table.\n" @@ -121159,6 +121467,10 @@ "type": "string", "description": "Resource name of the budget. The resource name\nimplies the scope of a budget. Values are of the form\nbillingAccounts/{billingAccountId}/budgets/{budgetId}.\n" }, + "ownershipScope": { + "type": "string", + "description": "The ownership scope of the budget. The ownership scope and users' IAM permissions determine who has full access to the\nbudget's data. Possible values: [\"OWNERSHIP_SCOPE_UNSPECIFIED\", \"ALL_USERS\", \"BILLING_ACCOUNT\"]\n" + }, "thresholdRules": { "type": "array", "items": { @@ -121195,6 +121507,10 @@ "type": "string", "description": "User data for display name in UI. Must be \u003c= 60 chars.\n" }, + "ownershipScope": { + "type": "string", + "description": "The ownership scope of the budget. The ownership scope and users' IAM permissions determine who has full access to the\nbudget's data. Possible values: [\"OWNERSHIP_SCOPE_UNSPECIFIED\", \"ALL_USERS\", \"BILLING_ACCOUNT\"]\n" + }, "thresholdRules": { "type": "array", "items": { @@ -121235,6 +121551,10 @@ "type": "string", "description": "Resource name of the budget. The resource name\nimplies the scope of a budget. Values are of the form\nbillingAccounts/{billingAccountId}/budgets/{budgetId}.\n" }, + "ownershipScope": { + "type": "string", + "description": "The ownership scope of the budget. The ownership scope and users' IAM permissions determine who has full access to the\nbudget's data. Possible values: [\"OWNERSHIP_SCOPE_UNSPECIFIED\", \"ALL_USERS\", \"BILLING_ACCOUNT\"]\n" + }, "thresholdRules": { "type": "array", "items": { @@ -129560,7 +129880,7 @@ } }, "gcp:cloudfunctionsv2/function:Function": { - "description": "A Cloud Function that contains user computation executed in response to an event.\n\n\nTo get more information about function, see:\n\n* [API documentation](https://cloud.google.com/functions/docs/reference/rest/v2beta/projects.locations.functions)\n\n## Example Usage\n\n### Cloudfunctions2 Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-v2\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n },\n});\nexport const functionUri = _function.serviceConfig.apply(serviceConfig =\u003e serviceConfig?.uri);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-v2\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config=gcp.cloudfunctionsv2.FunctionBuildConfigArgs(\n runtime=\"nodejs16\",\n entry_point=\"helloHttp\",\n source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceArgs(\n storage_source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs(\n bucket=bucket.name,\n object=object.name,\n ),\n ),\n ),\n service_config=gcp.cloudfunctionsv2.FunctionServiceConfigArgs(\n max_instance_count=1,\n available_memory=\"256M\",\n timeout_seconds=60,\n ))\npulumi.export(\"functionUri\", function.service_config.uri)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-v2\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"functionUri\"] = function.ServiceConfig.Apply(serviceConfig =\u003e serviceConfig?.Uri),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfunction, err := cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-v2\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"functionUri\", function.ServiceConfig.ApplyT(func(serviceConfig cloudfunctionsv2.FunctionServiceConfig) (*string, error) {\n\t\t\treturn \u0026serviceConfig.Uri, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder() \n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder() \n .name(\"function-v2\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .build())\n .build());\n\n ctx.export(\"functionUri\", function.serviceConfig().applyValue(serviceConfig -\u003e serviceConfig.uri()));\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-v2\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\nvariables:\n project: my-project-name\noutputs:\n functionUri: ${function.serviceConfig.uri}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"functions2-topic\"});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloPubSub\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"4Gi\",\n timeoutSeconds: 60,\n maxInstanceRequestConcurrency: 80,\n availableCpu: \"4\",\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n triggerRegion: \"us-central1\",\n eventType: \"google.cloud.pubsub.topic.v1.messagePublished\",\n pubsubTopic: topic.id,\n retryPolicy: \"RETRY_POLICY_RETRY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\ntopic = gcp.pubsub.Topic(\"topic\", name=\"functions2-topic\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config=gcp.cloudfunctionsv2.FunctionBuildConfigArgs(\n runtime=\"nodejs16\",\n entry_point=\"helloPubSub\",\n environment_variables={\n \"BUILD_CONFIG_TEST\": \"build_test\",\n },\n source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceArgs(\n storage_source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs(\n bucket=bucket.name,\n object=object.name,\n ),\n ),\n ),\n service_config=gcp.cloudfunctionsv2.FunctionServiceConfigArgs(\n max_instance_count=3,\n min_instance_count=1,\n available_memory=\"4Gi\",\n timeout_seconds=60,\n max_instance_request_concurrency=80,\n available_cpu=\"4\",\n environment_variables={\n \"SERVICE_CONFIG_TEST\": \"config_test\",\n },\n ingress_settings=\"ALLOW_INTERNAL_ONLY\",\n all_traffic_on_latest_revision=True,\n service_account_email=account.email,\n ),\n event_trigger=gcp.cloudfunctionsv2.FunctionEventTriggerArgs(\n trigger_region=\"us-central1\",\n event_type=\"google.cloud.pubsub.topic.v1.messagePublished\",\n pubsub_topic=topic.id,\n retry_policy=\"RETRY_POLICY_RETRY\",\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"functions2-topic\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloPubSub\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"4Gi\",\n TimeoutSeconds = 60,\n MaxInstanceRequestConcurrency = 80,\n AvailableCpu = \"4\",\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n TriggerRegion = \"us-central1\",\n EventType = \"google.cloud.pubsub.topic.v1.messagePublished\",\n PubsubTopic = topic.Id,\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"functions2-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloPubSub\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"4Gi\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tMaxInstanceRequestConcurrency: pulumi.Int(80),\n\t\t\t\tAvailableCpu: pulumi.String(\"4\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tTriggerRegion: pulumi.String(\"us-central1\"),\n\t\t\t\tEventType: pulumi.String(\"google.cloud.pubsub.topic.v1.messagePublished\"),\n\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder() \n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var topic = new Topic(\"topic\", TopicArgs.builder() \n .name(\"functions2-topic\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder() \n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder() \n .name(\"gcf-function\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloPubSub\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"4Gi\")\n .timeoutSeconds(60)\n .maxInstanceRequestConcurrency(80)\n .availableCpu(\"4\")\n .environmentVariables(Map.of(\"SERVICE_CONFIG_TEST\", \"config_test\"))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .triggerRegion(\"us-central1\")\n .eventType(\"google.cloud.pubsub.topic.v1.messagePublished\")\n .pubsubTopic(topic.id())\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: functions2-topic\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloPubSub\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 4Gi\n timeoutSeconds: 60\n maxInstanceRequestConcurrency: 80\n availableCpu: '4'\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n triggerRegion: us-central1\n eventType: google.cloud.pubsub.topic.v1.messagePublished\n pubsubTopic: ${topic.id}\n retryPolicy: RETRY_POLICY_RETRY\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Scheduler Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n minInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n serviceAccountEmail: account.email,\n },\n});\nconst invoker = new gcp.cloudfunctionsv2.FunctionIamMember(\"invoker\", {\n project: _function.project,\n location: _function.location,\n cloudFunction: _function.name,\n role: \"roles/cloudfunctions.invoker\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst cloudRunInvoker = new gcp.cloudrun.IamMember(\"cloud_run_invoker\", {\n project: _function.project,\n location: _function.location,\n service: _function.name,\n role: \"roles/run.invoker\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst invokeCloudFunction = new gcp.cloudscheduler.Job(\"invoke_cloud_function\", {\n name: \"invoke-gcf-function\",\n description: \"Schedule the HTTPS trigger for cloud function\",\n schedule: \"0 0 * * *\",\n project: _function.project,\n region: _function.location,\n httpTarget: {\n uri: _function.serviceConfig.apply(serviceConfig =\u003e serviceConfig?.uri),\n httpMethod: \"POST\",\n oidcToken: {\n audience: _function.serviceConfig.apply(serviceConfig =\u003e `${serviceConfig?.uri}/`),\n serviceAccountEmail: account.email,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config=gcp.cloudfunctionsv2.FunctionBuildConfigArgs(\n runtime=\"nodejs16\",\n entry_point=\"helloHttp\",\n source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceArgs(\n storage_source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs(\n bucket=bucket.name,\n object=object.name,\n ),\n ),\n ),\n service_config=gcp.cloudfunctionsv2.FunctionServiceConfigArgs(\n min_instance_count=1,\n available_memory=\"256M\",\n timeout_seconds=60,\n service_account_email=account.email,\n ))\ninvoker = gcp.cloudfunctionsv2.FunctionIamMember(\"invoker\",\n project=function.project,\n location=function.location,\n cloud_function=function.name,\n role=\"roles/cloudfunctions.invoker\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\ncloud_run_invoker = gcp.cloudrun.IamMember(\"cloud_run_invoker\",\n project=function.project,\n location=function.location,\n service=function.name,\n role=\"roles/run.invoker\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\ninvoke_cloud_function = gcp.cloudscheduler.Job(\"invoke_cloud_function\",\n name=\"invoke-gcf-function\",\n description=\"Schedule the HTTPS trigger for cloud function\",\n schedule=\"0 0 * * *\",\n project=function.project,\n region=function.location,\n http_target=gcp.cloudscheduler.JobHttpTargetArgs(\n uri=function.service_config.uri,\n http_method=\"POST\",\n oidc_token=gcp.cloudscheduler.JobHttpTargetOidcTokenArgs(\n audience=function.service_config.apply(lambda service_config: f\"{service_config.uri}/\"),\n service_account_email=account.email,\n ),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MinInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n ServiceAccountEmail = account.Email,\n },\n });\n\n var invoker = new Gcp.CloudFunctionsV2.FunctionIamMember(\"invoker\", new()\n {\n Project = function.Project,\n Location = function.Location,\n CloudFunction = function.Name,\n Role = \"roles/cloudfunctions.invoker\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var cloudRunInvoker = new Gcp.CloudRun.IamMember(\"cloud_run_invoker\", new()\n {\n Project = function.Project,\n Location = function.Location,\n Service = function.Name,\n Role = \"roles/run.invoker\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var invokeCloudFunction = new Gcp.CloudScheduler.Job(\"invoke_cloud_function\", new()\n {\n Name = \"invoke-gcf-function\",\n Description = \"Schedule the HTTPS trigger for cloud function\",\n Schedule = \"0 0 * * *\",\n Project = function.Project,\n Region = function.Location,\n HttpTarget = new Gcp.CloudScheduler.Inputs.JobHttpTargetArgs\n {\n Uri = function.ServiceConfig.Apply(serviceConfig =\u003e serviceConfig?.Uri),\n HttpMethod = \"POST\",\n OidcToken = new Gcp.CloudScheduler.Inputs.JobHttpTargetOidcTokenArgs\n {\n Audience = function.ServiceConfig.Apply(serviceConfig =\u003e $\"{serviceConfig?.Uri}/\"),\n ServiceAccountEmail = account.Email,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudscheduler\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfunction, err := cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunctionIamMember(ctx, \"invoker\", \u0026cloudfunctionsv2.FunctionIamMemberArgs{\n\t\t\tProject: function.Project,\n\t\t\tLocation: function.Location,\n\t\t\tCloudFunction: function.Name,\n\t\t\tRole: pulumi.String(\"roles/cloudfunctions.invoker\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrun.NewIamMember(ctx, \"cloud_run_invoker\", \u0026cloudrun.IamMemberArgs{\n\t\t\tProject: function.Project,\n\t\t\tLocation: function.Location,\n\t\t\tService: function.Name,\n\t\t\tRole: pulumi.String(\"roles/run.invoker\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudscheduler.NewJob(ctx, \"invoke_cloud_function\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"invoke-gcf-function\"),\n\t\t\tDescription: pulumi.String(\"Schedule the HTTPS trigger for cloud function\"),\n\t\t\tSchedule: pulumi.String(\"0 0 * * *\"),\n\t\t\tProject: function.Project,\n\t\t\tRegion: function.Location,\n\t\t\tHttpTarget: \u0026cloudscheduler.JobHttpTargetArgs{\n\t\t\t\tUri: function.ServiceConfig.ApplyT(func(serviceConfig cloudfunctionsv2.FunctionServiceConfig) (*string, error) {\n\t\t\t\t\treturn \u0026serviceConfig.Uri, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tHttpMethod: pulumi.String(\"POST\"),\n\t\t\t\tOidcToken: \u0026cloudscheduler.JobHttpTargetOidcTokenArgs{\n\t\t\t\t\tAudience: function.ServiceConfig.ApplyT(func(serviceConfig cloudfunctionsv2.FunctionServiceConfig) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"%v/\", serviceConfig.Uri), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionIamMember;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionIamMemberArgs;\nimport com.pulumi.gcp.cloudrun.IamMember;\nimport com.pulumi.gcp.cloudrun.IamMemberArgs;\nimport com.pulumi.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetOidcTokenArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder() \n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder() \n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder() \n .name(\"gcf-function\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .minInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .serviceAccountEmail(account.email())\n .build())\n .build());\n\n var invoker = new FunctionIamMember(\"invoker\", FunctionIamMemberArgs.builder() \n .project(function.project())\n .location(function.location())\n .cloudFunction(function.name())\n .role(\"roles/cloudfunctions.invoker\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var cloudRunInvoker = new IamMember(\"cloudRunInvoker\", IamMemberArgs.builder() \n .project(function.project())\n .location(function.location())\n .service(function.name())\n .role(\"roles/run.invoker\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var invokeCloudFunction = new Job(\"invokeCloudFunction\", JobArgs.builder() \n .name(\"invoke-gcf-function\")\n .description(\"Schedule the HTTPS trigger for cloud function\")\n .schedule(\"0 0 * * *\")\n .project(function.project())\n .region(function.location())\n .httpTarget(JobHttpTargetArgs.builder()\n .uri(function.serviceConfig().applyValue(serviceConfig -\u003e serviceConfig.uri()))\n .httpMethod(\"POST\")\n .oidcToken(JobHttpTargetOidcTokenArgs.builder()\n .audience(function.serviceConfig().applyValue(serviceConfig -\u003e String.format(\"%s/\", serviceConfig.uri())))\n .serviceAccountEmail(account.email())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n minInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n serviceAccountEmail: ${account.email}\n invoker:\n type: gcp:cloudfunctionsv2:FunctionIamMember\n properties:\n project: ${function.project}\n location: ${function.location}\n cloudFunction: ${function.name}\n role: roles/cloudfunctions.invoker\n member: serviceAccount:${account.email}\n cloudRunInvoker:\n type: gcp:cloudrun:IamMember\n name: cloud_run_invoker\n properties:\n project: ${function.project}\n location: ${function.location}\n service: ${function.name}\n role: roles/run.invoker\n member: serviceAccount:${account.email}\n invokeCloudFunction:\n type: gcp:cloudscheduler:Job\n name: invoke_cloud_function\n properties:\n name: invoke-gcf-function\n description: Schedule the HTTPS trigger for cloud function\n schedule: 0 0 * * *\n project: ${function.project}\n region: ${function.location}\n httpTarget:\n uri: ${function.serviceConfig.uri}\n httpMethod: POST\n oidcToken:\n audience: ${function.serviceConfig.uri}/\n serviceAccountEmail: ${account.email}\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Basic Gcs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst source_bucket = new gcp.storage.Bucket(\"source-bucket\", {\n name: \"gcf-source-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: source_bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst trigger_bucket = new gcp.storage.Bucket(\"trigger-bucket\", {\n name: \"gcf-trigger-bucket\",\n location: \"us-central1\",\n uniformBucketLevelAccess: true,\n});\nconst gcsAccount = gcp.storage.getProjectServiceAccount({});\n// To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n// (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\nconst gcs_pubsub_publishing = new gcp.projects.IAMMember(\"gcs-pubsub-publishing\", {\n project: \"my-project-name\",\n role: \"roles/pubsub.publisher\",\n member: gcsAccount.then(gcsAccount =\u003e `serviceAccount:${gcsAccount.emailAddress}`),\n});\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account - used for both the cloud function and eventarc trigger in the test\",\n});\n// Permissions on the service account used by the function and Eventarc trigger\nconst invoking = new gcp.projects.IAMMember(\"invoking\", {\n project: \"my-project-name\",\n role: \"roles/run.invoker\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst event_receiving = new gcp.projects.IAMMember(\"event-receiving\", {\n project: \"my-project-name\",\n role: \"roles/eventarc.eventReceiver\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst artifactregistry_reader = new gcp.projects.IAMMember(\"artifactregistry-reader\", {\n project: \"my-project-name\",\n role: \"roles/artifactregistry.reader\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs12\",\n entryPoint: \"entryPoint\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: source_bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n eventType: \"google.cloud.storage.object.v1.finalized\",\n retryPolicy: \"RETRY_POLICY_RETRY\",\n serviceAccountEmail: account.email,\n eventFilters: [{\n attribute: \"bucket\",\n value: trigger_bucket.name,\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsource_bucket = gcp.storage.Bucket(\"source-bucket\",\n name=\"gcf-source-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=source_bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\ntrigger_bucket = gcp.storage.Bucket(\"trigger-bucket\",\n name=\"gcf-trigger-bucket\",\n location=\"us-central1\",\n uniform_bucket_level_access=True)\ngcs_account = gcp.storage.get_project_service_account()\n# To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n# (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\ngcs_pubsub_publishing = gcp.projects.IAMMember(\"gcs-pubsub-publishing\",\n project=\"my-project-name\",\n role=\"roles/pubsub.publisher\",\n member=f\"serviceAccount:{gcs_account.email_address}\")\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account - used for both the cloud function and eventarc trigger in the test\")\n# Permissions on the service account used by the function and Eventarc trigger\ninvoking = gcp.projects.IAMMember(\"invoking\",\n project=\"my-project-name\",\n role=\"roles/run.invoker\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nevent_receiving = gcp.projects.IAMMember(\"event-receiving\",\n project=\"my-project-name\",\n role=\"roles/eventarc.eventReceiver\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nartifactregistry_reader = gcp.projects.IAMMember(\"artifactregistry-reader\",\n project=\"my-project-name\",\n role=\"roles/artifactregistry.reader\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config=gcp.cloudfunctionsv2.FunctionBuildConfigArgs(\n runtime=\"nodejs12\",\n entry_point=\"entryPoint\",\n environment_variables={\n \"BUILD_CONFIG_TEST\": \"build_test\",\n },\n source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceArgs(\n storage_source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs(\n bucket=source_bucket.name,\n object=object.name,\n ),\n ),\n ),\n service_config=gcp.cloudfunctionsv2.FunctionServiceConfigArgs(\n max_instance_count=3,\n min_instance_count=1,\n available_memory=\"256M\",\n timeout_seconds=60,\n environment_variables={\n \"SERVICE_CONFIG_TEST\": \"config_test\",\n },\n ingress_settings=\"ALLOW_INTERNAL_ONLY\",\n all_traffic_on_latest_revision=True,\n service_account_email=account.email,\n ),\n event_trigger=gcp.cloudfunctionsv2.FunctionEventTriggerArgs(\n event_type=\"google.cloud.storage.object.v1.finalized\",\n retry_policy=\"RETRY_POLICY_RETRY\",\n service_account_email=account.email,\n event_filters=[gcp.cloudfunctionsv2.FunctionEventTriggerEventFilterArgs(\n attribute=\"bucket\",\n value=trigger_bucket.name,\n )],\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var source_bucket = new Gcp.Storage.Bucket(\"source-bucket\", new()\n {\n Name = \"gcf-source-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = source_bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var trigger_bucket = new Gcp.Storage.Bucket(\"trigger-bucket\", new()\n {\n Name = \"gcf-trigger-bucket\",\n Location = \"us-central1\",\n UniformBucketLevelAccess = true,\n });\n\n var gcsAccount = Gcp.Storage.GetProjectServiceAccount.Invoke();\n\n // To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n // (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\n var gcs_pubsub_publishing = new Gcp.Projects.IAMMember(\"gcs-pubsub-publishing\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/pubsub.publisher\",\n Member = $\"serviceAccount:{gcsAccount.Apply(getProjectServiceAccountResult =\u003e getProjectServiceAccountResult.EmailAddress)}\",\n });\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account - used for both the cloud function and eventarc trigger in the test\",\n });\n\n // Permissions on the service account used by the function and Eventarc trigger\n var invoking = new Gcp.Projects.IAMMember(\"invoking\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/run.invoker\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var event_receiving = new Gcp.Projects.IAMMember(\"event-receiving\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/eventarc.eventReceiver\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var artifactregistry_reader = new Gcp.Projects.IAMMember(\"artifactregistry-reader\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/artifactregistry.reader\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs12\",\n EntryPoint = \"entryPoint\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = source_bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n EventType = \"google.cloud.storage.object.v1.finalized\",\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n ServiceAccountEmail = account.Email,\n EventFilters = new[]\n {\n new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerEventFilterArgs\n {\n Attribute = \"bucket\",\n Value = trigger_bucket.Name,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := storage.NewBucket(ctx, \"source-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"gcf-source-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: source_bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewBucket(ctx, \"trigger-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"gcf-trigger-bucket\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgcsAccount, err := storage.GetProjectServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n\t\t// (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\n\t\t_, err = projects.NewIAMMember(ctx, \"gcs-pubsub-publishing\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/pubsub.publisher\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:%v\", gcsAccount.EmailAddress)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account - used for both the cloud function and eventarc trigger in the test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Permissions on the service account used by the function and Eventarc trigger\n\t\t_, err = projects.NewIAMMember(ctx, \"invoking\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/run.invoker\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"event-receiving\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/eventarc.eventReceiver\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"artifactregistry-reader\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/artifactregistry.reader\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs12\"),\n\t\t\t\tEntryPoint: pulumi.String(\"entryPoint\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: source_bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tEventType: pulumi.String(\"google.cloud.storage.object.v1.finalized\"),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t\tEventFilters: cloudfunctionsv2.FunctionEventTriggerEventFilterArray{\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionEventTriggerEventFilterArgs{\n\t\t\t\t\t\tAttribute: pulumi.String(\"bucket\"),\n\t\t\t\t\t\tValue: trigger_bucket.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.storage.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetProjectServiceAccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var source_bucket = new Bucket(\"source-bucket\", BucketArgs.builder() \n .name(\"gcf-source-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .name(\"function-source.zip\")\n .bucket(source_bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var trigger_bucket = new Bucket(\"trigger-bucket\", BucketArgs.builder() \n .name(\"gcf-trigger-bucket\")\n .location(\"us-central1\")\n .uniformBucketLevelAccess(true)\n .build());\n\n final var gcsAccount = StorageFunctions.getProjectServiceAccount();\n\n // To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n // (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\n var gcs_pubsub_publishing = new IAMMember(\"gcs-pubsub-publishing\", IAMMemberArgs.builder() \n .project(\"my-project-name\")\n .role(\"roles/pubsub.publisher\")\n .member(String.format(\"serviceAccount:%s\", gcsAccount.applyValue(getProjectServiceAccountResult -\u003e getProjectServiceAccountResult.emailAddress())))\n .build());\n\n var account = new Account(\"account\", AccountArgs.builder() \n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account - used for both the cloud function and eventarc trigger in the test\")\n .build());\n\n // Permissions on the service account used by the function and Eventarc trigger\n var invoking = new IAMMember(\"invoking\", IAMMemberArgs.builder() \n .project(\"my-project-name\")\n .role(\"roles/run.invoker\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var event_receiving = new IAMMember(\"event-receiving\", IAMMemberArgs.builder() \n .project(\"my-project-name\")\n .role(\"roles/eventarc.eventReceiver\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var artifactregistry_reader = new IAMMember(\"artifactregistry-reader\", IAMMemberArgs.builder() \n .project(\"my-project-name\")\n .role(\"roles/artifactregistry.reader\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder() \n .name(\"gcf-function\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs12\")\n .entryPoint(\"entryPoint\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(source_bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .environmentVariables(Map.of(\"SERVICE_CONFIG_TEST\", \"config_test\"))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .eventType(\"google.cloud.storage.object.v1.finalized\")\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .serviceAccountEmail(account.email())\n .eventFilters(FunctionEventTriggerEventFilterArgs.builder()\n .attribute(\"bucket\")\n .value(trigger_bucket.name())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n source-bucket:\n type: gcp:storage:Bucket\n properties:\n name: gcf-source-bucket\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${[\"source-bucket\"].name}\n source:\n fn::FileAsset: function-source.zip\n trigger-bucket:\n type: gcp:storage:Bucket\n properties:\n name: gcf-trigger-bucket\n location: us-central1\n uniformBucketLevelAccess: true\n # To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n # (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\n gcs-pubsub-publishing:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/pubsub.publisher\n member: serviceAccount:${gcsAccount.emailAddress}\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account - used for both the cloud function and eventarc trigger in the test\n # Permissions on the service account used by the function and Eventarc trigger\n invoking:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/run.invoker\n member: serviceAccount:${account.email}\n event-receiving:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/eventarc.eventReceiver\n member: serviceAccount:${account.email}\n artifactregistry-reader:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/artifactregistry.reader\n member: serviceAccount:${account.email}\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs12\n entryPoint: entryPoint\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${[\"source-bucket\"].name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n eventType: google.cloud.storage.object.v1.finalized\n retryPolicy: RETRY_POLICY_RETRY\n serviceAccountEmail: ${account.email}\n eventFilters:\n - attribute: bucket\n value: ${[\"trigger-bucket\"].name}\nvariables:\n gcsAccount:\n fn::invoke:\n Function: gcp:storage:getProjectServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Basic Auditlogs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// This example follows the examples shown in this Google Cloud Community blog post\n// https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n// and the docs:\n// https://cloud.google.com/eventarc/docs/path-patterns\nconst source_bucket = new gcp.storage.Bucket(\"source-bucket\", {\n name: \"gcf-source-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: source_bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account - used for both the cloud function and eventarc trigger in the test\",\n});\n// Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n// Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n// google_cloudfunctions2_function below (Audit Log events have path pattern support)\nconst audit_log_bucket = new gcp.storage.Bucket(\"audit-log-bucket\", {\n name: \"gcf-auditlog-bucket\",\n location: \"us-central1\",\n uniformBucketLevelAccess: true,\n});\n// Permissions on the service account used by the function and Eventarc trigger\nconst invoking = new gcp.projects.IAMMember(\"invoking\", {\n project: \"my-project-name\",\n role: \"roles/run.invoker\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst event_receiving = new gcp.projects.IAMMember(\"event-receiving\", {\n project: \"my-project-name\",\n role: \"roles/eventarc.eventReceiver\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst artifactregistry_reader = new gcp.projects.IAMMember(\"artifactregistry-reader\", {\n project: \"my-project-name\",\n role: \"roles/artifactregistry.reader\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs12\",\n entryPoint: \"entryPoint\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: source_bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n triggerRegion: \"us-central1\",\n eventType: \"google.cloud.audit.log.v1.written\",\n retryPolicy: \"RETRY_POLICY_RETRY\",\n serviceAccountEmail: account.email,\n eventFilters: [\n {\n attribute: \"serviceName\",\n value: \"storage.googleapis.com\",\n },\n {\n attribute: \"methodName\",\n value: \"storage.objects.create\",\n },\n {\n attribute: \"resourceName\",\n value: pulumi.interpolate`/projects/_/buckets/${audit_log_bucket.name}/objects/*.txt`,\n operator: \"match-path-pattern\",\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# This example follows the examples shown in this Google Cloud Community blog post\n# https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n# and the docs:\n# https://cloud.google.com/eventarc/docs/path-patterns\nsource_bucket = gcp.storage.Bucket(\"source-bucket\",\n name=\"gcf-source-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=source_bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account - used for both the cloud function and eventarc trigger in the test\")\n# Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n# Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n# google_cloudfunctions2_function below (Audit Log events have path pattern support)\naudit_log_bucket = gcp.storage.Bucket(\"audit-log-bucket\",\n name=\"gcf-auditlog-bucket\",\n location=\"us-central1\",\n uniform_bucket_level_access=True)\n# Permissions on the service account used by the function and Eventarc trigger\ninvoking = gcp.projects.IAMMember(\"invoking\",\n project=\"my-project-name\",\n role=\"roles/run.invoker\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nevent_receiving = gcp.projects.IAMMember(\"event-receiving\",\n project=\"my-project-name\",\n role=\"roles/eventarc.eventReceiver\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nartifactregistry_reader = gcp.projects.IAMMember(\"artifactregistry-reader\",\n project=\"my-project-name\",\n role=\"roles/artifactregistry.reader\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config=gcp.cloudfunctionsv2.FunctionBuildConfigArgs(\n runtime=\"nodejs12\",\n entry_point=\"entryPoint\",\n environment_variables={\n \"BUILD_CONFIG_TEST\": \"build_test\",\n },\n source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceArgs(\n storage_source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs(\n bucket=source_bucket.name,\n object=object.name,\n ),\n ),\n ),\n service_config=gcp.cloudfunctionsv2.FunctionServiceConfigArgs(\n max_instance_count=3,\n min_instance_count=1,\n available_memory=\"256M\",\n timeout_seconds=60,\n environment_variables={\n \"SERVICE_CONFIG_TEST\": \"config_test\",\n },\n ingress_settings=\"ALLOW_INTERNAL_ONLY\",\n all_traffic_on_latest_revision=True,\n service_account_email=account.email,\n ),\n event_trigger=gcp.cloudfunctionsv2.FunctionEventTriggerArgs(\n trigger_region=\"us-central1\",\n event_type=\"google.cloud.audit.log.v1.written\",\n retry_policy=\"RETRY_POLICY_RETRY\",\n service_account_email=account.email,\n event_filters=[\n gcp.cloudfunctionsv2.FunctionEventTriggerEventFilterArgs(\n attribute=\"serviceName\",\n value=\"storage.googleapis.com\",\n ),\n gcp.cloudfunctionsv2.FunctionEventTriggerEventFilterArgs(\n attribute=\"methodName\",\n value=\"storage.objects.create\",\n ),\n gcp.cloudfunctionsv2.FunctionEventTriggerEventFilterArgs(\n attribute=\"resourceName\",\n value=audit_log_bucket.name.apply(lambda name: f\"/projects/_/buckets/{name}/objects/*.txt\"),\n operator=\"match-path-pattern\",\n ),\n ],\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // This example follows the examples shown in this Google Cloud Community blog post\n // https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n // and the docs:\n // https://cloud.google.com/eventarc/docs/path-patterns\n var source_bucket = new Gcp.Storage.Bucket(\"source-bucket\", new()\n {\n Name = \"gcf-source-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = source_bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account - used for both the cloud function and eventarc trigger in the test\",\n });\n\n // Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n // Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n // google_cloudfunctions2_function below (Audit Log events have path pattern support)\n var audit_log_bucket = new Gcp.Storage.Bucket(\"audit-log-bucket\", new()\n {\n Name = \"gcf-auditlog-bucket\",\n Location = \"us-central1\",\n UniformBucketLevelAccess = true,\n });\n\n // Permissions on the service account used by the function and Eventarc trigger\n var invoking = new Gcp.Projects.IAMMember(\"invoking\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/run.invoker\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var event_receiving = new Gcp.Projects.IAMMember(\"event-receiving\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/eventarc.eventReceiver\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var artifactregistry_reader = new Gcp.Projects.IAMMember(\"artifactregistry-reader\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/artifactregistry.reader\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs12\",\n EntryPoint = \"entryPoint\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = source_bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n TriggerRegion = \"us-central1\",\n EventType = \"google.cloud.audit.log.v1.written\",\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n ServiceAccountEmail = account.Email,\n EventFilters = new[]\n {\n new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerEventFilterArgs\n {\n Attribute = \"serviceName\",\n Value = \"storage.googleapis.com\",\n },\n new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerEventFilterArgs\n {\n Attribute = \"methodName\",\n Value = \"storage.objects.create\",\n },\n new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerEventFilterArgs\n {\n Attribute = \"resourceName\",\n Value = audit_log_bucket.Name.Apply(name =\u003e $\"/projects/_/buckets/{name}/objects/*.txt\"),\n Operator = \"match-path-pattern\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// This example follows the examples shown in this Google Cloud Community blog post\n\t\t// https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n\t\t// and the docs:\n\t\t// https://cloud.google.com/eventarc/docs/path-patterns\n\t\t_, err := storage.NewBucket(ctx, \"source-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"gcf-source-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: source_bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account - used for both the cloud function and eventarc trigger in the test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n\t\t// Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n\t\t// google_cloudfunctions2_function below (Audit Log events have path pattern support)\n\t\t_, err = storage.NewBucket(ctx, \"audit-log-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"gcf-auditlog-bucket\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Permissions on the service account used by the function and Eventarc trigger\n\t\t_, err = projects.NewIAMMember(ctx, \"invoking\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/run.invoker\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"event-receiving\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/eventarc.eventReceiver\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"artifactregistry-reader\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/artifactregistry.reader\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs12\"),\n\t\t\t\tEntryPoint: pulumi.String(\"entryPoint\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: source_bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tTriggerRegion: pulumi.String(\"us-central1\"),\n\t\t\t\tEventType: pulumi.String(\"google.cloud.audit.log.v1.written\"),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t\tEventFilters: cloudfunctionsv2.FunctionEventTriggerEventFilterArray{\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionEventTriggerEventFilterArgs{\n\t\t\t\t\t\tAttribute: pulumi.String(\"serviceName\"),\n\t\t\t\t\t\tValue: pulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionEventTriggerEventFilterArgs{\n\t\t\t\t\t\tAttribute: pulumi.String(\"methodName\"),\n\t\t\t\t\t\tValue: pulumi.String(\"storage.objects.create\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionEventTriggerEventFilterArgs{\n\t\t\t\t\t\tAttribute: pulumi.String(\"resourceName\"),\n\t\t\t\t\t\tValue: audit_log_bucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"/projects/_/buckets/%v/objects/*.txt\", name), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\tOperator: pulumi.String(\"match-path-pattern\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // This example follows the examples shown in this Google Cloud Community blog post\n // https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n // and the docs:\n // https://cloud.google.com/eventarc/docs/path-patterns\n var source_bucket = new Bucket(\"source-bucket\", BucketArgs.builder() \n .name(\"gcf-source-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .name(\"function-source.zip\")\n .bucket(source_bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var account = new Account(\"account\", AccountArgs.builder() \n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account - used for both the cloud function and eventarc trigger in the test\")\n .build());\n\n // Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n // Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n // google_cloudfunctions2_function below (Audit Log events have path pattern support)\n var audit_log_bucket = new Bucket(\"audit-log-bucket\", BucketArgs.builder() \n .name(\"gcf-auditlog-bucket\")\n .location(\"us-central1\")\n .uniformBucketLevelAccess(true)\n .build());\n\n // Permissions on the service account used by the function and Eventarc trigger\n var invoking = new IAMMember(\"invoking\", IAMMemberArgs.builder() \n .project(\"my-project-name\")\n .role(\"roles/run.invoker\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var event_receiving = new IAMMember(\"event-receiving\", IAMMemberArgs.builder() \n .project(\"my-project-name\")\n .role(\"roles/eventarc.eventReceiver\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var artifactregistry_reader = new IAMMember(\"artifactregistry-reader\", IAMMemberArgs.builder() \n .project(\"my-project-name\")\n .role(\"roles/artifactregistry.reader\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder() \n .name(\"gcf-function\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs12\")\n .entryPoint(\"entryPoint\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(source_bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .environmentVariables(Map.of(\"SERVICE_CONFIG_TEST\", \"config_test\"))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .triggerRegion(\"us-central1\")\n .eventType(\"google.cloud.audit.log.v1.written\")\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .serviceAccountEmail(account.email())\n .eventFilters( \n FunctionEventTriggerEventFilterArgs.builder()\n .attribute(\"serviceName\")\n .value(\"storage.googleapis.com\")\n .build(),\n FunctionEventTriggerEventFilterArgs.builder()\n .attribute(\"methodName\")\n .value(\"storage.objects.create\")\n .build(),\n FunctionEventTriggerEventFilterArgs.builder()\n .attribute(\"resourceName\")\n .value(audit_log_bucket.name().applyValue(name -\u003e String.format(\"/projects/_/buckets/%s/objects/*.txt\", name)))\n .operator(\"match-path-pattern\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # This example follows the examples shown in this Google Cloud Community blog post\n # https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n # and the docs:\n # https://cloud.google.com/eventarc/docs/path-patterns\n source-bucket:\n type: gcp:storage:Bucket\n properties:\n name: gcf-source-bucket\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${[\"source-bucket\"].name}\n source:\n fn::FileAsset: function-source.zip\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account - used for both the cloud function and eventarc trigger in the test\n # Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n # Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n # google_cloudfunctions2_function below (Audit Log events have path pattern support)\n audit-log-bucket:\n type: gcp:storage:Bucket\n properties:\n name: gcf-auditlog-bucket\n location: us-central1\n uniformBucketLevelAccess: true\n # Permissions on the service account used by the function and Eventarc trigger\n invoking:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/run.invoker\n member: serviceAccount:${account.email}\n event-receiving:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/eventarc.eventReceiver\n member: serviceAccount:${account.email}\n artifactregistry-reader:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/artifactregistry.reader\n member: serviceAccount:${account.email}\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs12\n entryPoint: entryPoint\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${[\"source-bucket\"].name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n triggerRegion: us-central1\n eventType: google.cloud.audit.log.v1.written\n retryPolicy: RETRY_POLICY_RETRY\n serviceAccountEmail: ${account.email}\n eventFilters:\n - attribute: serviceName\n value: storage.googleapis.com\n - attribute: methodName\n value: storage.objects.create\n - attribute: resourceName\n value: /projects/_/buckets/${[\"audit-log-bucket\"].name}/objects/*.txt\n operator: match-path-pattern\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Secret Env\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-secret\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n secretEnvironmentVariables: [{\n key: \"TEST\",\n projectId: project,\n secret: secret.secretId,\n version: \"latest\",\n }],\n },\n});\nconst secretSecretVersion = new gcp.secretmanager.SecretVersion(\"secret\", {\n secret: secret.name,\n secretData: \"secret\",\n enabled: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret\",\n replication=gcp.secretmanager.SecretReplicationArgs(\n user_managed=gcp.secretmanager.SecretReplicationUserManagedArgs(\n replicas=[gcp.secretmanager.SecretReplicationUserManagedReplicaArgs(\n location=\"us-central1\",\n )],\n ),\n ))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-secret\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config=gcp.cloudfunctionsv2.FunctionBuildConfigArgs(\n runtime=\"nodejs16\",\n entry_point=\"helloHttp\",\n source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceArgs(\n storage_source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs(\n bucket=bucket.name,\n object=object.name,\n ),\n ),\n ),\n service_config=gcp.cloudfunctionsv2.FunctionServiceConfigArgs(\n max_instance_count=1,\n available_memory=\"256M\",\n timeout_seconds=60,\n secret_environment_variables=[gcp.cloudfunctionsv2.FunctionServiceConfigSecretEnvironmentVariableArgs(\n key=\"TEST\",\n project_id=project,\n secret=secret.secret_id,\n version=\"latest\",\n )],\n ))\nsecret_secret_version = gcp.secretmanager.SecretVersion(\"secret\",\n secret=secret.name,\n secret_data=\"secret\",\n enabled=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n UserManaged = new Gcp.SecretManager.Inputs.SecretReplicationUserManagedArgs\n {\n Replicas = new[]\n {\n new Gcp.SecretManager.Inputs.SecretReplicationUserManagedReplicaArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-secret\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n SecretEnvironmentVariables = new[]\n {\n new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigSecretEnvironmentVariableArgs\n {\n Key = \"TEST\",\n ProjectId = project,\n Secret = secret.SecretId,\n Version = \"latest\",\n },\n },\n },\n });\n\n var secretSecretVersion = new Gcp.SecretManager.SecretVersion(\"secret\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret\",\n Enabled = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tUserManaged: \u0026secretmanager.SecretReplicationUserManagedArgs{\n\t\t\t\t\tReplicas: secretmanager.SecretReplicationUserManagedReplicaArray{\n\t\t\t\t\t\t\u0026secretmanager.SecretReplicationUserManagedReplicaArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-secret\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tSecretEnvironmentVariables: cloudfunctionsv2.FunctionServiceConfigSecretEnvironmentVariableArray{\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionServiceConfigSecretEnvironmentVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"TEST\"),\n\t\t\t\t\t\tProjectId: pulumi.String(project),\n\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t\tVersion: pulumi.String(\"latest\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret\"),\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationUserManagedArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder() \n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var secret = new Secret(\"secret\", SecretArgs.builder() \n .secretId(\"secret\")\n .replication(SecretReplicationArgs.builder()\n .userManaged(SecretReplicationUserManagedArgs.builder()\n .replicas(SecretReplicationUserManagedReplicaArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder() \n .name(\"function-secret\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .secretEnvironmentVariables(FunctionServiceConfigSecretEnvironmentVariableArgs.builder()\n .key(\"TEST\")\n .projectId(project)\n .secret(secret.secretId())\n .version(\"latest\")\n .build())\n .build())\n .build());\n\n var secretSecretVersion = new SecretVersion(\"secretSecretVersion\", SecretVersionArgs.builder() \n .secret(secret.name())\n .secretData(\"secret\")\n .enabled(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-secret\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n secretEnvironmentVariables:\n - key: TEST\n projectId: ${project}\n secret: ${secret.secretId}\n version: latest\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n replication:\n userManaged:\n replicas:\n - location: us-central1\n secretSecretVersion:\n type: gcp:secretmanager:SecretVersion\n name: secret\n properties:\n secret: ${secret.name}\n secretData: secret\n enabled: true\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Secret Volume\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-secret\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n secretVolumes: [{\n mountPath: \"/etc/secrets\",\n projectId: project,\n secret: secret.secretId,\n }],\n },\n});\nconst secretSecretVersion = new gcp.secretmanager.SecretVersion(\"secret\", {\n secret: secret.name,\n secretData: \"secret\",\n enabled: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret\",\n replication=gcp.secretmanager.SecretReplicationArgs(\n user_managed=gcp.secretmanager.SecretReplicationUserManagedArgs(\n replicas=[gcp.secretmanager.SecretReplicationUserManagedReplicaArgs(\n location=\"us-central1\",\n )],\n ),\n ))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-secret\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config=gcp.cloudfunctionsv2.FunctionBuildConfigArgs(\n runtime=\"nodejs16\",\n entry_point=\"helloHttp\",\n source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceArgs(\n storage_source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs(\n bucket=bucket.name,\n object=object.name,\n ),\n ),\n ),\n service_config=gcp.cloudfunctionsv2.FunctionServiceConfigArgs(\n max_instance_count=1,\n available_memory=\"256M\",\n timeout_seconds=60,\n secret_volumes=[gcp.cloudfunctionsv2.FunctionServiceConfigSecretVolumeArgs(\n mount_path=\"/etc/secrets\",\n project_id=project,\n secret=secret.secret_id,\n )],\n ))\nsecret_secret_version = gcp.secretmanager.SecretVersion(\"secret\",\n secret=secret.name,\n secret_data=\"secret\",\n enabled=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n UserManaged = new Gcp.SecretManager.Inputs.SecretReplicationUserManagedArgs\n {\n Replicas = new[]\n {\n new Gcp.SecretManager.Inputs.SecretReplicationUserManagedReplicaArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-secret\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n SecretVolumes = new[]\n {\n new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigSecretVolumeArgs\n {\n MountPath = \"/etc/secrets\",\n ProjectId = project,\n Secret = secret.SecretId,\n },\n },\n },\n });\n\n var secretSecretVersion = new Gcp.SecretManager.SecretVersion(\"secret\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret\",\n Enabled = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tUserManaged: \u0026secretmanager.SecretReplicationUserManagedArgs{\n\t\t\t\t\tReplicas: secretmanager.SecretReplicationUserManagedReplicaArray{\n\t\t\t\t\t\t\u0026secretmanager.SecretReplicationUserManagedReplicaArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-secret\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tSecretVolumes: cloudfunctionsv2.FunctionServiceConfigSecretVolumeArray{\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionServiceConfigSecretVolumeArgs{\n\t\t\t\t\t\tMountPath: pulumi.String(\"/etc/secrets\"),\n\t\t\t\t\t\tProjectId: pulumi.String(project),\n\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret\"),\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationUserManagedArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder() \n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var secret = new Secret(\"secret\", SecretArgs.builder() \n .secretId(\"secret\")\n .replication(SecretReplicationArgs.builder()\n .userManaged(SecretReplicationUserManagedArgs.builder()\n .replicas(SecretReplicationUserManagedReplicaArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder() \n .name(\"function-secret\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .secretVolumes(FunctionServiceConfigSecretVolumeArgs.builder()\n .mountPath(\"/etc/secrets\")\n .projectId(project)\n .secret(secret.secretId())\n .build())\n .build())\n .build());\n\n var secretSecretVersion = new SecretVersion(\"secretSecretVersion\", SecretVersionArgs.builder() \n .secret(secret.name())\n .secretData(\"secret\")\n .enabled(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-secret\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n secretVolumes:\n - mountPath: /etc/secrets\n projectId: ${project}\n secret: ${secret.secretId}\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n replication:\n userManaged:\n replicas:\n - location: us-central1\n secretSecretVersion:\n type: gcp:secretmanager:SecretVersion\n name: secret\n properties:\n secret: ${secret.name}\n secretData: secret\n enabled: true\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Private Workerpool\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst pool = new gcp.cloudbuild.WorkerPool(\"pool\", {\n name: \"workerpool\",\n location: \"us-central1\",\n workerConfig: {\n diskSizeGb: 100,\n machineType: \"e2-standard-8\",\n noExternalIp: false,\n },\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-workerpool\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n workerPool: pool.id,\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\npool = gcp.cloudbuild.WorkerPool(\"pool\",\n name=\"workerpool\",\n location=\"us-central1\",\n worker_config=gcp.cloudbuild.WorkerPoolWorkerConfigArgs(\n disk_size_gb=100,\n machine_type=\"e2-standard-8\",\n no_external_ip=False,\n ))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-workerpool\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config=gcp.cloudfunctionsv2.FunctionBuildConfigArgs(\n runtime=\"nodejs16\",\n entry_point=\"helloHttp\",\n source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceArgs(\n storage_source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs(\n bucket=bucket.name,\n object=object.name,\n ),\n ),\n worker_pool=pool.id,\n ),\n service_config=gcp.cloudfunctionsv2.FunctionServiceConfigArgs(\n max_instance_count=1,\n available_memory=\"256M\",\n timeout_seconds=60,\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var pool = new Gcp.CloudBuild.WorkerPool(\"pool\", new()\n {\n Name = \"workerpool\",\n Location = \"us-central1\",\n WorkerConfig = new Gcp.CloudBuild.Inputs.WorkerPoolWorkerConfigArgs\n {\n DiskSizeGb = 100,\n MachineType = \"e2-standard-8\",\n NoExternalIp = false,\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-workerpool\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n WorkerPool = pool.Id,\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpool, err := cloudbuild.NewWorkerPool(ctx, \"pool\", \u0026cloudbuild.WorkerPoolArgs{\n\t\t\tName: pulumi.String(\"workerpool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tWorkerConfig: \u0026cloudbuild.WorkerPoolWorkerConfigArgs{\n\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\tMachineType: pulumi.String(\"e2-standard-8\"),\n\t\t\t\tNoExternalIp: pulumi.Bool(false),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-workerpool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tWorkerPool: pool.ID(),\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudbuild.WorkerPool;\nimport com.pulumi.gcp.cloudbuild.WorkerPoolArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.WorkerPoolWorkerConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder() \n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var pool = new WorkerPool(\"pool\", WorkerPoolArgs.builder() \n .name(\"workerpool\")\n .location(\"us-central1\")\n .workerConfig(WorkerPoolWorkerConfigArgs.builder()\n .diskSizeGb(100)\n .machineType(\"e2-standard-8\")\n .noExternalIp(false)\n .build())\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder() \n .name(\"function-workerpool\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .workerPool(pool.id())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n pool:\n type: gcp:cloudbuild:WorkerPool\n properties:\n name: workerpool\n location: us-central1\n workerConfig:\n diskSizeGb: 100\n machineType: e2-standard-8\n noExternalIp: false\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-workerpool\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n workerPool: ${pool.id}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Cmek Docs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst projectGetProject = gcp.organizations.getProject({});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst eaSa = new gcp.projects.ServiceIdentity(\"ea_sa\", {\n project: projectGetProject.then(projectGetProject =\u003e projectGetProject.projectId),\n service: \"eventarc.googleapis.com\",\n});\nconst unencoded_ar_repo = new gcp.artifactregistry.Repository(\"unencoded-ar-repo\", {\n repositoryId: \"ar-repo\",\n location: \"us-central1\",\n format: \"DOCKER\",\n});\nconst encoded_ar_repo = new gcp.artifactregistry.Repository(\"encoded-ar-repo\", {\n location: \"us-central1\",\n repositoryId: \"cmek-repo\",\n format: \"DOCKER\",\n kmsKeyName: \"cmek-key\",\n});\nconst binding = new gcp.artifactregistry.RepositoryIamBinding(\"binding\", {\n location: encoded_ar_repo.location,\n repository: encoded_ar_repo.name,\n role: \"roles/artifactregistry.admin\",\n members: [projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@gcf-admin-robot.iam.gserviceaccount.com`)],\n});\nconst gcfCmekKeyuser = new gcp.kms.CryptoKeyIAMBinding(\"gcf_cmek_keyuser\", {\n cryptoKeyId: \"cmek-key\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members: [\n projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@gcf-admin-robot.iam.gserviceaccount.com`),\n projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@gs-project-accounts.iam.gserviceaccount.com`),\n projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@serverless-robot-prod.iam.gserviceaccount.com`),\n pulumi.interpolate`serviceAccount:${eaSa.email}`,\n ],\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-cmek\",\n location: \"us-central1\",\n description: \"CMEK function\",\n kmsKeyName: \"cmek-key\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n dockerRepository: encoded_ar_repo.id,\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nproject_get_project = gcp.organizations.get_project()\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nea_sa = gcp.projects.ServiceIdentity(\"ea_sa\",\n project=project_get_project.project_id,\n service=\"eventarc.googleapis.com\")\nunencoded_ar_repo = gcp.artifactregistry.Repository(\"unencoded-ar-repo\",\n repository_id=\"ar-repo\",\n location=\"us-central1\",\n format=\"DOCKER\")\nencoded_ar_repo = gcp.artifactregistry.Repository(\"encoded-ar-repo\",\n location=\"us-central1\",\n repository_id=\"cmek-repo\",\n format=\"DOCKER\",\n kms_key_name=\"cmek-key\")\nbinding = gcp.artifactregistry.RepositoryIamBinding(\"binding\",\n location=encoded_ar_repo.location,\n repository=encoded_ar_repo.name,\n role=\"roles/artifactregistry.admin\",\n members=[f\"serviceAccount:service-{project_get_project.number}@gcf-admin-robot.iam.gserviceaccount.com\"])\ngcf_cmek_keyuser = gcp.kms.CryptoKeyIAMBinding(\"gcf_cmek_keyuser\",\n crypto_key_id=\"cmek-key\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members=[\n f\"serviceAccount:service-{project_get_project.number}@gcf-admin-robot.iam.gserviceaccount.com\",\n f\"serviceAccount:service-{project_get_project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n f\"serviceAccount:service-{project_get_project.number}@gs-project-accounts.iam.gserviceaccount.com\",\n f\"serviceAccount:service-{project_get_project.number}@serverless-robot-prod.iam.gserviceaccount.com\",\n ea_sa.email.apply(lambda email: f\"serviceAccount:{email}\"),\n ])\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-cmek\",\n location=\"us-central1\",\n description=\"CMEK function\",\n kms_key_name=\"cmek-key\",\n build_config=gcp.cloudfunctionsv2.FunctionBuildConfigArgs(\n runtime=\"nodejs16\",\n entry_point=\"helloHttp\",\n docker_repository=encoded_ar_repo.id,\n source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceArgs(\n storage_source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs(\n bucket=bucket.name,\n object=object.name,\n ),\n ),\n ),\n service_config=gcp.cloudfunctionsv2.FunctionServiceConfigArgs(\n max_instance_count=1,\n available_memory=\"256M\",\n timeout_seconds=60,\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var projectGetProject = Gcp.Organizations.GetProject.Invoke();\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var eaSa = new Gcp.Projects.ServiceIdentity(\"ea_sa\", new()\n {\n Project = projectGetProject.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Service = \"eventarc.googleapis.com\",\n });\n\n var unencoded_ar_repo = new Gcp.ArtifactRegistry.Repository(\"unencoded-ar-repo\", new()\n {\n RepositoryId = \"ar-repo\",\n Location = \"us-central1\",\n Format = \"DOCKER\",\n });\n\n var encoded_ar_repo = new Gcp.ArtifactRegistry.Repository(\"encoded-ar-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"cmek-repo\",\n Format = \"DOCKER\",\n KmsKeyName = \"cmek-key\",\n });\n\n var binding = new Gcp.ArtifactRegistry.RepositoryIamBinding(\"binding\", new()\n {\n Location = encoded_ar_repo.Location,\n Repository = encoded_ar_repo.Name,\n Role = \"roles/artifactregistry.admin\",\n Members = new[]\n {\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcf-admin-robot.iam.gserviceaccount.com\",\n },\n });\n\n var gcfCmekKeyuser = new Gcp.Kms.CryptoKeyIAMBinding(\"gcf_cmek_keyuser\", new()\n {\n CryptoKeyId = \"cmek-key\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Members = new[]\n {\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcf-admin-robot.iam.gserviceaccount.com\",\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gs-project-accounts.iam.gserviceaccount.com\",\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@serverless-robot-prod.iam.gserviceaccount.com\",\n eaSa.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-cmek\",\n Location = \"us-central1\",\n Description = \"CMEK function\",\n KmsKeyName = \"cmek-key\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n DockerRepository = encoded_ar_repo.Id,\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\tprojectGetProject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\teaSa, err := projects.NewServiceIdentity(ctx, \"ea_sa\", \u0026projects.ServiceIdentityArgs{\n\t\t\tProject: pulumi.String(projectGetProject.ProjectId),\n\t\t\tService: pulumi.String(\"eventarc.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"unencoded-ar-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tRepositoryId: pulumi.String(\"ar-repo\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"encoded-ar-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"cmek-repo\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tKmsKeyName: pulumi.String(\"cmek-key\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepositoryIamBinding(ctx, \"binding\", \u0026artifactregistry.RepositoryIamBindingArgs{\n\t\t\tLocation: encoded_ar_repo.Location,\n\t\t\tRepository: encoded_ar_repo.Name,\n\t\t\tRole: pulumi.String(\"roles/artifactregistry.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcf-admin-robot.iam.gserviceaccount.com\", projectGetProject.Number)),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kms.NewCryptoKeyIAMBinding(ctx, \"gcf_cmek_keyuser\", \u0026kms.CryptoKeyIAMBindingArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"cmek-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcf-admin-robot.iam.gserviceaccount.com\", projectGetProject.Number)),\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", projectGetProject.Number)),\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gs-project-accounts.iam.gserviceaccount.com\", projectGetProject.Number)),\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@serverless-robot-prod.iam.gserviceaccount.com\", projectGetProject.Number)),\n\t\t\t\teaSa.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-cmek\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"CMEK function\"),\n\t\t\tKmsKeyName: pulumi.String(\"cmek-key\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tDockerRepository: encoded_ar_repo.ID(),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.RepositoryIamBinding;\nimport com.pulumi.gcp.artifactregistry.RepositoryIamBindingArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBinding;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBindingArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n final var projectGetProject = OrganizationsFunctions.getProject();\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder() \n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var eaSa = new ServiceIdentity(\"eaSa\", ServiceIdentityArgs.builder() \n .project(projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .service(\"eventarc.googleapis.com\")\n .build());\n\n var unencoded_ar_repo = new Repository(\"unencoded-ar-repo\", RepositoryArgs.builder() \n .repositoryId(\"ar-repo\")\n .location(\"us-central1\")\n .format(\"DOCKER\")\n .build());\n\n var encoded_ar_repo = new Repository(\"encoded-ar-repo\", RepositoryArgs.builder() \n .location(\"us-central1\")\n .repositoryId(\"cmek-repo\")\n .format(\"DOCKER\")\n .kmsKeyName(\"cmek-key\")\n .build());\n\n var binding = new RepositoryIamBinding(\"binding\", RepositoryIamBindingArgs.builder() \n .location(encoded_ar_repo.location())\n .repository(encoded_ar_repo.name())\n .role(\"roles/artifactregistry.admin\")\n .members(String.format(\"serviceAccount:service-%s@gcf-admin-robot.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var gcfCmekKeyuser = new CryptoKeyIAMBinding(\"gcfCmekKeyuser\", CryptoKeyIAMBindingArgs.builder() \n .cryptoKeyId(\"cmek-key\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .members( \n String.format(\"serviceAccount:service-%s@gcf-admin-robot.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())),\n String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())),\n String.format(\"serviceAccount:service-%s@gs-project-accounts.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())),\n String.format(\"serviceAccount:service-%s@serverless-robot-prod.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())),\n eaSa.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder() \n .name(\"function-cmek\")\n .location(\"us-central1\")\n .description(\"CMEK function\")\n .kmsKeyName(\"cmek-key\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .dockerRepository(encoded_ar_repo.id())\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n eaSa:\n type: gcp:projects:ServiceIdentity\n name: ea_sa\n properties:\n project: ${projectGetProject.projectId}\n service: eventarc.googleapis.com\n unencoded-ar-repo:\n type: gcp:artifactregistry:Repository\n properties:\n repositoryId: ar-repo\n location: us-central1\n format: DOCKER\n binding:\n type: gcp:artifactregistry:RepositoryIamBinding\n properties:\n location: ${[\"encoded-ar-repo\"].location}\n repository: ${[\"encoded-ar-repo\"].name}\n role: roles/artifactregistry.admin\n members:\n - serviceAccount:service-${projectGetProject.number}@gcf-admin-robot.iam.gserviceaccount.com\n gcfCmekKeyuser:\n type: gcp:kms:CryptoKeyIAMBinding\n name: gcf_cmek_keyuser\n properties:\n cryptoKeyId: cmek-key\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n members:\n - serviceAccount:service-${projectGetProject.number}@gcf-admin-robot.iam.gserviceaccount.com\n - serviceAccount:service-${projectGetProject.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n - serviceAccount:service-${projectGetProject.number}@gs-project-accounts.iam.gserviceaccount.com\n - serviceAccount:service-${projectGetProject.number}@serverless-robot-prod.iam.gserviceaccount.com\n - serviceAccount:${eaSa.email}\n encoded-ar-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: cmek-repo\n format: DOCKER\n kmsKeyName: cmek-key\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-cmek\n location: us-central1\n description: CMEK function\n kmsKeyName: cmek-key\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n dockerRepository: ${[\"encoded-ar-repo\"].id}\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\nvariables:\n project: my-project-name\n projectGetProject:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nfunction can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/functions/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, function can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudfunctionsv2/function:Function default projects/{{project}}/locations/{{location}}/functions/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudfunctionsv2/function:Function default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudfunctionsv2/function:Function default {{location}}/{{name}}\n```\n\n", + "description": "A Cloud Function that contains user computation executed in response to an event.\n\n\nTo get more information about function, see:\n\n* [API documentation](https://cloud.google.com/functions/docs/reference/rest/v2beta/projects.locations.functions)\n\n## Example Usage\n\n### Cloudfunctions2 Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-v2\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n },\n});\nexport const functionUri = _function.serviceConfig.apply(serviceConfig =\u003e serviceConfig?.uri);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-v2\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config=gcp.cloudfunctionsv2.FunctionBuildConfigArgs(\n runtime=\"nodejs16\",\n entry_point=\"helloHttp\",\n source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceArgs(\n storage_source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs(\n bucket=bucket.name,\n object=object.name,\n ),\n ),\n ),\n service_config=gcp.cloudfunctionsv2.FunctionServiceConfigArgs(\n max_instance_count=1,\n available_memory=\"256M\",\n timeout_seconds=60,\n ))\npulumi.export(\"functionUri\", function.service_config.uri)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-v2\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"functionUri\"] = function.ServiceConfig.Apply(serviceConfig =\u003e serviceConfig?.Uri),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfunction, err := cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-v2\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"functionUri\", function.ServiceConfig.ApplyT(func(serviceConfig cloudfunctionsv2.FunctionServiceConfig) (*string, error) {\n\t\t\treturn \u0026serviceConfig.Uri, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder() \n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder() \n .name(\"function-v2\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .build())\n .build());\n\n ctx.export(\"functionUri\", function.serviceConfig().applyValue(serviceConfig -\u003e serviceConfig.uri()));\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-v2\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\nvariables:\n project: my-project-name\noutputs:\n functionUri: ${function.serviceConfig.uri}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"functions2-topic\"});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloPubSub\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"4Gi\",\n timeoutSeconds: 60,\n maxInstanceRequestConcurrency: 80,\n availableCpu: \"4\",\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n triggerRegion: \"us-central1\",\n eventType: \"google.cloud.pubsub.topic.v1.messagePublished\",\n pubsubTopic: topic.id,\n retryPolicy: \"RETRY_POLICY_RETRY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\ntopic = gcp.pubsub.Topic(\"topic\", name=\"functions2-topic\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config=gcp.cloudfunctionsv2.FunctionBuildConfigArgs(\n runtime=\"nodejs16\",\n entry_point=\"helloPubSub\",\n environment_variables={\n \"BUILD_CONFIG_TEST\": \"build_test\",\n },\n source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceArgs(\n storage_source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs(\n bucket=bucket.name,\n object=object.name,\n ),\n ),\n ),\n service_config=gcp.cloudfunctionsv2.FunctionServiceConfigArgs(\n max_instance_count=3,\n min_instance_count=1,\n available_memory=\"4Gi\",\n timeout_seconds=60,\n max_instance_request_concurrency=80,\n available_cpu=\"4\",\n environment_variables={\n \"SERVICE_CONFIG_TEST\": \"config_test\",\n },\n ingress_settings=\"ALLOW_INTERNAL_ONLY\",\n all_traffic_on_latest_revision=True,\n service_account_email=account.email,\n ),\n event_trigger=gcp.cloudfunctionsv2.FunctionEventTriggerArgs(\n trigger_region=\"us-central1\",\n event_type=\"google.cloud.pubsub.topic.v1.messagePublished\",\n pubsub_topic=topic.id,\n retry_policy=\"RETRY_POLICY_RETRY\",\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"functions2-topic\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloPubSub\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"4Gi\",\n TimeoutSeconds = 60,\n MaxInstanceRequestConcurrency = 80,\n AvailableCpu = \"4\",\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n TriggerRegion = \"us-central1\",\n EventType = \"google.cloud.pubsub.topic.v1.messagePublished\",\n PubsubTopic = topic.Id,\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"functions2-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloPubSub\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"4Gi\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tMaxInstanceRequestConcurrency: pulumi.Int(80),\n\t\t\t\tAvailableCpu: pulumi.String(\"4\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tTriggerRegion: pulumi.String(\"us-central1\"),\n\t\t\t\tEventType: pulumi.String(\"google.cloud.pubsub.topic.v1.messagePublished\"),\n\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder() \n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var topic = new Topic(\"topic\", TopicArgs.builder() \n .name(\"functions2-topic\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder() \n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder() \n .name(\"gcf-function\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloPubSub\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"4Gi\")\n .timeoutSeconds(60)\n .maxInstanceRequestConcurrency(80)\n .availableCpu(\"4\")\n .environmentVariables(Map.of(\"SERVICE_CONFIG_TEST\", \"config_test\"))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .triggerRegion(\"us-central1\")\n .eventType(\"google.cloud.pubsub.topic.v1.messagePublished\")\n .pubsubTopic(topic.id())\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: functions2-topic\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloPubSub\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 4Gi\n timeoutSeconds: 60\n maxInstanceRequestConcurrency: 80\n availableCpu: '4'\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n triggerRegion: us-central1\n eventType: google.cloud.pubsub.topic.v1.messagePublished\n pubsubTopic: ${topic.id}\n retryPolicy: RETRY_POLICY_RETRY\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Scheduler Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n minInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n serviceAccountEmail: account.email,\n },\n});\nconst invoker = new gcp.cloudfunctionsv2.FunctionIamMember(\"invoker\", {\n project: _function.project,\n location: _function.location,\n cloudFunction: _function.name,\n role: \"roles/cloudfunctions.invoker\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst cloudRunInvoker = new gcp.cloudrun.IamMember(\"cloud_run_invoker\", {\n project: _function.project,\n location: _function.location,\n service: _function.name,\n role: \"roles/run.invoker\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst invokeCloudFunction = new gcp.cloudscheduler.Job(\"invoke_cloud_function\", {\n name: \"invoke-gcf-function\",\n description: \"Schedule the HTTPS trigger for cloud function\",\n schedule: \"0 0 * * *\",\n project: _function.project,\n region: _function.location,\n httpTarget: {\n uri: _function.serviceConfig.apply(serviceConfig =\u003e serviceConfig?.uri),\n httpMethod: \"POST\",\n oidcToken: {\n audience: _function.serviceConfig.apply(serviceConfig =\u003e `${serviceConfig?.uri}/`),\n serviceAccountEmail: account.email,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config=gcp.cloudfunctionsv2.FunctionBuildConfigArgs(\n runtime=\"nodejs16\",\n entry_point=\"helloHttp\",\n source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceArgs(\n storage_source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs(\n bucket=bucket.name,\n object=object.name,\n ),\n ),\n ),\n service_config=gcp.cloudfunctionsv2.FunctionServiceConfigArgs(\n min_instance_count=1,\n available_memory=\"256M\",\n timeout_seconds=60,\n service_account_email=account.email,\n ))\ninvoker = gcp.cloudfunctionsv2.FunctionIamMember(\"invoker\",\n project=function.project,\n location=function.location,\n cloud_function=function.name,\n role=\"roles/cloudfunctions.invoker\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\ncloud_run_invoker = gcp.cloudrun.IamMember(\"cloud_run_invoker\",\n project=function.project,\n location=function.location,\n service=function.name,\n role=\"roles/run.invoker\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\ninvoke_cloud_function = gcp.cloudscheduler.Job(\"invoke_cloud_function\",\n name=\"invoke-gcf-function\",\n description=\"Schedule the HTTPS trigger for cloud function\",\n schedule=\"0 0 * * *\",\n project=function.project,\n region=function.location,\n http_target=gcp.cloudscheduler.JobHttpTargetArgs(\n uri=function.service_config.uri,\n http_method=\"POST\",\n oidc_token=gcp.cloudscheduler.JobHttpTargetOidcTokenArgs(\n audience=function.service_config.apply(lambda service_config: f\"{service_config.uri}/\"),\n service_account_email=account.email,\n ),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MinInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n ServiceAccountEmail = account.Email,\n },\n });\n\n var invoker = new Gcp.CloudFunctionsV2.FunctionIamMember(\"invoker\", new()\n {\n Project = function.Project,\n Location = function.Location,\n CloudFunction = function.Name,\n Role = \"roles/cloudfunctions.invoker\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var cloudRunInvoker = new Gcp.CloudRun.IamMember(\"cloud_run_invoker\", new()\n {\n Project = function.Project,\n Location = function.Location,\n Service = function.Name,\n Role = \"roles/run.invoker\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var invokeCloudFunction = new Gcp.CloudScheduler.Job(\"invoke_cloud_function\", new()\n {\n Name = \"invoke-gcf-function\",\n Description = \"Schedule the HTTPS trigger for cloud function\",\n Schedule = \"0 0 * * *\",\n Project = function.Project,\n Region = function.Location,\n HttpTarget = new Gcp.CloudScheduler.Inputs.JobHttpTargetArgs\n {\n Uri = function.ServiceConfig.Apply(serviceConfig =\u003e serviceConfig?.Uri),\n HttpMethod = \"POST\",\n OidcToken = new Gcp.CloudScheduler.Inputs.JobHttpTargetOidcTokenArgs\n {\n Audience = function.ServiceConfig.Apply(serviceConfig =\u003e $\"{serviceConfig?.Uri}/\"),\n ServiceAccountEmail = account.Email,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudscheduler\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfunction, err := cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunctionIamMember(ctx, \"invoker\", \u0026cloudfunctionsv2.FunctionIamMemberArgs{\n\t\t\tProject: function.Project,\n\t\t\tLocation: function.Location,\n\t\t\tCloudFunction: function.Name,\n\t\t\tRole: pulumi.String(\"roles/cloudfunctions.invoker\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrun.NewIamMember(ctx, \"cloud_run_invoker\", \u0026cloudrun.IamMemberArgs{\n\t\t\tProject: function.Project,\n\t\t\tLocation: function.Location,\n\t\t\tService: function.Name,\n\t\t\tRole: pulumi.String(\"roles/run.invoker\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudscheduler.NewJob(ctx, \"invoke_cloud_function\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"invoke-gcf-function\"),\n\t\t\tDescription: pulumi.String(\"Schedule the HTTPS trigger for cloud function\"),\n\t\t\tSchedule: pulumi.String(\"0 0 * * *\"),\n\t\t\tProject: function.Project,\n\t\t\tRegion: function.Location,\n\t\t\tHttpTarget: \u0026cloudscheduler.JobHttpTargetArgs{\n\t\t\t\tUri: function.ServiceConfig.ApplyT(func(serviceConfig cloudfunctionsv2.FunctionServiceConfig) (*string, error) {\n\t\t\t\t\treturn \u0026serviceConfig.Uri, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tHttpMethod: pulumi.String(\"POST\"),\n\t\t\t\tOidcToken: \u0026cloudscheduler.JobHttpTargetOidcTokenArgs{\n\t\t\t\t\tAudience: function.ServiceConfig.ApplyT(func(serviceConfig cloudfunctionsv2.FunctionServiceConfig) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"%v/\", serviceConfig.Uri), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionIamMember;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionIamMemberArgs;\nimport com.pulumi.gcp.cloudrun.IamMember;\nimport com.pulumi.gcp.cloudrun.IamMemberArgs;\nimport com.pulumi.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetOidcTokenArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder() \n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder() \n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder() \n .name(\"gcf-function\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .minInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .serviceAccountEmail(account.email())\n .build())\n .build());\n\n var invoker = new FunctionIamMember(\"invoker\", FunctionIamMemberArgs.builder() \n .project(function.project())\n .location(function.location())\n .cloudFunction(function.name())\n .role(\"roles/cloudfunctions.invoker\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var cloudRunInvoker = new IamMember(\"cloudRunInvoker\", IamMemberArgs.builder() \n .project(function.project())\n .location(function.location())\n .service(function.name())\n .role(\"roles/run.invoker\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var invokeCloudFunction = new Job(\"invokeCloudFunction\", JobArgs.builder() \n .name(\"invoke-gcf-function\")\n .description(\"Schedule the HTTPS trigger for cloud function\")\n .schedule(\"0 0 * * *\")\n .project(function.project())\n .region(function.location())\n .httpTarget(JobHttpTargetArgs.builder()\n .uri(function.serviceConfig().applyValue(serviceConfig -\u003e serviceConfig.uri()))\n .httpMethod(\"POST\")\n .oidcToken(JobHttpTargetOidcTokenArgs.builder()\n .audience(function.serviceConfig().applyValue(serviceConfig -\u003e String.format(\"%s/\", serviceConfig.uri())))\n .serviceAccountEmail(account.email())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n minInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n serviceAccountEmail: ${account.email}\n invoker:\n type: gcp:cloudfunctionsv2:FunctionIamMember\n properties:\n project: ${function.project}\n location: ${function.location}\n cloudFunction: ${function.name}\n role: roles/cloudfunctions.invoker\n member: serviceAccount:${account.email}\n cloudRunInvoker:\n type: gcp:cloudrun:IamMember\n name: cloud_run_invoker\n properties:\n project: ${function.project}\n location: ${function.location}\n service: ${function.name}\n role: roles/run.invoker\n member: serviceAccount:${account.email}\n invokeCloudFunction:\n type: gcp:cloudscheduler:Job\n name: invoke_cloud_function\n properties:\n name: invoke-gcf-function\n description: Schedule the HTTPS trigger for cloud function\n schedule: 0 0 * * *\n project: ${function.project}\n region: ${function.location}\n httpTarget:\n uri: ${function.serviceConfig.uri}\n httpMethod: POST\n oidcToken:\n audience: ${function.serviceConfig.uri}/\n serviceAccountEmail: ${account.email}\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Basic Gcs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst source_bucket = new gcp.storage.Bucket(\"source-bucket\", {\n name: \"gcf-source-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: source_bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst trigger_bucket = new gcp.storage.Bucket(\"trigger-bucket\", {\n name: \"gcf-trigger-bucket\",\n location: \"us-central1\",\n uniformBucketLevelAccess: true,\n});\nconst gcsAccount = gcp.storage.getProjectServiceAccount({});\n// To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n// (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\nconst gcs_pubsub_publishing = new gcp.projects.IAMMember(\"gcs-pubsub-publishing\", {\n project: \"my-project-name\",\n role: \"roles/pubsub.publisher\",\n member: gcsAccount.then(gcsAccount =\u003e `serviceAccount:${gcsAccount.emailAddress}`),\n});\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account - used for both the cloud function and eventarc trigger in the test\",\n});\n// Permissions on the service account used by the function and Eventarc trigger\nconst invoking = new gcp.projects.IAMMember(\"invoking\", {\n project: \"my-project-name\",\n role: \"roles/run.invoker\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst event_receiving = new gcp.projects.IAMMember(\"event-receiving\", {\n project: \"my-project-name\",\n role: \"roles/eventarc.eventReceiver\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst artifactregistry_reader = new gcp.projects.IAMMember(\"artifactregistry-reader\", {\n project: \"my-project-name\",\n role: \"roles/artifactregistry.reader\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs12\",\n entryPoint: \"entryPoint\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: source_bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n eventType: \"google.cloud.storage.object.v1.finalized\",\n retryPolicy: \"RETRY_POLICY_RETRY\",\n serviceAccountEmail: account.email,\n eventFilters: [{\n attribute: \"bucket\",\n value: trigger_bucket.name,\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsource_bucket = gcp.storage.Bucket(\"source-bucket\",\n name=\"gcf-source-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=source_bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\ntrigger_bucket = gcp.storage.Bucket(\"trigger-bucket\",\n name=\"gcf-trigger-bucket\",\n location=\"us-central1\",\n uniform_bucket_level_access=True)\ngcs_account = gcp.storage.get_project_service_account()\n# To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n# (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\ngcs_pubsub_publishing = gcp.projects.IAMMember(\"gcs-pubsub-publishing\",\n project=\"my-project-name\",\n role=\"roles/pubsub.publisher\",\n member=f\"serviceAccount:{gcs_account.email_address}\")\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account - used for both the cloud function and eventarc trigger in the test\")\n# Permissions on the service account used by the function and Eventarc trigger\ninvoking = gcp.projects.IAMMember(\"invoking\",\n project=\"my-project-name\",\n role=\"roles/run.invoker\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nevent_receiving = gcp.projects.IAMMember(\"event-receiving\",\n project=\"my-project-name\",\n role=\"roles/eventarc.eventReceiver\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nartifactregistry_reader = gcp.projects.IAMMember(\"artifactregistry-reader\",\n project=\"my-project-name\",\n role=\"roles/artifactregistry.reader\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config=gcp.cloudfunctionsv2.FunctionBuildConfigArgs(\n runtime=\"nodejs12\",\n entry_point=\"entryPoint\",\n environment_variables={\n \"BUILD_CONFIG_TEST\": \"build_test\",\n },\n source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceArgs(\n storage_source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs(\n bucket=source_bucket.name,\n object=object.name,\n ),\n ),\n ),\n service_config=gcp.cloudfunctionsv2.FunctionServiceConfigArgs(\n max_instance_count=3,\n min_instance_count=1,\n available_memory=\"256M\",\n timeout_seconds=60,\n environment_variables={\n \"SERVICE_CONFIG_TEST\": \"config_test\",\n },\n ingress_settings=\"ALLOW_INTERNAL_ONLY\",\n all_traffic_on_latest_revision=True,\n service_account_email=account.email,\n ),\n event_trigger=gcp.cloudfunctionsv2.FunctionEventTriggerArgs(\n event_type=\"google.cloud.storage.object.v1.finalized\",\n retry_policy=\"RETRY_POLICY_RETRY\",\n service_account_email=account.email,\n event_filters=[gcp.cloudfunctionsv2.FunctionEventTriggerEventFilterArgs(\n attribute=\"bucket\",\n value=trigger_bucket.name,\n )],\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var source_bucket = new Gcp.Storage.Bucket(\"source-bucket\", new()\n {\n Name = \"gcf-source-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = source_bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var trigger_bucket = new Gcp.Storage.Bucket(\"trigger-bucket\", new()\n {\n Name = \"gcf-trigger-bucket\",\n Location = \"us-central1\",\n UniformBucketLevelAccess = true,\n });\n\n var gcsAccount = Gcp.Storage.GetProjectServiceAccount.Invoke();\n\n // To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n // (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\n var gcs_pubsub_publishing = new Gcp.Projects.IAMMember(\"gcs-pubsub-publishing\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/pubsub.publisher\",\n Member = $\"serviceAccount:{gcsAccount.Apply(getProjectServiceAccountResult =\u003e getProjectServiceAccountResult.EmailAddress)}\",\n });\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account - used for both the cloud function and eventarc trigger in the test\",\n });\n\n // Permissions on the service account used by the function and Eventarc trigger\n var invoking = new Gcp.Projects.IAMMember(\"invoking\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/run.invoker\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var event_receiving = new Gcp.Projects.IAMMember(\"event-receiving\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/eventarc.eventReceiver\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var artifactregistry_reader = new Gcp.Projects.IAMMember(\"artifactregistry-reader\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/artifactregistry.reader\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs12\",\n EntryPoint = \"entryPoint\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = source_bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n EventType = \"google.cloud.storage.object.v1.finalized\",\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n ServiceAccountEmail = account.Email,\n EventFilters = new[]\n {\n new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerEventFilterArgs\n {\n Attribute = \"bucket\",\n Value = trigger_bucket.Name,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := storage.NewBucket(ctx, \"source-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"gcf-source-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: source_bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewBucket(ctx, \"trigger-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"gcf-trigger-bucket\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgcsAccount, err := storage.GetProjectServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n\t\t// (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\n\t\t_, err = projects.NewIAMMember(ctx, \"gcs-pubsub-publishing\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/pubsub.publisher\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:%v\", gcsAccount.EmailAddress)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account - used for both the cloud function and eventarc trigger in the test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Permissions on the service account used by the function and Eventarc trigger\n\t\t_, err = projects.NewIAMMember(ctx, \"invoking\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/run.invoker\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"event-receiving\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/eventarc.eventReceiver\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"artifactregistry-reader\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/artifactregistry.reader\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs12\"),\n\t\t\t\tEntryPoint: pulumi.String(\"entryPoint\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: source_bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tEventType: pulumi.String(\"google.cloud.storage.object.v1.finalized\"),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t\tEventFilters: cloudfunctionsv2.FunctionEventTriggerEventFilterArray{\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionEventTriggerEventFilterArgs{\n\t\t\t\t\t\tAttribute: pulumi.String(\"bucket\"),\n\t\t\t\t\t\tValue: trigger_bucket.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.storage.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetProjectServiceAccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var source_bucket = new Bucket(\"source-bucket\", BucketArgs.builder() \n .name(\"gcf-source-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .name(\"function-source.zip\")\n .bucket(source_bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var trigger_bucket = new Bucket(\"trigger-bucket\", BucketArgs.builder() \n .name(\"gcf-trigger-bucket\")\n .location(\"us-central1\")\n .uniformBucketLevelAccess(true)\n .build());\n\n final var gcsAccount = StorageFunctions.getProjectServiceAccount();\n\n // To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n // (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\n var gcs_pubsub_publishing = new IAMMember(\"gcs-pubsub-publishing\", IAMMemberArgs.builder() \n .project(\"my-project-name\")\n .role(\"roles/pubsub.publisher\")\n .member(String.format(\"serviceAccount:%s\", gcsAccount.applyValue(getProjectServiceAccountResult -\u003e getProjectServiceAccountResult.emailAddress())))\n .build());\n\n var account = new Account(\"account\", AccountArgs.builder() \n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account - used for both the cloud function and eventarc trigger in the test\")\n .build());\n\n // Permissions on the service account used by the function and Eventarc trigger\n var invoking = new IAMMember(\"invoking\", IAMMemberArgs.builder() \n .project(\"my-project-name\")\n .role(\"roles/run.invoker\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var event_receiving = new IAMMember(\"event-receiving\", IAMMemberArgs.builder() \n .project(\"my-project-name\")\n .role(\"roles/eventarc.eventReceiver\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var artifactregistry_reader = new IAMMember(\"artifactregistry-reader\", IAMMemberArgs.builder() \n .project(\"my-project-name\")\n .role(\"roles/artifactregistry.reader\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder() \n .name(\"gcf-function\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs12\")\n .entryPoint(\"entryPoint\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(source_bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .environmentVariables(Map.of(\"SERVICE_CONFIG_TEST\", \"config_test\"))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .eventType(\"google.cloud.storage.object.v1.finalized\")\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .serviceAccountEmail(account.email())\n .eventFilters(FunctionEventTriggerEventFilterArgs.builder()\n .attribute(\"bucket\")\n .value(trigger_bucket.name())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n source-bucket:\n type: gcp:storage:Bucket\n properties:\n name: gcf-source-bucket\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${[\"source-bucket\"].name}\n source:\n fn::FileAsset: function-source.zip\n trigger-bucket:\n type: gcp:storage:Bucket\n properties:\n name: gcf-trigger-bucket\n location: us-central1\n uniformBucketLevelAccess: true\n # To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n # (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\n gcs-pubsub-publishing:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/pubsub.publisher\n member: serviceAccount:${gcsAccount.emailAddress}\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account - used for both the cloud function and eventarc trigger in the test\n # Permissions on the service account used by the function and Eventarc trigger\n invoking:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/run.invoker\n member: serviceAccount:${account.email}\n event-receiving:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/eventarc.eventReceiver\n member: serviceAccount:${account.email}\n artifactregistry-reader:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/artifactregistry.reader\n member: serviceAccount:${account.email}\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs12\n entryPoint: entryPoint\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${[\"source-bucket\"].name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n eventType: google.cloud.storage.object.v1.finalized\n retryPolicy: RETRY_POLICY_RETRY\n serviceAccountEmail: ${account.email}\n eventFilters:\n - attribute: bucket\n value: ${[\"trigger-bucket\"].name}\nvariables:\n gcsAccount:\n fn::invoke:\n Function: gcp:storage:getProjectServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Basic Auditlogs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// This example follows the examples shown in this Google Cloud Community blog post\n// https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n// and the docs:\n// https://cloud.google.com/eventarc/docs/path-patterns\nconst source_bucket = new gcp.storage.Bucket(\"source-bucket\", {\n name: \"gcf-source-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: source_bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account - used for both the cloud function and eventarc trigger in the test\",\n});\n// Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n// Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n// google_cloudfunctions2_function below (Audit Log events have path pattern support)\nconst audit_log_bucket = new gcp.storage.Bucket(\"audit-log-bucket\", {\n name: \"gcf-auditlog-bucket\",\n location: \"us-central1\",\n uniformBucketLevelAccess: true,\n});\n// Permissions on the service account used by the function and Eventarc trigger\nconst invoking = new gcp.projects.IAMMember(\"invoking\", {\n project: \"my-project-name\",\n role: \"roles/run.invoker\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst event_receiving = new gcp.projects.IAMMember(\"event-receiving\", {\n project: \"my-project-name\",\n role: \"roles/eventarc.eventReceiver\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst artifactregistry_reader = new gcp.projects.IAMMember(\"artifactregistry-reader\", {\n project: \"my-project-name\",\n role: \"roles/artifactregistry.reader\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs12\",\n entryPoint: \"entryPoint\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: source_bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n triggerRegion: \"us-central1\",\n eventType: \"google.cloud.audit.log.v1.written\",\n retryPolicy: \"RETRY_POLICY_RETRY\",\n serviceAccountEmail: account.email,\n eventFilters: [\n {\n attribute: \"serviceName\",\n value: \"storage.googleapis.com\",\n },\n {\n attribute: \"methodName\",\n value: \"storage.objects.create\",\n },\n {\n attribute: \"resourceName\",\n value: pulumi.interpolate`/projects/_/buckets/${audit_log_bucket.name}/objects/*.txt`,\n operator: \"match-path-pattern\",\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# This example follows the examples shown in this Google Cloud Community blog post\n# https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n# and the docs:\n# https://cloud.google.com/eventarc/docs/path-patterns\nsource_bucket = gcp.storage.Bucket(\"source-bucket\",\n name=\"gcf-source-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=source_bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account - used for both the cloud function and eventarc trigger in the test\")\n# Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n# Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n# google_cloudfunctions2_function below (Audit Log events have path pattern support)\naudit_log_bucket = gcp.storage.Bucket(\"audit-log-bucket\",\n name=\"gcf-auditlog-bucket\",\n location=\"us-central1\",\n uniform_bucket_level_access=True)\n# Permissions on the service account used by the function and Eventarc trigger\ninvoking = gcp.projects.IAMMember(\"invoking\",\n project=\"my-project-name\",\n role=\"roles/run.invoker\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nevent_receiving = gcp.projects.IAMMember(\"event-receiving\",\n project=\"my-project-name\",\n role=\"roles/eventarc.eventReceiver\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nartifactregistry_reader = gcp.projects.IAMMember(\"artifactregistry-reader\",\n project=\"my-project-name\",\n role=\"roles/artifactregistry.reader\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config=gcp.cloudfunctionsv2.FunctionBuildConfigArgs(\n runtime=\"nodejs12\",\n entry_point=\"entryPoint\",\n environment_variables={\n \"BUILD_CONFIG_TEST\": \"build_test\",\n },\n source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceArgs(\n storage_source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs(\n bucket=source_bucket.name,\n object=object.name,\n ),\n ),\n ),\n service_config=gcp.cloudfunctionsv2.FunctionServiceConfigArgs(\n max_instance_count=3,\n min_instance_count=1,\n available_memory=\"256M\",\n timeout_seconds=60,\n environment_variables={\n \"SERVICE_CONFIG_TEST\": \"config_test\",\n },\n ingress_settings=\"ALLOW_INTERNAL_ONLY\",\n all_traffic_on_latest_revision=True,\n service_account_email=account.email,\n ),\n event_trigger=gcp.cloudfunctionsv2.FunctionEventTriggerArgs(\n trigger_region=\"us-central1\",\n event_type=\"google.cloud.audit.log.v1.written\",\n retry_policy=\"RETRY_POLICY_RETRY\",\n service_account_email=account.email,\n event_filters=[\n gcp.cloudfunctionsv2.FunctionEventTriggerEventFilterArgs(\n attribute=\"serviceName\",\n value=\"storage.googleapis.com\",\n ),\n gcp.cloudfunctionsv2.FunctionEventTriggerEventFilterArgs(\n attribute=\"methodName\",\n value=\"storage.objects.create\",\n ),\n gcp.cloudfunctionsv2.FunctionEventTriggerEventFilterArgs(\n attribute=\"resourceName\",\n value=audit_log_bucket.name.apply(lambda name: f\"/projects/_/buckets/{name}/objects/*.txt\"),\n operator=\"match-path-pattern\",\n ),\n ],\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // This example follows the examples shown in this Google Cloud Community blog post\n // https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n // and the docs:\n // https://cloud.google.com/eventarc/docs/path-patterns\n var source_bucket = new Gcp.Storage.Bucket(\"source-bucket\", new()\n {\n Name = \"gcf-source-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = source_bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account - used for both the cloud function and eventarc trigger in the test\",\n });\n\n // Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n // Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n // google_cloudfunctions2_function below (Audit Log events have path pattern support)\n var audit_log_bucket = new Gcp.Storage.Bucket(\"audit-log-bucket\", new()\n {\n Name = \"gcf-auditlog-bucket\",\n Location = \"us-central1\",\n UniformBucketLevelAccess = true,\n });\n\n // Permissions on the service account used by the function and Eventarc trigger\n var invoking = new Gcp.Projects.IAMMember(\"invoking\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/run.invoker\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var event_receiving = new Gcp.Projects.IAMMember(\"event-receiving\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/eventarc.eventReceiver\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var artifactregistry_reader = new Gcp.Projects.IAMMember(\"artifactregistry-reader\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/artifactregistry.reader\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs12\",\n EntryPoint = \"entryPoint\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = source_bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n TriggerRegion = \"us-central1\",\n EventType = \"google.cloud.audit.log.v1.written\",\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n ServiceAccountEmail = account.Email,\n EventFilters = new[]\n {\n new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerEventFilterArgs\n {\n Attribute = \"serviceName\",\n Value = \"storage.googleapis.com\",\n },\n new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerEventFilterArgs\n {\n Attribute = \"methodName\",\n Value = \"storage.objects.create\",\n },\n new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerEventFilterArgs\n {\n Attribute = \"resourceName\",\n Value = audit_log_bucket.Name.Apply(name =\u003e $\"/projects/_/buckets/{name}/objects/*.txt\"),\n Operator = \"match-path-pattern\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// This example follows the examples shown in this Google Cloud Community blog post\n\t\t// https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n\t\t// and the docs:\n\t\t// https://cloud.google.com/eventarc/docs/path-patterns\n\t\t_, err := storage.NewBucket(ctx, \"source-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"gcf-source-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: source_bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account - used for both the cloud function and eventarc trigger in the test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n\t\t// Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n\t\t// google_cloudfunctions2_function below (Audit Log events have path pattern support)\n\t\t_, err = storage.NewBucket(ctx, \"audit-log-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"gcf-auditlog-bucket\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Permissions on the service account used by the function and Eventarc trigger\n\t\t_, err = projects.NewIAMMember(ctx, \"invoking\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/run.invoker\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"event-receiving\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/eventarc.eventReceiver\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"artifactregistry-reader\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/artifactregistry.reader\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs12\"),\n\t\t\t\tEntryPoint: pulumi.String(\"entryPoint\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: source_bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tTriggerRegion: pulumi.String(\"us-central1\"),\n\t\t\t\tEventType: pulumi.String(\"google.cloud.audit.log.v1.written\"),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t\tEventFilters: cloudfunctionsv2.FunctionEventTriggerEventFilterArray{\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionEventTriggerEventFilterArgs{\n\t\t\t\t\t\tAttribute: pulumi.String(\"serviceName\"),\n\t\t\t\t\t\tValue: pulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionEventTriggerEventFilterArgs{\n\t\t\t\t\t\tAttribute: pulumi.String(\"methodName\"),\n\t\t\t\t\t\tValue: pulumi.String(\"storage.objects.create\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionEventTriggerEventFilterArgs{\n\t\t\t\t\t\tAttribute: pulumi.String(\"resourceName\"),\n\t\t\t\t\t\tValue: audit_log_bucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"/projects/_/buckets/%v/objects/*.txt\", name), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\tOperator: pulumi.String(\"match-path-pattern\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // This example follows the examples shown in this Google Cloud Community blog post\n // https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n // and the docs:\n // https://cloud.google.com/eventarc/docs/path-patterns\n var source_bucket = new Bucket(\"source-bucket\", BucketArgs.builder() \n .name(\"gcf-source-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .name(\"function-source.zip\")\n .bucket(source_bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var account = new Account(\"account\", AccountArgs.builder() \n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account - used for both the cloud function and eventarc trigger in the test\")\n .build());\n\n // Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n // Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n // google_cloudfunctions2_function below (Audit Log events have path pattern support)\n var audit_log_bucket = new Bucket(\"audit-log-bucket\", BucketArgs.builder() \n .name(\"gcf-auditlog-bucket\")\n .location(\"us-central1\")\n .uniformBucketLevelAccess(true)\n .build());\n\n // Permissions on the service account used by the function and Eventarc trigger\n var invoking = new IAMMember(\"invoking\", IAMMemberArgs.builder() \n .project(\"my-project-name\")\n .role(\"roles/run.invoker\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var event_receiving = new IAMMember(\"event-receiving\", IAMMemberArgs.builder() \n .project(\"my-project-name\")\n .role(\"roles/eventarc.eventReceiver\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var artifactregistry_reader = new IAMMember(\"artifactregistry-reader\", IAMMemberArgs.builder() \n .project(\"my-project-name\")\n .role(\"roles/artifactregistry.reader\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder() \n .name(\"gcf-function\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs12\")\n .entryPoint(\"entryPoint\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(source_bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .environmentVariables(Map.of(\"SERVICE_CONFIG_TEST\", \"config_test\"))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .triggerRegion(\"us-central1\")\n .eventType(\"google.cloud.audit.log.v1.written\")\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .serviceAccountEmail(account.email())\n .eventFilters( \n FunctionEventTriggerEventFilterArgs.builder()\n .attribute(\"serviceName\")\n .value(\"storage.googleapis.com\")\n .build(),\n FunctionEventTriggerEventFilterArgs.builder()\n .attribute(\"methodName\")\n .value(\"storage.objects.create\")\n .build(),\n FunctionEventTriggerEventFilterArgs.builder()\n .attribute(\"resourceName\")\n .value(audit_log_bucket.name().applyValue(name -\u003e String.format(\"/projects/_/buckets/%s/objects/*.txt\", name)))\n .operator(\"match-path-pattern\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # This example follows the examples shown in this Google Cloud Community blog post\n # https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n # and the docs:\n # https://cloud.google.com/eventarc/docs/path-patterns\n source-bucket:\n type: gcp:storage:Bucket\n properties:\n name: gcf-source-bucket\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${[\"source-bucket\"].name}\n source:\n fn::FileAsset: function-source.zip\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account - used for both the cloud function and eventarc trigger in the test\n # Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n # Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n # google_cloudfunctions2_function below (Audit Log events have path pattern support)\n audit-log-bucket:\n type: gcp:storage:Bucket\n properties:\n name: gcf-auditlog-bucket\n location: us-central1\n uniformBucketLevelAccess: true\n # Permissions on the service account used by the function and Eventarc trigger\n invoking:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/run.invoker\n member: serviceAccount:${account.email}\n event-receiving:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/eventarc.eventReceiver\n member: serviceAccount:${account.email}\n artifactregistry-reader:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/artifactregistry.reader\n member: serviceAccount:${account.email}\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs12\n entryPoint: entryPoint\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${[\"source-bucket\"].name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n triggerRegion: us-central1\n eventType: google.cloud.audit.log.v1.written\n retryPolicy: RETRY_POLICY_RETRY\n serviceAccountEmail: ${account.email}\n eventFilters:\n - attribute: serviceName\n value: storage.googleapis.com\n - attribute: methodName\n value: storage.objects.create\n - attribute: resourceName\n value: /projects/_/buckets/${[\"audit-log-bucket\"].name}/objects/*.txt\n operator: match-path-pattern\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Basic Builder\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst logWriter = new gcp.projects.IAMMember(\"log_writer\", {\n project: account.project,\n role: \"roles/logging.logWriter\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst artifactRegistryWriter = new gcp.projects.IAMMember(\"artifact_registry_writer\", {\n project: account.project,\n role: \"roles/artifactregistry.writer\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst storageObjectAdmin = new gcp.projects.IAMMember(\"storage_object_admin\", {\n project: account.project,\n role: \"roles/storage.objectAdmin\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\n// builder permissions need to stablize before it can pull the source zip\nconst wait60s = new time.index.Sleep(\"wait_60s\", {createDuration: \"60s\"});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-v2\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n serviceAccount: account.id,\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n },\n});\nexport const functionUri = _function.serviceConfig.apply(serviceConfig =\u003e serviceConfig?.uri);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\nlog_writer = gcp.projects.IAMMember(\"log_writer\",\n project=account.project,\n role=\"roles/logging.logWriter\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nartifact_registry_writer = gcp.projects.IAMMember(\"artifact_registry_writer\",\n project=account.project,\n role=\"roles/artifactregistry.writer\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nstorage_object_admin = gcp.projects.IAMMember(\"storage_object_admin\",\n project=account.project,\n role=\"roles/storage.objectAdmin\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\n# builder permissions need to stablize before it can pull the source zip\nwait60s = time.index.Sleep(\"wait_60s\", create_duration=60s)\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-v2\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config=gcp.cloudfunctionsv2.FunctionBuildConfigArgs(\n runtime=\"nodejs16\",\n entry_point=\"helloHttp\",\n source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceArgs(\n storage_source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs(\n bucket=bucket.name,\n object=object.name,\n ),\n ),\n service_account=account.id,\n ),\n service_config=gcp.cloudfunctionsv2.FunctionServiceConfigArgs(\n max_instance_count=1,\n available_memory=\"256M\",\n timeout_seconds=60,\n ))\npulumi.export(\"functionUri\", function.service_config.uri)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var logWriter = new Gcp.Projects.IAMMember(\"log_writer\", new()\n {\n Project = account.Project,\n Role = \"roles/logging.logWriter\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var artifactRegistryWriter = new Gcp.Projects.IAMMember(\"artifact_registry_writer\", new()\n {\n Project = account.Project,\n Role = \"roles/artifactregistry.writer\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var storageObjectAdmin = new Gcp.Projects.IAMMember(\"storage_object_admin\", new()\n {\n Project = account.Project,\n Role = \"roles/storage.objectAdmin\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n // builder permissions need to stablize before it can pull the source zip\n var wait60s = new Time.Index.Sleep(\"wait_60s\", new()\n {\n CreateDuration = \"60s\",\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-v2\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n ServiceAccount = account.Id,\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"functionUri\"] = function.ServiceConfig.Apply(serviceConfig =\u003e serviceConfig?.Uri),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"log_writer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: account.Project,\n\t\t\tRole: pulumi.String(\"roles/logging.logWriter\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"artifact_registry_writer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: account.Project,\n\t\t\tRole: pulumi.String(\"roles/artifactregistry.writer\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"storage_object_admin\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: account.Project,\n\t\t\tRole: pulumi.String(\"roles/storage.objectAdmin\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// builder permissions need to stablize before it can pull the source zip\n\t\t_, err = time.NewSleep(ctx, \"wait_60s\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"60s\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfunction, err := cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-v2\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tServiceAccount: account.ID(),\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"functionUri\", function.ServiceConfig.ApplyT(func(serviceConfig cloudfunctionsv2.FunctionServiceConfig) (*string, error) {\n\t\t\treturn \u0026serviceConfig.Uri, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder() \n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var logWriter = new IAMMember(\"logWriter\", IAMMemberArgs.builder() \n .project(account.project())\n .role(\"roles/logging.logWriter\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var artifactRegistryWriter = new IAMMember(\"artifactRegistryWriter\", IAMMemberArgs.builder() \n .project(account.project())\n .role(\"roles/artifactregistry.writer\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var storageObjectAdmin = new IAMMember(\"storageObjectAdmin\", IAMMemberArgs.builder() \n .project(account.project())\n .role(\"roles/storage.objectAdmin\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder() \n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n // builder permissions need to stablize before it can pull the source zip\n var wait60s = new Sleep(\"wait60s\", SleepArgs.builder() \n .createDuration(\"60s\")\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder() \n .name(\"function-v2\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .serviceAccount(account.id())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .build())\n .build());\n\n ctx.export(\"functionUri\", function.serviceConfig().applyValue(serviceConfig -\u003e serviceConfig.uri()));\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n logWriter:\n type: gcp:projects:IAMMember\n name: log_writer\n properties:\n project: ${account.project}\n role: roles/logging.logWriter\n member: serviceAccount:${account.email}\n artifactRegistryWriter:\n type: gcp:projects:IAMMember\n name: artifact_registry_writer\n properties:\n project: ${account.project}\n role: roles/artifactregistry.writer\n member: serviceAccount:${account.email}\n storageObjectAdmin:\n type: gcp:projects:IAMMember\n name: storage_object_admin\n properties:\n project: ${account.project}\n role: roles/storage.objectAdmin\n member: serviceAccount:${account.email}\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n # builder permissions need to stablize before it can pull the source zip\n wait60s:\n type: time:sleep\n name: wait_60s\n properties:\n createDuration: 60s\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-v2\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceAccount: ${account.id}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\nvariables:\n project: my-project-name\noutputs:\n functionUri: ${function.serviceConfig.uri}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Secret Env\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-secret\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n secretEnvironmentVariables: [{\n key: \"TEST\",\n projectId: project,\n secret: secret.secretId,\n version: \"latest\",\n }],\n },\n});\nconst secretSecretVersion = new gcp.secretmanager.SecretVersion(\"secret\", {\n secret: secret.name,\n secretData: \"secret\",\n enabled: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret\",\n replication=gcp.secretmanager.SecretReplicationArgs(\n user_managed=gcp.secretmanager.SecretReplicationUserManagedArgs(\n replicas=[gcp.secretmanager.SecretReplicationUserManagedReplicaArgs(\n location=\"us-central1\",\n )],\n ),\n ))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-secret\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config=gcp.cloudfunctionsv2.FunctionBuildConfigArgs(\n runtime=\"nodejs16\",\n entry_point=\"helloHttp\",\n source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceArgs(\n storage_source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs(\n bucket=bucket.name,\n object=object.name,\n ),\n ),\n ),\n service_config=gcp.cloudfunctionsv2.FunctionServiceConfigArgs(\n max_instance_count=1,\n available_memory=\"256M\",\n timeout_seconds=60,\n secret_environment_variables=[gcp.cloudfunctionsv2.FunctionServiceConfigSecretEnvironmentVariableArgs(\n key=\"TEST\",\n project_id=project,\n secret=secret.secret_id,\n version=\"latest\",\n )],\n ))\nsecret_secret_version = gcp.secretmanager.SecretVersion(\"secret\",\n secret=secret.name,\n secret_data=\"secret\",\n enabled=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n UserManaged = new Gcp.SecretManager.Inputs.SecretReplicationUserManagedArgs\n {\n Replicas = new[]\n {\n new Gcp.SecretManager.Inputs.SecretReplicationUserManagedReplicaArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-secret\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n SecretEnvironmentVariables = new[]\n {\n new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigSecretEnvironmentVariableArgs\n {\n Key = \"TEST\",\n ProjectId = project,\n Secret = secret.SecretId,\n Version = \"latest\",\n },\n },\n },\n });\n\n var secretSecretVersion = new Gcp.SecretManager.SecretVersion(\"secret\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret\",\n Enabled = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tUserManaged: \u0026secretmanager.SecretReplicationUserManagedArgs{\n\t\t\t\t\tReplicas: secretmanager.SecretReplicationUserManagedReplicaArray{\n\t\t\t\t\t\t\u0026secretmanager.SecretReplicationUserManagedReplicaArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-secret\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tSecretEnvironmentVariables: cloudfunctionsv2.FunctionServiceConfigSecretEnvironmentVariableArray{\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionServiceConfigSecretEnvironmentVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"TEST\"),\n\t\t\t\t\t\tProjectId: pulumi.String(project),\n\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t\tVersion: pulumi.String(\"latest\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret\"),\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationUserManagedArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder() \n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var secret = new Secret(\"secret\", SecretArgs.builder() \n .secretId(\"secret\")\n .replication(SecretReplicationArgs.builder()\n .userManaged(SecretReplicationUserManagedArgs.builder()\n .replicas(SecretReplicationUserManagedReplicaArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder() \n .name(\"function-secret\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .secretEnvironmentVariables(FunctionServiceConfigSecretEnvironmentVariableArgs.builder()\n .key(\"TEST\")\n .projectId(project)\n .secret(secret.secretId())\n .version(\"latest\")\n .build())\n .build())\n .build());\n\n var secretSecretVersion = new SecretVersion(\"secretSecretVersion\", SecretVersionArgs.builder() \n .secret(secret.name())\n .secretData(\"secret\")\n .enabled(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-secret\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n secretEnvironmentVariables:\n - key: TEST\n projectId: ${project}\n secret: ${secret.secretId}\n version: latest\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n replication:\n userManaged:\n replicas:\n - location: us-central1\n secretSecretVersion:\n type: gcp:secretmanager:SecretVersion\n name: secret\n properties:\n secret: ${secret.name}\n secretData: secret\n enabled: true\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Secret Volume\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-secret\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n secretVolumes: [{\n mountPath: \"/etc/secrets\",\n projectId: project,\n secret: secret.secretId,\n }],\n },\n});\nconst secretSecretVersion = new gcp.secretmanager.SecretVersion(\"secret\", {\n secret: secret.name,\n secretData: \"secret\",\n enabled: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret\",\n replication=gcp.secretmanager.SecretReplicationArgs(\n user_managed=gcp.secretmanager.SecretReplicationUserManagedArgs(\n replicas=[gcp.secretmanager.SecretReplicationUserManagedReplicaArgs(\n location=\"us-central1\",\n )],\n ),\n ))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-secret\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config=gcp.cloudfunctionsv2.FunctionBuildConfigArgs(\n runtime=\"nodejs16\",\n entry_point=\"helloHttp\",\n source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceArgs(\n storage_source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs(\n bucket=bucket.name,\n object=object.name,\n ),\n ),\n ),\n service_config=gcp.cloudfunctionsv2.FunctionServiceConfigArgs(\n max_instance_count=1,\n available_memory=\"256M\",\n timeout_seconds=60,\n secret_volumes=[gcp.cloudfunctionsv2.FunctionServiceConfigSecretVolumeArgs(\n mount_path=\"/etc/secrets\",\n project_id=project,\n secret=secret.secret_id,\n )],\n ))\nsecret_secret_version = gcp.secretmanager.SecretVersion(\"secret\",\n secret=secret.name,\n secret_data=\"secret\",\n enabled=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n UserManaged = new Gcp.SecretManager.Inputs.SecretReplicationUserManagedArgs\n {\n Replicas = new[]\n {\n new Gcp.SecretManager.Inputs.SecretReplicationUserManagedReplicaArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-secret\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n SecretVolumes = new[]\n {\n new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigSecretVolumeArgs\n {\n MountPath = \"/etc/secrets\",\n ProjectId = project,\n Secret = secret.SecretId,\n },\n },\n },\n });\n\n var secretSecretVersion = new Gcp.SecretManager.SecretVersion(\"secret\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret\",\n Enabled = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tUserManaged: \u0026secretmanager.SecretReplicationUserManagedArgs{\n\t\t\t\t\tReplicas: secretmanager.SecretReplicationUserManagedReplicaArray{\n\t\t\t\t\t\t\u0026secretmanager.SecretReplicationUserManagedReplicaArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-secret\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tSecretVolumes: cloudfunctionsv2.FunctionServiceConfigSecretVolumeArray{\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionServiceConfigSecretVolumeArgs{\n\t\t\t\t\t\tMountPath: pulumi.String(\"/etc/secrets\"),\n\t\t\t\t\t\tProjectId: pulumi.String(project),\n\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret\"),\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationUserManagedArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder() \n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var secret = new Secret(\"secret\", SecretArgs.builder() \n .secretId(\"secret\")\n .replication(SecretReplicationArgs.builder()\n .userManaged(SecretReplicationUserManagedArgs.builder()\n .replicas(SecretReplicationUserManagedReplicaArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder() \n .name(\"function-secret\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .secretVolumes(FunctionServiceConfigSecretVolumeArgs.builder()\n .mountPath(\"/etc/secrets\")\n .projectId(project)\n .secret(secret.secretId())\n .build())\n .build())\n .build());\n\n var secretSecretVersion = new SecretVersion(\"secretSecretVersion\", SecretVersionArgs.builder() \n .secret(secret.name())\n .secretData(\"secret\")\n .enabled(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-secret\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n secretVolumes:\n - mountPath: /etc/secrets\n projectId: ${project}\n secret: ${secret.secretId}\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n replication:\n userManaged:\n replicas:\n - location: us-central1\n secretSecretVersion:\n type: gcp:secretmanager:SecretVersion\n name: secret\n properties:\n secret: ${secret.name}\n secretData: secret\n enabled: true\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Private Workerpool\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst pool = new gcp.cloudbuild.WorkerPool(\"pool\", {\n name: \"workerpool\",\n location: \"us-central1\",\n workerConfig: {\n diskSizeGb: 100,\n machineType: \"e2-standard-8\",\n noExternalIp: false,\n },\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-workerpool\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n workerPool: pool.id,\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\npool = gcp.cloudbuild.WorkerPool(\"pool\",\n name=\"workerpool\",\n location=\"us-central1\",\n worker_config=gcp.cloudbuild.WorkerPoolWorkerConfigArgs(\n disk_size_gb=100,\n machine_type=\"e2-standard-8\",\n no_external_ip=False,\n ))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-workerpool\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config=gcp.cloudfunctionsv2.FunctionBuildConfigArgs(\n runtime=\"nodejs16\",\n entry_point=\"helloHttp\",\n source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceArgs(\n storage_source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs(\n bucket=bucket.name,\n object=object.name,\n ),\n ),\n worker_pool=pool.id,\n ),\n service_config=gcp.cloudfunctionsv2.FunctionServiceConfigArgs(\n max_instance_count=1,\n available_memory=\"256M\",\n timeout_seconds=60,\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var pool = new Gcp.CloudBuild.WorkerPool(\"pool\", new()\n {\n Name = \"workerpool\",\n Location = \"us-central1\",\n WorkerConfig = new Gcp.CloudBuild.Inputs.WorkerPoolWorkerConfigArgs\n {\n DiskSizeGb = 100,\n MachineType = \"e2-standard-8\",\n NoExternalIp = false,\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-workerpool\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n WorkerPool = pool.Id,\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpool, err := cloudbuild.NewWorkerPool(ctx, \"pool\", \u0026cloudbuild.WorkerPoolArgs{\n\t\t\tName: pulumi.String(\"workerpool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tWorkerConfig: \u0026cloudbuild.WorkerPoolWorkerConfigArgs{\n\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\tMachineType: pulumi.String(\"e2-standard-8\"),\n\t\t\t\tNoExternalIp: pulumi.Bool(false),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-workerpool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tWorkerPool: pool.ID(),\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudbuild.WorkerPool;\nimport com.pulumi.gcp.cloudbuild.WorkerPoolArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.WorkerPoolWorkerConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder() \n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var pool = new WorkerPool(\"pool\", WorkerPoolArgs.builder() \n .name(\"workerpool\")\n .location(\"us-central1\")\n .workerConfig(WorkerPoolWorkerConfigArgs.builder()\n .diskSizeGb(100)\n .machineType(\"e2-standard-8\")\n .noExternalIp(false)\n .build())\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder() \n .name(\"function-workerpool\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .workerPool(pool.id())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n pool:\n type: gcp:cloudbuild:WorkerPool\n properties:\n name: workerpool\n location: us-central1\n workerConfig:\n diskSizeGb: 100\n machineType: e2-standard-8\n noExternalIp: false\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-workerpool\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n workerPool: ${pool.id}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Cmek Docs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst projectGetProject = gcp.organizations.getProject({});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst eaSa = new gcp.projects.ServiceIdentity(\"ea_sa\", {\n project: projectGetProject.then(projectGetProject =\u003e projectGetProject.projectId),\n service: \"eventarc.googleapis.com\",\n});\nconst unencoded_ar_repo = new gcp.artifactregistry.Repository(\"unencoded-ar-repo\", {\n repositoryId: \"ar-repo\",\n location: \"us-central1\",\n format: \"DOCKER\",\n});\nconst encoded_ar_repo = new gcp.artifactregistry.Repository(\"encoded-ar-repo\", {\n location: \"us-central1\",\n repositoryId: \"cmek-repo\",\n format: \"DOCKER\",\n kmsKeyName: \"cmek-key\",\n});\nconst binding = new gcp.artifactregistry.RepositoryIamBinding(\"binding\", {\n location: encoded_ar_repo.location,\n repository: encoded_ar_repo.name,\n role: \"roles/artifactregistry.admin\",\n members: [projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@gcf-admin-robot.iam.gserviceaccount.com`)],\n});\nconst gcfCmekKeyuser = new gcp.kms.CryptoKeyIAMBinding(\"gcf_cmek_keyuser\", {\n cryptoKeyId: \"cmek-key\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members: [\n projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@gcf-admin-robot.iam.gserviceaccount.com`),\n projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@gs-project-accounts.iam.gserviceaccount.com`),\n projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@serverless-robot-prod.iam.gserviceaccount.com`),\n pulumi.interpolate`serviceAccount:${eaSa.email}`,\n ],\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-cmek\",\n location: \"us-central1\",\n description: \"CMEK function\",\n kmsKeyName: \"cmek-key\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n dockerRepository: encoded_ar_repo.id,\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nproject_get_project = gcp.organizations.get_project()\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nea_sa = gcp.projects.ServiceIdentity(\"ea_sa\",\n project=project_get_project.project_id,\n service=\"eventarc.googleapis.com\")\nunencoded_ar_repo = gcp.artifactregistry.Repository(\"unencoded-ar-repo\",\n repository_id=\"ar-repo\",\n location=\"us-central1\",\n format=\"DOCKER\")\nencoded_ar_repo = gcp.artifactregistry.Repository(\"encoded-ar-repo\",\n location=\"us-central1\",\n repository_id=\"cmek-repo\",\n format=\"DOCKER\",\n kms_key_name=\"cmek-key\")\nbinding = gcp.artifactregistry.RepositoryIamBinding(\"binding\",\n location=encoded_ar_repo.location,\n repository=encoded_ar_repo.name,\n role=\"roles/artifactregistry.admin\",\n members=[f\"serviceAccount:service-{project_get_project.number}@gcf-admin-robot.iam.gserviceaccount.com\"])\ngcf_cmek_keyuser = gcp.kms.CryptoKeyIAMBinding(\"gcf_cmek_keyuser\",\n crypto_key_id=\"cmek-key\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members=[\n f\"serviceAccount:service-{project_get_project.number}@gcf-admin-robot.iam.gserviceaccount.com\",\n f\"serviceAccount:service-{project_get_project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n f\"serviceAccount:service-{project_get_project.number}@gs-project-accounts.iam.gserviceaccount.com\",\n f\"serviceAccount:service-{project_get_project.number}@serverless-robot-prod.iam.gserviceaccount.com\",\n ea_sa.email.apply(lambda email: f\"serviceAccount:{email}\"),\n ])\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-cmek\",\n location=\"us-central1\",\n description=\"CMEK function\",\n kms_key_name=\"cmek-key\",\n build_config=gcp.cloudfunctionsv2.FunctionBuildConfigArgs(\n runtime=\"nodejs16\",\n entry_point=\"helloHttp\",\n docker_repository=encoded_ar_repo.id,\n source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceArgs(\n storage_source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs(\n bucket=bucket.name,\n object=object.name,\n ),\n ),\n ),\n service_config=gcp.cloudfunctionsv2.FunctionServiceConfigArgs(\n max_instance_count=1,\n available_memory=\"256M\",\n timeout_seconds=60,\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var projectGetProject = Gcp.Organizations.GetProject.Invoke();\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var eaSa = new Gcp.Projects.ServiceIdentity(\"ea_sa\", new()\n {\n Project = projectGetProject.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Service = \"eventarc.googleapis.com\",\n });\n\n var unencoded_ar_repo = new Gcp.ArtifactRegistry.Repository(\"unencoded-ar-repo\", new()\n {\n RepositoryId = \"ar-repo\",\n Location = \"us-central1\",\n Format = \"DOCKER\",\n });\n\n var encoded_ar_repo = new Gcp.ArtifactRegistry.Repository(\"encoded-ar-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"cmek-repo\",\n Format = \"DOCKER\",\n KmsKeyName = \"cmek-key\",\n });\n\n var binding = new Gcp.ArtifactRegistry.RepositoryIamBinding(\"binding\", new()\n {\n Location = encoded_ar_repo.Location,\n Repository = encoded_ar_repo.Name,\n Role = \"roles/artifactregistry.admin\",\n Members = new[]\n {\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcf-admin-robot.iam.gserviceaccount.com\",\n },\n });\n\n var gcfCmekKeyuser = new Gcp.Kms.CryptoKeyIAMBinding(\"gcf_cmek_keyuser\", new()\n {\n CryptoKeyId = \"cmek-key\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Members = new[]\n {\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcf-admin-robot.iam.gserviceaccount.com\",\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gs-project-accounts.iam.gserviceaccount.com\",\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@serverless-robot-prod.iam.gserviceaccount.com\",\n eaSa.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-cmek\",\n Location = \"us-central1\",\n Description = \"CMEK function\",\n KmsKeyName = \"cmek-key\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n DockerRepository = encoded_ar_repo.Id,\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\tprojectGetProject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\teaSa, err := projects.NewServiceIdentity(ctx, \"ea_sa\", \u0026projects.ServiceIdentityArgs{\n\t\t\tProject: pulumi.String(projectGetProject.ProjectId),\n\t\t\tService: pulumi.String(\"eventarc.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"unencoded-ar-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tRepositoryId: pulumi.String(\"ar-repo\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"encoded-ar-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"cmek-repo\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tKmsKeyName: pulumi.String(\"cmek-key\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepositoryIamBinding(ctx, \"binding\", \u0026artifactregistry.RepositoryIamBindingArgs{\n\t\t\tLocation: encoded_ar_repo.Location,\n\t\t\tRepository: encoded_ar_repo.Name,\n\t\t\tRole: pulumi.String(\"roles/artifactregistry.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcf-admin-robot.iam.gserviceaccount.com\", projectGetProject.Number)),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kms.NewCryptoKeyIAMBinding(ctx, \"gcf_cmek_keyuser\", \u0026kms.CryptoKeyIAMBindingArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"cmek-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcf-admin-robot.iam.gserviceaccount.com\", projectGetProject.Number)),\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", projectGetProject.Number)),\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gs-project-accounts.iam.gserviceaccount.com\", projectGetProject.Number)),\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@serverless-robot-prod.iam.gserviceaccount.com\", projectGetProject.Number)),\n\t\t\t\teaSa.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-cmek\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"CMEK function\"),\n\t\t\tKmsKeyName: pulumi.String(\"cmek-key\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tDockerRepository: encoded_ar_repo.ID(),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.RepositoryIamBinding;\nimport com.pulumi.gcp.artifactregistry.RepositoryIamBindingArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBinding;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBindingArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n final var projectGetProject = OrganizationsFunctions.getProject();\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder() \n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var eaSa = new ServiceIdentity(\"eaSa\", ServiceIdentityArgs.builder() \n .project(projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .service(\"eventarc.googleapis.com\")\n .build());\n\n var unencoded_ar_repo = new Repository(\"unencoded-ar-repo\", RepositoryArgs.builder() \n .repositoryId(\"ar-repo\")\n .location(\"us-central1\")\n .format(\"DOCKER\")\n .build());\n\n var encoded_ar_repo = new Repository(\"encoded-ar-repo\", RepositoryArgs.builder() \n .location(\"us-central1\")\n .repositoryId(\"cmek-repo\")\n .format(\"DOCKER\")\n .kmsKeyName(\"cmek-key\")\n .build());\n\n var binding = new RepositoryIamBinding(\"binding\", RepositoryIamBindingArgs.builder() \n .location(encoded_ar_repo.location())\n .repository(encoded_ar_repo.name())\n .role(\"roles/artifactregistry.admin\")\n .members(String.format(\"serviceAccount:service-%s@gcf-admin-robot.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var gcfCmekKeyuser = new CryptoKeyIAMBinding(\"gcfCmekKeyuser\", CryptoKeyIAMBindingArgs.builder() \n .cryptoKeyId(\"cmek-key\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .members( \n String.format(\"serviceAccount:service-%s@gcf-admin-robot.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())),\n String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())),\n String.format(\"serviceAccount:service-%s@gs-project-accounts.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())),\n String.format(\"serviceAccount:service-%s@serverless-robot-prod.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())),\n eaSa.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder() \n .name(\"function-cmek\")\n .location(\"us-central1\")\n .description(\"CMEK function\")\n .kmsKeyName(\"cmek-key\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .dockerRepository(encoded_ar_repo.id())\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n eaSa:\n type: gcp:projects:ServiceIdentity\n name: ea_sa\n properties:\n project: ${projectGetProject.projectId}\n service: eventarc.googleapis.com\n unencoded-ar-repo:\n type: gcp:artifactregistry:Repository\n properties:\n repositoryId: ar-repo\n location: us-central1\n format: DOCKER\n binding:\n type: gcp:artifactregistry:RepositoryIamBinding\n properties:\n location: ${[\"encoded-ar-repo\"].location}\n repository: ${[\"encoded-ar-repo\"].name}\n role: roles/artifactregistry.admin\n members:\n - serviceAccount:service-${projectGetProject.number}@gcf-admin-robot.iam.gserviceaccount.com\n gcfCmekKeyuser:\n type: gcp:kms:CryptoKeyIAMBinding\n name: gcf_cmek_keyuser\n properties:\n cryptoKeyId: cmek-key\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n members:\n - serviceAccount:service-${projectGetProject.number}@gcf-admin-robot.iam.gserviceaccount.com\n - serviceAccount:service-${projectGetProject.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n - serviceAccount:service-${projectGetProject.number}@gs-project-accounts.iam.gserviceaccount.com\n - serviceAccount:service-${projectGetProject.number}@serverless-robot-prod.iam.gserviceaccount.com\n - serviceAccount:${eaSa.email}\n encoded-ar-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: cmek-repo\n format: DOCKER\n kmsKeyName: cmek-key\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-cmek\n location: us-central1\n description: CMEK function\n kmsKeyName: cmek-key\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n dockerRepository: ${[\"encoded-ar-repo\"].id}\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\nvariables:\n project: my-project-name\n projectGetProject:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nfunction can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/functions/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, function can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudfunctionsv2/function:Function default projects/{{project}}/locations/{{location}}/functions/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudfunctionsv2/function:Function default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudfunctionsv2/function:Function default {{location}}/{{name}}\n```\n\n", "properties": { "buildConfig": { "$ref": "#/types/gcp:cloudfunctionsv2/FunctionBuildConfig:FunctionBuildConfig", @@ -141805,6 +142125,10 @@ "operation": { "type": "string" }, + "params": { + "$ref": "#/types/gcp:compute/InstanceGroupManagerParams:InstanceGroupManagerParams", + "description": "Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert).\n\n- - -\n" + }, "project": { "type": "string", "description": "The ID of the project in which the resource belongs. If it\nis not provided, the provider project is used.\n" @@ -141854,7 +142178,7 @@ }, "updatePolicy": { "$ref": "#/types/gcp:compute/InstanceGroupManagerUpdatePolicy:InstanceGroupManagerUpdatePolicy", - "description": "The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch)\n\n- - -\n" + "description": "The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch).\n" }, "versions": { "type": "array", @@ -141930,6 +142254,11 @@ }, "description": "The named port configuration. See the section below\nfor details on configuration.\n" }, + "params": { + "$ref": "#/types/gcp:compute/InstanceGroupManagerParams:InstanceGroupManagerParams", + "description": "Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert).\n\n- - -\n", + "willReplaceOnChanges": true + }, "project": { "type": "string", "description": "The ID of the project in which the resource belongs. If it\nis not provided, the provider project is used.\n", @@ -141969,7 +142298,7 @@ }, "updatePolicy": { "$ref": "#/types/gcp:compute/InstanceGroupManagerUpdatePolicy:InstanceGroupManagerUpdatePolicy", - "description": "The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch)\n\n- - -\n" + "description": "The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch).\n" }, "versions": { "type": "array", @@ -142051,6 +142380,11 @@ "operation": { "type": "string" }, + "params": { + "$ref": "#/types/gcp:compute/InstanceGroupManagerParams:InstanceGroupManagerParams", + "description": "Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert).\n\n- - -\n", + "willReplaceOnChanges": true + }, "project": { "type": "string", "description": "The ID of the project in which the resource belongs. If it\nis not provided, the provider project is used.\n", @@ -142101,7 +142435,7 @@ }, "updatePolicy": { "$ref": "#/types/gcp:compute/InstanceGroupManagerUpdatePolicy:InstanceGroupManagerUpdatePolicy", - "description": "The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch)\n\n- - -\n" + "description": "The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch).\n" }, "versions": { "type": "array", @@ -149340,6 +149674,10 @@ }, "description": "The named port configuration. See the section below\nfor details on configuration.\n" }, + "params": { + "$ref": "#/types/gcp:compute/RegionInstanceGroupManagerParams:RegionInstanceGroupManagerParams", + "description": "Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert).\n\n- - -\n" + }, "project": { "type": "string", "description": "The ID of the project in which the resource belongs. If it\nis not provided, the provider project is used.\n" @@ -149364,7 +149702,7 @@ "items": { "$ref": "#/types/gcp:compute/RegionInstanceGroupManagerStatefulExternalIp:RegionInstanceGroupManagerStatefulExternalIp" }, - "description": "External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below.\n\n- - -\n" + "description": "External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below.\n" }, "statefulInternalIps": { "type": "array", @@ -149479,6 +149817,11 @@ }, "description": "The named port configuration. See the section below\nfor details on configuration.\n" }, + "params": { + "$ref": "#/types/gcp:compute/RegionInstanceGroupManagerParams:RegionInstanceGroupManagerParams", + "description": "Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert).\n\n- - -\n", + "willReplaceOnChanges": true + }, "project": { "type": "string", "description": "The ID of the project in which the resource belongs. If it\nis not provided, the provider project is used.\n", @@ -149501,7 +149844,7 @@ "items": { "$ref": "#/types/gcp:compute/RegionInstanceGroupManagerStatefulExternalIp:RegionInstanceGroupManagerStatefulExternalIp" }, - "description": "External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below.\n\n- - -\n" + "description": "External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below.\n" }, "statefulInternalIps": { "type": "array", @@ -149610,6 +149953,11 @@ }, "description": "The named port configuration. See the section below\nfor details on configuration.\n" }, + "params": { + "$ref": "#/types/gcp:compute/RegionInstanceGroupManagerParams:RegionInstanceGroupManagerParams", + "description": "Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert).\n\n- - -\n", + "willReplaceOnChanges": true + }, "project": { "type": "string", "description": "The ID of the project in which the resource belongs. If it\nis not provided, the provider project is used.\n", @@ -149636,7 +149984,7 @@ "items": { "$ref": "#/types/gcp:compute/RegionInstanceGroupManagerStatefulExternalIp:RegionInstanceGroupManagerStatefulExternalIp" }, - "description": "External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below.\n\n- - -\n" + "description": "External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below.\n" }, "statefulInternalIps": { "type": "array", @@ -182879,7 +183227,7 @@ }, "name": { "type": "string", - "description": "A server defined name for this index. Format:\n`projects/{{project_id}}/databases/{{database_id}}/documents/{{path}}/{{document_id}}`\n" + "description": "A server defined name for this document. Format:\n`projects/{{project_id}}/databases/{{database_id}}/documents/{{path}}/{{document_id}}`\n" }, "path": { "type": "string", @@ -182957,7 +183305,7 @@ }, "name": { "type": "string", - "description": "A server defined name for this index. Format:\n`projects/{{project_id}}/databases/{{database_id}}/documents/{{path}}/{{document_id}}`\n" + "description": "A server defined name for this document. Format:\n`projects/{{project_id}}/databases/{{database_id}}/documents/{{path}}/{{document_id}}`\n" }, "path": { "type": "string", @@ -214497,6 +214845,71 @@ "type": "object" } }, + "gcp:projects/iamMemberRemove:IamMemberRemove": { + "description": "Ensures that a member:role pairing does not exist in a project's IAM policy. \n\nOn create, this resource will modify the policy to remove the `member` from the\n`role`. If the membership is ever re-added, the next refresh will clear this\nresource from state, proposing re-adding it to correct the membership. Import is\nnot supported- this resource will acquire the current policy and modify it as\npart of creating the resource.\n\nThis resource will conflict with `gcp.projects.IAMPolicy` and\n`gcp.projects.IAMBinding` resources that share a role, as well as\n`gcp.projects.IAMMember` resources that target the same membership. When\nmultiple resources conflict the final state is not guaranteed to include or omit\nthe membership. Subsequent `pulumi up` calls will always show a diff\nuntil the configuration is corrected.\n\nFor more information see\n[the official documentation](https://cloud.google.com/iam/docs/granting-changing-revoking-access)\nand\n[API reference](https://cloud.google.com/resource-manager/reference/rest/v1/projects/setIamPolicy).\n\n", + "properties": { + "member": { + "type": "string", + "description": "The IAM principal that should not have the target role.\nEach entry can have one of the following values:\n* **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n* **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n* **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.\n* **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.\n" + }, + "project": { + "type": "string", + "description": "The project id of the target project.\n" + }, + "role": { + "type": "string", + "description": "The target role that should be removed.\n" + } + }, + "required": [ + "member", + "project", + "role" + ], + "inputProperties": { + "member": { + "type": "string", + "description": "The IAM principal that should not have the target role.\nEach entry can have one of the following values:\n* **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n* **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n* **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.\n* **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.\n", + "willReplaceOnChanges": true + }, + "project": { + "type": "string", + "description": "The project id of the target project.\n", + "willReplaceOnChanges": true + }, + "role": { + "type": "string", + "description": "The target role that should be removed.\n", + "willReplaceOnChanges": true + } + }, + "requiredInputs": [ + "member", + "project", + "role" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering IamMemberRemove resources.\n", + "properties": { + "member": { + "type": "string", + "description": "The IAM principal that should not have the target role.\nEach entry can have one of the following values:\n* **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n* **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n* **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.\n* **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.\n", + "willReplaceOnChanges": true + }, + "project": { + "type": "string", + "description": "The project id of the target project.\n", + "willReplaceOnChanges": true + }, + "role": { + "type": "string", + "description": "The target role that should be removed.\n", + "willReplaceOnChanges": true + } + }, + "type": "object" + } + }, "gcp:projects/organizationPolicy:OrganizationPolicy": { "description": "Allows management of Organization Policies for a Google Cloud Project.\n\n\u003e **Warning:** This resource has been superseded by `gcp.orgpolicy.Policy`. `gcp.orgpolicy.Policy` uses Organization Policy API V2 instead of Cloud Resource Manager API V1 and it supports additional features such as tags and conditions.\n\nTo get more information about Organization Policies, see:\n\n* [API documentation](https://cloud.google.com/resource-manager/reference/rest/v1/projects/setOrgPolicy)\n* How-to Guides\n * [Introduction to the Organization Policy Service](https://cloud.google.com/resource-manager/docs/organization-policy/overview)\n\n## Example Usage\n\nTo set policy with a [boolean constraint](https://cloud.google.com/resource-manager/docs/organization-policy/quickstart-boolean-constraints):\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst serialPortPolicy = new gcp.projects.OrganizationPolicy(\"serial_port_policy\", {\n project: \"your-project-id\",\n constraint: \"compute.disableSerialPortAccess\",\n booleanPolicy: {\n enforced: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nserial_port_policy = gcp.projects.OrganizationPolicy(\"serial_port_policy\",\n project=\"your-project-id\",\n constraint=\"compute.disableSerialPortAccess\",\n boolean_policy=gcp.projects.OrganizationPolicyBooleanPolicyArgs(\n enforced=True,\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var serialPortPolicy = new Gcp.Projects.OrganizationPolicy(\"serial_port_policy\", new()\n {\n Project = \"your-project-id\",\n Constraint = \"compute.disableSerialPortAccess\",\n BooleanPolicy = new Gcp.Projects.Inputs.OrganizationPolicyBooleanPolicyArgs\n {\n Enforced = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := projects.NewOrganizationPolicy(ctx, \"serial_port_policy\", \u0026projects.OrganizationPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tConstraint: pulumi.String(\"compute.disableSerialPortAccess\"),\n\t\t\tBooleanPolicy: \u0026projects.OrganizationPolicyBooleanPolicyArgs{\n\t\t\t\tEnforced: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.projects.OrganizationPolicy;\nimport com.pulumi.gcp.projects.OrganizationPolicyArgs;\nimport com.pulumi.gcp.projects.inputs.OrganizationPolicyBooleanPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var serialPortPolicy = new OrganizationPolicy(\"serialPortPolicy\", OrganizationPolicyArgs.builder() \n .project(\"your-project-id\")\n .constraint(\"compute.disableSerialPortAccess\")\n .booleanPolicy(OrganizationPolicyBooleanPolicyArgs.builder()\n .enforced(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n serialPortPolicy:\n type: gcp:projects:OrganizationPolicy\n name: serial_port_policy\n properties:\n project: your-project-id\n constraint: compute.disableSerialPortAccess\n booleanPolicy:\n enforced: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\nTo set a policy with a [list constraint](https://cloud.google.com/resource-manager/docs/organization-policy/quickstart-list-constraints):\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst servicesPolicy = new gcp.projects.OrganizationPolicy(\"services_policy\", {\n project: \"your-project-id\",\n constraint: \"serviceuser.services\",\n listPolicy: {\n allow: {\n all: true,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nservices_policy = gcp.projects.OrganizationPolicy(\"services_policy\",\n project=\"your-project-id\",\n constraint=\"serviceuser.services\",\n list_policy=gcp.projects.OrganizationPolicyListPolicyArgs(\n allow=gcp.projects.OrganizationPolicyListPolicyAllowArgs(\n all=True,\n ),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var servicesPolicy = new Gcp.Projects.OrganizationPolicy(\"services_policy\", new()\n {\n Project = \"your-project-id\",\n Constraint = \"serviceuser.services\",\n ListPolicy = new Gcp.Projects.Inputs.OrganizationPolicyListPolicyArgs\n {\n Allow = new Gcp.Projects.Inputs.OrganizationPolicyListPolicyAllowArgs\n {\n All = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := projects.NewOrganizationPolicy(ctx, \"services_policy\", \u0026projects.OrganizationPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tConstraint: pulumi.String(\"serviceuser.services\"),\n\t\t\tListPolicy: \u0026projects.OrganizationPolicyListPolicyArgs{\n\t\t\t\tAllow: \u0026projects.OrganizationPolicyListPolicyAllowArgs{\n\t\t\t\t\tAll: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.projects.OrganizationPolicy;\nimport com.pulumi.gcp.projects.OrganizationPolicyArgs;\nimport com.pulumi.gcp.projects.inputs.OrganizationPolicyListPolicyArgs;\nimport com.pulumi.gcp.projects.inputs.OrganizationPolicyListPolicyAllowArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var servicesPolicy = new OrganizationPolicy(\"servicesPolicy\", OrganizationPolicyArgs.builder() \n .project(\"your-project-id\")\n .constraint(\"serviceuser.services\")\n .listPolicy(OrganizationPolicyListPolicyArgs.builder()\n .allow(OrganizationPolicyListPolicyAllowArgs.builder()\n .all(true)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n servicesPolicy:\n type: gcp:projects:OrganizationPolicy\n name: services_policy\n properties:\n project: your-project-id\n constraint: serviceuser.services\n listPolicy:\n allow:\n all: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\nOr to deny some services, use the following instead:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst servicesPolicy = new gcp.projects.OrganizationPolicy(\"services_policy\", {\n project: \"your-project-id\",\n constraint: \"serviceuser.services\",\n listPolicy: {\n suggestedValue: \"compute.googleapis.com\",\n deny: {\n values: [\"cloudresourcemanager.googleapis.com\"],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nservices_policy = gcp.projects.OrganizationPolicy(\"services_policy\",\n project=\"your-project-id\",\n constraint=\"serviceuser.services\",\n list_policy=gcp.projects.OrganizationPolicyListPolicyArgs(\n suggested_value=\"compute.googleapis.com\",\n deny=gcp.projects.OrganizationPolicyListPolicyDenyArgs(\n values=[\"cloudresourcemanager.googleapis.com\"],\n ),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var servicesPolicy = new Gcp.Projects.OrganizationPolicy(\"services_policy\", new()\n {\n Project = \"your-project-id\",\n Constraint = \"serviceuser.services\",\n ListPolicy = new Gcp.Projects.Inputs.OrganizationPolicyListPolicyArgs\n {\n SuggestedValue = \"compute.googleapis.com\",\n Deny = new Gcp.Projects.Inputs.OrganizationPolicyListPolicyDenyArgs\n {\n Values = new[]\n {\n \"cloudresourcemanager.googleapis.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := projects.NewOrganizationPolicy(ctx, \"services_policy\", \u0026projects.OrganizationPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tConstraint: pulumi.String(\"serviceuser.services\"),\n\t\t\tListPolicy: \u0026projects.OrganizationPolicyListPolicyArgs{\n\t\t\t\tSuggestedValue: pulumi.String(\"compute.googleapis.com\"),\n\t\t\t\tDeny: \u0026projects.OrganizationPolicyListPolicyDenyArgs{\n\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloudresourcemanager.googleapis.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.projects.OrganizationPolicy;\nimport com.pulumi.gcp.projects.OrganizationPolicyArgs;\nimport com.pulumi.gcp.projects.inputs.OrganizationPolicyListPolicyArgs;\nimport com.pulumi.gcp.projects.inputs.OrganizationPolicyListPolicyDenyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var servicesPolicy = new OrganizationPolicy(\"servicesPolicy\", OrganizationPolicyArgs.builder() \n .project(\"your-project-id\")\n .constraint(\"serviceuser.services\")\n .listPolicy(OrganizationPolicyListPolicyArgs.builder()\n .suggestedValue(\"compute.googleapis.com\")\n .deny(OrganizationPolicyListPolicyDenyArgs.builder()\n .values(\"cloudresourcemanager.googleapis.com\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n servicesPolicy:\n type: gcp:projects:OrganizationPolicy\n name: services_policy\n properties:\n project: your-project-id\n constraint: serviceuser.services\n listPolicy:\n suggestedValue: compute.googleapis.com\n deny:\n values:\n - cloudresourcemanager.googleapis.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nTo restore the default project organization policy, use the following instead:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst servicesPolicy = new gcp.projects.OrganizationPolicy(\"services_policy\", {\n project: \"your-project-id\",\n constraint: \"serviceuser.services\",\n restorePolicy: {\n \"default\": true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nservices_policy = gcp.projects.OrganizationPolicy(\"services_policy\",\n project=\"your-project-id\",\n constraint=\"serviceuser.services\",\n restore_policy=gcp.projects.OrganizationPolicyRestorePolicyArgs(\n default=True,\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var servicesPolicy = new Gcp.Projects.OrganizationPolicy(\"services_policy\", new()\n {\n Project = \"your-project-id\",\n Constraint = \"serviceuser.services\",\n RestorePolicy = new Gcp.Projects.Inputs.OrganizationPolicyRestorePolicyArgs\n {\n Default = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := projects.NewOrganizationPolicy(ctx, \"services_policy\", \u0026projects.OrganizationPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tConstraint: pulumi.String(\"serviceuser.services\"),\n\t\t\tRestorePolicy: \u0026projects.OrganizationPolicyRestorePolicyArgs{\n\t\t\t\tDefault: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.projects.OrganizationPolicy;\nimport com.pulumi.gcp.projects.OrganizationPolicyArgs;\nimport com.pulumi.gcp.projects.inputs.OrganizationPolicyRestorePolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var servicesPolicy = new OrganizationPolicy(\"servicesPolicy\", OrganizationPolicyArgs.builder() \n .project(\"your-project-id\")\n .constraint(\"serviceuser.services\")\n .restorePolicy(OrganizationPolicyRestorePolicyArgs.builder()\n .default_(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n servicesPolicy:\n type: gcp:projects:OrganizationPolicy\n name: services_policy\n properties:\n project: your-project-id\n constraint: serviceuser.services\n restorePolicy:\n default: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nProject organization policies can be imported using any of the follow formats:\n\n* `projects/{{project_id}}:constraints/{{constraint}}`\n\n* `{{project_id}}:constraints/{{constraint}}`\n\n* `{{project_id}}:{{constraint}}`\n\nWhen using the `pulumi import` command, project organization policies can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:projects/organizationPolicy:OrganizationPolicy default projects/{{project_id}}:constraints/{{constraint}}\n```\n\n```sh\n$ pulumi import gcp:projects/organizationPolicy:OrganizationPolicy default {{project_id}}:constraints/{{constraint}}\n```\n\n```sh\n$ pulumi import gcp:projects/organizationPolicy:OrganizationPolicy default {{project_id}}:{{constraint}}\n```\n\n", "properties": { @@ -232452,17 +232865,9 @@ }, "description": "Details about a NSX Manager appliance.\nStructure is documented below.\n" }, - "preferredZone": { - "type": "string", - "description": "The preferred single failure domain within a region.\n" - }, "project": { "type": "string" }, - "secondaryZone": { - "type": "string", - "description": "The secondary single failure domain within a region.\n" - }, "state": { "type": "string", "description": "State of the appliance.\nPossible values are: `ACTIVE`, `CREATING`.\n" @@ -232519,18 +232924,10 @@ "description": "Network configuration in the consumer project with which the peering has to be done.\nStructure is documented below.\n", "willReplaceOnChanges": true }, - "preferredZone": { - "type": "string", - "description": "The preferred single failure domain within a region.\n" - }, "project": { "type": "string", "willReplaceOnChanges": true }, - "secondaryZone": { - "type": "string", - "description": "The secondary single failure domain within a region.\n" - }, "type": { "type": "string", "description": "Initial type of the private cloud. Possible values: [\"STANDARD\", \"TIME_LIMITED\", \"STRETCHED\"]\n", @@ -232582,18 +232979,10 @@ }, "description": "Details about a NSX Manager appliance.\nStructure is documented below.\n" }, - "preferredZone": { - "type": "string", - "description": "The preferred single failure domain within a region.\n" - }, "project": { "type": "string", "willReplaceOnChanges": true }, - "secondaryZone": { - "type": "string", - "description": "The secondary single failure domain within a region.\n" - }, "state": { "type": "string", "description": "State of the appliance.\nPossible values are: `ACTIVE`, `CREATING`.\n" @@ -232985,7 +233374,7 @@ } }, "gcp:workbench/instance:Instance": { - "description": "A Workbench instance.\n\n\n\n## Example Usage\n\n### Workbench Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.workbench.Instance(\"instance\", {\n name: \"workbench-instance\",\n location: \"us-west1-a\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.workbench.Instance(\"instance\",\n name=\"workbench-instance\",\n location=\"us-west1-a\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Workbench.Instance(\"instance\", new()\n {\n Name = \"workbench-instance\",\n Location = \"us-west1-a\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workbench\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := workbench.NewInstance(ctx, \"instance\", \u0026workbench.InstanceArgs{\n\t\t\tName: pulumi.String(\"workbench-instance\"),\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.workbench.Instance;\nimport com.pulumi.gcp.workbench.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var instance = new Instance(\"instance\", InstanceArgs.builder() \n .name(\"workbench-instance\")\n .location(\"us-west1-a\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:workbench:Instance\n properties:\n name: workbench-instance\n location: us-west1-a\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workbench Instance Basic Container\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.workbench.Instance(\"instance\", {\n name: \"workbench-instance\",\n location: \"us-west1-a\",\n gceSetup: {\n containerImage: {\n repository: \"us-docker.pkg.dev/deeplearning-platform-release/gcr.io/base-cu113.py310\",\n tag: \"latest\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.workbench.Instance(\"instance\",\n name=\"workbench-instance\",\n location=\"us-west1-a\",\n gce_setup=gcp.workbench.InstanceGceSetupArgs(\n container_image=gcp.workbench.InstanceGceSetupContainerImageArgs(\n repository=\"us-docker.pkg.dev/deeplearning-platform-release/gcr.io/base-cu113.py310\",\n tag=\"latest\",\n ),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Workbench.Instance(\"instance\", new()\n {\n Name = \"workbench-instance\",\n Location = \"us-west1-a\",\n GceSetup = new Gcp.Workbench.Inputs.InstanceGceSetupArgs\n {\n ContainerImage = new Gcp.Workbench.Inputs.InstanceGceSetupContainerImageArgs\n {\n Repository = \"us-docker.pkg.dev/deeplearning-platform-release/gcr.io/base-cu113.py310\",\n Tag = \"latest\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workbench\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := workbench.NewInstance(ctx, \"instance\", \u0026workbench.InstanceArgs{\n\t\t\tName: pulumi.String(\"workbench-instance\"),\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tGceSetup: \u0026workbench.InstanceGceSetupArgs{\n\t\t\t\tContainerImage: \u0026workbench.InstanceGceSetupContainerImageArgs{\n\t\t\t\t\tRepository: pulumi.String(\"us-docker.pkg.dev/deeplearning-platform-release/gcr.io/base-cu113.py310\"),\n\t\t\t\t\tTag: pulumi.String(\"latest\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.workbench.Instance;\nimport com.pulumi.gcp.workbench.InstanceArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupContainerImageArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var instance = new Instance(\"instance\", InstanceArgs.builder() \n .name(\"workbench-instance\")\n .location(\"us-west1-a\")\n .gceSetup(InstanceGceSetupArgs.builder()\n .containerImage(InstanceGceSetupContainerImageArgs.builder()\n .repository(\"us-docker.pkg.dev/deeplearning-platform-release/gcr.io/base-cu113.py310\")\n .tag(\"latest\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:workbench:Instance\n properties:\n name: workbench-instance\n location: us-west1-a\n gceSetup:\n containerImage:\n repository: us-docker.pkg.dev/deeplearning-platform-release/gcr.io/base-cu113.py310\n tag: latest\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workbench Instance Basic Gpu\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.workbench.Instance(\"instance\", {\n name: \"workbench-instance\",\n location: \"us-central1-a\",\n gceSetup: {\n machineType: \"n1-standard-1\",\n acceleratorConfigs: [{\n type: \"NVIDIA_TESLA_T4\",\n coreCount: \"1\",\n }],\n vmImage: {\n project: \"deeplearning-platform-release\",\n family: \"tf-latest-gpu\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.workbench.Instance(\"instance\",\n name=\"workbench-instance\",\n location=\"us-central1-a\",\n gce_setup=gcp.workbench.InstanceGceSetupArgs(\n machine_type=\"n1-standard-1\",\n accelerator_configs=[gcp.workbench.InstanceGceSetupAcceleratorConfigArgs(\n type=\"NVIDIA_TESLA_T4\",\n core_count=\"1\",\n )],\n vm_image=gcp.workbench.InstanceGceSetupVmImageArgs(\n project=\"deeplearning-platform-release\",\n family=\"tf-latest-gpu\",\n ),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Workbench.Instance(\"instance\", new()\n {\n Name = \"workbench-instance\",\n Location = \"us-central1-a\",\n GceSetup = new Gcp.Workbench.Inputs.InstanceGceSetupArgs\n {\n MachineType = \"n1-standard-1\",\n AcceleratorConfigs = new[]\n {\n new Gcp.Workbench.Inputs.InstanceGceSetupAcceleratorConfigArgs\n {\n Type = \"NVIDIA_TESLA_T4\",\n CoreCount = \"1\",\n },\n },\n VmImage = new Gcp.Workbench.Inputs.InstanceGceSetupVmImageArgs\n {\n Project = \"deeplearning-platform-release\",\n Family = \"tf-latest-gpu\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workbench\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := workbench.NewInstance(ctx, \"instance\", \u0026workbench.InstanceArgs{\n\t\t\tName: pulumi.String(\"workbench-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tGceSetup: \u0026workbench.InstanceGceSetupArgs{\n\t\t\t\tMachineType: pulumi.String(\"n1-standard-1\"),\n\t\t\t\tAcceleratorConfigs: workbench.InstanceGceSetupAcceleratorConfigArray{\n\t\t\t\t\t\u0026workbench.InstanceGceSetupAcceleratorConfigArgs{\n\t\t\t\t\t\tType: pulumi.String(\"NVIDIA_TESLA_T4\"),\n\t\t\t\t\t\tCoreCount: pulumi.String(\"1\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tVmImage: \u0026workbench.InstanceGceSetupVmImageArgs{\n\t\t\t\t\tProject: pulumi.String(\"deeplearning-platform-release\"),\n\t\t\t\t\tFamily: pulumi.String(\"tf-latest-gpu\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.workbench.Instance;\nimport com.pulumi.gcp.workbench.InstanceArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupVmImageArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var instance = new Instance(\"instance\", InstanceArgs.builder() \n .name(\"workbench-instance\")\n .location(\"us-central1-a\")\n .gceSetup(InstanceGceSetupArgs.builder()\n .machineType(\"n1-standard-1\")\n .acceleratorConfigs(InstanceGceSetupAcceleratorConfigArgs.builder()\n .type(\"NVIDIA_TESLA_T4\")\n .coreCount(1)\n .build())\n .vmImage(InstanceGceSetupVmImageArgs.builder()\n .project(\"deeplearning-platform-release\")\n .family(\"tf-latest-gpu\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:workbench:Instance\n properties:\n name: workbench-instance\n location: us-central1-a\n gceSetup:\n machineType: n1-standard-1\n acceleratorConfigs:\n - type: NVIDIA_TESLA_T4\n coreCount: 1\n vmImage:\n project: deeplearning-platform-release\n family: tf-latest-gpu\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workbench Instance Labels Stopped\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.workbench.Instance(\"instance\", {\n name: \"workbench-instance\",\n location: \"us-central1-a\",\n gceSetup: {\n machineType: \"e2-standard-4\",\n shieldedInstanceConfig: {\n enableSecureBoot: false,\n enableVtpm: false,\n enableIntegrityMonitoring: false,\n },\n serviceAccounts: [{\n email: \"my@service-account.com\",\n }],\n metadata: {\n terraform: \"true\",\n },\n },\n instanceOwners: [\"my@service-account.com\"],\n labels: {\n k: \"val\",\n },\n desiredState: \"STOPPED\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.workbench.Instance(\"instance\",\n name=\"workbench-instance\",\n location=\"us-central1-a\",\n gce_setup=gcp.workbench.InstanceGceSetupArgs(\n machine_type=\"e2-standard-4\",\n shielded_instance_config=gcp.workbench.InstanceGceSetupShieldedInstanceConfigArgs(\n enable_secure_boot=False,\n enable_vtpm=False,\n enable_integrity_monitoring=False,\n ),\n service_accounts=[gcp.workbench.InstanceGceSetupServiceAccountArgs(\n email=\"my@service-account.com\",\n )],\n metadata={\n \"terraform\": \"true\",\n },\n ),\n instance_owners=[\"my@service-account.com\"],\n labels={\n \"k\": \"val\",\n },\n desired_state=\"STOPPED\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Workbench.Instance(\"instance\", new()\n {\n Name = \"workbench-instance\",\n Location = \"us-central1-a\",\n GceSetup = new Gcp.Workbench.Inputs.InstanceGceSetupArgs\n {\n MachineType = \"e2-standard-4\",\n ShieldedInstanceConfig = new Gcp.Workbench.Inputs.InstanceGceSetupShieldedInstanceConfigArgs\n {\n EnableSecureBoot = false,\n EnableVtpm = false,\n EnableIntegrityMonitoring = false,\n },\n ServiceAccounts = new[]\n {\n new Gcp.Workbench.Inputs.InstanceGceSetupServiceAccountArgs\n {\n Email = \"my@service-account.com\",\n },\n },\n Metadata = \n {\n { \"terraform\", \"true\" },\n },\n },\n InstanceOwners = new[]\n {\n \"my@service-account.com\",\n },\n Labels = \n {\n { \"k\", \"val\" },\n },\n DesiredState = \"STOPPED\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workbench\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := workbench.NewInstance(ctx, \"instance\", \u0026workbench.InstanceArgs{\n\t\t\tName: pulumi.String(\"workbench-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tGceSetup: \u0026workbench.InstanceGceSetupArgs{\n\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\tShieldedInstanceConfig: \u0026workbench.InstanceGceSetupShieldedInstanceConfigArgs{\n\t\t\t\t\tEnableSecureBoot: pulumi.Bool(false),\n\t\t\t\t\tEnableVtpm: pulumi.Bool(false),\n\t\t\t\t\tEnableIntegrityMonitoring: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\tServiceAccounts: workbench.InstanceGceSetupServiceAccountArray{\n\t\t\t\t\t\u0026workbench.InstanceGceSetupServiceAccountArgs{\n\t\t\t\t\t\tEmail: pulumi.String(\"my@service-account.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\t\"terraform\": pulumi.String(\"true\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tInstanceOwners: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"my@service-account.com\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"k\": pulumi.String(\"val\"),\n\t\t\t},\n\t\t\tDesiredState: pulumi.String(\"STOPPED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.workbench.Instance;\nimport com.pulumi.gcp.workbench.InstanceArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupShieldedInstanceConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var instance = new Instance(\"instance\", InstanceArgs.builder() \n .name(\"workbench-instance\")\n .location(\"us-central1-a\")\n .gceSetup(InstanceGceSetupArgs.builder()\n .machineType(\"e2-standard-4\")\n .shieldedInstanceConfig(InstanceGceSetupShieldedInstanceConfigArgs.builder()\n .enableSecureBoot(false)\n .enableVtpm(false)\n .enableIntegrityMonitoring(false)\n .build())\n .serviceAccounts(InstanceGceSetupServiceAccountArgs.builder()\n .email(\"my@service-account.com\")\n .build())\n .metadata(Map.of(\"terraform\", \"true\"))\n .build())\n .instanceOwners(\"my@service-account.com\")\n .labels(Map.of(\"k\", \"val\"))\n .desiredState(\"STOPPED\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:workbench:Instance\n properties:\n name: workbench-instance\n location: us-central1-a\n gceSetup:\n machineType: e2-standard-4\n shieldedInstanceConfig:\n enableSecureBoot: false\n enableVtpm: false\n enableIntegrityMonitoring: false\n serviceAccounts:\n - email: my@service-account.com\n metadata:\n terraform: 'true'\n instanceOwners:\n - my@service-account.com\n labels:\n k: val\n desiredState: STOPPED\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workbench Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myNetwork = new gcp.compute.Network(\"my_network\", {\n name: \"wbi-test-default\",\n autoCreateSubnetworks: false,\n});\nconst mySubnetwork = new gcp.compute.Subnetwork(\"my_subnetwork\", {\n name: \"wbi-test-default\",\n network: myNetwork.id,\n region: \"us-central1\",\n ipCidrRange: \"10.0.1.0/24\",\n});\nconst instance = new gcp.workbench.Instance(\"instance\", {\n name: \"workbench-instance\",\n location: \"us-central1-a\",\n gceSetup: {\n machineType: \"n1-standard-4\",\n acceleratorConfigs: [{\n type: \"NVIDIA_TESLA_T4\",\n coreCount: \"1\",\n }],\n shieldedInstanceConfig: {\n enableSecureBoot: true,\n enableVtpm: true,\n enableIntegrityMonitoring: true,\n },\n disablePublicIp: false,\n serviceAccounts: [{\n email: \"my@service-account.com\",\n }],\n bootDisk: {\n diskSizeGb: \"310\",\n diskType: \"PD_SSD\",\n diskEncryption: \"CMEK\",\n kmsKey: \"my-crypto-key\",\n },\n dataDisks: {\n diskSizeGb: \"330\",\n diskType: \"PD_SSD\",\n diskEncryption: \"CMEK\",\n kmsKey: \"my-crypto-key\",\n },\n networkInterfaces: [{\n network: myNetwork.id,\n subnet: mySubnetwork.id,\n nicType: \"GVNIC\",\n }],\n metadata: {\n terraform: \"true\",\n },\n enableIpForwarding: true,\n tags: [\n \"abc\",\n \"def\",\n ],\n },\n disableProxyAccess: true,\n instanceOwners: [\"my@service-account.com\"],\n labels: {\n k: \"val\",\n },\n desiredState: \"ACTIVE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_network = gcp.compute.Network(\"my_network\",\n name=\"wbi-test-default\",\n auto_create_subnetworks=False)\nmy_subnetwork = gcp.compute.Subnetwork(\"my_subnetwork\",\n name=\"wbi-test-default\",\n network=my_network.id,\n region=\"us-central1\",\n ip_cidr_range=\"10.0.1.0/24\")\ninstance = gcp.workbench.Instance(\"instance\",\n name=\"workbench-instance\",\n location=\"us-central1-a\",\n gce_setup=gcp.workbench.InstanceGceSetupArgs(\n machine_type=\"n1-standard-4\",\n accelerator_configs=[gcp.workbench.InstanceGceSetupAcceleratorConfigArgs(\n type=\"NVIDIA_TESLA_T4\",\n core_count=\"1\",\n )],\n shielded_instance_config=gcp.workbench.InstanceGceSetupShieldedInstanceConfigArgs(\n enable_secure_boot=True,\n enable_vtpm=True,\n enable_integrity_monitoring=True,\n ),\n disable_public_ip=False,\n service_accounts=[gcp.workbench.InstanceGceSetupServiceAccountArgs(\n email=\"my@service-account.com\",\n )],\n boot_disk=gcp.workbench.InstanceGceSetupBootDiskArgs(\n disk_size_gb=\"310\",\n disk_type=\"PD_SSD\",\n disk_encryption=\"CMEK\",\n kms_key=\"my-crypto-key\",\n ),\n data_disks=gcp.workbench.InstanceGceSetupDataDisksArgs(\n disk_size_gb=\"330\",\n disk_type=\"PD_SSD\",\n disk_encryption=\"CMEK\",\n kms_key=\"my-crypto-key\",\n ),\n network_interfaces=[gcp.workbench.InstanceGceSetupNetworkInterfaceArgs(\n network=my_network.id,\n subnet=my_subnetwork.id,\n nic_type=\"GVNIC\",\n )],\n metadata={\n \"terraform\": \"true\",\n },\n enable_ip_forwarding=True,\n tags=[\n \"abc\",\n \"def\",\n ],\n ),\n disable_proxy_access=True,\n instance_owners=[\"my@service-account.com\"],\n labels={\n \"k\": \"val\",\n },\n desired_state=\"ACTIVE\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myNetwork = new Gcp.Compute.Network(\"my_network\", new()\n {\n Name = \"wbi-test-default\",\n AutoCreateSubnetworks = false,\n });\n\n var mySubnetwork = new Gcp.Compute.Subnetwork(\"my_subnetwork\", new()\n {\n Name = \"wbi-test-default\",\n Network = myNetwork.Id,\n Region = \"us-central1\",\n IpCidrRange = \"10.0.1.0/24\",\n });\n\n var instance = new Gcp.Workbench.Instance(\"instance\", new()\n {\n Name = \"workbench-instance\",\n Location = \"us-central1-a\",\n GceSetup = new Gcp.Workbench.Inputs.InstanceGceSetupArgs\n {\n MachineType = \"n1-standard-4\",\n AcceleratorConfigs = new[]\n {\n new Gcp.Workbench.Inputs.InstanceGceSetupAcceleratorConfigArgs\n {\n Type = \"NVIDIA_TESLA_T4\",\n CoreCount = \"1\",\n },\n },\n ShieldedInstanceConfig = new Gcp.Workbench.Inputs.InstanceGceSetupShieldedInstanceConfigArgs\n {\n EnableSecureBoot = true,\n EnableVtpm = true,\n EnableIntegrityMonitoring = true,\n },\n DisablePublicIp = false,\n ServiceAccounts = new[]\n {\n new Gcp.Workbench.Inputs.InstanceGceSetupServiceAccountArgs\n {\n Email = \"my@service-account.com\",\n },\n },\n BootDisk = new Gcp.Workbench.Inputs.InstanceGceSetupBootDiskArgs\n {\n DiskSizeGb = \"310\",\n DiskType = \"PD_SSD\",\n DiskEncryption = \"CMEK\",\n KmsKey = \"my-crypto-key\",\n },\n DataDisks = new Gcp.Workbench.Inputs.InstanceGceSetupDataDisksArgs\n {\n DiskSizeGb = \"330\",\n DiskType = \"PD_SSD\",\n DiskEncryption = \"CMEK\",\n KmsKey = \"my-crypto-key\",\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Workbench.Inputs.InstanceGceSetupNetworkInterfaceArgs\n {\n Network = myNetwork.Id,\n Subnet = mySubnetwork.Id,\n NicType = \"GVNIC\",\n },\n },\n Metadata = \n {\n { \"terraform\", \"true\" },\n },\n EnableIpForwarding = true,\n Tags = new[]\n {\n \"abc\",\n \"def\",\n },\n },\n DisableProxyAccess = true,\n InstanceOwners = new[]\n {\n \"my@service-account.com\",\n },\n Labels = \n {\n { \"k\", \"val\" },\n },\n DesiredState = \"ACTIVE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workbench\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyNetwork, err := compute.NewNetwork(ctx, \"my_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"wbi-test-default\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmySubnetwork, err := compute.NewSubnetwork(ctx, \"my_subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"wbi-test-default\"),\n\t\t\tNetwork: myNetwork.ID(),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.1.0/24\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workbench.NewInstance(ctx, \"instance\", \u0026workbench.InstanceArgs{\n\t\t\tName: pulumi.String(\"workbench-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tGceSetup: \u0026workbench.InstanceGceSetupArgs{\n\t\t\t\tMachineType: pulumi.String(\"n1-standard-4\"),\n\t\t\t\tAcceleratorConfigs: workbench.InstanceGceSetupAcceleratorConfigArray{\n\t\t\t\t\t\u0026workbench.InstanceGceSetupAcceleratorConfigArgs{\n\t\t\t\t\t\tType: pulumi.String(\"NVIDIA_TESLA_T4\"),\n\t\t\t\t\t\tCoreCount: pulumi.String(\"1\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tShieldedInstanceConfig: \u0026workbench.InstanceGceSetupShieldedInstanceConfigArgs{\n\t\t\t\t\tEnableSecureBoot: pulumi.Bool(true),\n\t\t\t\t\tEnableVtpm: pulumi.Bool(true),\n\t\t\t\t\tEnableIntegrityMonitoring: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tDisablePublicIp: pulumi.Bool(false),\n\t\t\t\tServiceAccounts: workbench.InstanceGceSetupServiceAccountArray{\n\t\t\t\t\t\u0026workbench.InstanceGceSetupServiceAccountArgs{\n\t\t\t\t\t\tEmail: pulumi.String(\"my@service-account.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tBootDisk: \u0026workbench.InstanceGceSetupBootDiskArgs{\n\t\t\t\t\tDiskSizeGb: pulumi.String(\"310\"),\n\t\t\t\t\tDiskType: pulumi.String(\"PD_SSD\"),\n\t\t\t\t\tDiskEncryption: pulumi.String(\"CMEK\"),\n\t\t\t\t\tKmsKey: pulumi.String(\"my-crypto-key\"),\n\t\t\t\t},\n\t\t\t\tDataDisks: \u0026workbench.InstanceGceSetupDataDisksArgs{\n\t\t\t\t\tDiskSizeGb: pulumi.String(\"330\"),\n\t\t\t\t\tDiskType: pulumi.String(\"PD_SSD\"),\n\t\t\t\t\tDiskEncryption: pulumi.String(\"CMEK\"),\n\t\t\t\t\tKmsKey: pulumi.String(\"my-crypto-key\"),\n\t\t\t\t},\n\t\t\t\tNetworkInterfaces: workbench.InstanceGceSetupNetworkInterfaceArray{\n\t\t\t\t\t\u0026workbench.InstanceGceSetupNetworkInterfaceArgs{\n\t\t\t\t\t\tNetwork: myNetwork.ID(),\n\t\t\t\t\t\tSubnet: mySubnetwork.ID(),\n\t\t\t\t\t\tNicType: pulumi.String(\"GVNIC\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\t\"terraform\": pulumi.String(\"true\"),\n\t\t\t\t},\n\t\t\t\tEnableIpForwarding: pulumi.Bool(true),\n\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"abc\"),\n\t\t\t\t\tpulumi.String(\"def\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDisableProxyAccess: pulumi.Bool(true),\n\t\t\tInstanceOwners: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"my@service-account.com\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"k\": pulumi.String(\"val\"),\n\t\t\t},\n\t\t\tDesiredState: pulumi.String(\"ACTIVE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workbench.Instance;\nimport com.pulumi.gcp.workbench.InstanceArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupShieldedInstanceConfigArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupBootDiskArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupDataDisksArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var myNetwork = new Network(\"myNetwork\", NetworkArgs.builder() \n .name(\"wbi-test-default\")\n .autoCreateSubnetworks(false)\n .build());\n\n var mySubnetwork = new Subnetwork(\"mySubnetwork\", SubnetworkArgs.builder() \n .name(\"wbi-test-default\")\n .network(myNetwork.id())\n .region(\"us-central1\")\n .ipCidrRange(\"10.0.1.0/24\")\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder() \n .name(\"workbench-instance\")\n .location(\"us-central1-a\")\n .gceSetup(InstanceGceSetupArgs.builder()\n .machineType(\"n1-standard-4\")\n .acceleratorConfigs(InstanceGceSetupAcceleratorConfigArgs.builder()\n .type(\"NVIDIA_TESLA_T4\")\n .coreCount(1)\n .build())\n .shieldedInstanceConfig(InstanceGceSetupShieldedInstanceConfigArgs.builder()\n .enableSecureBoot(true)\n .enableVtpm(true)\n .enableIntegrityMonitoring(true)\n .build())\n .disablePublicIp(false)\n .serviceAccounts(InstanceGceSetupServiceAccountArgs.builder()\n .email(\"my@service-account.com\")\n .build())\n .bootDisk(InstanceGceSetupBootDiskArgs.builder()\n .diskSizeGb(310)\n .diskType(\"PD_SSD\")\n .diskEncryption(\"CMEK\")\n .kmsKey(\"my-crypto-key\")\n .build())\n .dataDisks(InstanceGceSetupDataDisksArgs.builder()\n .diskSizeGb(330)\n .diskType(\"PD_SSD\")\n .diskEncryption(\"CMEK\")\n .kmsKey(\"my-crypto-key\")\n .build())\n .networkInterfaces(InstanceGceSetupNetworkInterfaceArgs.builder()\n .network(myNetwork.id())\n .subnet(mySubnetwork.id())\n .nicType(\"GVNIC\")\n .build())\n .metadata(Map.of(\"terraform\", \"true\"))\n .enableIpForwarding(true)\n .tags( \n \"abc\",\n \"def\")\n .build())\n .disableProxyAccess(\"true\")\n .instanceOwners(\"my@service-account.com\")\n .labels(Map.of(\"k\", \"val\"))\n .desiredState(\"ACTIVE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myNetwork:\n type: gcp:compute:Network\n name: my_network\n properties:\n name: wbi-test-default\n autoCreateSubnetworks: false\n mySubnetwork:\n type: gcp:compute:Subnetwork\n name: my_subnetwork\n properties:\n name: wbi-test-default\n network: ${myNetwork.id}\n region: us-central1\n ipCidrRange: 10.0.1.0/24\n instance:\n type: gcp:workbench:Instance\n properties:\n name: workbench-instance\n location: us-central1-a\n gceSetup:\n machineType: n1-standard-4\n acceleratorConfigs:\n - type: NVIDIA_TESLA_T4\n coreCount: 1\n shieldedInstanceConfig:\n enableSecureBoot: true\n enableVtpm: true\n enableIntegrityMonitoring: true\n disablePublicIp: false\n serviceAccounts:\n - email: my@service-account.com\n bootDisk:\n diskSizeGb: 310\n diskType: PD_SSD\n diskEncryption: CMEK\n kmsKey: my-crypto-key\n dataDisks:\n diskSizeGb: 330\n diskType: PD_SSD\n diskEncryption: CMEK\n kmsKey: my-crypto-key\n networkInterfaces:\n - network: ${myNetwork.id}\n subnet: ${mySubnetwork.id}\n nicType: GVNIC\n metadata:\n terraform: 'true'\n enableIpForwarding: true\n tags:\n - abc\n - def\n disableProxyAccess: 'true'\n instanceOwners:\n - my@service-account.com\n labels:\n k: val\n desiredState: ACTIVE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/instances/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:workbench/instance:Instance default projects/{{project}}/locations/{{location}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:workbench/instance:Instance default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:workbench/instance:Instance default {{location}}/{{name}}\n```\n\n", + "description": "A Workbench instance.\n\n\n\n## Example Usage\n\n### Workbench Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.workbench.Instance(\"instance\", {\n name: \"workbench-instance\",\n location: \"us-west1-a\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.workbench.Instance(\"instance\",\n name=\"workbench-instance\",\n location=\"us-west1-a\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Workbench.Instance(\"instance\", new()\n {\n Name = \"workbench-instance\",\n Location = \"us-west1-a\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workbench\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := workbench.NewInstance(ctx, \"instance\", \u0026workbench.InstanceArgs{\n\t\t\tName: pulumi.String(\"workbench-instance\"),\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.workbench.Instance;\nimport com.pulumi.gcp.workbench.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var instance = new Instance(\"instance\", InstanceArgs.builder() \n .name(\"workbench-instance\")\n .location(\"us-west1-a\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:workbench:Instance\n properties:\n name: workbench-instance\n location: us-west1-a\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workbench Instance Basic Container\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.workbench.Instance(\"instance\", {\n name: \"workbench-instance\",\n location: \"us-west1-a\",\n gceSetup: {\n containerImage: {\n repository: \"us-docker.pkg.dev/deeplearning-platform-release/gcr.io/base-cu113.py310\",\n tag: \"latest\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.workbench.Instance(\"instance\",\n name=\"workbench-instance\",\n location=\"us-west1-a\",\n gce_setup=gcp.workbench.InstanceGceSetupArgs(\n container_image=gcp.workbench.InstanceGceSetupContainerImageArgs(\n repository=\"us-docker.pkg.dev/deeplearning-platform-release/gcr.io/base-cu113.py310\",\n tag=\"latest\",\n ),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Workbench.Instance(\"instance\", new()\n {\n Name = \"workbench-instance\",\n Location = \"us-west1-a\",\n GceSetup = new Gcp.Workbench.Inputs.InstanceGceSetupArgs\n {\n ContainerImage = new Gcp.Workbench.Inputs.InstanceGceSetupContainerImageArgs\n {\n Repository = \"us-docker.pkg.dev/deeplearning-platform-release/gcr.io/base-cu113.py310\",\n Tag = \"latest\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workbench\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := workbench.NewInstance(ctx, \"instance\", \u0026workbench.InstanceArgs{\n\t\t\tName: pulumi.String(\"workbench-instance\"),\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tGceSetup: \u0026workbench.InstanceGceSetupArgs{\n\t\t\t\tContainerImage: \u0026workbench.InstanceGceSetupContainerImageArgs{\n\t\t\t\t\tRepository: pulumi.String(\"us-docker.pkg.dev/deeplearning-platform-release/gcr.io/base-cu113.py310\"),\n\t\t\t\t\tTag: pulumi.String(\"latest\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.workbench.Instance;\nimport com.pulumi.gcp.workbench.InstanceArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupContainerImageArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var instance = new Instance(\"instance\", InstanceArgs.builder() \n .name(\"workbench-instance\")\n .location(\"us-west1-a\")\n .gceSetup(InstanceGceSetupArgs.builder()\n .containerImage(InstanceGceSetupContainerImageArgs.builder()\n .repository(\"us-docker.pkg.dev/deeplearning-platform-release/gcr.io/base-cu113.py310\")\n .tag(\"latest\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:workbench:Instance\n properties:\n name: workbench-instance\n location: us-west1-a\n gceSetup:\n containerImage:\n repository: us-docker.pkg.dev/deeplearning-platform-release/gcr.io/base-cu113.py310\n tag: latest\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workbench Instance Basic Gpu\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.workbench.Instance(\"instance\", {\n name: \"workbench-instance\",\n location: \"us-central1-a\",\n gceSetup: {\n machineType: \"n1-standard-1\",\n acceleratorConfigs: [{\n type: \"NVIDIA_TESLA_T4\",\n coreCount: \"1\",\n }],\n vmImage: {\n project: \"cloud-notebooks-managed\",\n family: \"workbench-instances\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.workbench.Instance(\"instance\",\n name=\"workbench-instance\",\n location=\"us-central1-a\",\n gce_setup=gcp.workbench.InstanceGceSetupArgs(\n machine_type=\"n1-standard-1\",\n accelerator_configs=[gcp.workbench.InstanceGceSetupAcceleratorConfigArgs(\n type=\"NVIDIA_TESLA_T4\",\n core_count=\"1\",\n )],\n vm_image=gcp.workbench.InstanceGceSetupVmImageArgs(\n project=\"cloud-notebooks-managed\",\n family=\"workbench-instances\",\n ),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Workbench.Instance(\"instance\", new()\n {\n Name = \"workbench-instance\",\n Location = \"us-central1-a\",\n GceSetup = new Gcp.Workbench.Inputs.InstanceGceSetupArgs\n {\n MachineType = \"n1-standard-1\",\n AcceleratorConfigs = new[]\n {\n new Gcp.Workbench.Inputs.InstanceGceSetupAcceleratorConfigArgs\n {\n Type = \"NVIDIA_TESLA_T4\",\n CoreCount = \"1\",\n },\n },\n VmImage = new Gcp.Workbench.Inputs.InstanceGceSetupVmImageArgs\n {\n Project = \"cloud-notebooks-managed\",\n Family = \"workbench-instances\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workbench\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := workbench.NewInstance(ctx, \"instance\", \u0026workbench.InstanceArgs{\n\t\t\tName: pulumi.String(\"workbench-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tGceSetup: \u0026workbench.InstanceGceSetupArgs{\n\t\t\t\tMachineType: pulumi.String(\"n1-standard-1\"),\n\t\t\t\tAcceleratorConfigs: workbench.InstanceGceSetupAcceleratorConfigArray{\n\t\t\t\t\t\u0026workbench.InstanceGceSetupAcceleratorConfigArgs{\n\t\t\t\t\t\tType: pulumi.String(\"NVIDIA_TESLA_T4\"),\n\t\t\t\t\t\tCoreCount: pulumi.String(\"1\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tVmImage: \u0026workbench.InstanceGceSetupVmImageArgs{\n\t\t\t\t\tProject: pulumi.String(\"cloud-notebooks-managed\"),\n\t\t\t\t\tFamily: pulumi.String(\"workbench-instances\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.workbench.Instance;\nimport com.pulumi.gcp.workbench.InstanceArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupVmImageArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var instance = new Instance(\"instance\", InstanceArgs.builder() \n .name(\"workbench-instance\")\n .location(\"us-central1-a\")\n .gceSetup(InstanceGceSetupArgs.builder()\n .machineType(\"n1-standard-1\")\n .acceleratorConfigs(InstanceGceSetupAcceleratorConfigArgs.builder()\n .type(\"NVIDIA_TESLA_T4\")\n .coreCount(1)\n .build())\n .vmImage(InstanceGceSetupVmImageArgs.builder()\n .project(\"cloud-notebooks-managed\")\n .family(\"workbench-instances\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:workbench:Instance\n properties:\n name: workbench-instance\n location: us-central1-a\n gceSetup:\n machineType: n1-standard-1\n acceleratorConfigs:\n - type: NVIDIA_TESLA_T4\n coreCount: 1\n vmImage:\n project: cloud-notebooks-managed\n family: workbench-instances\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workbench Instance Labels Stopped\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.workbench.Instance(\"instance\", {\n name: \"workbench-instance\",\n location: \"us-central1-a\",\n gceSetup: {\n machineType: \"e2-standard-4\",\n shieldedInstanceConfig: {\n enableSecureBoot: false,\n enableVtpm: false,\n enableIntegrityMonitoring: false,\n },\n serviceAccounts: [{\n email: \"my@service-account.com\",\n }],\n metadata: {\n terraform: \"true\",\n },\n },\n instanceOwners: [\"my@service-account.com\"],\n labels: {\n k: \"val\",\n },\n desiredState: \"STOPPED\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.workbench.Instance(\"instance\",\n name=\"workbench-instance\",\n location=\"us-central1-a\",\n gce_setup=gcp.workbench.InstanceGceSetupArgs(\n machine_type=\"e2-standard-4\",\n shielded_instance_config=gcp.workbench.InstanceGceSetupShieldedInstanceConfigArgs(\n enable_secure_boot=False,\n enable_vtpm=False,\n enable_integrity_monitoring=False,\n ),\n service_accounts=[gcp.workbench.InstanceGceSetupServiceAccountArgs(\n email=\"my@service-account.com\",\n )],\n metadata={\n \"terraform\": \"true\",\n },\n ),\n instance_owners=[\"my@service-account.com\"],\n labels={\n \"k\": \"val\",\n },\n desired_state=\"STOPPED\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Workbench.Instance(\"instance\", new()\n {\n Name = \"workbench-instance\",\n Location = \"us-central1-a\",\n GceSetup = new Gcp.Workbench.Inputs.InstanceGceSetupArgs\n {\n MachineType = \"e2-standard-4\",\n ShieldedInstanceConfig = new Gcp.Workbench.Inputs.InstanceGceSetupShieldedInstanceConfigArgs\n {\n EnableSecureBoot = false,\n EnableVtpm = false,\n EnableIntegrityMonitoring = false,\n },\n ServiceAccounts = new[]\n {\n new Gcp.Workbench.Inputs.InstanceGceSetupServiceAccountArgs\n {\n Email = \"my@service-account.com\",\n },\n },\n Metadata = \n {\n { \"terraform\", \"true\" },\n },\n },\n InstanceOwners = new[]\n {\n \"my@service-account.com\",\n },\n Labels = \n {\n { \"k\", \"val\" },\n },\n DesiredState = \"STOPPED\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workbench\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := workbench.NewInstance(ctx, \"instance\", \u0026workbench.InstanceArgs{\n\t\t\tName: pulumi.String(\"workbench-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tGceSetup: \u0026workbench.InstanceGceSetupArgs{\n\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\tShieldedInstanceConfig: \u0026workbench.InstanceGceSetupShieldedInstanceConfigArgs{\n\t\t\t\t\tEnableSecureBoot: pulumi.Bool(false),\n\t\t\t\t\tEnableVtpm: pulumi.Bool(false),\n\t\t\t\t\tEnableIntegrityMonitoring: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\tServiceAccounts: workbench.InstanceGceSetupServiceAccountArray{\n\t\t\t\t\t\u0026workbench.InstanceGceSetupServiceAccountArgs{\n\t\t\t\t\t\tEmail: pulumi.String(\"my@service-account.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\t\"terraform\": pulumi.String(\"true\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tInstanceOwners: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"my@service-account.com\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"k\": pulumi.String(\"val\"),\n\t\t\t},\n\t\t\tDesiredState: pulumi.String(\"STOPPED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.workbench.Instance;\nimport com.pulumi.gcp.workbench.InstanceArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupShieldedInstanceConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var instance = new Instance(\"instance\", InstanceArgs.builder() \n .name(\"workbench-instance\")\n .location(\"us-central1-a\")\n .gceSetup(InstanceGceSetupArgs.builder()\n .machineType(\"e2-standard-4\")\n .shieldedInstanceConfig(InstanceGceSetupShieldedInstanceConfigArgs.builder()\n .enableSecureBoot(false)\n .enableVtpm(false)\n .enableIntegrityMonitoring(false)\n .build())\n .serviceAccounts(InstanceGceSetupServiceAccountArgs.builder()\n .email(\"my@service-account.com\")\n .build())\n .metadata(Map.of(\"terraform\", \"true\"))\n .build())\n .instanceOwners(\"my@service-account.com\")\n .labels(Map.of(\"k\", \"val\"))\n .desiredState(\"STOPPED\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:workbench:Instance\n properties:\n name: workbench-instance\n location: us-central1-a\n gceSetup:\n machineType: e2-standard-4\n shieldedInstanceConfig:\n enableSecureBoot: false\n enableVtpm: false\n enableIntegrityMonitoring: false\n serviceAccounts:\n - email: my@service-account.com\n metadata:\n terraform: 'true'\n instanceOwners:\n - my@service-account.com\n labels:\n k: val\n desiredState: STOPPED\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workbench Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myNetwork = new gcp.compute.Network(\"my_network\", {\n name: \"wbi-test-default\",\n autoCreateSubnetworks: false,\n});\nconst mySubnetwork = new gcp.compute.Subnetwork(\"my_subnetwork\", {\n name: \"wbi-test-default\",\n network: myNetwork.id,\n region: \"us-central1\",\n ipCidrRange: \"10.0.1.0/24\",\n});\nconst instance = new gcp.workbench.Instance(\"instance\", {\n name: \"workbench-instance\",\n location: \"us-central1-a\",\n gceSetup: {\n machineType: \"n1-standard-4\",\n acceleratorConfigs: [{\n type: \"NVIDIA_TESLA_T4\",\n coreCount: \"1\",\n }],\n shieldedInstanceConfig: {\n enableSecureBoot: true,\n enableVtpm: true,\n enableIntegrityMonitoring: true,\n },\n disablePublicIp: false,\n serviceAccounts: [{\n email: \"my@service-account.com\",\n }],\n bootDisk: {\n diskSizeGb: \"310\",\n diskType: \"PD_SSD\",\n diskEncryption: \"CMEK\",\n kmsKey: \"my-crypto-key\",\n },\n dataDisks: {\n diskSizeGb: \"330\",\n diskType: \"PD_SSD\",\n diskEncryption: \"CMEK\",\n kmsKey: \"my-crypto-key\",\n },\n networkInterfaces: [{\n network: myNetwork.id,\n subnet: mySubnetwork.id,\n nicType: \"GVNIC\",\n }],\n metadata: {\n terraform: \"true\",\n },\n enableIpForwarding: true,\n tags: [\n \"abc\",\n \"def\",\n ],\n },\n disableProxyAccess: true,\n instanceOwners: [\"my@service-account.com\"],\n labels: {\n k: \"val\",\n },\n desiredState: \"ACTIVE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_network = gcp.compute.Network(\"my_network\",\n name=\"wbi-test-default\",\n auto_create_subnetworks=False)\nmy_subnetwork = gcp.compute.Subnetwork(\"my_subnetwork\",\n name=\"wbi-test-default\",\n network=my_network.id,\n region=\"us-central1\",\n ip_cidr_range=\"10.0.1.0/24\")\ninstance = gcp.workbench.Instance(\"instance\",\n name=\"workbench-instance\",\n location=\"us-central1-a\",\n gce_setup=gcp.workbench.InstanceGceSetupArgs(\n machine_type=\"n1-standard-4\",\n accelerator_configs=[gcp.workbench.InstanceGceSetupAcceleratorConfigArgs(\n type=\"NVIDIA_TESLA_T4\",\n core_count=\"1\",\n )],\n shielded_instance_config=gcp.workbench.InstanceGceSetupShieldedInstanceConfigArgs(\n enable_secure_boot=True,\n enable_vtpm=True,\n enable_integrity_monitoring=True,\n ),\n disable_public_ip=False,\n service_accounts=[gcp.workbench.InstanceGceSetupServiceAccountArgs(\n email=\"my@service-account.com\",\n )],\n boot_disk=gcp.workbench.InstanceGceSetupBootDiskArgs(\n disk_size_gb=\"310\",\n disk_type=\"PD_SSD\",\n disk_encryption=\"CMEK\",\n kms_key=\"my-crypto-key\",\n ),\n data_disks=gcp.workbench.InstanceGceSetupDataDisksArgs(\n disk_size_gb=\"330\",\n disk_type=\"PD_SSD\",\n disk_encryption=\"CMEK\",\n kms_key=\"my-crypto-key\",\n ),\n network_interfaces=[gcp.workbench.InstanceGceSetupNetworkInterfaceArgs(\n network=my_network.id,\n subnet=my_subnetwork.id,\n nic_type=\"GVNIC\",\n )],\n metadata={\n \"terraform\": \"true\",\n },\n enable_ip_forwarding=True,\n tags=[\n \"abc\",\n \"def\",\n ],\n ),\n disable_proxy_access=True,\n instance_owners=[\"my@service-account.com\"],\n labels={\n \"k\": \"val\",\n },\n desired_state=\"ACTIVE\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myNetwork = new Gcp.Compute.Network(\"my_network\", new()\n {\n Name = \"wbi-test-default\",\n AutoCreateSubnetworks = false,\n });\n\n var mySubnetwork = new Gcp.Compute.Subnetwork(\"my_subnetwork\", new()\n {\n Name = \"wbi-test-default\",\n Network = myNetwork.Id,\n Region = \"us-central1\",\n IpCidrRange = \"10.0.1.0/24\",\n });\n\n var instance = new Gcp.Workbench.Instance(\"instance\", new()\n {\n Name = \"workbench-instance\",\n Location = \"us-central1-a\",\n GceSetup = new Gcp.Workbench.Inputs.InstanceGceSetupArgs\n {\n MachineType = \"n1-standard-4\",\n AcceleratorConfigs = new[]\n {\n new Gcp.Workbench.Inputs.InstanceGceSetupAcceleratorConfigArgs\n {\n Type = \"NVIDIA_TESLA_T4\",\n CoreCount = \"1\",\n },\n },\n ShieldedInstanceConfig = new Gcp.Workbench.Inputs.InstanceGceSetupShieldedInstanceConfigArgs\n {\n EnableSecureBoot = true,\n EnableVtpm = true,\n EnableIntegrityMonitoring = true,\n },\n DisablePublicIp = false,\n ServiceAccounts = new[]\n {\n new Gcp.Workbench.Inputs.InstanceGceSetupServiceAccountArgs\n {\n Email = \"my@service-account.com\",\n },\n },\n BootDisk = new Gcp.Workbench.Inputs.InstanceGceSetupBootDiskArgs\n {\n DiskSizeGb = \"310\",\n DiskType = \"PD_SSD\",\n DiskEncryption = \"CMEK\",\n KmsKey = \"my-crypto-key\",\n },\n DataDisks = new Gcp.Workbench.Inputs.InstanceGceSetupDataDisksArgs\n {\n DiskSizeGb = \"330\",\n DiskType = \"PD_SSD\",\n DiskEncryption = \"CMEK\",\n KmsKey = \"my-crypto-key\",\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Workbench.Inputs.InstanceGceSetupNetworkInterfaceArgs\n {\n Network = myNetwork.Id,\n Subnet = mySubnetwork.Id,\n NicType = \"GVNIC\",\n },\n },\n Metadata = \n {\n { \"terraform\", \"true\" },\n },\n EnableIpForwarding = true,\n Tags = new[]\n {\n \"abc\",\n \"def\",\n },\n },\n DisableProxyAccess = true,\n InstanceOwners = new[]\n {\n \"my@service-account.com\",\n },\n Labels = \n {\n { \"k\", \"val\" },\n },\n DesiredState = \"ACTIVE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workbench\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyNetwork, err := compute.NewNetwork(ctx, \"my_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"wbi-test-default\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmySubnetwork, err := compute.NewSubnetwork(ctx, \"my_subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"wbi-test-default\"),\n\t\t\tNetwork: myNetwork.ID(),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.1.0/24\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workbench.NewInstance(ctx, \"instance\", \u0026workbench.InstanceArgs{\n\t\t\tName: pulumi.String(\"workbench-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tGceSetup: \u0026workbench.InstanceGceSetupArgs{\n\t\t\t\tMachineType: pulumi.String(\"n1-standard-4\"),\n\t\t\t\tAcceleratorConfigs: workbench.InstanceGceSetupAcceleratorConfigArray{\n\t\t\t\t\t\u0026workbench.InstanceGceSetupAcceleratorConfigArgs{\n\t\t\t\t\t\tType: pulumi.String(\"NVIDIA_TESLA_T4\"),\n\t\t\t\t\t\tCoreCount: pulumi.String(\"1\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tShieldedInstanceConfig: \u0026workbench.InstanceGceSetupShieldedInstanceConfigArgs{\n\t\t\t\t\tEnableSecureBoot: pulumi.Bool(true),\n\t\t\t\t\tEnableVtpm: pulumi.Bool(true),\n\t\t\t\t\tEnableIntegrityMonitoring: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tDisablePublicIp: pulumi.Bool(false),\n\t\t\t\tServiceAccounts: workbench.InstanceGceSetupServiceAccountArray{\n\t\t\t\t\t\u0026workbench.InstanceGceSetupServiceAccountArgs{\n\t\t\t\t\t\tEmail: pulumi.String(\"my@service-account.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tBootDisk: \u0026workbench.InstanceGceSetupBootDiskArgs{\n\t\t\t\t\tDiskSizeGb: pulumi.String(\"310\"),\n\t\t\t\t\tDiskType: pulumi.String(\"PD_SSD\"),\n\t\t\t\t\tDiskEncryption: pulumi.String(\"CMEK\"),\n\t\t\t\t\tKmsKey: pulumi.String(\"my-crypto-key\"),\n\t\t\t\t},\n\t\t\t\tDataDisks: \u0026workbench.InstanceGceSetupDataDisksArgs{\n\t\t\t\t\tDiskSizeGb: pulumi.String(\"330\"),\n\t\t\t\t\tDiskType: pulumi.String(\"PD_SSD\"),\n\t\t\t\t\tDiskEncryption: pulumi.String(\"CMEK\"),\n\t\t\t\t\tKmsKey: pulumi.String(\"my-crypto-key\"),\n\t\t\t\t},\n\t\t\t\tNetworkInterfaces: workbench.InstanceGceSetupNetworkInterfaceArray{\n\t\t\t\t\t\u0026workbench.InstanceGceSetupNetworkInterfaceArgs{\n\t\t\t\t\t\tNetwork: myNetwork.ID(),\n\t\t\t\t\t\tSubnet: mySubnetwork.ID(),\n\t\t\t\t\t\tNicType: pulumi.String(\"GVNIC\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\t\"terraform\": pulumi.String(\"true\"),\n\t\t\t\t},\n\t\t\t\tEnableIpForwarding: pulumi.Bool(true),\n\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"abc\"),\n\t\t\t\t\tpulumi.String(\"def\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDisableProxyAccess: pulumi.Bool(true),\n\t\t\tInstanceOwners: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"my@service-account.com\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"k\": pulumi.String(\"val\"),\n\t\t\t},\n\t\t\tDesiredState: pulumi.String(\"ACTIVE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workbench.Instance;\nimport com.pulumi.gcp.workbench.InstanceArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupShieldedInstanceConfigArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupBootDiskArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupDataDisksArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var myNetwork = new Network(\"myNetwork\", NetworkArgs.builder() \n .name(\"wbi-test-default\")\n .autoCreateSubnetworks(false)\n .build());\n\n var mySubnetwork = new Subnetwork(\"mySubnetwork\", SubnetworkArgs.builder() \n .name(\"wbi-test-default\")\n .network(myNetwork.id())\n .region(\"us-central1\")\n .ipCidrRange(\"10.0.1.0/24\")\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder() \n .name(\"workbench-instance\")\n .location(\"us-central1-a\")\n .gceSetup(InstanceGceSetupArgs.builder()\n .machineType(\"n1-standard-4\")\n .acceleratorConfigs(InstanceGceSetupAcceleratorConfigArgs.builder()\n .type(\"NVIDIA_TESLA_T4\")\n .coreCount(1)\n .build())\n .shieldedInstanceConfig(InstanceGceSetupShieldedInstanceConfigArgs.builder()\n .enableSecureBoot(true)\n .enableVtpm(true)\n .enableIntegrityMonitoring(true)\n .build())\n .disablePublicIp(false)\n .serviceAccounts(InstanceGceSetupServiceAccountArgs.builder()\n .email(\"my@service-account.com\")\n .build())\n .bootDisk(InstanceGceSetupBootDiskArgs.builder()\n .diskSizeGb(310)\n .diskType(\"PD_SSD\")\n .diskEncryption(\"CMEK\")\n .kmsKey(\"my-crypto-key\")\n .build())\n .dataDisks(InstanceGceSetupDataDisksArgs.builder()\n .diskSizeGb(330)\n .diskType(\"PD_SSD\")\n .diskEncryption(\"CMEK\")\n .kmsKey(\"my-crypto-key\")\n .build())\n .networkInterfaces(InstanceGceSetupNetworkInterfaceArgs.builder()\n .network(myNetwork.id())\n .subnet(mySubnetwork.id())\n .nicType(\"GVNIC\")\n .build())\n .metadata(Map.of(\"terraform\", \"true\"))\n .enableIpForwarding(true)\n .tags( \n \"abc\",\n \"def\")\n .build())\n .disableProxyAccess(\"true\")\n .instanceOwners(\"my@service-account.com\")\n .labels(Map.of(\"k\", \"val\"))\n .desiredState(\"ACTIVE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myNetwork:\n type: gcp:compute:Network\n name: my_network\n properties:\n name: wbi-test-default\n autoCreateSubnetworks: false\n mySubnetwork:\n type: gcp:compute:Subnetwork\n name: my_subnetwork\n properties:\n name: wbi-test-default\n network: ${myNetwork.id}\n region: us-central1\n ipCidrRange: 10.0.1.0/24\n instance:\n type: gcp:workbench:Instance\n properties:\n name: workbench-instance\n location: us-central1-a\n gceSetup:\n machineType: n1-standard-4\n acceleratorConfigs:\n - type: NVIDIA_TESLA_T4\n coreCount: 1\n shieldedInstanceConfig:\n enableSecureBoot: true\n enableVtpm: true\n enableIntegrityMonitoring: true\n disablePublicIp: false\n serviceAccounts:\n - email: my@service-account.com\n bootDisk:\n diskSizeGb: 310\n diskType: PD_SSD\n diskEncryption: CMEK\n kmsKey: my-crypto-key\n dataDisks:\n diskSizeGb: 330\n diskType: PD_SSD\n diskEncryption: CMEK\n kmsKey: my-crypto-key\n networkInterfaces:\n - network: ${myNetwork.id}\n subnet: ${mySubnetwork.id}\n nicType: GVNIC\n metadata:\n terraform: 'true'\n enableIpForwarding: true\n tags:\n - abc\n - def\n disableProxyAccess: 'true'\n instanceOwners:\n - my@service-account.com\n labels:\n k: val\n desiredState: ACTIVE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/instances/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:workbench/instance:Instance default projects/{{project}}/locations/{{location}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:workbench/instance:Instance default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:workbench/instance:Instance default {{location}}/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -234061,6 +234450,10 @@ }, "description": "Status conditions describing the current resource state.\nStructure is documented below.\n" }, + "controlPlaneIp": { + "type": "string", + "description": "The private IP address of the control plane for this workstation cluster.\nWorkstation VMs need access to this IP address to work with the service, so make sure that your firewall rules allow egress from the workstation VMs to this address.\n" + }, "createTime": { "type": "string", "description": "Time when this resource was created.\n" @@ -234146,6 +234539,7 @@ }, "required": [ "conditions", + "controlPlaneIp", "createTime", "degraded", "effectiveAnnotations", @@ -234234,6 +234628,10 @@ }, "description": "Status conditions describing the current resource state.\nStructure is documented below.\n" }, + "controlPlaneIp": { + "type": "string", + "description": "The private IP address of the control plane for this workstation cluster.\nWorkstation VMs need access to this IP address to work with the service, so make sure that your firewall rules allow egress from the workstation VMs to this address.\n" + }, "createTime": { "type": "string", "description": "Time when this resource was created.\n" @@ -242326,6 +242724,12 @@ "operation": { "type": "string" }, + "params": { + "items": { + "$ref": "#/types/gcp:compute/getInstanceGroupManagerParam:getInstanceGroupManagerParam" + }, + "type": "array" + }, "project": { "type": "string" }, @@ -242399,6 +242803,7 @@ "listManagedInstancesResults", "namedPorts", "operation", + "params", "statefulDisks", "statefulExternalIps", "statefulInternalIps", @@ -247377,7 +247782,8 @@ }, "project": { "type": "string", - "description": "The ID of the project in which the resource belongs. If `project` is not provided, the provider project is used.\n" + "description": "The ID of the project in which the resource belongs. If `project` is not provided, the provider project is used.\n", + "willReplaceOnChanges": true } }, "type": "object", @@ -247389,7 +247795,7 @@ "description": "A collection of values returned by getKeys.\n", "properties": { "id": { - "description": "Unique identifier for the resource; defined by the server.\n", + "description": "The provider-assigned unique ID for this managed resource.\n", "type": "string" }, "keySigningKeys": { @@ -247414,11 +247820,11 @@ } }, "required": [ - "id", "keySigningKeys", "managedZone", "project", - "zoneSigningKeys" + "zoneSigningKeys", + "id" ], "type": "object" } @@ -247547,13 +247953,6 @@ "inputs": { "description": "A collection of arguments for invoking getManagedZones.\n", "properties": { - "managedZones": { - "type": "array", - "items": { - "$ref": "#/types/gcp:dns/getManagedZonesManagedZone:getManagedZonesManagedZone" - }, - "description": "A list of managed zones.\n" - }, "project": { "type": "string", "description": "The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used.\n" @@ -247579,7 +247978,8 @@ } }, "required": [ - "id" + "id", + "managedZones" ], "type": "object" } @@ -247617,6 +248017,7 @@ "description": "A collection of values returned by getRecordSet.\n", "properties": { "id": { + "description": "The provider-assigned unique ID for this managed resource.\n", "type": "string" }, "managedZone": { @@ -247644,12 +248045,12 @@ } }, "required": [ - "id", "managedZone", "name", "rrdatas", "ttl", - "type" + "type", + "id" ], "type": "object" } @@ -251368,6 +251769,10 @@ "inputs": { "description": "A collection of arguments for invoking getActiveFolder.\n", "properties": { + "apiMethod": { + "type": "string", + "description": "The API method to use to search for the folder. Valid values are `LIST` and `SEARCH`. Default Value is `LIST`. `LIST` is [strongly consistent](https://cloud.google.com/resource-manager/reference/rest/v3/folders/list#:~:text=list()%20provides%20a-,strongly%20consistent,-view%20of%20the) and requires `resourcemanager.folders.list` on the parent folder, while `SEARCH` is [eventually consistent](https://cloud.google.com/resource-manager/reference/rest/v3/folders/search#:~:text=eventually%20consistent) and only returns folders that the user has `resourcemanager.folders.get` permission on.\n" + }, "displayName": { "type": "string", "description": "The folder's display name.\n" @@ -251386,6 +251791,9 @@ "outputs": { "description": "A collection of values returned by getActiveFolder.\n", "properties": { + "apiMethod": { + "type": "string" + }, "displayName": { "type": "string" }, @@ -256726,15 +257134,9 @@ }, "type": "array" }, - "preferredZone": { - "type": "string" - }, "project": { "type": "string" }, - "secondaryZone": { - "type": "string" - }, "state": { "type": "string" }, @@ -256759,8 +257161,6 @@ "name", "networkConfigs", "nsxes", - "preferredZone", - "secondaryZone", "state", "type", "uid", diff --git a/provider/go.mod b/provider/go.mod index 22c7d83f4a..9bc4d36a8d 100644 --- a/provider/go.mod +++ b/provider/go.mod @@ -247,17 +247,17 @@ require ( go.uber.org/atomic v1.9.0 // indirect gocloud.dev v0.37.0 // indirect gocloud.dev/secrets/hashivault v0.27.0 // indirect - golang.org/x/crypto v0.21.0 // indirect - golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect - golang.org/x/mod v0.15.0 // indirect - golang.org/x/net v0.22.0 // indirect + golang.org/x/crypto v0.22.0 // indirect + golang.org/x/exp v0.0.0-20240409090435-93d18d7e34b8 // indirect + golang.org/x/mod v0.17.0 // indirect + golang.org/x/net v0.24.0 // indirect golang.org/x/oauth2 v0.18.0 // indirect - golang.org/x/sync v0.6.0 // indirect - golang.org/x/sys v0.18.0 // indirect - golang.org/x/term v0.18.0 // indirect + golang.org/x/sync v0.7.0 // indirect + golang.org/x/sys v0.19.0 // indirect + golang.org/x/term v0.19.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/time v0.5.0 // indirect - golang.org/x/tools v0.17.0 // indirect + golang.org/x/tools v0.20.0 // indirect golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect google.golang.org/appengine v1.6.8 // indirect google.golang.org/genproto v0.0.0-20240311173647-c811ad7063a7 // indirect diff --git a/provider/go.sum b/provider/go.sum index 7fc5defd67..e5be6d4f5f 100644 --- a/provider/go.sum +++ b/provider/go.sum @@ -3274,8 +3274,8 @@ golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= -golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= -golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= +golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -3291,8 +3291,8 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= -golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= -golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= +golang.org/x/exp v0.0.0-20240409090435-93d18d7e34b8 h1:ESSUROHIBHg7USnszlcdmjBEwdMj9VUvU+OPk4yl2mc= +golang.org/x/exp v0.0.0-20240409090435-93d18d7e34b8/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -3341,8 +3341,9 @@ golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180530234432-1e491301e022/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -3447,8 +3448,8 @@ golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= -golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= -golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= +golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -3511,8 +3512,9 @@ golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -3683,8 +3685,8 @@ golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= -golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= +golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -3708,8 +3710,8 @@ golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww= golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= -golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= -golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= +golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q= +golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -3847,8 +3849,9 @@ golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= -golang.org/x/tools v0.17.0 h1:FvmRgNOcs3kOa+T20R1uhfP9F6HgG2mfxDv1vrx1Htc= golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps= +golang.org/x/tools v0.20.0 h1:hz/CVckiOxybQvFw6h7b/q80NTr9IUQb4s1IIzW7KNY= +golang.org/x/tools v0.20.0/go.mod h1:WvitBU7JJf6A4jOdg4S1tviW9bhUxkgeCui/0JHctQg= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/sdk/dotnet/Apigee/Organization.cs b/sdk/dotnet/Apigee/Organization.cs index dafd6cfeb6..6bee79339e 100644 --- a/sdk/dotnet/Apigee/Organization.cs +++ b/sdk/dotnet/Apigee/Organization.cs @@ -237,6 +237,20 @@ public partial class Organization : global::Pulumi.CustomResource [Output("analyticsRegion")] public Output AnalyticsRegion { get; private set; } = null!; + /// + /// Cloud KMS key name used for encrypting API consumer data. + /// + [Output("apiConsumerDataEncryptionKeyName")] + public Output ApiConsumerDataEncryptionKeyName { get; private set; } = null!; + + /// + /// This field is needed only for customers using non-default data residency regions. + /// Apigee stores some control plane data only in single region. + /// This field determines which single region Apigee should use. + /// + [Output("apiConsumerDataLocation")] + public Output ApiConsumerDataLocation { get; private set; } = null!; + /// /// Output only. Project ID of the Apigee Tenant Project. /// @@ -264,6 +278,13 @@ public partial class Organization : global::Pulumi.CustomResource [Output("caCertificate")] public Output CaCertificate { get; private set; } = null!; + /// + /// Cloud KMS key name used for encrypting control plane data that is stored in a multi region. + /// Only used for the data residency region "US" or "EU". + /// + [Output("controlPlaneEncryptionKeyName")] + public Output ControlPlaneEncryptionKeyName { get; private set; } = null!; + /// /// Description of the Apigee organization. /// @@ -395,6 +416,20 @@ public sealed class OrganizationArgs : global::Pulumi.ResourceArgs [Input("analyticsRegion")] public Input? AnalyticsRegion { get; set; } + /// + /// Cloud KMS key name used for encrypting API consumer data. + /// + [Input("apiConsumerDataEncryptionKeyName")] + public Input? ApiConsumerDataEncryptionKeyName { get; set; } + + /// + /// This field is needed only for customers using non-default data residency regions. + /// Apigee stores some control plane data only in single region. + /// This field determines which single region Apigee should use. + /// + [Input("apiConsumerDataLocation")] + public Input? ApiConsumerDataLocation { get; set; } + /// /// Compute Engine network used for Service Networking to be peered with Apigee runtime instances. /// See [Getting started with the Service Networking API](https://cloud.google.com/service-infrastructure/docs/service-networking/getting-started). @@ -409,6 +444,13 @@ public sealed class OrganizationArgs : global::Pulumi.ResourceArgs [Input("billingType")] public Input? BillingType { get; set; } + /// + /// Cloud KMS key name used for encrypting control plane data that is stored in a multi region. + /// Only used for the data residency region "US" or "EU". + /// + [Input("controlPlaneEncryptionKeyName")] + public Input? ControlPlaneEncryptionKeyName { get; set; } + /// /// Description of the Apigee organization. /// @@ -489,6 +531,20 @@ public sealed class OrganizationState : global::Pulumi.ResourceArgs [Input("analyticsRegion")] public Input? AnalyticsRegion { get; set; } + /// + /// Cloud KMS key name used for encrypting API consumer data. + /// + [Input("apiConsumerDataEncryptionKeyName")] + public Input? ApiConsumerDataEncryptionKeyName { get; set; } + + /// + /// This field is needed only for customers using non-default data residency regions. + /// Apigee stores some control plane data only in single region. + /// This field determines which single region Apigee should use. + /// + [Input("apiConsumerDataLocation")] + public Input? ApiConsumerDataLocation { get; set; } + /// /// Output only. Project ID of the Apigee Tenant Project. /// @@ -516,6 +572,13 @@ public sealed class OrganizationState : global::Pulumi.ResourceArgs [Input("caCertificate")] public Input? CaCertificate { get; set; } + /// + /// Cloud KMS key name used for encrypting control plane data that is stored in a multi region. + /// Only used for the data residency region "US" or "EU". + /// + [Input("controlPlaneEncryptionKeyName")] + public Input? ControlPlaneEncryptionKeyName { get; set; } + /// /// Description of the Apigee organization. /// diff --git a/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigArgs.cs b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigArgs.cs index 15a6404617..e9624213c0 100644 --- a/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigArgs.cs +++ b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigArgs.cs @@ -25,6 +25,13 @@ public sealed class RepositoryRemoteRepositoryConfigArgs : global::Pulumi.Resour [Input("description")] public Input? Description { get; set; } + /// + /// If true, the remote repository upstream and upstream credentials will + /// not be validated. + /// + [Input("disableUpstreamValidation")] + public Input? DisableUpstreamValidation { get; set; } + /// /// Specific settings for a Docker remote repository. /// Structure is documented below. diff --git a/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigDockerRepositoryArgs.cs b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigDockerRepositoryArgs.cs index 956bb96fbc..82a18cffd3 100644 --- a/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigDockerRepositoryArgs.cs +++ b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigDockerRepositoryArgs.cs @@ -12,6 +12,13 @@ namespace Pulumi.Gcp.ArtifactRegistry.Inputs public sealed class RepositoryRemoteRepositoryConfigDockerRepositoryArgs : global::Pulumi.ResourceArgs { + /// + /// Settings for a remote repository with a custom uri. + /// Structure is documented below. + /// + [Input("customRepository")] + public Input? CustomRepository { get; set; } + /// /// Address of the remote repository. /// Default value is `DOCKER_HUB`. diff --git a/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs.cs b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs.cs new file mode 100644 index 0000000000..84f65eccf1 --- /dev/null +++ b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs.cs @@ -0,0 +1,26 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.ArtifactRegistry.Inputs +{ + + public sealed class RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs : global::Pulumi.ResourceArgs + { + /// + /// Specific uri to the registry, e.g. `"https://pypi.io"` + /// + [Input("uri")] + public Input? Uri { get; set; } + + public RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs() + { + } + public static new RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs Empty => new RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs(); + } +} diff --git a/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryGetArgs.cs b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryGetArgs.cs new file mode 100644 index 0000000000..f1183f40f8 --- /dev/null +++ b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryGetArgs.cs @@ -0,0 +1,26 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.ArtifactRegistry.Inputs +{ + + public sealed class RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryGetArgs : global::Pulumi.ResourceArgs + { + /// + /// Specific uri to the registry, e.g. `"https://pypi.io"` + /// + [Input("uri")] + public Input? Uri { get; set; } + + public RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryGetArgs() + { + } + public static new RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryGetArgs Empty => new RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryGetArgs(); + } +} diff --git a/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigDockerRepositoryGetArgs.cs b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigDockerRepositoryGetArgs.cs index 5110ebd871..6e13d9dce6 100644 --- a/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigDockerRepositoryGetArgs.cs +++ b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigDockerRepositoryGetArgs.cs @@ -12,6 +12,13 @@ namespace Pulumi.Gcp.ArtifactRegistry.Inputs public sealed class RepositoryRemoteRepositoryConfigDockerRepositoryGetArgs : global::Pulumi.ResourceArgs { + /// + /// Settings for a remote repository with a custom uri. + /// Structure is documented below. + /// + [Input("customRepository")] + public Input? CustomRepository { get; set; } + /// /// Address of the remote repository. /// Default value is `DOCKER_HUB`. diff --git a/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigGetArgs.cs b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigGetArgs.cs index f6b38d8202..e3524a537a 100644 --- a/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigGetArgs.cs +++ b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigGetArgs.cs @@ -25,6 +25,13 @@ public sealed class RepositoryRemoteRepositoryConfigGetArgs : global::Pulumi.Res [Input("description")] public Input? Description { get; set; } + /// + /// If true, the remote repository upstream and upstream credentials will + /// not be validated. + /// + [Input("disableUpstreamValidation")] + public Input? DisableUpstreamValidation { get; set; } + /// /// Specific settings for a Docker remote repository. /// Structure is documented below. diff --git a/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigMavenRepositoryArgs.cs b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigMavenRepositoryArgs.cs index 34ffda9bc4..55efb4ae31 100644 --- a/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigMavenRepositoryArgs.cs +++ b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigMavenRepositoryArgs.cs @@ -12,6 +12,13 @@ namespace Pulumi.Gcp.ArtifactRegistry.Inputs public sealed class RepositoryRemoteRepositoryConfigMavenRepositoryArgs : global::Pulumi.ResourceArgs { + /// + /// Settings for a remote repository with a custom uri. + /// Structure is documented below. + /// + [Input("customRepository")] + public Input? CustomRepository { get; set; } + /// /// Address of the remote repository. /// Default value is `MAVEN_CENTRAL`. diff --git a/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs.cs b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs.cs new file mode 100644 index 0000000000..f5b7b66cab --- /dev/null +++ b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs.cs @@ -0,0 +1,26 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.ArtifactRegistry.Inputs +{ + + public sealed class RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs : global::Pulumi.ResourceArgs + { + /// + /// Specific uri to the registry, e.g. `"https://pypi.io"` + /// + [Input("uri")] + public Input? Uri { get; set; } + + public RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs() + { + } + public static new RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs Empty => new RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs(); + } +} diff --git a/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryGetArgs.cs b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryGetArgs.cs new file mode 100644 index 0000000000..a60c06661b --- /dev/null +++ b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryGetArgs.cs @@ -0,0 +1,26 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.ArtifactRegistry.Inputs +{ + + public sealed class RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryGetArgs : global::Pulumi.ResourceArgs + { + /// + /// Specific uri to the registry, e.g. `"https://pypi.io"` + /// + [Input("uri")] + public Input? Uri { get; set; } + + public RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryGetArgs() + { + } + public static new RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryGetArgs Empty => new RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryGetArgs(); + } +} diff --git a/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigMavenRepositoryGetArgs.cs b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigMavenRepositoryGetArgs.cs index 7fe4ce2998..96be001cde 100644 --- a/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigMavenRepositoryGetArgs.cs +++ b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigMavenRepositoryGetArgs.cs @@ -12,6 +12,13 @@ namespace Pulumi.Gcp.ArtifactRegistry.Inputs public sealed class RepositoryRemoteRepositoryConfigMavenRepositoryGetArgs : global::Pulumi.ResourceArgs { + /// + /// Settings for a remote repository with a custom uri. + /// Structure is documented below. + /// + [Input("customRepository")] + public Input? CustomRepository { get; set; } + /// /// Address of the remote repository. /// Default value is `MAVEN_CENTRAL`. diff --git a/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigNpmRepositoryArgs.cs b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigNpmRepositoryArgs.cs index 95dc43444a..d5d5b2f557 100644 --- a/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigNpmRepositoryArgs.cs +++ b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigNpmRepositoryArgs.cs @@ -12,6 +12,13 @@ namespace Pulumi.Gcp.ArtifactRegistry.Inputs public sealed class RepositoryRemoteRepositoryConfigNpmRepositoryArgs : global::Pulumi.ResourceArgs { + /// + /// Settings for a remote repository with a custom uri. + /// Structure is documented below. + /// + [Input("customRepository")] + public Input? CustomRepository { get; set; } + /// /// Address of the remote repository. /// Default value is `NPMJS`. diff --git a/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs.cs b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs.cs new file mode 100644 index 0000000000..609e70eaa1 --- /dev/null +++ b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs.cs @@ -0,0 +1,26 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.ArtifactRegistry.Inputs +{ + + public sealed class RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs : global::Pulumi.ResourceArgs + { + /// + /// Specific uri to the registry, e.g. `"https://pypi.io"` + /// + [Input("uri")] + public Input? Uri { get; set; } + + public RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs() + { + } + public static new RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs Empty => new RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs(); + } +} diff --git a/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryGetArgs.cs b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryGetArgs.cs new file mode 100644 index 0000000000..26c2f17f02 --- /dev/null +++ b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryGetArgs.cs @@ -0,0 +1,26 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.ArtifactRegistry.Inputs +{ + + public sealed class RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryGetArgs : global::Pulumi.ResourceArgs + { + /// + /// Specific uri to the registry, e.g. `"https://pypi.io"` + /// + [Input("uri")] + public Input? Uri { get; set; } + + public RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryGetArgs() + { + } + public static new RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryGetArgs Empty => new RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryGetArgs(); + } +} diff --git a/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigNpmRepositoryGetArgs.cs b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigNpmRepositoryGetArgs.cs index fb16e9fe4c..317cc9dd9e 100644 --- a/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigNpmRepositoryGetArgs.cs +++ b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigNpmRepositoryGetArgs.cs @@ -12,6 +12,13 @@ namespace Pulumi.Gcp.ArtifactRegistry.Inputs public sealed class RepositoryRemoteRepositoryConfigNpmRepositoryGetArgs : global::Pulumi.ResourceArgs { + /// + /// Settings for a remote repository with a custom uri. + /// Structure is documented below. + /// + [Input("customRepository")] + public Input? CustomRepository { get; set; } + /// /// Address of the remote repository. /// Default value is `NPMJS`. diff --git a/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigPythonRepositoryArgs.cs b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigPythonRepositoryArgs.cs index c49d3f9dbd..3d7497eb04 100644 --- a/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigPythonRepositoryArgs.cs +++ b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigPythonRepositoryArgs.cs @@ -12,6 +12,13 @@ namespace Pulumi.Gcp.ArtifactRegistry.Inputs public sealed class RepositoryRemoteRepositoryConfigPythonRepositoryArgs : global::Pulumi.ResourceArgs { + /// + /// Settings for a remote repository with a custom uri. + /// Structure is documented below. + /// + [Input("customRepository")] + public Input? CustomRepository { get; set; } + /// /// Address of the remote repository. /// Default value is `PYPI`. diff --git a/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs.cs b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs.cs new file mode 100644 index 0000000000..b49aa21711 --- /dev/null +++ b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs.cs @@ -0,0 +1,26 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.ArtifactRegistry.Inputs +{ + + public sealed class RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs : global::Pulumi.ResourceArgs + { + /// + /// Specific uri to the registry, e.g. `"https://pypi.io"` + /// + [Input("uri")] + public Input? Uri { get; set; } + + public RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs() + { + } + public static new RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs Empty => new RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs(); + } +} diff --git a/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryGetArgs.cs b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryGetArgs.cs new file mode 100644 index 0000000000..ef06241387 --- /dev/null +++ b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryGetArgs.cs @@ -0,0 +1,26 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.ArtifactRegistry.Inputs +{ + + public sealed class RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryGetArgs : global::Pulumi.ResourceArgs + { + /// + /// Specific uri to the registry, e.g. `"https://pypi.io"` + /// + [Input("uri")] + public Input? Uri { get; set; } + + public RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryGetArgs() + { + } + public static new RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryGetArgs Empty => new RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryGetArgs(); + } +} diff --git a/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigPythonRepositoryGetArgs.cs b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigPythonRepositoryGetArgs.cs index 697d2d3131..d88d20c1a0 100644 --- a/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigPythonRepositoryGetArgs.cs +++ b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryRemoteRepositoryConfigPythonRepositoryGetArgs.cs @@ -12,6 +12,13 @@ namespace Pulumi.Gcp.ArtifactRegistry.Inputs public sealed class RepositoryRemoteRepositoryConfigPythonRepositoryGetArgs : global::Pulumi.ResourceArgs { + /// + /// Settings for a remote repository with a custom uri. + /// Structure is documented below. + /// + [Input("customRepository")] + public Input? CustomRepository { get; set; } + /// /// Address of the remote repository. /// Default value is `PYPI`. diff --git a/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryResult.cs b/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryResult.cs new file mode 100644 index 0000000000..5ccd6e5f48 --- /dev/null +++ b/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryResult.cs @@ -0,0 +1,27 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.ArtifactRegistry.Outputs +{ + + [OutputType] + public sealed class GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryResult + { + /// + /// Specific uri to the registry, e.g. '"https://registry-1.docker.io"' + /// + public readonly string Uri; + + [OutputConstructor] + private GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryResult(string uri) + { + Uri = uri; + } + } +} diff --git a/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryRemoteRepositoryConfigDockerRepositoryResult.cs b/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryRemoteRepositoryConfigDockerRepositoryResult.cs index e1a397375b..4f187e1274 100644 --- a/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryRemoteRepositoryConfigDockerRepositoryResult.cs +++ b/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryRemoteRepositoryConfigDockerRepositoryResult.cs @@ -13,14 +13,22 @@ namespace Pulumi.Gcp.ArtifactRegistry.Outputs [OutputType] public sealed class GetRepositoryRemoteRepositoryConfigDockerRepositoryResult { + /// + /// Settings for a remote repository with a custom uri. + /// + public readonly ImmutableArray CustomRepositories; /// /// Address of the remote repository. Default value: "DOCKER_HUB" Possible values: ["DOCKER_HUB"] /// public readonly string PublicRepository; [OutputConstructor] - private GetRepositoryRemoteRepositoryConfigDockerRepositoryResult(string publicRepository) + private GetRepositoryRemoteRepositoryConfigDockerRepositoryResult( + ImmutableArray customRepositories, + + string publicRepository) { + CustomRepositories = customRepositories; PublicRepository = publicRepository; } } diff --git a/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryResult.cs b/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryResult.cs new file mode 100644 index 0000000000..c9a01b003a --- /dev/null +++ b/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryResult.cs @@ -0,0 +1,27 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.ArtifactRegistry.Outputs +{ + + [OutputType] + public sealed class GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryResult + { + /// + /// Specific uri to the registry, e.g. '"https://repo.maven.apache.org/maven2"' + /// + public readonly string Uri; + + [OutputConstructor] + private GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryResult(string uri) + { + Uri = uri; + } + } +} diff --git a/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryRemoteRepositoryConfigMavenRepositoryResult.cs b/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryRemoteRepositoryConfigMavenRepositoryResult.cs index e5171b259e..dd70541fba 100644 --- a/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryRemoteRepositoryConfigMavenRepositoryResult.cs +++ b/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryRemoteRepositoryConfigMavenRepositoryResult.cs @@ -13,14 +13,22 @@ namespace Pulumi.Gcp.ArtifactRegistry.Outputs [OutputType] public sealed class GetRepositoryRemoteRepositoryConfigMavenRepositoryResult { + /// + /// Settings for a remote repository with a custom uri. + /// + public readonly ImmutableArray CustomRepositories; /// /// Address of the remote repository. Default value: "MAVEN_CENTRAL" Possible values: ["MAVEN_CENTRAL"] /// public readonly string PublicRepository; [OutputConstructor] - private GetRepositoryRemoteRepositoryConfigMavenRepositoryResult(string publicRepository) + private GetRepositoryRemoteRepositoryConfigMavenRepositoryResult( + ImmutableArray customRepositories, + + string publicRepository) { + CustomRepositories = customRepositories; PublicRepository = publicRepository; } } diff --git a/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryResult.cs b/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryResult.cs new file mode 100644 index 0000000000..5292a9c37e --- /dev/null +++ b/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryResult.cs @@ -0,0 +1,27 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.ArtifactRegistry.Outputs +{ + + [OutputType] + public sealed class GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryResult + { + /// + /// Specific uri to the registry, e.g. '"https://registry.npmjs.org"' + /// + public readonly string Uri; + + [OutputConstructor] + private GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryResult(string uri) + { + Uri = uri; + } + } +} diff --git a/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryRemoteRepositoryConfigNpmRepositoryResult.cs b/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryRemoteRepositoryConfigNpmRepositoryResult.cs index 9a26e23ecd..2139a95ea2 100644 --- a/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryRemoteRepositoryConfigNpmRepositoryResult.cs +++ b/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryRemoteRepositoryConfigNpmRepositoryResult.cs @@ -13,14 +13,22 @@ namespace Pulumi.Gcp.ArtifactRegistry.Outputs [OutputType] public sealed class GetRepositoryRemoteRepositoryConfigNpmRepositoryResult { + /// + /// Settings for a remote repository with a custom uri. + /// + public readonly ImmutableArray CustomRepositories; /// /// Address of the remote repository. Default value: "NPMJS" Possible values: ["NPMJS"] /// public readonly string PublicRepository; [OutputConstructor] - private GetRepositoryRemoteRepositoryConfigNpmRepositoryResult(string publicRepository) + private GetRepositoryRemoteRepositoryConfigNpmRepositoryResult( + ImmutableArray customRepositories, + + string publicRepository) { + CustomRepositories = customRepositories; PublicRepository = publicRepository; } } diff --git a/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryResult.cs b/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryResult.cs new file mode 100644 index 0000000000..95d58f8b15 --- /dev/null +++ b/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryResult.cs @@ -0,0 +1,27 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.ArtifactRegistry.Outputs +{ + + [OutputType] + public sealed class GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryResult + { + /// + /// Specific uri to the registry, e.g. '"https://pypi.io"' + /// + public readonly string Uri; + + [OutputConstructor] + private GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryResult(string uri) + { + Uri = uri; + } + } +} diff --git a/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryRemoteRepositoryConfigPythonRepositoryResult.cs b/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryRemoteRepositoryConfigPythonRepositoryResult.cs index 4b3ad761b9..270cc7769d 100644 --- a/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryRemoteRepositoryConfigPythonRepositoryResult.cs +++ b/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryRemoteRepositoryConfigPythonRepositoryResult.cs @@ -13,14 +13,22 @@ namespace Pulumi.Gcp.ArtifactRegistry.Outputs [OutputType] public sealed class GetRepositoryRemoteRepositoryConfigPythonRepositoryResult { + /// + /// Settings for a remote repository with a custom uri. + /// + public readonly ImmutableArray CustomRepositories; /// /// Address of the remote repository. Default value: "PYPI" Possible values: ["PYPI"] /// public readonly string PublicRepository; [OutputConstructor] - private GetRepositoryRemoteRepositoryConfigPythonRepositoryResult(string publicRepository) + private GetRepositoryRemoteRepositoryConfigPythonRepositoryResult( + ImmutableArray customRepositories, + + string publicRepository) { + CustomRepositories = customRepositories; PublicRepository = publicRepository; } } diff --git a/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryRemoteRepositoryConfigResult.cs b/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryRemoteRepositoryConfigResult.cs index 81c4182d5c..e020f804b0 100644 --- a/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryRemoteRepositoryConfigResult.cs +++ b/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryRemoteRepositoryConfigResult.cs @@ -22,6 +22,11 @@ public sealed class GetRepositoryRemoteRepositoryConfigResult /// public readonly string Description; /// + /// If true, the remote repository upstream and upstream credentials will + /// not be validated. + /// + public readonly bool DisableUpstreamValidation; + /// /// Specific settings for a Docker remote repository. /// public readonly ImmutableArray DockerRepositories; @@ -52,6 +57,8 @@ private GetRepositoryRemoteRepositoryConfigResult( string description, + bool disableUpstreamValidation, + ImmutableArray dockerRepositories, ImmutableArray mavenRepositories, @@ -66,6 +73,7 @@ private GetRepositoryRemoteRepositoryConfigResult( { AptRepositories = aptRepositories; Description = description; + DisableUpstreamValidation = disableUpstreamValidation; DockerRepositories = dockerRepositories; MavenRepositories = mavenRepositories; NpmRepositories = npmRepositories; diff --git a/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryRemoteRepositoryConfig.cs b/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryRemoteRepositoryConfig.cs index 61c4fed411..0427922695 100644 --- a/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryRemoteRepositoryConfig.cs +++ b/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryRemoteRepositoryConfig.cs @@ -23,6 +23,11 @@ public sealed class RepositoryRemoteRepositoryConfig /// public readonly string? Description; /// + /// If true, the remote repository upstream and upstream credentials will + /// not be validated. + /// + public readonly bool? DisableUpstreamValidation; + /// /// Specific settings for a Docker remote repository. /// Structure is documented below. /// @@ -59,6 +64,8 @@ private RepositoryRemoteRepositoryConfig( string? description, + bool? disableUpstreamValidation, + Outputs.RepositoryRemoteRepositoryConfigDockerRepository? dockerRepository, Outputs.RepositoryRemoteRepositoryConfigMavenRepository? mavenRepository, @@ -73,6 +80,7 @@ private RepositoryRemoteRepositoryConfig( { AptRepository = aptRepository; Description = description; + DisableUpstreamValidation = disableUpstreamValidation; DockerRepository = dockerRepository; MavenRepository = mavenRepository; NpmRepository = npmRepository; diff --git a/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryRemoteRepositoryConfigDockerRepository.cs b/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryRemoteRepositoryConfigDockerRepository.cs index e9a7c89656..c4700a642e 100644 --- a/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryRemoteRepositoryConfigDockerRepository.cs +++ b/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryRemoteRepositoryConfigDockerRepository.cs @@ -13,6 +13,11 @@ namespace Pulumi.Gcp.ArtifactRegistry.Outputs [OutputType] public sealed class RepositoryRemoteRepositoryConfigDockerRepository { + /// + /// Settings for a remote repository with a custom uri. + /// Structure is documented below. + /// + public readonly Outputs.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository? CustomRepository; /// /// Address of the remote repository. /// Default value is `DOCKER_HUB`. @@ -21,8 +26,12 @@ public sealed class RepositoryRemoteRepositoryConfigDockerRepository public readonly string? PublicRepository; [OutputConstructor] - private RepositoryRemoteRepositoryConfigDockerRepository(string? publicRepository) + private RepositoryRemoteRepositoryConfigDockerRepository( + Outputs.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository? customRepository, + + string? publicRepository) { + CustomRepository = customRepository; PublicRepository = publicRepository; } } diff --git a/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository.cs b/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository.cs new file mode 100644 index 0000000000..183314e95d --- /dev/null +++ b/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository.cs @@ -0,0 +1,27 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.ArtifactRegistry.Outputs +{ + + [OutputType] + public sealed class RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository + { + /// + /// Specific uri to the registry, e.g. `"https://pypi.io"` + /// + public readonly string? Uri; + + [OutputConstructor] + private RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository(string? uri) + { + Uri = uri; + } + } +} diff --git a/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryRemoteRepositoryConfigMavenRepository.cs b/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryRemoteRepositoryConfigMavenRepository.cs index b506f60c3b..0dcd2c59d0 100644 --- a/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryRemoteRepositoryConfigMavenRepository.cs +++ b/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryRemoteRepositoryConfigMavenRepository.cs @@ -13,6 +13,11 @@ namespace Pulumi.Gcp.ArtifactRegistry.Outputs [OutputType] public sealed class RepositoryRemoteRepositoryConfigMavenRepository { + /// + /// Settings for a remote repository with a custom uri. + /// Structure is documented below. + /// + public readonly Outputs.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository? CustomRepository; /// /// Address of the remote repository. /// Default value is `MAVEN_CENTRAL`. @@ -21,8 +26,12 @@ public sealed class RepositoryRemoteRepositoryConfigMavenRepository public readonly string? PublicRepository; [OutputConstructor] - private RepositoryRemoteRepositoryConfigMavenRepository(string? publicRepository) + private RepositoryRemoteRepositoryConfigMavenRepository( + Outputs.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository? customRepository, + + string? publicRepository) { + CustomRepository = customRepository; PublicRepository = publicRepository; } } diff --git a/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository.cs b/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository.cs new file mode 100644 index 0000000000..9ce066e70c --- /dev/null +++ b/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository.cs @@ -0,0 +1,27 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.ArtifactRegistry.Outputs +{ + + [OutputType] + public sealed class RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository + { + /// + /// Specific uri to the registry, e.g. `"https://pypi.io"` + /// + public readonly string? Uri; + + [OutputConstructor] + private RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository(string? uri) + { + Uri = uri; + } + } +} diff --git a/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryRemoteRepositoryConfigNpmRepository.cs b/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryRemoteRepositoryConfigNpmRepository.cs index 39ce039881..03fbf6adcb 100644 --- a/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryRemoteRepositoryConfigNpmRepository.cs +++ b/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryRemoteRepositoryConfigNpmRepository.cs @@ -13,6 +13,11 @@ namespace Pulumi.Gcp.ArtifactRegistry.Outputs [OutputType] public sealed class RepositoryRemoteRepositoryConfigNpmRepository { + /// + /// Settings for a remote repository with a custom uri. + /// Structure is documented below. + /// + public readonly Outputs.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository? CustomRepository; /// /// Address of the remote repository. /// Default value is `NPMJS`. @@ -21,8 +26,12 @@ public sealed class RepositoryRemoteRepositoryConfigNpmRepository public readonly string? PublicRepository; [OutputConstructor] - private RepositoryRemoteRepositoryConfigNpmRepository(string? publicRepository) + private RepositoryRemoteRepositoryConfigNpmRepository( + Outputs.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository? customRepository, + + string? publicRepository) { + CustomRepository = customRepository; PublicRepository = publicRepository; } } diff --git a/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository.cs b/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository.cs new file mode 100644 index 0000000000..c7406c3c52 --- /dev/null +++ b/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository.cs @@ -0,0 +1,27 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.ArtifactRegistry.Outputs +{ + + [OutputType] + public sealed class RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository + { + /// + /// Specific uri to the registry, e.g. `"https://pypi.io"` + /// + public readonly string? Uri; + + [OutputConstructor] + private RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository(string? uri) + { + Uri = uri; + } + } +} diff --git a/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryRemoteRepositoryConfigPythonRepository.cs b/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryRemoteRepositoryConfigPythonRepository.cs index a21230379b..adbd008ef9 100644 --- a/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryRemoteRepositoryConfigPythonRepository.cs +++ b/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryRemoteRepositoryConfigPythonRepository.cs @@ -13,6 +13,11 @@ namespace Pulumi.Gcp.ArtifactRegistry.Outputs [OutputType] public sealed class RepositoryRemoteRepositoryConfigPythonRepository { + /// + /// Settings for a remote repository with a custom uri. + /// Structure is documented below. + /// + public readonly Outputs.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository? CustomRepository; /// /// Address of the remote repository. /// Default value is `PYPI`. @@ -21,8 +26,12 @@ public sealed class RepositoryRemoteRepositoryConfigPythonRepository public readonly string? PublicRepository; [OutputConstructor] - private RepositoryRemoteRepositoryConfigPythonRepository(string? publicRepository) + private RepositoryRemoteRepositoryConfigPythonRepository( + Outputs.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository? customRepository, + + string? publicRepository) { + CustomRepository = customRepository; PublicRepository = publicRepository; } } diff --git a/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository.cs b/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository.cs new file mode 100644 index 0000000000..7235d8d0c3 --- /dev/null +++ b/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository.cs @@ -0,0 +1,27 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.ArtifactRegistry.Outputs +{ + + [OutputType] + public sealed class RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository + { + /// + /// Specific uri to the registry, e.g. `"https://pypi.io"` + /// + public readonly string? Uri; + + [OutputConstructor] + private RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository(string? uri) + { + Uri = uri; + } + } +} diff --git a/sdk/dotnet/ArtifactRegistry/Repository.cs b/sdk/dotnet/ArtifactRegistry/Repository.cs index 858de3512c..1e0bd0cc7f 100644 --- a/sdk/dotnet/ArtifactRegistry/Repository.cs +++ b/sdk/dotnet/ArtifactRegistry/Repository.cs @@ -316,7 +316,7 @@ namespace Pulumi.Gcp.ArtifactRegistry /// /// }); /// ``` - /// ### Artifact Registry Repository Remote Custom + /// ### Artifact Registry Repository Remote Dockerhub Auth /// /// ```csharp /// using System.Collections.Generic; @@ -328,7 +328,7 @@ namespace Pulumi.Gcp.ArtifactRegistry /// { /// var project = Gcp.Organizations.GetProject.Invoke(); /// - /// var example_custom_remote_secret = new Gcp.SecretManager.Secret("example-custom-remote-secret", new() + /// var example_remote_secret = new Gcp.SecretManager.Secret("example-remote-secret", new() /// { /// SecretId = "example-secret", /// Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs @@ -337,15 +337,15 @@ namespace Pulumi.Gcp.ArtifactRegistry /// }, /// }); /// - /// var example_custom_remote_secretVersion = new Gcp.SecretManager.SecretVersion("example-custom-remote-secret_version", new() + /// var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion("example-remote-secret_version", new() /// { - /// Secret = example_custom_remote_secret.Id, + /// Secret = example_remote_secret.Id, /// SecretData = "remote-password", /// }); /// /// var secret_access = new Gcp.SecretManager.SecretIamMember("secret-access", new() /// { - /// SecretId = example_custom_remote_secret.Id, + /// SecretId = example_remote_secret.Id, /// Role = "roles/secretmanager.secretAccessor", /// Member = $"serviceAccount:service-{project.Apply(getProjectResult => getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com", /// }); @@ -353,13 +353,14 @@ namespace Pulumi.Gcp.ArtifactRegistry /// var my_repo = new Gcp.ArtifactRegistry.Repository("my-repo", new() /// { /// Location = "us-central1", - /// RepositoryId = "example-custom-remote", - /// Description = "example remote docker repository with credentials", + /// RepositoryId = "example-dockerhub-remote", + /// Description = "example remote dockerhub repository with credentials", /// Format = "DOCKER", /// Mode = "REMOTE_REPOSITORY", /// RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs /// { /// Description = "docker hub with custom credentials", + /// DisableUpstreamValidation = true, /// DockerRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs /// { /// PublicRepository = "DOCKER_HUB", @@ -369,7 +370,267 @@ namespace Pulumi.Gcp.ArtifactRegistry /// UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs /// { /// Username = "remote-username", - /// PasswordSecretVersion = example_custom_remote_secretVersion.Name, + /// PasswordSecretVersion = example_remote_secretVersion.Name, + /// }, + /// }, + /// }, + /// }); + /// + /// }); + /// ``` + /// ### Artifact Registry Repository Remote Docker Custom With Auth + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var project = Gcp.Organizations.GetProject.Invoke(); + /// + /// var example_remote_secret = new Gcp.SecretManager.Secret("example-remote-secret", new() + /// { + /// SecretId = "example-secret", + /// Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs + /// { + /// Auto = null, + /// }, + /// }); + /// + /// var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion("example-remote-secret_version", new() + /// { + /// Secret = example_remote_secret.Id, + /// SecretData = "remote-password", + /// }); + /// + /// var secret_access = new Gcp.SecretManager.SecretIamMember("secret-access", new() + /// { + /// SecretId = example_remote_secret.Id, + /// Role = "roles/secretmanager.secretAccessor", + /// Member = $"serviceAccount:service-{project.Apply(getProjectResult => getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com", + /// }); + /// + /// var my_repo = new Gcp.ArtifactRegistry.Repository("my-repo", new() + /// { + /// Location = "us-central1", + /// RepositoryId = "example-docker-custom-remote", + /// Description = "example remote custom docker repository with credentials", + /// Format = "DOCKER", + /// Mode = "REMOTE_REPOSITORY", + /// RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs + /// { + /// Description = "custom docker remote with credentials", + /// DisableUpstreamValidation = true, + /// DockerRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs + /// { + /// CustomRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs + /// { + /// Uri = "https://registry-1.docker.io", + /// }, + /// }, + /// UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs + /// { + /// UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs + /// { + /// Username = "remote-username", + /// PasswordSecretVersion = example_remote_secretVersion.Name, + /// }, + /// }, + /// }, + /// }); + /// + /// }); + /// ``` + /// ### Artifact Registry Repository Remote Maven Custom With Auth + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var project = Gcp.Organizations.GetProject.Invoke(); + /// + /// var example_remote_secret = new Gcp.SecretManager.Secret("example-remote-secret", new() + /// { + /// SecretId = "example-secret", + /// Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs + /// { + /// Auto = null, + /// }, + /// }); + /// + /// var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion("example-remote-secret_version", new() + /// { + /// Secret = example_remote_secret.Id, + /// SecretData = "remote-password", + /// }); + /// + /// var secret_access = new Gcp.SecretManager.SecretIamMember("secret-access", new() + /// { + /// SecretId = example_remote_secret.Id, + /// Role = "roles/secretmanager.secretAccessor", + /// Member = $"serviceAccount:service-{project.Apply(getProjectResult => getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com", + /// }); + /// + /// var my_repo = new Gcp.ArtifactRegistry.Repository("my-repo", new() + /// { + /// Location = "us-central1", + /// RepositoryId = "example-maven-custom-remote", + /// Description = "example remote custom maven repository with credentials", + /// Format = "MAVEN", + /// Mode = "REMOTE_REPOSITORY", + /// RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs + /// { + /// Description = "custom maven remote with credentials", + /// DisableUpstreamValidation = true, + /// MavenRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigMavenRepositoryArgs + /// { + /// CustomRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs + /// { + /// Uri = "https://my.maven.registry", + /// }, + /// }, + /// UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs + /// { + /// UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs + /// { + /// Username = "remote-username", + /// PasswordSecretVersion = example_remote_secretVersion.Name, + /// }, + /// }, + /// }, + /// }); + /// + /// }); + /// ``` + /// ### Artifact Registry Repository Remote Npm Custom With Auth + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var project = Gcp.Organizations.GetProject.Invoke(); + /// + /// var example_remote_secret = new Gcp.SecretManager.Secret("example-remote-secret", new() + /// { + /// SecretId = "example-secret", + /// Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs + /// { + /// Auto = null, + /// }, + /// }); + /// + /// var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion("example-remote-secret_version", new() + /// { + /// Secret = example_remote_secret.Id, + /// SecretData = "remote-password", + /// }); + /// + /// var secret_access = new Gcp.SecretManager.SecretIamMember("secret-access", new() + /// { + /// SecretId = example_remote_secret.Id, + /// Role = "roles/secretmanager.secretAccessor", + /// Member = $"serviceAccount:service-{project.Apply(getProjectResult => getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com", + /// }); + /// + /// var my_repo = new Gcp.ArtifactRegistry.Repository("my-repo", new() + /// { + /// Location = "us-central1", + /// RepositoryId = "example-npm-custom-remote", + /// Description = "example remote custom npm repository with credentials", + /// Format = "NPM", + /// Mode = "REMOTE_REPOSITORY", + /// RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs + /// { + /// Description = "custom npm with credentials", + /// DisableUpstreamValidation = true, + /// NpmRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigNpmRepositoryArgs + /// { + /// CustomRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs + /// { + /// Uri = "https://my.npm.registry", + /// }, + /// }, + /// UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs + /// { + /// UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs + /// { + /// Username = "remote-username", + /// PasswordSecretVersion = example_remote_secretVersion.Name, + /// }, + /// }, + /// }, + /// }); + /// + /// }); + /// ``` + /// ### Artifact Registry Repository Remote Python Custom With Auth + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var project = Gcp.Organizations.GetProject.Invoke(); + /// + /// var example_remote_secret = new Gcp.SecretManager.Secret("example-remote-secret", new() + /// { + /// SecretId = "example-secret", + /// Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs + /// { + /// Auto = null, + /// }, + /// }); + /// + /// var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion("example-remote-secret_version", new() + /// { + /// Secret = example_remote_secret.Id, + /// SecretData = "remote-password", + /// }); + /// + /// var secret_access = new Gcp.SecretManager.SecretIamMember("secret-access", new() + /// { + /// SecretId = example_remote_secret.Id, + /// Role = "roles/secretmanager.secretAccessor", + /// Member = $"serviceAccount:service-{project.Apply(getProjectResult => getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com", + /// }); + /// + /// var my_repo = new Gcp.ArtifactRegistry.Repository("my-repo", new() + /// { + /// Location = "us-central1", + /// RepositoryId = "example-python-custom-remote", + /// Description = "example remote custom python repository with credentials", + /// Format = "PYTHON", + /// Mode = "REMOTE_REPOSITORY", + /// RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs + /// { + /// Description = "custom npm with credentials", + /// DisableUpstreamValidation = true, + /// PythonRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigPythonRepositoryArgs + /// { + /// CustomRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs + /// { + /// Uri = "https://my.python.registry", + /// }, + /// }, + /// UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs + /// { + /// UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs + /// { + /// Username = "remote-username", + /// PasswordSecretVersion = example_remote_secretVersion.Name, /// }, /// }, /// }, diff --git a/sdk/dotnet/BigQuery/Table.cs b/sdk/dotnet/BigQuery/Table.cs index f520c93d9c..005255a09d 100644 --- a/sdk/dotnet/BigQuery/Table.cs +++ b/sdk/dotnet/BigQuery/Table.cs @@ -295,6 +295,14 @@ public partial class Table : global::Pulumi.CustomResource [Output("requirePartitionFilter")] public Output RequirePartitionFilter { get; private set; } = null!; + /// + /// The tags attached to this table. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for + /// example "123456789012/environment" where 123456789012 is the ID of the parent organization or project resource for this + /// tag key. Tag value is expected to be the short name, for example "Production". + /// + [Output("resourceTags")] + public Output?> ResourceTags { get; private set; } = null!; + /// /// A JSON schema for the table. /// @@ -517,6 +525,20 @@ public InputMap Labels [Input("requirePartitionFilter")] public Input? RequirePartitionFilter { get; set; } + [Input("resourceTags")] + private InputMap? _resourceTags; + + /// + /// The tags attached to this table. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for + /// example "123456789012/environment" where 123456789012 is the ID of the parent organization or project resource for this + /// tag key. Tag value is expected to be the short name, for example "Production". + /// + public InputMap ResourceTags + { + get => _resourceTags ?? (_resourceTags = new InputMap()); + set => _resourceTags = value; + } + /// /// A JSON schema for the table. /// @@ -773,6 +795,20 @@ public InputMap PulumiLabels [Input("requirePartitionFilter")] public Input? RequirePartitionFilter { get; set; } + [Input("resourceTags")] + private InputMap? _resourceTags; + + /// + /// The tags attached to this table. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for + /// example "123456789012/environment" where 123456789012 is the ID of the parent organization or project resource for this + /// tag key. Tag value is expected to be the short name, for example "Production". + /// + public InputMap ResourceTags + { + get => _resourceTags ?? (_resourceTags = new InputMap()); + set => _resourceTags = value; + } + /// /// A JSON schema for the table. /// diff --git a/sdk/dotnet/Billing/Budget.cs b/sdk/dotnet/Billing/Budget.cs index 901044f3e9..50391c6404 100644 --- a/sdk/dotnet/Billing/Budget.cs +++ b/sdk/dotnet/Billing/Budget.cs @@ -382,6 +382,13 @@ public partial class Budget : global::Pulumi.CustomResource [Output("name")] public Output Name { get; private set; } = null!; + /// + /// The ownership scope of the budget. The ownership scope and users' IAM permissions determine who has full access to the + /// budget's data. Possible values: ["OWNERSHIP_SCOPE_UNSPECIFIED", "ALL_USERS", "BILLING_ACCOUNT"] + /// + [Output("ownershipScope")] + public Output OwnershipScope { get; private set; } = null!; + /// /// Rules that trigger alerts (notifications of thresholds being crossed) when spend exceeds the specified percentages of /// the budget. @@ -467,6 +474,13 @@ public sealed class BudgetArgs : global::Pulumi.ResourceArgs [Input("displayName")] public Input? DisplayName { get; set; } + /// + /// The ownership scope of the budget. The ownership scope and users' IAM permissions determine who has full access to the + /// budget's data. Possible values: ["OWNERSHIP_SCOPE_UNSPECIFIED", "ALL_USERS", "BILLING_ACCOUNT"] + /// + [Input("ownershipScope")] + public Input? OwnershipScope { get; set; } + [Input("thresholdRules")] private InputList? _thresholdRules; @@ -528,6 +542,13 @@ public sealed class BudgetState : global::Pulumi.ResourceArgs [Input("name")] public Input? Name { get; set; } + /// + /// The ownership scope of the budget. The ownership scope and users' IAM permissions determine who has full access to the + /// budget's data. Possible values: ["OWNERSHIP_SCOPE_UNSPECIFIED", "ALL_USERS", "BILLING_ACCOUNT"] + /// + [Input("ownershipScope")] + public Input? OwnershipScope { get; set; } + [Input("thresholdRules")] private InputList? _thresholdRules; diff --git a/sdk/dotnet/CloudFunctionsV2/Function.cs b/sdk/dotnet/CloudFunctionsV2/Function.cs index 69923d3a34..82412215c5 100644 --- a/sdk/dotnet/CloudFunctionsV2/Function.cs +++ b/sdk/dotnet/CloudFunctionsV2/Function.cs @@ -516,6 +516,99 @@ namespace Pulumi.Gcp.CloudFunctionsV2 /// /// }); /// ``` + /// ### Cloudfunctions2 Basic Builder + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// using Time = Pulumi.Time; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var project = "my-project-name"; + /// + /// var account = new Gcp.ServiceAccount.Account("account", new() + /// { + /// AccountId = "gcf-sa", + /// DisplayName = "Test Service Account", + /// }); + /// + /// var logWriter = new Gcp.Projects.IAMMember("log_writer", new() + /// { + /// Project = account.Project, + /// Role = "roles/logging.logWriter", + /// Member = account.Email.Apply(email => $"serviceAccount:{email}"), + /// }); + /// + /// var artifactRegistryWriter = new Gcp.Projects.IAMMember("artifact_registry_writer", new() + /// { + /// Project = account.Project, + /// Role = "roles/artifactregistry.writer", + /// Member = account.Email.Apply(email => $"serviceAccount:{email}"), + /// }); + /// + /// var storageObjectAdmin = new Gcp.Projects.IAMMember("storage_object_admin", new() + /// { + /// Project = account.Project, + /// Role = "roles/storage.objectAdmin", + /// Member = account.Email.Apply(email => $"serviceAccount:{email}"), + /// }); + /// + /// var bucket = new Gcp.Storage.Bucket("bucket", new() + /// { + /// Name = $"{project}-gcf-source", + /// Location = "US", + /// UniformBucketLevelAccess = true, + /// }); + /// + /// var @object = new Gcp.Storage.BucketObject("object", new() + /// { + /// Name = "function-source.zip", + /// Bucket = bucket.Name, + /// Source = new FileAsset("function-source.zip"), + /// }); + /// + /// // builder permissions need to stablize before it can pull the source zip + /// var wait60s = new Time.Index.Sleep("wait_60s", new() + /// { + /// CreateDuration = "60s", + /// }); + /// + /// var function = new Gcp.CloudFunctionsV2.Function("function", new() + /// { + /// Name = "function-v2", + /// Location = "us-central1", + /// Description = "a new function", + /// BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs + /// { + /// Runtime = "nodejs16", + /// EntryPoint = "helloHttp", + /// Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs + /// { + /// StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs + /// { + /// Bucket = bucket.Name, + /// Object = @object.Name, + /// }, + /// }, + /// ServiceAccount = account.Id, + /// }, + /// ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs + /// { + /// MaxInstanceCount = 1, + /// AvailableMemory = "256M", + /// TimeoutSeconds = 60, + /// }, + /// }); + /// + /// return new Dictionary<string, object?> + /// { + /// ["functionUri"] = function.ServiceConfig.Apply(serviceConfig => serviceConfig?.Uri), + /// }; + /// }); + /// ``` /// ### Cloudfunctions2 Secret Env /// /// ```csharp diff --git a/sdk/dotnet/CloudFunctionsV2/Inputs/FunctionBuildConfigArgs.cs b/sdk/dotnet/CloudFunctionsV2/Inputs/FunctionBuildConfigArgs.cs index 66ca0b514b..fbce8b2b45 100644 --- a/sdk/dotnet/CloudFunctionsV2/Inputs/FunctionBuildConfigArgs.cs +++ b/sdk/dotnet/CloudFunctionsV2/Inputs/FunctionBuildConfigArgs.cs @@ -55,6 +55,12 @@ public InputMap EnvironmentVariables [Input("runtime")] public Input? Runtime { get; set; } + /// + /// The fully-qualified name of the service account to be used for building the container. + /// + [Input("serviceAccount")] + public Input? ServiceAccount { get; set; } + /// /// The location of the function source code. /// Structure is documented below. diff --git a/sdk/dotnet/CloudFunctionsV2/Inputs/FunctionBuildConfigGetArgs.cs b/sdk/dotnet/CloudFunctionsV2/Inputs/FunctionBuildConfigGetArgs.cs index c7123dbcce..625882d5eb 100644 --- a/sdk/dotnet/CloudFunctionsV2/Inputs/FunctionBuildConfigGetArgs.cs +++ b/sdk/dotnet/CloudFunctionsV2/Inputs/FunctionBuildConfigGetArgs.cs @@ -55,6 +55,12 @@ public InputMap EnvironmentVariables [Input("runtime")] public Input? Runtime { get; set; } + /// + /// The fully-qualified name of the service account to be used for building the container. + /// + [Input("serviceAccount")] + public Input? ServiceAccount { get; set; } + /// /// The location of the function source code. /// Structure is documented below. diff --git a/sdk/dotnet/CloudFunctionsV2/Outputs/FunctionBuildConfig.cs b/sdk/dotnet/CloudFunctionsV2/Outputs/FunctionBuildConfig.cs index 1c049b8700..4674ae69af 100644 --- a/sdk/dotnet/CloudFunctionsV2/Outputs/FunctionBuildConfig.cs +++ b/sdk/dotnet/CloudFunctionsV2/Outputs/FunctionBuildConfig.cs @@ -41,6 +41,10 @@ public sealed class FunctionBuildConfig /// public readonly string? Runtime; /// + /// The fully-qualified name of the service account to be used for building the container. + /// + public readonly string? ServiceAccount; + /// /// The location of the function source code. /// Structure is documented below. /// @@ -62,6 +66,8 @@ private FunctionBuildConfig( string? runtime, + string? serviceAccount, + Outputs.FunctionBuildConfigSource? source, string? workerPool) @@ -71,6 +77,7 @@ private FunctionBuildConfig( EntryPoint = entryPoint; EnvironmentVariables = environmentVariables; Runtime = runtime; + ServiceAccount = serviceAccount; Source = source; WorkerPool = workerPool; } diff --git a/sdk/dotnet/CloudFunctionsV2/Outputs/GetFunctionBuildConfigResult.cs b/sdk/dotnet/CloudFunctionsV2/Outputs/GetFunctionBuildConfigResult.cs index 0fc2f49704..7c3de6e14d 100644 --- a/sdk/dotnet/CloudFunctionsV2/Outputs/GetFunctionBuildConfigResult.cs +++ b/sdk/dotnet/CloudFunctionsV2/Outputs/GetFunctionBuildConfigResult.cs @@ -40,6 +40,10 @@ public sealed class GetFunctionBuildConfigResult /// public readonly string Runtime; /// + /// The fully-qualified name of the service account to be used for building the container. + /// + public readonly string ServiceAccount; + /// /// The location of the function source code. /// public readonly ImmutableArray Sources; @@ -60,6 +64,8 @@ private GetFunctionBuildConfigResult( string runtime, + string serviceAccount, + ImmutableArray sources, string workerPool) @@ -69,6 +75,7 @@ private GetFunctionBuildConfigResult( EntryPoint = entryPoint; EnvironmentVariables = environmentVariables; Runtime = runtime; + ServiceAccount = serviceAccount; Sources = sources; WorkerPool = workerPool; } diff --git a/sdk/dotnet/Compute/GetInstanceGroupManager.cs b/sdk/dotnet/Compute/GetInstanceGroupManager.cs index 300c3a3dbd..400d3cdeee 100644 --- a/sdk/dotnet/Compute/GetInstanceGroupManager.cs +++ b/sdk/dotnet/Compute/GetInstanceGroupManager.cs @@ -161,6 +161,7 @@ public sealed class GetInstanceGroupManagerResult public readonly string? Name; public readonly ImmutableArray NamedPorts; public readonly string Operation; + public readonly ImmutableArray Params; public readonly string? Project; public readonly string? SelfLink; public readonly ImmutableArray StatefulDisks; @@ -203,6 +204,8 @@ private GetInstanceGroupManagerResult( string operation, + ImmutableArray @params, + string? project, string? selfLink, @@ -242,6 +245,7 @@ private GetInstanceGroupManagerResult( Name = name; NamedPorts = namedPorts; Operation = operation; + Params = @params; Project = project; SelfLink = selfLink; StatefulDisks = statefulDisks; diff --git a/sdk/dotnet/Compute/Inputs/InstanceGroupManagerParamsArgs.cs b/sdk/dotnet/Compute/Inputs/InstanceGroupManagerParamsArgs.cs new file mode 100644 index 0000000000..e89f7bb58a --- /dev/null +++ b/sdk/dotnet/Compute/Inputs/InstanceGroupManagerParamsArgs.cs @@ -0,0 +1,32 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.Compute.Inputs +{ + + public sealed class InstanceGroupManagerParamsArgs : global::Pulumi.ResourceArgs + { + [Input("resourceManagerTags")] + private InputMap? _resourceManagerTags; + + /// + /// Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) + /// + public InputMap ResourceManagerTags + { + get => _resourceManagerTags ?? (_resourceManagerTags = new InputMap()); + set => _resourceManagerTags = value; + } + + public InstanceGroupManagerParamsArgs() + { + } + public static new InstanceGroupManagerParamsArgs Empty => new InstanceGroupManagerParamsArgs(); + } +} diff --git a/sdk/dotnet/Compute/Inputs/InstanceGroupManagerParamsGetArgs.cs b/sdk/dotnet/Compute/Inputs/InstanceGroupManagerParamsGetArgs.cs new file mode 100644 index 0000000000..c9b18faf00 --- /dev/null +++ b/sdk/dotnet/Compute/Inputs/InstanceGroupManagerParamsGetArgs.cs @@ -0,0 +1,32 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.Compute.Inputs +{ + + public sealed class InstanceGroupManagerParamsGetArgs : global::Pulumi.ResourceArgs + { + [Input("resourceManagerTags")] + private InputMap? _resourceManagerTags; + + /// + /// Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) + /// + public InputMap ResourceManagerTags + { + get => _resourceManagerTags ?? (_resourceManagerTags = new InputMap()); + set => _resourceManagerTags = value; + } + + public InstanceGroupManagerParamsGetArgs() + { + } + public static new InstanceGroupManagerParamsGetArgs Empty => new InstanceGroupManagerParamsGetArgs(); + } +} diff --git a/sdk/dotnet/Compute/Inputs/RegionInstanceGroupManagerParamsArgs.cs b/sdk/dotnet/Compute/Inputs/RegionInstanceGroupManagerParamsArgs.cs new file mode 100644 index 0000000000..9354055b2f --- /dev/null +++ b/sdk/dotnet/Compute/Inputs/RegionInstanceGroupManagerParamsArgs.cs @@ -0,0 +1,32 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.Compute.Inputs +{ + + public sealed class RegionInstanceGroupManagerParamsArgs : global::Pulumi.ResourceArgs + { + [Input("resourceManagerTags")] + private InputMap? _resourceManagerTags; + + /// + /// Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) + /// + public InputMap ResourceManagerTags + { + get => _resourceManagerTags ?? (_resourceManagerTags = new InputMap()); + set => _resourceManagerTags = value; + } + + public RegionInstanceGroupManagerParamsArgs() + { + } + public static new RegionInstanceGroupManagerParamsArgs Empty => new RegionInstanceGroupManagerParamsArgs(); + } +} diff --git a/sdk/dotnet/Compute/Inputs/RegionInstanceGroupManagerParamsGetArgs.cs b/sdk/dotnet/Compute/Inputs/RegionInstanceGroupManagerParamsGetArgs.cs new file mode 100644 index 0000000000..72a66333c2 --- /dev/null +++ b/sdk/dotnet/Compute/Inputs/RegionInstanceGroupManagerParamsGetArgs.cs @@ -0,0 +1,32 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.Compute.Inputs +{ + + public sealed class RegionInstanceGroupManagerParamsGetArgs : global::Pulumi.ResourceArgs + { + [Input("resourceManagerTags")] + private InputMap? _resourceManagerTags; + + /// + /// Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) + /// + public InputMap ResourceManagerTags + { + get => _resourceManagerTags ?? (_resourceManagerTags = new InputMap()); + set => _resourceManagerTags = value; + } + + public RegionInstanceGroupManagerParamsGetArgs() + { + } + public static new RegionInstanceGroupManagerParamsGetArgs Empty => new RegionInstanceGroupManagerParamsGetArgs(); + } +} diff --git a/sdk/dotnet/Compute/InstanceGroupManager.cs b/sdk/dotnet/Compute/InstanceGroupManager.cs index 47b4fe641f..14b69f5ae1 100644 --- a/sdk/dotnet/Compute/InstanceGroupManager.cs +++ b/sdk/dotnet/Compute/InstanceGroupManager.cs @@ -246,6 +246,14 @@ public partial class InstanceGroupManager : global::Pulumi.CustomResource [Output("operation")] public Output Operation { get; private set; } = null!; + /// + /// Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + /// + /// - - - + /// + [Output("params")] + public Output Params { get; private set; } = null!; + /// /// The ID of the project in which the resource belongs. If it /// is not provided, the provider project is used. @@ -299,9 +307,7 @@ public partial class InstanceGroupManager : global::Pulumi.CustomResource public Output TargetSize { get; private set; } = null!; /// - /// The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch) - /// - /// - - - + /// The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch). /// [Output("updatePolicy")] public Output UpdatePolicy { get; private set; } = null!; @@ -458,6 +464,14 @@ public InputList NamedPorts set => _namedPorts = value; } + /// + /// Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + /// + /// - - - + /// + [Input("params")] + public Input? Params { get; set; } + /// /// The ID of the project in which the resource belongs. If it /// is not provided, the provider project is used. @@ -523,9 +537,7 @@ public InputList TargetPools public Input? TargetSize { get; set; } /// - /// The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch) - /// - /// - - - + /// The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch). /// [Input("updatePolicy")] public Input? UpdatePolicy { get; set; } @@ -671,6 +683,14 @@ public InputList NamedPorts [Input("operation")] public Input? Operation { get; set; } + /// + /// Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + /// + /// - - - + /// + [Input("params")] + public Input? Params { get; set; } + /// /// The ID of the project in which the resource belongs. If it /// is not provided, the provider project is used. @@ -754,9 +774,7 @@ public InputList TargetPools public Input? TargetSize { get; set; } /// - /// The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch) - /// - /// - - - + /// The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch). /// [Input("updatePolicy")] public Input? UpdatePolicy { get; set; } diff --git a/sdk/dotnet/Compute/Outputs/GetInstanceGroupManagerParamResult.cs b/sdk/dotnet/Compute/Outputs/GetInstanceGroupManagerParamResult.cs new file mode 100644 index 0000000000..db94ba85c5 --- /dev/null +++ b/sdk/dotnet/Compute/Outputs/GetInstanceGroupManagerParamResult.cs @@ -0,0 +1,27 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.Compute.Outputs +{ + + [OutputType] + public sealed class GetInstanceGroupManagerParamResult + { + /// + /// Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. + /// + public readonly ImmutableDictionary ResourceManagerTags; + + [OutputConstructor] + private GetInstanceGroupManagerParamResult(ImmutableDictionary resourceManagerTags) + { + ResourceManagerTags = resourceManagerTags; + } + } +} diff --git a/sdk/dotnet/Compute/Outputs/InstanceGroupManagerParams.cs b/sdk/dotnet/Compute/Outputs/InstanceGroupManagerParams.cs new file mode 100644 index 0000000000..f53878918d --- /dev/null +++ b/sdk/dotnet/Compute/Outputs/InstanceGroupManagerParams.cs @@ -0,0 +1,27 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.Compute.Outputs +{ + + [OutputType] + public sealed class InstanceGroupManagerParams + { + /// + /// Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) + /// + public readonly ImmutableDictionary? ResourceManagerTags; + + [OutputConstructor] + private InstanceGroupManagerParams(ImmutableDictionary? resourceManagerTags) + { + ResourceManagerTags = resourceManagerTags; + } + } +} diff --git a/sdk/dotnet/Compute/Outputs/RegionInstanceGroupManagerParams.cs b/sdk/dotnet/Compute/Outputs/RegionInstanceGroupManagerParams.cs new file mode 100644 index 0000000000..55939b230c --- /dev/null +++ b/sdk/dotnet/Compute/Outputs/RegionInstanceGroupManagerParams.cs @@ -0,0 +1,27 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.Compute.Outputs +{ + + [OutputType] + public sealed class RegionInstanceGroupManagerParams + { + /// + /// Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) + /// + public readonly ImmutableDictionary? ResourceManagerTags; + + [OutputConstructor] + private RegionInstanceGroupManagerParams(ImmutableDictionary? resourceManagerTags) + { + ResourceManagerTags = resourceManagerTags; + } + } +} diff --git a/sdk/dotnet/Compute/RegionInstanceGroupManager.cs b/sdk/dotnet/Compute/RegionInstanceGroupManager.cs index 4d413ad972..45fa8e1027 100644 --- a/sdk/dotnet/Compute/RegionInstanceGroupManager.cs +++ b/sdk/dotnet/Compute/RegionInstanceGroupManager.cs @@ -246,6 +246,14 @@ public partial class RegionInstanceGroupManager : global::Pulumi.CustomResource [Output("namedPorts")] public Output> NamedPorts { get; private set; } = null!; + /// + /// Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + /// + /// - - - + /// + [Output("params")] + public Output Params { get; private set; } = null!; + /// /// The ID of the project in which the resource belongs. If it /// is not provided, the provider project is used. @@ -275,8 +283,6 @@ public partial class RegionInstanceGroupManager : global::Pulumi.CustomResource /// /// External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. - /// - /// - - - /// [Output("statefulExternalIps")] public Output> StatefulExternalIps { get; private set; } = null!; @@ -476,6 +482,14 @@ public InputList NamedPorts set => _namedPorts = value; } + /// + /// Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + /// + /// - - - + /// + [Input("params")] + public Input? Params { get; set; } + /// /// The ID of the project in which the resource belongs. If it /// is not provided, the provider project is used. @@ -508,8 +522,6 @@ public InputList StatefulDisk /// /// External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. - /// - /// - - - /// public InputList StatefulExternalIps { @@ -704,6 +716,14 @@ public InputList NamedPorts set => _namedPorts = value; } + /// + /// Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + /// + /// - - - + /// + [Input("params")] + public Input? Params { get; set; } + /// /// The ID of the project in which the resource belongs. If it /// is not provided, the provider project is used. @@ -742,8 +762,6 @@ public InputList StatefulD /// /// External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. - /// - /// - - - /// public InputList StatefulExternalIps { diff --git a/sdk/dotnet/Container/Outputs/GetClusterMasterAuthorizedNetworksConfigResult.cs b/sdk/dotnet/Container/Outputs/GetClusterMasterAuthorizedNetworksConfigResult.cs index 771a05c5fc..a400341485 100644 --- a/sdk/dotnet/Container/Outputs/GetClusterMasterAuthorizedNetworksConfigResult.cs +++ b/sdk/dotnet/Container/Outputs/GetClusterMasterAuthorizedNetworksConfigResult.cs @@ -18,7 +18,7 @@ public sealed class GetClusterMasterAuthorizedNetworksConfigResult /// public readonly ImmutableArray CidrBlocks; /// - /// Whether master is accessbile via Google Compute Engine Public IP addresses. + /// Whether Kubernetes master is accessible via Google Compute Engine Public IPs. /// public readonly bool GcpPublicCidrsAccessEnabled; diff --git a/sdk/dotnet/Container/Outputs/GetClusterServiceExternalIpsConfigResult.cs b/sdk/dotnet/Container/Outputs/GetClusterServiceExternalIpsConfigResult.cs index 4239319c3d..8db4a2ca1c 100644 --- a/sdk/dotnet/Container/Outputs/GetClusterServiceExternalIpsConfigResult.cs +++ b/sdk/dotnet/Container/Outputs/GetClusterServiceExternalIpsConfigResult.cs @@ -14,7 +14,7 @@ namespace Pulumi.Gcp.Container.Outputs public sealed class GetClusterServiceExternalIpsConfigResult { /// - /// When enabled, services with exterenal ips specified will be allowed. + /// When enabled, services with external ips specified will be allowed. /// public readonly bool Enabled; diff --git a/sdk/dotnet/Dns/GetKeys.cs b/sdk/dotnet/Dns/GetKeys.cs index d347792c39..879467865e 100644 --- a/sdk/dotnet/Dns/GetKeys.cs +++ b/sdk/dotnet/Dns/GetKeys.cs @@ -154,7 +154,7 @@ public GetKeysInvokeArgs() public sealed class GetKeysResult { /// - /// Unique identifier for the resource; defined by the server. + /// The provider-assigned unique ID for this managed resource. /// public readonly string Id; /// diff --git a/sdk/dotnet/Dns/GetManagedZones.cs b/sdk/dotnet/Dns/GetManagedZones.cs index 138d8b3934..d5df1cce9e 100644 --- a/sdk/dotnet/Dns/GetManagedZones.cs +++ b/sdk/dotnet/Dns/GetManagedZones.cs @@ -67,18 +67,6 @@ public static Output Invoke(GetManagedZonesInvokeArgs? ar public sealed class GetManagedZonesArgs : global::Pulumi.InvokeArgs { - [Input("managedZones")] - private List? _managedZones; - - /// - /// A list of managed zones. - /// - public List ManagedZones - { - get => _managedZones ?? (_managedZones = new List()); - set => _managedZones = value; - } - /// /// The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. /// @@ -93,18 +81,6 @@ public GetManagedZonesArgs() public sealed class GetManagedZonesInvokeArgs : global::Pulumi.InvokeArgs { - [Input("managedZones")] - private InputList? _managedZones; - - /// - /// A list of managed zones. - /// - public InputList ManagedZones - { - get => _managedZones ?? (_managedZones = new InputList()); - set => _managedZones = value; - } - /// /// The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. /// diff --git a/sdk/dotnet/Dns/GetRecordSet.cs b/sdk/dotnet/Dns/GetRecordSet.cs index f865c72f4d..6718795d44 100644 --- a/sdk/dotnet/Dns/GetRecordSet.cs +++ b/sdk/dotnet/Dns/GetRecordSet.cs @@ -129,6 +129,9 @@ public GetRecordSetInvokeArgs() [OutputType] public sealed class GetRecordSetResult { + /// + /// The provider-assigned unique ID for this managed resource. + /// public readonly string Id; public readonly string ManagedZone; public readonly string Name; diff --git a/sdk/dotnet/Dns/Inputs/GetManagedZonesManagedZone.cs b/sdk/dotnet/Dns/Inputs/GetManagedZonesManagedZone.cs deleted file mode 100644 index a0e9530bd8..0000000000 --- a/sdk/dotnet/Dns/Inputs/GetManagedZonesManagedZone.cs +++ /dev/null @@ -1,74 +0,0 @@ -// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.Gcp.Dns.Inputs -{ - - public sealed class GetManagedZonesManagedZoneArgs : global::Pulumi.InvokeArgs - { - /// - /// A textual description field. - /// - [Input("description", required: true)] - public string Description { get; set; } = null!; - - /// - /// The fully qualified DNS name of this zone. - /// - [Input("dnsName", required: true)] - public string DnsName { get; set; } = null!; - - /// - /// DNS managed zone identifier - /// - [Input("id", required: true)] - public string Id { get; set; } = null!; - - /// - /// Unique identifier for the resource; defined by the server. - /// - [Input("managedZoneId", required: true)] - public int ManagedZoneId { get; set; } - - /// - /// A unique name for the resource. - /// - [Input("name", required: true)] - public string Name { get; set; } = null!; - - [Input("nameServers", required: true)] - private List? _nameServers; - - /// - /// The list of nameservers that will be authoritative for this domain. Use NS records to redirect from your DNS provider to these names, thus making Google Cloud DNS authoritative for this zone. - /// - public List NameServers - { - get => _nameServers ?? (_nameServers = new List()); - set => _nameServers = value; - } - - /// - /// The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. - /// - [Input("project", required: true)] - public string Project { get; set; } = null!; - - /// - /// The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources. - /// - [Input("visibility", required: true)] - public string Visibility { get; set; } = null!; - - public GetManagedZonesManagedZoneArgs() - { - } - public static new GetManagedZonesManagedZoneArgs Empty => new GetManagedZonesManagedZoneArgs(); - } -} diff --git a/sdk/dotnet/Dns/Inputs/GetManagedZonesManagedZoneArgs.cs b/sdk/dotnet/Dns/Inputs/GetManagedZonesManagedZoneArgs.cs deleted file mode 100644 index 637154650c..0000000000 --- a/sdk/dotnet/Dns/Inputs/GetManagedZonesManagedZoneArgs.cs +++ /dev/null @@ -1,74 +0,0 @@ -// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.Gcp.Dns.Inputs -{ - - public sealed class GetManagedZonesManagedZoneInputArgs : global::Pulumi.ResourceArgs - { - /// - /// A textual description field. - /// - [Input("description", required: true)] - public Input Description { get; set; } = null!; - - /// - /// The fully qualified DNS name of this zone. - /// - [Input("dnsName", required: true)] - public Input DnsName { get; set; } = null!; - - /// - /// DNS managed zone identifier - /// - [Input("id", required: true)] - public Input Id { get; set; } = null!; - - /// - /// Unique identifier for the resource; defined by the server. - /// - [Input("managedZoneId", required: true)] - public Input ManagedZoneId { get; set; } = null!; - - /// - /// A unique name for the resource. - /// - [Input("name", required: true)] - public Input Name { get; set; } = null!; - - [Input("nameServers", required: true)] - private InputList? _nameServers; - - /// - /// The list of nameservers that will be authoritative for this domain. Use NS records to redirect from your DNS provider to these names, thus making Google Cloud DNS authoritative for this zone. - /// - public InputList NameServers - { - get => _nameServers ?? (_nameServers = new InputList()); - set => _nameServers = value; - } - - /// - /// The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. - /// - [Input("project", required: true)] - public Input Project { get; set; } = null!; - - /// - /// The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources. - /// - [Input("visibility", required: true)] - public Input Visibility { get; set; } = null!; - - public GetManagedZonesManagedZoneInputArgs() - { - } - public static new GetManagedZonesManagedZoneInputArgs Empty => new GetManagedZonesManagedZoneInputArgs(); - } -} diff --git a/sdk/dotnet/Dns/Outputs/GetKeysKeySigningKeyDigestResult.cs b/sdk/dotnet/Dns/Outputs/GetKeysKeySigningKeyDigestResult.cs index 4fdd4ac44a..e61abd99f4 100644 --- a/sdk/dotnet/Dns/Outputs/GetKeysKeySigningKeyDigestResult.cs +++ b/sdk/dotnet/Dns/Outputs/GetKeysKeySigningKeyDigestResult.cs @@ -16,17 +16,17 @@ public sealed class GetKeysKeySigningKeyDigestResult /// /// The base-16 encoded bytes of this digest. Suitable for use in a DS resource record. /// - public readonly string Digest; + public readonly string? Digest; /// /// Specifies the algorithm used to calculate this digest. Possible values are `sha1`, `sha256` and `sha384` /// - public readonly string Type; + public readonly string? Type; [OutputConstructor] private GetKeysKeySigningKeyDigestResult( - string digest, + string? digest, - string type) + string? type) { Digest = digest; Type = type; diff --git a/sdk/dotnet/Dns/Outputs/GetKeysZoneSigningKeyDigestResult.cs b/sdk/dotnet/Dns/Outputs/GetKeysZoneSigningKeyDigestResult.cs index 5697c36ebe..9607d00fea 100644 --- a/sdk/dotnet/Dns/Outputs/GetKeysZoneSigningKeyDigestResult.cs +++ b/sdk/dotnet/Dns/Outputs/GetKeysZoneSigningKeyDigestResult.cs @@ -16,17 +16,17 @@ public sealed class GetKeysZoneSigningKeyDigestResult /// /// The base-16 encoded bytes of this digest. Suitable for use in a DS resource record. /// - public readonly string Digest; + public readonly string? Digest; /// /// Specifies the algorithm used to calculate this digest. Possible values are `sha1`, `sha256` and `sha384` /// - public readonly string Type; + public readonly string? Type; [OutputConstructor] private GetKeysZoneSigningKeyDigestResult( - string digest, + string? digest, - string type) + string? type) { Digest = digest; Type = type; diff --git a/sdk/dotnet/Dns/Outputs/GetManagedZonesManagedZoneResult.cs b/sdk/dotnet/Dns/Outputs/GetManagedZonesManagedZoneResult.cs index 808f5e2714..896d88c05f 100644 --- a/sdk/dotnet/Dns/Outputs/GetManagedZonesManagedZoneResult.cs +++ b/sdk/dotnet/Dns/Outputs/GetManagedZonesManagedZoneResult.cs @@ -13,37 +13,16 @@ namespace Pulumi.Gcp.Dns.Outputs [OutputType] public sealed class GetManagedZonesManagedZoneResult { - /// - /// A textual description field. - /// public readonly string Description; - /// - /// The fully qualified DNS name of this zone. - /// public readonly string DnsName; - /// - /// DNS managed zone identifier - /// public readonly string Id; - /// - /// Unique identifier for the resource; defined by the server. - /// public readonly int ManagedZoneId; - /// - /// A unique name for the resource. - /// - public readonly string Name; - /// - /// The list of nameservers that will be authoritative for this domain. Use NS records to redirect from your DNS provider to these names, thus making Google Cloud DNS authoritative for this zone. - /// + public readonly string? Name; public readonly ImmutableArray NameServers; /// /// The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. /// - public readonly string Project; - /// - /// The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources. - /// + public readonly string? Project; public readonly string Visibility; [OutputConstructor] @@ -56,11 +35,11 @@ private GetManagedZonesManagedZoneResult( int managedZoneId, - string name, + string? name, ImmutableArray nameServers, - string project, + string? project, string visibility) { diff --git a/sdk/dotnet/Firestore/Document.cs b/sdk/dotnet/Firestore/Document.cs index 1741a2e55d..353cc841fd 100644 --- a/sdk/dotnet/Firestore/Document.cs +++ b/sdk/dotnet/Firestore/Document.cs @@ -194,7 +194,7 @@ public partial class Document : global::Pulumi.CustomResource public Output Fields { get; private set; } = null!; /// - /// A server defined name for this index. Format: + /// A server defined name for this document. Format: /// `projects/{{project_id}}/databases/{{database_id}}/documents/{{path}}/{{document_id}}` /// [Output("name")] @@ -341,7 +341,7 @@ public sealed class DocumentState : global::Pulumi.ResourceArgs public Input? Fields { get; set; } /// - /// A server defined name for this index. Format: + /// A server defined name for this document. Format: /// `projects/{{project_id}}/databases/{{database_id}}/documents/{{path}}/{{document_id}}` /// [Input("name")] diff --git a/sdk/dotnet/Organizations/GetActiveFolder.cs b/sdk/dotnet/Organizations/GetActiveFolder.cs index 0cb70b9358..77ceb14ecc 100644 --- a/sdk/dotnet/Organizations/GetActiveFolder.cs +++ b/sdk/dotnet/Organizations/GetActiveFolder.cs @@ -45,6 +45,12 @@ public static Output Invoke(GetActiveFolderInvokeArgs arg public sealed class GetActiveFolderArgs : global::Pulumi.InvokeArgs { + /// + /// The API method to use to search for the folder. Valid values are `LIST` and `SEARCH`. Default Value is `LIST`. `LIST` is [strongly consistent](https://cloud.google.com/resource-manager/reference/rest/v3/folders/list#:~:text=list()%20provides%20a-,strongly%20consistent,-view%20of%20the) and requires `resourcemanager.folders.list` on the parent folder, while `SEARCH` is [eventually consistent](https://cloud.google.com/resource-manager/reference/rest/v3/folders/search#:~:text=eventually%20consistent) and only returns folders that the user has `resourcemanager.folders.get` permission on. + /// + [Input("apiMethod")] + public string? ApiMethod { get; set; } + /// /// The folder's display name. /// @@ -65,6 +71,12 @@ public GetActiveFolderArgs() public sealed class GetActiveFolderInvokeArgs : global::Pulumi.InvokeArgs { + /// + /// The API method to use to search for the folder. Valid values are `LIST` and `SEARCH`. Default Value is `LIST`. `LIST` is [strongly consistent](https://cloud.google.com/resource-manager/reference/rest/v3/folders/list#:~:text=list()%20provides%20a-,strongly%20consistent,-view%20of%20the) and requires `resourcemanager.folders.list` on the parent folder, while `SEARCH` is [eventually consistent](https://cloud.google.com/resource-manager/reference/rest/v3/folders/search#:~:text=eventually%20consistent) and only returns folders that the user has `resourcemanager.folders.get` permission on. + /// + [Input("apiMethod")] + public Input? ApiMethod { get; set; } + /// /// The folder's display name. /// @@ -87,6 +99,7 @@ public GetActiveFolderInvokeArgs() [OutputType] public sealed class GetActiveFolderResult { + public readonly string? ApiMethod; public readonly string DisplayName; /// /// The provider-assigned unique ID for this managed resource. @@ -100,6 +113,8 @@ public sealed class GetActiveFolderResult [OutputConstructor] private GetActiveFolderResult( + string? apiMethod, + string displayName, string id, @@ -108,6 +123,7 @@ private GetActiveFolderResult( string parent) { + ApiMethod = apiMethod; DisplayName = displayName; Id = id; Name = name; diff --git a/sdk/dotnet/Projects/IamMemberRemove.cs b/sdk/dotnet/Projects/IamMemberRemove.cs new file mode 100644 index 0000000000..c978a5d718 --- /dev/null +++ b/sdk/dotnet/Projects/IamMemberRemove.cs @@ -0,0 +1,164 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.Projects +{ + /// + /// Ensures that a member:role pairing does not exist in a project's IAM policy. + /// + /// On create, this resource will modify the policy to remove the `member` from the + /// `role`. If the membership is ever re-added, the next refresh will clear this + /// resource from state, proposing re-adding it to correct the membership. Import is + /// not supported- this resource will acquire the current policy and modify it as + /// part of creating the resource. + /// + /// This resource will conflict with `gcp.projects.IAMPolicy` and + /// `gcp.projects.IAMBinding` resources that share a role, as well as + /// `gcp.projects.IAMMember` resources that target the same membership. When + /// multiple resources conflict the final state is not guaranteed to include or omit + /// the membership. Subsequent `pulumi up` calls will always show a diff + /// until the configuration is corrected. + /// + /// For more information see + /// [the official documentation](https://cloud.google.com/iam/docs/granting-changing-revoking-access) + /// and + /// [API reference](https://cloud.google.com/resource-manager/reference/rest/v1/projects/setIamPolicy). + /// + [GcpResourceType("gcp:projects/iamMemberRemove:IamMemberRemove")] + public partial class IamMemberRemove : global::Pulumi.CustomResource + { + /// + /// The IAM principal that should not have the target role. + /// Each entry can have one of the following values: + /// * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. + /// * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + /// * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. + /// * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com. + /// + [Output("member")] + public Output Member { get; private set; } = null!; + + /// + /// The project id of the target project. + /// + [Output("project")] + public Output Project { get; private set; } = null!; + + /// + /// The target role that should be removed. + /// + [Output("role")] + public Output Role { get; private set; } = null!; + + + /// + /// Create a IamMemberRemove resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + public IamMemberRemove(string name, IamMemberRemoveArgs args, CustomResourceOptions? options = null) + : base("gcp:projects/iamMemberRemove:IamMemberRemove", name, args ?? new IamMemberRemoveArgs(), MakeResourceOptions(options, "")) + { + } + + private IamMemberRemove(string name, Input id, IamMemberRemoveState? state = null, CustomResourceOptions? options = null) + : base("gcp:projects/iamMemberRemove:IamMemberRemove", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + }; + var merged = CustomResourceOptions.Merge(defaultOptions, options); + // Override the ID if one was specified for consistency with other language SDKs. + merged.Id = id ?? merged.Id; + return merged; + } + /// + /// Get an existing IamMemberRemove resource's state with the given name, ID, and optional extra + /// properties used to qualify the lookup. + /// + /// + /// The unique name of the resulting resource. + /// The unique provider ID of the resource to lookup. + /// Any extra arguments used during the lookup. + /// A bag of options that control this resource's behavior + public static IamMemberRemove Get(string name, Input id, IamMemberRemoveState? state = null, CustomResourceOptions? options = null) + { + return new IamMemberRemove(name, id, state, options); + } + } + + public sealed class IamMemberRemoveArgs : global::Pulumi.ResourceArgs + { + /// + /// The IAM principal that should not have the target role. + /// Each entry can have one of the following values: + /// * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. + /// * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + /// * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. + /// * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com. + /// + [Input("member", required: true)] + public Input Member { get; set; } = null!; + + /// + /// The project id of the target project. + /// + [Input("project", required: true)] + public Input Project { get; set; } = null!; + + /// + /// The target role that should be removed. + /// + [Input("role", required: true)] + public Input Role { get; set; } = null!; + + public IamMemberRemoveArgs() + { + } + public static new IamMemberRemoveArgs Empty => new IamMemberRemoveArgs(); + } + + public sealed class IamMemberRemoveState : global::Pulumi.ResourceArgs + { + /// + /// The IAM principal that should not have the target role. + /// Each entry can have one of the following values: + /// * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. + /// * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + /// * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. + /// * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com. + /// + [Input("member")] + public Input? Member { get; set; } + + /// + /// The project id of the target project. + /// + [Input("project")] + public Input? Project { get; set; } + + /// + /// The target role that should be removed. + /// + [Input("role")] + public Input? Role { get; set; } + + public IamMemberRemoveState() + { + } + public static new IamMemberRemoveState Empty => new IamMemberRemoveState(); + } +} diff --git a/sdk/dotnet/VMwareEngine/GetPrivateCloud.cs b/sdk/dotnet/VMwareEngine/GetPrivateCloud.cs index 94c222fd24..a5ffc81115 100644 --- a/sdk/dotnet/VMwareEngine/GetPrivateCloud.cs +++ b/sdk/dotnet/VMwareEngine/GetPrivateCloud.cs @@ -142,9 +142,7 @@ public sealed class GetPrivateCloudResult public readonly string Name; public readonly ImmutableArray NetworkConfigs; public readonly ImmutableArray Nsxes; - public readonly string PreferredZone; public readonly string? Project; - public readonly string SecondaryZone; public readonly string State; public readonly string Type; public readonly string Uid; @@ -168,12 +166,8 @@ private GetPrivateCloudResult( ImmutableArray nsxes, - string preferredZone, - string? project, - string secondaryZone, - string state, string type, @@ -190,9 +184,7 @@ private GetPrivateCloudResult( Name = name; NetworkConfigs = networkConfigs; Nsxes = nsxes; - PreferredZone = preferredZone; Project = project; - SecondaryZone = secondaryZone; State = state; Type = type; Uid = uid; diff --git a/sdk/dotnet/VMwareEngine/Inputs/PrivateCloudManagementClusterArgs.cs b/sdk/dotnet/VMwareEngine/Inputs/PrivateCloudManagementClusterArgs.cs index a7ad4af447..b1009d23fd 100644 --- a/sdk/dotnet/VMwareEngine/Inputs/PrivateCloudManagementClusterArgs.cs +++ b/sdk/dotnet/VMwareEngine/Inputs/PrivateCloudManagementClusterArgs.cs @@ -37,6 +37,13 @@ public InputList NodeTyp set => _nodeTypeConfigs = value; } + /// + /// The stretched cluster configuration for the private cloud. + /// Structure is documented below. + /// + [Input("stretchedClusterConfig")] + public Input? StretchedClusterConfig { get; set; } + public PrivateCloudManagementClusterArgs() { } diff --git a/sdk/dotnet/VMwareEngine/Inputs/PrivateCloudManagementClusterGetArgs.cs b/sdk/dotnet/VMwareEngine/Inputs/PrivateCloudManagementClusterGetArgs.cs index 8952c98488..3040d08ac9 100644 --- a/sdk/dotnet/VMwareEngine/Inputs/PrivateCloudManagementClusterGetArgs.cs +++ b/sdk/dotnet/VMwareEngine/Inputs/PrivateCloudManagementClusterGetArgs.cs @@ -37,6 +37,13 @@ public InputList Node set => _nodeTypeConfigs = value; } + /// + /// The stretched cluster configuration for the private cloud. + /// Structure is documented below. + /// + [Input("stretchedClusterConfig")] + public Input? StretchedClusterConfig { get; set; } + public PrivateCloudManagementClusterGetArgs() { } diff --git a/sdk/dotnet/VMwareEngine/Inputs/PrivateCloudManagementClusterNodeTypeConfigArgs.cs b/sdk/dotnet/VMwareEngine/Inputs/PrivateCloudManagementClusterNodeTypeConfigArgs.cs index 49829cf038..82faf0b071 100644 --- a/sdk/dotnet/VMwareEngine/Inputs/PrivateCloudManagementClusterNodeTypeConfigArgs.cs +++ b/sdk/dotnet/VMwareEngine/Inputs/PrivateCloudManagementClusterNodeTypeConfigArgs.cs @@ -17,8 +17,6 @@ public sealed class PrivateCloudManagementClusterNodeTypeConfigArgs : global::Pu /// This number must always be one of `nodeType.availableCustomCoreCounts`. /// If zero is provided max value from `nodeType.availableCustomCoreCounts` will be used. /// This cannot be changed once the PrivateCloud is created. - /// - /// - - - /// [Input("customCoreCount")] public Input? CustomCoreCount { get; set; } diff --git a/sdk/dotnet/VMwareEngine/Inputs/PrivateCloudManagementClusterNodeTypeConfigGetArgs.cs b/sdk/dotnet/VMwareEngine/Inputs/PrivateCloudManagementClusterNodeTypeConfigGetArgs.cs index 0de56d7fde..f6fd48ce14 100644 --- a/sdk/dotnet/VMwareEngine/Inputs/PrivateCloudManagementClusterNodeTypeConfigGetArgs.cs +++ b/sdk/dotnet/VMwareEngine/Inputs/PrivateCloudManagementClusterNodeTypeConfigGetArgs.cs @@ -17,8 +17,6 @@ public sealed class PrivateCloudManagementClusterNodeTypeConfigGetArgs : global: /// This number must always be one of `nodeType.availableCustomCoreCounts`. /// If zero is provided max value from `nodeType.availableCustomCoreCounts` will be used. /// This cannot be changed once the PrivateCloud is created. - /// - /// - - - /// [Input("customCoreCount")] public Input? CustomCoreCount { get; set; } diff --git a/sdk/dotnet/VMwareEngine/Inputs/PrivateCloudManagementClusterStretchedClusterConfigArgs.cs b/sdk/dotnet/VMwareEngine/Inputs/PrivateCloudManagementClusterStretchedClusterConfigArgs.cs new file mode 100644 index 0000000000..2a0dc16b8e --- /dev/null +++ b/sdk/dotnet/VMwareEngine/Inputs/PrivateCloudManagementClusterStretchedClusterConfigArgs.cs @@ -0,0 +1,34 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.VMwareEngine.Inputs +{ + + public sealed class PrivateCloudManagementClusterStretchedClusterConfigArgs : global::Pulumi.ResourceArgs + { + /// + /// Zone that will remain operational when connection between the two zones is lost. + /// + [Input("preferredLocation")] + public Input? PreferredLocation { get; set; } + + /// + /// Additional zone for a higher level of availability and load balancing. + /// + /// - - - + /// + [Input("secondaryLocation")] + public Input? SecondaryLocation { get; set; } + + public PrivateCloudManagementClusterStretchedClusterConfigArgs() + { + } + public static new PrivateCloudManagementClusterStretchedClusterConfigArgs Empty => new PrivateCloudManagementClusterStretchedClusterConfigArgs(); + } +} diff --git a/sdk/dotnet/VMwareEngine/Inputs/PrivateCloudManagementClusterStretchedClusterConfigGetArgs.cs b/sdk/dotnet/VMwareEngine/Inputs/PrivateCloudManagementClusterStretchedClusterConfigGetArgs.cs new file mode 100644 index 0000000000..6c8e6787e9 --- /dev/null +++ b/sdk/dotnet/VMwareEngine/Inputs/PrivateCloudManagementClusterStretchedClusterConfigGetArgs.cs @@ -0,0 +1,34 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.VMwareEngine.Inputs +{ + + public sealed class PrivateCloudManagementClusterStretchedClusterConfigGetArgs : global::Pulumi.ResourceArgs + { + /// + /// Zone that will remain operational when connection between the two zones is lost. + /// + [Input("preferredLocation")] + public Input? PreferredLocation { get; set; } + + /// + /// Additional zone for a higher level of availability and load balancing. + /// + /// - - - + /// + [Input("secondaryLocation")] + public Input? SecondaryLocation { get; set; } + + public PrivateCloudManagementClusterStretchedClusterConfigGetArgs() + { + } + public static new PrivateCloudManagementClusterStretchedClusterConfigGetArgs Empty => new PrivateCloudManagementClusterStretchedClusterConfigGetArgs(); + } +} diff --git a/sdk/dotnet/VMwareEngine/Outputs/GetPrivateCloudManagementClusterResult.cs b/sdk/dotnet/VMwareEngine/Outputs/GetPrivateCloudManagementClusterResult.cs index 0a90b33720..94742a8797 100644 --- a/sdk/dotnet/VMwareEngine/Outputs/GetPrivateCloudManagementClusterResult.cs +++ b/sdk/dotnet/VMwareEngine/Outputs/GetPrivateCloudManagementClusterResult.cs @@ -27,15 +27,22 @@ public sealed class GetPrivateCloudManagementClusterResult /// where the key is canonical identifier of the node type (corresponds to the NodeType). /// public readonly ImmutableArray NodeTypeConfigs; + /// + /// The stretched cluster configuration for the private cloud. + /// + public readonly ImmutableArray StretchedClusterConfigs; [OutputConstructor] private GetPrivateCloudManagementClusterResult( string clusterId, - ImmutableArray nodeTypeConfigs) + ImmutableArray nodeTypeConfigs, + + ImmutableArray stretchedClusterConfigs) { ClusterId = clusterId; NodeTypeConfigs = nodeTypeConfigs; + StretchedClusterConfigs = stretchedClusterConfigs; } } } diff --git a/sdk/dotnet/VMwareEngine/Outputs/GetPrivateCloudManagementClusterStretchedClusterConfigResult.cs b/sdk/dotnet/VMwareEngine/Outputs/GetPrivateCloudManagementClusterStretchedClusterConfigResult.cs new file mode 100644 index 0000000000..82a029a9db --- /dev/null +++ b/sdk/dotnet/VMwareEngine/Outputs/GetPrivateCloudManagementClusterStretchedClusterConfigResult.cs @@ -0,0 +1,35 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.VMwareEngine.Outputs +{ + + [OutputType] + public sealed class GetPrivateCloudManagementClusterStretchedClusterConfigResult + { + /// + /// Zone that will remain operational when connection between the two zones is lost. + /// + public readonly string PreferredLocation; + /// + /// Additional zone for a higher level of availability and load balancing. + /// + public readonly string SecondaryLocation; + + [OutputConstructor] + private GetPrivateCloudManagementClusterStretchedClusterConfigResult( + string preferredLocation, + + string secondaryLocation) + { + PreferredLocation = preferredLocation; + SecondaryLocation = secondaryLocation; + } + } +} diff --git a/sdk/dotnet/VMwareEngine/Outputs/PrivateCloudManagementCluster.cs b/sdk/dotnet/VMwareEngine/Outputs/PrivateCloudManagementCluster.cs index 9333b7a2b5..e144ef4eb8 100644 --- a/sdk/dotnet/VMwareEngine/Outputs/PrivateCloudManagementCluster.cs +++ b/sdk/dotnet/VMwareEngine/Outputs/PrivateCloudManagementCluster.cs @@ -28,15 +28,23 @@ public sealed class PrivateCloudManagementCluster /// Structure is documented below. /// public readonly ImmutableArray NodeTypeConfigs; + /// + /// The stretched cluster configuration for the private cloud. + /// Structure is documented below. + /// + public readonly Outputs.PrivateCloudManagementClusterStretchedClusterConfig? StretchedClusterConfig; [OutputConstructor] private PrivateCloudManagementCluster( string clusterId, - ImmutableArray nodeTypeConfigs) + ImmutableArray nodeTypeConfigs, + + Outputs.PrivateCloudManagementClusterStretchedClusterConfig? stretchedClusterConfig) { ClusterId = clusterId; NodeTypeConfigs = nodeTypeConfigs; + StretchedClusterConfig = stretchedClusterConfig; } } } diff --git a/sdk/dotnet/VMwareEngine/Outputs/PrivateCloudManagementClusterNodeTypeConfig.cs b/sdk/dotnet/VMwareEngine/Outputs/PrivateCloudManagementClusterNodeTypeConfig.cs index 0c68b3b0f9..95c15c3ca4 100644 --- a/sdk/dotnet/VMwareEngine/Outputs/PrivateCloudManagementClusterNodeTypeConfig.cs +++ b/sdk/dotnet/VMwareEngine/Outputs/PrivateCloudManagementClusterNodeTypeConfig.cs @@ -18,8 +18,6 @@ public sealed class PrivateCloudManagementClusterNodeTypeConfig /// This number must always be one of `nodeType.availableCustomCoreCounts`. /// If zero is provided max value from `nodeType.availableCustomCoreCounts` will be used. /// This cannot be changed once the PrivateCloud is created. - /// - /// - - - /// public readonly int? CustomCoreCount; /// diff --git a/sdk/dotnet/VMwareEngine/Outputs/PrivateCloudManagementClusterStretchedClusterConfig.cs b/sdk/dotnet/VMwareEngine/Outputs/PrivateCloudManagementClusterStretchedClusterConfig.cs new file mode 100644 index 0000000000..2661c54bde --- /dev/null +++ b/sdk/dotnet/VMwareEngine/Outputs/PrivateCloudManagementClusterStretchedClusterConfig.cs @@ -0,0 +1,37 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.VMwareEngine.Outputs +{ + + [OutputType] + public sealed class PrivateCloudManagementClusterStretchedClusterConfig + { + /// + /// Zone that will remain operational when connection between the two zones is lost. + /// + public readonly string? PreferredLocation; + /// + /// Additional zone for a higher level of availability and load balancing. + /// + /// - - - + /// + public readonly string? SecondaryLocation; + + [OutputConstructor] + private PrivateCloudManagementClusterStretchedClusterConfig( + string? preferredLocation, + + string? secondaryLocation) + { + PreferredLocation = preferredLocation; + SecondaryLocation = secondaryLocation; + } + } +} diff --git a/sdk/dotnet/VMwareEngine/PrivateCloud.cs b/sdk/dotnet/VMwareEngine/PrivateCloud.cs index 4346b6bc1a..3ce090308f 100644 --- a/sdk/dotnet/VMwareEngine/PrivateCloud.cs +++ b/sdk/dotnet/VMwareEngine/PrivateCloud.cs @@ -182,21 +182,9 @@ public partial class PrivateCloud : global::Pulumi.CustomResource [Output("nsxes")] public Output> Nsxes { get; private set; } = null!; - /// - /// The preferred single failure domain within a region. - /// - [Output("preferredZone")] - public Output PreferredZone { get; private set; } = null!; - [Output("project")] public Output Project { get; private set; } = null!; - /// - /// The secondary single failure domain within a region. - /// - [Output("secondaryZone")] - public Output SecondaryZone { get; private set; } = null!; - /// /// State of the appliance. /// Possible values are: `ACTIVE`, `CREATING`. @@ -301,21 +289,9 @@ public sealed class PrivateCloudArgs : global::Pulumi.ResourceArgs [Input("networkConfig", required: true)] public Input NetworkConfig { get; set; } = null!; - /// - /// The preferred single failure domain within a region. - /// - [Input("preferredZone")] - public Input? PreferredZone { get; set; } - [Input("project")] public Input? Project { get; set; } - /// - /// The secondary single failure domain within a region. - /// - [Input("secondaryZone")] - public Input? SecondaryZone { get; set; } - /// /// Initial type of the private cloud. Possible values: ["STANDARD", "TIME_LIMITED", "STRETCHED"] /// @@ -388,21 +364,9 @@ public InputList Nsxes set => _nsxes = value; } - /// - /// The preferred single failure domain within a region. - /// - [Input("preferredZone")] - public Input? PreferredZone { get; set; } - [Input("project")] public Input? Project { get; set; } - /// - /// The secondary single failure domain within a region. - /// - [Input("secondaryZone")] - public Input? SecondaryZone { get; set; } - /// /// State of the appliance. /// Possible values are: `ACTIVE`, `CREATING`. diff --git a/sdk/dotnet/Workbench/Instance.cs b/sdk/dotnet/Workbench/Instance.cs index 14e98e2f29..54700ba043 100644 --- a/sdk/dotnet/Workbench/Instance.cs +++ b/sdk/dotnet/Workbench/Instance.cs @@ -85,8 +85,8 @@ namespace Pulumi.Gcp.Workbench /// }, /// VmImage = new Gcp.Workbench.Inputs.InstanceGceSetupVmImageArgs /// { - /// Project = "deeplearning-platform-release", - /// Family = "tf-latest-gpu", + /// Project = "cloud-notebooks-managed", + /// Family = "workbench-instances", /// }, /// }, /// }); diff --git a/sdk/dotnet/Workstations/WorkstationCluster.cs b/sdk/dotnet/Workstations/WorkstationCluster.cs index 24a402b4aa..b37f44f5b4 100644 --- a/sdk/dotnet/Workstations/WorkstationCluster.cs +++ b/sdk/dotnet/Workstations/WorkstationCluster.cs @@ -199,6 +199,13 @@ public partial class WorkstationCluster : global::Pulumi.CustomResource [Output("conditions")] public Output> Conditions { get; private set; } = null!; + /// + /// The private IP address of the control plane for this workstation cluster. + /// Workstation VMs need access to this IP address to work with the service, so make sure that your firewall rules allow egress from the workstation VMs to this address. + /// + [Output("controlPlaneIp")] + public Output ControlPlaneIp { get; private set; } = null!; + /// /// Time when this resource was created. /// @@ -485,6 +492,13 @@ public InputList Conditions set => _conditions = value; } + /// + /// The private IP address of the control plane for this workstation cluster. + /// Workstation VMs need access to this IP address to work with the service, so make sure that your firewall rules allow egress from the workstation VMs to this address. + /// + [Input("controlPlaneIp")] + public Input? ControlPlaneIp { get; set; } + /// /// Time when this resource was created. /// diff --git a/sdk/go/gcp/apigee/organization.go b/sdk/go/gcp/apigee/organization.go index d6a76e9d2f..6dd7af9e94 100644 --- a/sdk/go/gcp/apigee/organization.go +++ b/sdk/go/gcp/apigee/organization.go @@ -306,6 +306,12 @@ type Organization struct { // Primary GCP region for analytics data storage. For valid values, see [Create an Apigee organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org). AnalyticsRegion pulumi.StringPtrOutput `pulumi:"analyticsRegion"` + // Cloud KMS key name used for encrypting API consumer data. + ApiConsumerDataEncryptionKeyName pulumi.StringPtrOutput `pulumi:"apiConsumerDataEncryptionKeyName"` + // This field is needed only for customers using non-default data residency regions. + // Apigee stores some control plane data only in single region. + // This field determines which single region Apigee should use. + ApiConsumerDataLocation pulumi.StringPtrOutput `pulumi:"apiConsumerDataLocation"` // Output only. Project ID of the Apigee Tenant Project. ApigeeProjectId pulumi.StringOutput `pulumi:"apigeeProjectId"` // Compute Engine network used for Service Networking to be peered with Apigee runtime instances. @@ -317,6 +323,9 @@ type Organization struct { // Output only. Base64-encoded public certificate for the root CA of the Apigee organization. // Valid only when `RuntimeType` is CLOUD. A base64-encoded string. CaCertificate pulumi.StringOutput `pulumi:"caCertificate"` + // Cloud KMS key name used for encrypting control plane data that is stored in a multi region. + // Only used for the data residency region "US" or "EU". + ControlPlaneEncryptionKeyName pulumi.StringPtrOutput `pulumi:"controlPlaneEncryptionKeyName"` // Description of the Apigee organization. Description pulumi.StringPtrOutput `pulumi:"description"` // Flag that specifies whether the VPC Peering through Private Google Access should be @@ -392,6 +401,12 @@ func GetOrganization(ctx *pulumi.Context, type organizationState struct { // Primary GCP region for analytics data storage. For valid values, see [Create an Apigee organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org). AnalyticsRegion *string `pulumi:"analyticsRegion"` + // Cloud KMS key name used for encrypting API consumer data. + ApiConsumerDataEncryptionKeyName *string `pulumi:"apiConsumerDataEncryptionKeyName"` + // This field is needed only for customers using non-default data residency regions. + // Apigee stores some control plane data only in single region. + // This field determines which single region Apigee should use. + ApiConsumerDataLocation *string `pulumi:"apiConsumerDataLocation"` // Output only. Project ID of the Apigee Tenant Project. ApigeeProjectId *string `pulumi:"apigeeProjectId"` // Compute Engine network used for Service Networking to be peered with Apigee runtime instances. @@ -403,6 +418,9 @@ type organizationState struct { // Output only. Base64-encoded public certificate for the root CA of the Apigee organization. // Valid only when `RuntimeType` is CLOUD. A base64-encoded string. CaCertificate *string `pulumi:"caCertificate"` + // Cloud KMS key name used for encrypting control plane data that is stored in a multi region. + // Only used for the data residency region "US" or "EU". + ControlPlaneEncryptionKeyName *string `pulumi:"controlPlaneEncryptionKeyName"` // Description of the Apigee organization. Description *string `pulumi:"description"` // Flag that specifies whether the VPC Peering through Private Google Access should be @@ -446,6 +464,12 @@ type organizationState struct { type OrganizationState struct { // Primary GCP region for analytics data storage. For valid values, see [Create an Apigee organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org). AnalyticsRegion pulumi.StringPtrInput + // Cloud KMS key name used for encrypting API consumer data. + ApiConsumerDataEncryptionKeyName pulumi.StringPtrInput + // This field is needed only for customers using non-default data residency regions. + // Apigee stores some control plane data only in single region. + // This field determines which single region Apigee should use. + ApiConsumerDataLocation pulumi.StringPtrInput // Output only. Project ID of the Apigee Tenant Project. ApigeeProjectId pulumi.StringPtrInput // Compute Engine network used for Service Networking to be peered with Apigee runtime instances. @@ -457,6 +481,9 @@ type OrganizationState struct { // Output only. Base64-encoded public certificate for the root CA of the Apigee organization. // Valid only when `RuntimeType` is CLOUD. A base64-encoded string. CaCertificate pulumi.StringPtrInput + // Cloud KMS key name used for encrypting control plane data that is stored in a multi region. + // Only used for the data residency region "US" or "EU". + ControlPlaneEncryptionKeyName pulumi.StringPtrInput // Description of the Apigee organization. Description pulumi.StringPtrInput // Flag that specifies whether the VPC Peering through Private Google Access should be @@ -504,12 +531,21 @@ func (OrganizationState) ElementType() reflect.Type { type organizationArgs struct { // Primary GCP region for analytics data storage. For valid values, see [Create an Apigee organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org). AnalyticsRegion *string `pulumi:"analyticsRegion"` + // Cloud KMS key name used for encrypting API consumer data. + ApiConsumerDataEncryptionKeyName *string `pulumi:"apiConsumerDataEncryptionKeyName"` + // This field is needed only for customers using non-default data residency regions. + // Apigee stores some control plane data only in single region. + // This field determines which single region Apigee should use. + ApiConsumerDataLocation *string `pulumi:"apiConsumerDataLocation"` // Compute Engine network used for Service Networking to be peered with Apigee runtime instances. // See [Getting started with the Service Networking API](https://cloud.google.com/service-infrastructure/docs/service-networking/getting-started). // Valid only when `RuntimeType` is set to CLOUD. The value can be updated only when there are no runtime instances. For example: "default". AuthorizedNetwork *string `pulumi:"authorizedNetwork"` // Billing type of the Apigee organization. See [Apigee pricing](https://cloud.google.com/apigee/pricing). BillingType *string `pulumi:"billingType"` + // Cloud KMS key name used for encrypting control plane data that is stored in a multi region. + // Only used for the data residency region "US" or "EU". + ControlPlaneEncryptionKeyName *string `pulumi:"controlPlaneEncryptionKeyName"` // Description of the Apigee organization. Description *string `pulumi:"description"` // Flag that specifies whether the VPC Peering through Private Google Access should be @@ -549,12 +585,21 @@ type organizationArgs struct { type OrganizationArgs struct { // Primary GCP region for analytics data storage. For valid values, see [Create an Apigee organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org). AnalyticsRegion pulumi.StringPtrInput + // Cloud KMS key name used for encrypting API consumer data. + ApiConsumerDataEncryptionKeyName pulumi.StringPtrInput + // This field is needed only for customers using non-default data residency regions. + // Apigee stores some control plane data only in single region. + // This field determines which single region Apigee should use. + ApiConsumerDataLocation pulumi.StringPtrInput // Compute Engine network used for Service Networking to be peered with Apigee runtime instances. // See [Getting started with the Service Networking API](https://cloud.google.com/service-infrastructure/docs/service-networking/getting-started). // Valid only when `RuntimeType` is set to CLOUD. The value can be updated only when there are no runtime instances. For example: "default". AuthorizedNetwork pulumi.StringPtrInput // Billing type of the Apigee organization. See [Apigee pricing](https://cloud.google.com/apigee/pricing). BillingType pulumi.StringPtrInput + // Cloud KMS key name used for encrypting control plane data that is stored in a multi region. + // Only used for the data residency region "US" or "EU". + ControlPlaneEncryptionKeyName pulumi.StringPtrInput // Description of the Apigee organization. Description pulumi.StringPtrInput // Flag that specifies whether the VPC Peering through Private Google Access should be @@ -682,6 +727,18 @@ func (o OrganizationOutput) AnalyticsRegion() pulumi.StringPtrOutput { return o.ApplyT(func(v *Organization) pulumi.StringPtrOutput { return v.AnalyticsRegion }).(pulumi.StringPtrOutput) } +// Cloud KMS key name used for encrypting API consumer data. +func (o OrganizationOutput) ApiConsumerDataEncryptionKeyName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Organization) pulumi.StringPtrOutput { return v.ApiConsumerDataEncryptionKeyName }).(pulumi.StringPtrOutput) +} + +// This field is needed only for customers using non-default data residency regions. +// Apigee stores some control plane data only in single region. +// This field determines which single region Apigee should use. +func (o OrganizationOutput) ApiConsumerDataLocation() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Organization) pulumi.StringPtrOutput { return v.ApiConsumerDataLocation }).(pulumi.StringPtrOutput) +} + // Output only. Project ID of the Apigee Tenant Project. func (o OrganizationOutput) ApigeeProjectId() pulumi.StringOutput { return o.ApplyT(func(v *Organization) pulumi.StringOutput { return v.ApigeeProjectId }).(pulumi.StringOutput) @@ -705,6 +762,12 @@ func (o OrganizationOutput) CaCertificate() pulumi.StringOutput { return o.ApplyT(func(v *Organization) pulumi.StringOutput { return v.CaCertificate }).(pulumi.StringOutput) } +// Cloud KMS key name used for encrypting control plane data that is stored in a multi region. +// Only used for the data residency region "US" or "EU". +func (o OrganizationOutput) ControlPlaneEncryptionKeyName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Organization) pulumi.StringPtrOutput { return v.ControlPlaneEncryptionKeyName }).(pulumi.StringPtrOutput) +} + // Description of the Apigee organization. func (o OrganizationOutput) Description() pulumi.StringPtrOutput { return o.ApplyT(func(v *Organization) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput) diff --git a/sdk/go/gcp/artifactregistry/pulumiTypes.go b/sdk/go/gcp/artifactregistry/pulumiTypes.go index 4e528c243b..81c7a0f2a0 100644 --- a/sdk/go/gcp/artifactregistry/pulumiTypes.go +++ b/sdk/go/gcp/artifactregistry/pulumiTypes.go @@ -1184,6 +1184,9 @@ type RepositoryRemoteRepositoryConfig struct { AptRepository *RepositoryRemoteRepositoryConfigAptRepository `pulumi:"aptRepository"` // The description of the remote source. Description *string `pulumi:"description"` + // If true, the remote repository upstream and upstream credentials will + // not be validated. + DisableUpstreamValidation *bool `pulumi:"disableUpstreamValidation"` // Specific settings for a Docker remote repository. // Structure is documented below. DockerRepository *RepositoryRemoteRepositoryConfigDockerRepository `pulumi:"dockerRepository"` @@ -1221,6 +1224,9 @@ type RepositoryRemoteRepositoryConfigArgs struct { AptRepository RepositoryRemoteRepositoryConfigAptRepositoryPtrInput `pulumi:"aptRepository"` // The description of the remote source. Description pulumi.StringPtrInput `pulumi:"description"` + // If true, the remote repository upstream and upstream credentials will + // not be validated. + DisableUpstreamValidation pulumi.BoolPtrInput `pulumi:"disableUpstreamValidation"` // Specific settings for a Docker remote repository. // Structure is documented below. DockerRepository RepositoryRemoteRepositoryConfigDockerRepositoryPtrInput `pulumi:"dockerRepository"` @@ -1331,6 +1337,12 @@ func (o RepositoryRemoteRepositoryConfigOutput) Description() pulumi.StringPtrOu return o.ApplyT(func(v RepositoryRemoteRepositoryConfig) *string { return v.Description }).(pulumi.StringPtrOutput) } +// If true, the remote repository upstream and upstream credentials will +// not be validated. +func (o RepositoryRemoteRepositoryConfigOutput) DisableUpstreamValidation() pulumi.BoolPtrOutput { + return o.ApplyT(func(v RepositoryRemoteRepositoryConfig) *bool { return v.DisableUpstreamValidation }).(pulumi.BoolPtrOutput) +} + // Specific settings for a Docker remote repository. // Structure is documented below. func (o RepositoryRemoteRepositoryConfigOutput) DockerRepository() RepositoryRemoteRepositoryConfigDockerRepositoryPtrOutput { @@ -1424,6 +1436,17 @@ func (o RepositoryRemoteRepositoryConfigPtrOutput) Description() pulumi.StringPt }).(pulumi.StringPtrOutput) } +// If true, the remote repository upstream and upstream credentials will +// not be validated. +func (o RepositoryRemoteRepositoryConfigPtrOutput) DisableUpstreamValidation() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *RepositoryRemoteRepositoryConfig) *bool { + if v == nil { + return nil + } + return v.DisableUpstreamValidation + }).(pulumi.BoolPtrOutput) +} + // Specific settings for a Docker remote repository. // Structure is documented below. func (o RepositoryRemoteRepositoryConfigPtrOutput) DockerRepository() RepositoryRemoteRepositoryConfigDockerRepositoryPtrOutput { @@ -1794,6 +1817,9 @@ func (o RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryPtrOutput) } type RepositoryRemoteRepositoryConfigDockerRepository struct { + // Settings for a remote repository with a custom uri. + // Structure is documented below. + CustomRepository *RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository `pulumi:"customRepository"` // Address of the remote repository. // Default value is `DOCKER_HUB`. // Possible values are: `DOCKER_HUB`. @@ -1812,6 +1838,9 @@ type RepositoryRemoteRepositoryConfigDockerRepositoryInput interface { } type RepositoryRemoteRepositoryConfigDockerRepositoryArgs struct { + // Settings for a remote repository with a custom uri. + // Structure is documented below. + CustomRepository RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrInput `pulumi:"customRepository"` // Address of the remote repository. // Default value is `DOCKER_HUB`. // Possible values are: `DOCKER_HUB`. @@ -1895,6 +1924,14 @@ func (o RepositoryRemoteRepositoryConfigDockerRepositoryOutput) ToRepositoryRemo }).(RepositoryRemoteRepositoryConfigDockerRepositoryPtrOutput) } +// Settings for a remote repository with a custom uri. +// Structure is documented below. +func (o RepositoryRemoteRepositoryConfigDockerRepositoryOutput) CustomRepository() RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutput { + return o.ApplyT(func(v RepositoryRemoteRepositoryConfigDockerRepository) *RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository { + return v.CustomRepository + }).(RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutput) +} + // Address of the remote repository. // Default value is `DOCKER_HUB`. // Possible values are: `DOCKER_HUB`. @@ -1926,6 +1963,17 @@ func (o RepositoryRemoteRepositoryConfigDockerRepositoryPtrOutput) Elem() Reposi }).(RepositoryRemoteRepositoryConfigDockerRepositoryOutput) } +// Settings for a remote repository with a custom uri. +// Structure is documented below. +func (o RepositoryRemoteRepositoryConfigDockerRepositoryPtrOutput) CustomRepository() RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutput { + return o.ApplyT(func(v *RepositoryRemoteRepositoryConfigDockerRepository) *RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository { + if v == nil { + return nil + } + return v.CustomRepository + }).(RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutput) +} + // Address of the remote repository. // Default value is `DOCKER_HUB`. // Possible values are: `DOCKER_HUB`. @@ -1938,7 +1986,147 @@ func (o RepositoryRemoteRepositoryConfigDockerRepositoryPtrOutput) PublicReposit }).(pulumi.StringPtrOutput) } +type RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository struct { + // Specific uri to the registry, e.g. `"https://pypi.io"` + Uri *string `pulumi:"uri"` +} + +// RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryInput is an input type that accepts RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs and RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput values. +// You can construct a concrete instance of `RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryInput` via: +// +// RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs{...} +type RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryInput interface { + pulumi.Input + + ToRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput() RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput + ToRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutputWithContext(context.Context) RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput +} + +type RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs struct { + // Specific uri to the registry, e.g. `"https://pypi.io"` + Uri pulumi.StringPtrInput `pulumi:"uri"` +} + +func (RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs) ElementType() reflect.Type { + return reflect.TypeOf((*RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository)(nil)).Elem() +} + +func (i RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs) ToRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput() RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput { + return i.ToRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutputWithContext(context.Background()) +} + +func (i RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs) ToRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutputWithContext(ctx context.Context) RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput { + return pulumi.ToOutputWithContext(ctx, i).(RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput) +} + +func (i RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs) ToRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutput() RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutput { + return i.ToRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutputWithContext(context.Background()) +} + +func (i RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs) ToRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutputWithContext(ctx context.Context) RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput).ToRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutputWithContext(ctx) +} + +// RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrInput is an input type that accepts RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs, RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtr and RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutput values. +// You can construct a concrete instance of `RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrInput` via: +// +// RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs{...} +// +// or: +// +// nil +type RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrInput interface { + pulumi.Input + + ToRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutput() RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutput + ToRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutputWithContext(context.Context) RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutput +} + +type repositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrType RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs + +func RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtr(v *RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs) RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrInput { + return (*repositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrType)(v) +} + +func (*repositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository)(nil)).Elem() +} + +func (i *repositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrType) ToRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutput() RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutput { + return i.ToRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutputWithContext(context.Background()) +} + +func (i *repositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrType) ToRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutputWithContext(ctx context.Context) RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutput) +} + +type RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput struct{ *pulumi.OutputState } + +func (RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput) ElementType() reflect.Type { + return reflect.TypeOf((*RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository)(nil)).Elem() +} + +func (o RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput) ToRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput() RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput { + return o +} + +func (o RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput) ToRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutputWithContext(ctx context.Context) RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput { + return o +} + +func (o RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput) ToRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutput() RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutput { + return o.ToRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutputWithContext(context.Background()) +} + +func (o RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput) ToRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutputWithContext(ctx context.Context) RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository) *RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository { + return &v + }).(RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutput) +} + +// Specific uri to the registry, e.g. `"https://pypi.io"` +func (o RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput) Uri() pulumi.StringPtrOutput { + return o.ApplyT(func(v RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository) *string { return v.Uri }).(pulumi.StringPtrOutput) +} + +type RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutput struct{ *pulumi.OutputState } + +func (RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository)(nil)).Elem() +} + +func (o RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutput) ToRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutput() RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutput { + return o +} + +func (o RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutput) ToRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutputWithContext(ctx context.Context) RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutput { + return o +} + +func (o RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutput) Elem() RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput { + return o.ApplyT(func(v *RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository) RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository { + if v != nil { + return *v + } + var ret RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository + return ret + }).(RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput) +} + +// Specific uri to the registry, e.g. `"https://pypi.io"` +func (o RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutput) Uri() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository) *string { + if v == nil { + return nil + } + return v.Uri + }).(pulumi.StringPtrOutput) +} + type RepositoryRemoteRepositoryConfigMavenRepository struct { + // Settings for a remote repository with a custom uri. + // Structure is documented below. + CustomRepository *RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository `pulumi:"customRepository"` // Address of the remote repository. // Default value is `MAVEN_CENTRAL`. // Possible values are: `MAVEN_CENTRAL`. @@ -1957,6 +2145,9 @@ type RepositoryRemoteRepositoryConfigMavenRepositoryInput interface { } type RepositoryRemoteRepositoryConfigMavenRepositoryArgs struct { + // Settings for a remote repository with a custom uri. + // Structure is documented below. + CustomRepository RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrInput `pulumi:"customRepository"` // Address of the remote repository. // Default value is `MAVEN_CENTRAL`. // Possible values are: `MAVEN_CENTRAL`. @@ -2040,6 +2231,14 @@ func (o RepositoryRemoteRepositoryConfigMavenRepositoryOutput) ToRepositoryRemot }).(RepositoryRemoteRepositoryConfigMavenRepositoryPtrOutput) } +// Settings for a remote repository with a custom uri. +// Structure is documented below. +func (o RepositoryRemoteRepositoryConfigMavenRepositoryOutput) CustomRepository() RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutput { + return o.ApplyT(func(v RepositoryRemoteRepositoryConfigMavenRepository) *RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository { + return v.CustomRepository + }).(RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutput) +} + // Address of the remote repository. // Default value is `MAVEN_CENTRAL`. // Possible values are: `MAVEN_CENTRAL`. @@ -2071,6 +2270,17 @@ func (o RepositoryRemoteRepositoryConfigMavenRepositoryPtrOutput) Elem() Reposit }).(RepositoryRemoteRepositoryConfigMavenRepositoryOutput) } +// Settings for a remote repository with a custom uri. +// Structure is documented below. +func (o RepositoryRemoteRepositoryConfigMavenRepositoryPtrOutput) CustomRepository() RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutput { + return o.ApplyT(func(v *RepositoryRemoteRepositoryConfigMavenRepository) *RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository { + if v == nil { + return nil + } + return v.CustomRepository + }).(RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutput) +} + // Address of the remote repository. // Default value is `MAVEN_CENTRAL`. // Possible values are: `MAVEN_CENTRAL`. @@ -2083,7 +2293,147 @@ func (o RepositoryRemoteRepositoryConfigMavenRepositoryPtrOutput) PublicReposito }).(pulumi.StringPtrOutput) } +type RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository struct { + // Specific uri to the registry, e.g. `"https://pypi.io"` + Uri *string `pulumi:"uri"` +} + +// RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryInput is an input type that accepts RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs and RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput values. +// You can construct a concrete instance of `RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryInput` via: +// +// RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs{...} +type RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryInput interface { + pulumi.Input + + ToRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput() RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput + ToRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutputWithContext(context.Context) RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput +} + +type RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs struct { + // Specific uri to the registry, e.g. `"https://pypi.io"` + Uri pulumi.StringPtrInput `pulumi:"uri"` +} + +func (RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs) ElementType() reflect.Type { + return reflect.TypeOf((*RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository)(nil)).Elem() +} + +func (i RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs) ToRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput() RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput { + return i.ToRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutputWithContext(context.Background()) +} + +func (i RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs) ToRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutputWithContext(ctx context.Context) RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput { + return pulumi.ToOutputWithContext(ctx, i).(RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput) +} + +func (i RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs) ToRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutput() RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutput { + return i.ToRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutputWithContext(context.Background()) +} + +func (i RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs) ToRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutputWithContext(ctx context.Context) RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput).ToRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutputWithContext(ctx) +} + +// RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrInput is an input type that accepts RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs, RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtr and RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutput values. +// You can construct a concrete instance of `RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrInput` via: +// +// RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs{...} +// +// or: +// +// nil +type RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrInput interface { + pulumi.Input + + ToRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutput() RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutput + ToRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutputWithContext(context.Context) RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutput +} + +type repositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrType RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs + +func RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtr(v *RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs) RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrInput { + return (*repositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrType)(v) +} + +func (*repositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository)(nil)).Elem() +} + +func (i *repositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrType) ToRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutput() RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutput { + return i.ToRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutputWithContext(context.Background()) +} + +func (i *repositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrType) ToRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutputWithContext(ctx context.Context) RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutput) +} + +type RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput struct{ *pulumi.OutputState } + +func (RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput) ElementType() reflect.Type { + return reflect.TypeOf((*RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository)(nil)).Elem() +} + +func (o RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput) ToRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput() RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput { + return o +} + +func (o RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput) ToRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutputWithContext(ctx context.Context) RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput { + return o +} + +func (o RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput) ToRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutput() RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutput { + return o.ToRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutputWithContext(context.Background()) +} + +func (o RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput) ToRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutputWithContext(ctx context.Context) RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository) *RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository { + return &v + }).(RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutput) +} + +// Specific uri to the registry, e.g. `"https://pypi.io"` +func (o RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput) Uri() pulumi.StringPtrOutput { + return o.ApplyT(func(v RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository) *string { return v.Uri }).(pulumi.StringPtrOutput) +} + +type RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutput struct{ *pulumi.OutputState } + +func (RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository)(nil)).Elem() +} + +func (o RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutput) ToRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutput() RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutput { + return o +} + +func (o RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutput) ToRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutputWithContext(ctx context.Context) RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutput { + return o +} + +func (o RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutput) Elem() RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput { + return o.ApplyT(func(v *RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository) RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository { + if v != nil { + return *v + } + var ret RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository + return ret + }).(RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput) +} + +// Specific uri to the registry, e.g. `"https://pypi.io"` +func (o RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutput) Uri() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository) *string { + if v == nil { + return nil + } + return v.Uri + }).(pulumi.StringPtrOutput) +} + type RepositoryRemoteRepositoryConfigNpmRepository struct { + // Settings for a remote repository with a custom uri. + // Structure is documented below. + CustomRepository *RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository `pulumi:"customRepository"` // Address of the remote repository. // Default value is `NPMJS`. // Possible values are: `NPMJS`. @@ -2102,6 +2452,9 @@ type RepositoryRemoteRepositoryConfigNpmRepositoryInput interface { } type RepositoryRemoteRepositoryConfigNpmRepositoryArgs struct { + // Settings for a remote repository with a custom uri. + // Structure is documented below. + CustomRepository RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrInput `pulumi:"customRepository"` // Address of the remote repository. // Default value is `NPMJS`. // Possible values are: `NPMJS`. @@ -2185,6 +2538,14 @@ func (o RepositoryRemoteRepositoryConfigNpmRepositoryOutput) ToRepositoryRemoteR }).(RepositoryRemoteRepositoryConfigNpmRepositoryPtrOutput) } +// Settings for a remote repository with a custom uri. +// Structure is documented below. +func (o RepositoryRemoteRepositoryConfigNpmRepositoryOutput) CustomRepository() RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutput { + return o.ApplyT(func(v RepositoryRemoteRepositoryConfigNpmRepository) *RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository { + return v.CustomRepository + }).(RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutput) +} + // Address of the remote repository. // Default value is `NPMJS`. // Possible values are: `NPMJS`. @@ -2216,6 +2577,17 @@ func (o RepositoryRemoteRepositoryConfigNpmRepositoryPtrOutput) Elem() Repositor }).(RepositoryRemoteRepositoryConfigNpmRepositoryOutput) } +// Settings for a remote repository with a custom uri. +// Structure is documented below. +func (o RepositoryRemoteRepositoryConfigNpmRepositoryPtrOutput) CustomRepository() RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutput { + return o.ApplyT(func(v *RepositoryRemoteRepositoryConfigNpmRepository) *RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository { + if v == nil { + return nil + } + return v.CustomRepository + }).(RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutput) +} + // Address of the remote repository. // Default value is `NPMJS`. // Possible values are: `NPMJS`. @@ -2228,7 +2600,147 @@ func (o RepositoryRemoteRepositoryConfigNpmRepositoryPtrOutput) PublicRepository }).(pulumi.StringPtrOutput) } +type RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository struct { + // Specific uri to the registry, e.g. `"https://pypi.io"` + Uri *string `pulumi:"uri"` +} + +// RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryInput is an input type that accepts RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs and RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput values. +// You can construct a concrete instance of `RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryInput` via: +// +// RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs{...} +type RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryInput interface { + pulumi.Input + + ToRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput() RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput + ToRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutputWithContext(context.Context) RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput +} + +type RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs struct { + // Specific uri to the registry, e.g. `"https://pypi.io"` + Uri pulumi.StringPtrInput `pulumi:"uri"` +} + +func (RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs) ElementType() reflect.Type { + return reflect.TypeOf((*RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository)(nil)).Elem() +} + +func (i RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs) ToRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput() RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput { + return i.ToRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutputWithContext(context.Background()) +} + +func (i RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs) ToRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutputWithContext(ctx context.Context) RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput { + return pulumi.ToOutputWithContext(ctx, i).(RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput) +} + +func (i RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs) ToRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutput() RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutput { + return i.ToRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutputWithContext(context.Background()) +} + +func (i RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs) ToRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutputWithContext(ctx context.Context) RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput).ToRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutputWithContext(ctx) +} + +// RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrInput is an input type that accepts RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs, RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtr and RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutput values. +// You can construct a concrete instance of `RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrInput` via: +// +// RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs{...} +// +// or: +// +// nil +type RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrInput interface { + pulumi.Input + + ToRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutput() RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutput + ToRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutputWithContext(context.Context) RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutput +} + +type repositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrType RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs + +func RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtr(v *RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs) RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrInput { + return (*repositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrType)(v) +} + +func (*repositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository)(nil)).Elem() +} + +func (i *repositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrType) ToRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutput() RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutput { + return i.ToRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutputWithContext(context.Background()) +} + +func (i *repositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrType) ToRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutputWithContext(ctx context.Context) RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutput) +} + +type RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput struct{ *pulumi.OutputState } + +func (RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput) ElementType() reflect.Type { + return reflect.TypeOf((*RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository)(nil)).Elem() +} + +func (o RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput) ToRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput() RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput { + return o +} + +func (o RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput) ToRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutputWithContext(ctx context.Context) RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput { + return o +} + +func (o RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput) ToRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutput() RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutput { + return o.ToRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutputWithContext(context.Background()) +} + +func (o RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput) ToRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutputWithContext(ctx context.Context) RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository) *RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository { + return &v + }).(RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutput) +} + +// Specific uri to the registry, e.g. `"https://pypi.io"` +func (o RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput) Uri() pulumi.StringPtrOutput { + return o.ApplyT(func(v RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository) *string { return v.Uri }).(pulumi.StringPtrOutput) +} + +type RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutput struct{ *pulumi.OutputState } + +func (RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository)(nil)).Elem() +} + +func (o RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutput) ToRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutput() RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutput { + return o +} + +func (o RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutput) ToRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutputWithContext(ctx context.Context) RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutput { + return o +} + +func (o RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutput) Elem() RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput { + return o.ApplyT(func(v *RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository) RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository { + if v != nil { + return *v + } + var ret RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository + return ret + }).(RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput) +} + +// Specific uri to the registry, e.g. `"https://pypi.io"` +func (o RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutput) Uri() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository) *string { + if v == nil { + return nil + } + return v.Uri + }).(pulumi.StringPtrOutput) +} + type RepositoryRemoteRepositoryConfigPythonRepository struct { + // Settings for a remote repository with a custom uri. + // Structure is documented below. + CustomRepository *RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository `pulumi:"customRepository"` // Address of the remote repository. // Default value is `PYPI`. // Possible values are: `PYPI`. @@ -2247,6 +2759,9 @@ type RepositoryRemoteRepositoryConfigPythonRepositoryInput interface { } type RepositoryRemoteRepositoryConfigPythonRepositoryArgs struct { + // Settings for a remote repository with a custom uri. + // Structure is documented below. + CustomRepository RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrInput `pulumi:"customRepository"` // Address of the remote repository. // Default value is `PYPI`. // Possible values are: `PYPI`. @@ -2265,111 +2780,267 @@ func (i RepositoryRemoteRepositoryConfigPythonRepositoryArgs) ToRepositoryRemote return pulumi.ToOutputWithContext(ctx, i).(RepositoryRemoteRepositoryConfigPythonRepositoryOutput) } -func (i RepositoryRemoteRepositoryConfigPythonRepositoryArgs) ToRepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput() RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput { - return i.ToRepositoryRemoteRepositoryConfigPythonRepositoryPtrOutputWithContext(context.Background()) +func (i RepositoryRemoteRepositoryConfigPythonRepositoryArgs) ToRepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput() RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput { + return i.ToRepositoryRemoteRepositoryConfigPythonRepositoryPtrOutputWithContext(context.Background()) +} + +func (i RepositoryRemoteRepositoryConfigPythonRepositoryArgs) ToRepositoryRemoteRepositoryConfigPythonRepositoryPtrOutputWithContext(ctx context.Context) RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(RepositoryRemoteRepositoryConfigPythonRepositoryOutput).ToRepositoryRemoteRepositoryConfigPythonRepositoryPtrOutputWithContext(ctx) +} + +// RepositoryRemoteRepositoryConfigPythonRepositoryPtrInput is an input type that accepts RepositoryRemoteRepositoryConfigPythonRepositoryArgs, RepositoryRemoteRepositoryConfigPythonRepositoryPtr and RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput values. +// You can construct a concrete instance of `RepositoryRemoteRepositoryConfigPythonRepositoryPtrInput` via: +// +// RepositoryRemoteRepositoryConfigPythonRepositoryArgs{...} +// +// or: +// +// nil +type RepositoryRemoteRepositoryConfigPythonRepositoryPtrInput interface { + pulumi.Input + + ToRepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput() RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput + ToRepositoryRemoteRepositoryConfigPythonRepositoryPtrOutputWithContext(context.Context) RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput +} + +type repositoryRemoteRepositoryConfigPythonRepositoryPtrType RepositoryRemoteRepositoryConfigPythonRepositoryArgs + +func RepositoryRemoteRepositoryConfigPythonRepositoryPtr(v *RepositoryRemoteRepositoryConfigPythonRepositoryArgs) RepositoryRemoteRepositoryConfigPythonRepositoryPtrInput { + return (*repositoryRemoteRepositoryConfigPythonRepositoryPtrType)(v) +} + +func (*repositoryRemoteRepositoryConfigPythonRepositoryPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**RepositoryRemoteRepositoryConfigPythonRepository)(nil)).Elem() +} + +func (i *repositoryRemoteRepositoryConfigPythonRepositoryPtrType) ToRepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput() RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput { + return i.ToRepositoryRemoteRepositoryConfigPythonRepositoryPtrOutputWithContext(context.Background()) +} + +func (i *repositoryRemoteRepositoryConfigPythonRepositoryPtrType) ToRepositoryRemoteRepositoryConfigPythonRepositoryPtrOutputWithContext(ctx context.Context) RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput) +} + +type RepositoryRemoteRepositoryConfigPythonRepositoryOutput struct{ *pulumi.OutputState } + +func (RepositoryRemoteRepositoryConfigPythonRepositoryOutput) ElementType() reflect.Type { + return reflect.TypeOf((*RepositoryRemoteRepositoryConfigPythonRepository)(nil)).Elem() +} + +func (o RepositoryRemoteRepositoryConfigPythonRepositoryOutput) ToRepositoryRemoteRepositoryConfigPythonRepositoryOutput() RepositoryRemoteRepositoryConfigPythonRepositoryOutput { + return o +} + +func (o RepositoryRemoteRepositoryConfigPythonRepositoryOutput) ToRepositoryRemoteRepositoryConfigPythonRepositoryOutputWithContext(ctx context.Context) RepositoryRemoteRepositoryConfigPythonRepositoryOutput { + return o +} + +func (o RepositoryRemoteRepositoryConfigPythonRepositoryOutput) ToRepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput() RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput { + return o.ToRepositoryRemoteRepositoryConfigPythonRepositoryPtrOutputWithContext(context.Background()) +} + +func (o RepositoryRemoteRepositoryConfigPythonRepositoryOutput) ToRepositoryRemoteRepositoryConfigPythonRepositoryPtrOutputWithContext(ctx context.Context) RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v RepositoryRemoteRepositoryConfigPythonRepository) *RepositoryRemoteRepositoryConfigPythonRepository { + return &v + }).(RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput) +} + +// Settings for a remote repository with a custom uri. +// Structure is documented below. +func (o RepositoryRemoteRepositoryConfigPythonRepositoryOutput) CustomRepository() RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutput { + return o.ApplyT(func(v RepositoryRemoteRepositoryConfigPythonRepository) *RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository { + return v.CustomRepository + }).(RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutput) +} + +// Address of the remote repository. +// Default value is `PYPI`. +// Possible values are: `PYPI`. +func (o RepositoryRemoteRepositoryConfigPythonRepositoryOutput) PublicRepository() pulumi.StringPtrOutput { + return o.ApplyT(func(v RepositoryRemoteRepositoryConfigPythonRepository) *string { return v.PublicRepository }).(pulumi.StringPtrOutput) +} + +type RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput struct{ *pulumi.OutputState } + +func (RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**RepositoryRemoteRepositoryConfigPythonRepository)(nil)).Elem() +} + +func (o RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput) ToRepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput() RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput { + return o +} + +func (o RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput) ToRepositoryRemoteRepositoryConfigPythonRepositoryPtrOutputWithContext(ctx context.Context) RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput { + return o +} + +func (o RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput) Elem() RepositoryRemoteRepositoryConfigPythonRepositoryOutput { + return o.ApplyT(func(v *RepositoryRemoteRepositoryConfigPythonRepository) RepositoryRemoteRepositoryConfigPythonRepository { + if v != nil { + return *v + } + var ret RepositoryRemoteRepositoryConfigPythonRepository + return ret + }).(RepositoryRemoteRepositoryConfigPythonRepositoryOutput) +} + +// Settings for a remote repository with a custom uri. +// Structure is documented below. +func (o RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput) CustomRepository() RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutput { + return o.ApplyT(func(v *RepositoryRemoteRepositoryConfigPythonRepository) *RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository { + if v == nil { + return nil + } + return v.CustomRepository + }).(RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutput) +} + +// Address of the remote repository. +// Default value is `PYPI`. +// Possible values are: `PYPI`. +func (o RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput) PublicRepository() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RepositoryRemoteRepositoryConfigPythonRepository) *string { + if v == nil { + return nil + } + return v.PublicRepository + }).(pulumi.StringPtrOutput) +} + +type RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository struct { + // Specific uri to the registry, e.g. `"https://pypi.io"` + Uri *string `pulumi:"uri"` +} + +// RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryInput is an input type that accepts RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs and RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput values. +// You can construct a concrete instance of `RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryInput` via: +// +// RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs{...} +type RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryInput interface { + pulumi.Input + + ToRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput() RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput + ToRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutputWithContext(context.Context) RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput +} + +type RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs struct { + // Specific uri to the registry, e.g. `"https://pypi.io"` + Uri pulumi.StringPtrInput `pulumi:"uri"` +} + +func (RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs) ElementType() reflect.Type { + return reflect.TypeOf((*RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository)(nil)).Elem() +} + +func (i RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs) ToRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput() RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput { + return i.ToRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutputWithContext(context.Background()) +} + +func (i RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs) ToRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutputWithContext(ctx context.Context) RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput { + return pulumi.ToOutputWithContext(ctx, i).(RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput) +} + +func (i RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs) ToRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutput() RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutput { + return i.ToRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutputWithContext(context.Background()) } -func (i RepositoryRemoteRepositoryConfigPythonRepositoryArgs) ToRepositoryRemoteRepositoryConfigPythonRepositoryPtrOutputWithContext(ctx context.Context) RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(RepositoryRemoteRepositoryConfigPythonRepositoryOutput).ToRepositoryRemoteRepositoryConfigPythonRepositoryPtrOutputWithContext(ctx) +func (i RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs) ToRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutputWithContext(ctx context.Context) RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput).ToRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutputWithContext(ctx) } -// RepositoryRemoteRepositoryConfigPythonRepositoryPtrInput is an input type that accepts RepositoryRemoteRepositoryConfigPythonRepositoryArgs, RepositoryRemoteRepositoryConfigPythonRepositoryPtr and RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput values. -// You can construct a concrete instance of `RepositoryRemoteRepositoryConfigPythonRepositoryPtrInput` via: +// RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrInput is an input type that accepts RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs, RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtr and RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutput values. +// You can construct a concrete instance of `RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrInput` via: // -// RepositoryRemoteRepositoryConfigPythonRepositoryArgs{...} +// RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs{...} // // or: // // nil -type RepositoryRemoteRepositoryConfigPythonRepositoryPtrInput interface { +type RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrInput interface { pulumi.Input - ToRepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput() RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput - ToRepositoryRemoteRepositoryConfigPythonRepositoryPtrOutputWithContext(context.Context) RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput + ToRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutput() RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutput + ToRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutputWithContext(context.Context) RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutput } -type repositoryRemoteRepositoryConfigPythonRepositoryPtrType RepositoryRemoteRepositoryConfigPythonRepositoryArgs +type repositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrType RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs -func RepositoryRemoteRepositoryConfigPythonRepositoryPtr(v *RepositoryRemoteRepositoryConfigPythonRepositoryArgs) RepositoryRemoteRepositoryConfigPythonRepositoryPtrInput { - return (*repositoryRemoteRepositoryConfigPythonRepositoryPtrType)(v) +func RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtr(v *RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs) RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrInput { + return (*repositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrType)(v) } -func (*repositoryRemoteRepositoryConfigPythonRepositoryPtrType) ElementType() reflect.Type { - return reflect.TypeOf((**RepositoryRemoteRepositoryConfigPythonRepository)(nil)).Elem() +func (*repositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository)(nil)).Elem() } -func (i *repositoryRemoteRepositoryConfigPythonRepositoryPtrType) ToRepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput() RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput { - return i.ToRepositoryRemoteRepositoryConfigPythonRepositoryPtrOutputWithContext(context.Background()) +func (i *repositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrType) ToRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutput() RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutput { + return i.ToRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutputWithContext(context.Background()) } -func (i *repositoryRemoteRepositoryConfigPythonRepositoryPtrType) ToRepositoryRemoteRepositoryConfigPythonRepositoryPtrOutputWithContext(ctx context.Context) RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput) +func (i *repositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrType) ToRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutputWithContext(ctx context.Context) RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutput) } -type RepositoryRemoteRepositoryConfigPythonRepositoryOutput struct{ *pulumi.OutputState } +type RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput struct{ *pulumi.OutputState } -func (RepositoryRemoteRepositoryConfigPythonRepositoryOutput) ElementType() reflect.Type { - return reflect.TypeOf((*RepositoryRemoteRepositoryConfigPythonRepository)(nil)).Elem() +func (RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput) ElementType() reflect.Type { + return reflect.TypeOf((*RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository)(nil)).Elem() } -func (o RepositoryRemoteRepositoryConfigPythonRepositoryOutput) ToRepositoryRemoteRepositoryConfigPythonRepositoryOutput() RepositoryRemoteRepositoryConfigPythonRepositoryOutput { +func (o RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput) ToRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput() RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput { return o } -func (o RepositoryRemoteRepositoryConfigPythonRepositoryOutput) ToRepositoryRemoteRepositoryConfigPythonRepositoryOutputWithContext(ctx context.Context) RepositoryRemoteRepositoryConfigPythonRepositoryOutput { +func (o RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput) ToRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutputWithContext(ctx context.Context) RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput { return o } -func (o RepositoryRemoteRepositoryConfigPythonRepositoryOutput) ToRepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput() RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput { - return o.ToRepositoryRemoteRepositoryConfigPythonRepositoryPtrOutputWithContext(context.Background()) +func (o RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput) ToRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutput() RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutput { + return o.ToRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutputWithContext(context.Background()) } -func (o RepositoryRemoteRepositoryConfigPythonRepositoryOutput) ToRepositoryRemoteRepositoryConfigPythonRepositoryPtrOutputWithContext(ctx context.Context) RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v RepositoryRemoteRepositoryConfigPythonRepository) *RepositoryRemoteRepositoryConfigPythonRepository { +func (o RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput) ToRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutputWithContext(ctx context.Context) RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository) *RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository { return &v - }).(RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput) + }).(RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutput) } -// Address of the remote repository. -// Default value is `PYPI`. -// Possible values are: `PYPI`. -func (o RepositoryRemoteRepositoryConfigPythonRepositoryOutput) PublicRepository() pulumi.StringPtrOutput { - return o.ApplyT(func(v RepositoryRemoteRepositoryConfigPythonRepository) *string { return v.PublicRepository }).(pulumi.StringPtrOutput) +// Specific uri to the registry, e.g. `"https://pypi.io"` +func (o RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput) Uri() pulumi.StringPtrOutput { + return o.ApplyT(func(v RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository) *string { return v.Uri }).(pulumi.StringPtrOutput) } -type RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput struct{ *pulumi.OutputState } +type RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutput struct{ *pulumi.OutputState } -func (RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**RepositoryRemoteRepositoryConfigPythonRepository)(nil)).Elem() +func (RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository)(nil)).Elem() } -func (o RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput) ToRepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput() RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput { +func (o RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutput) ToRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutput() RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutput { return o } -func (o RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput) ToRepositoryRemoteRepositoryConfigPythonRepositoryPtrOutputWithContext(ctx context.Context) RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput { +func (o RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutput) ToRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutputWithContext(ctx context.Context) RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutput { return o } -func (o RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput) Elem() RepositoryRemoteRepositoryConfigPythonRepositoryOutput { - return o.ApplyT(func(v *RepositoryRemoteRepositoryConfigPythonRepository) RepositoryRemoteRepositoryConfigPythonRepository { +func (o RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutput) Elem() RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput { + return o.ApplyT(func(v *RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository) RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository { if v != nil { return *v } - var ret RepositoryRemoteRepositoryConfigPythonRepository + var ret RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository return ret - }).(RepositoryRemoteRepositoryConfigPythonRepositoryOutput) + }).(RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput) } -// Address of the remote repository. -// Default value is `PYPI`. -// Possible values are: `PYPI`. -func (o RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput) PublicRepository() pulumi.StringPtrOutput { - return o.ApplyT(func(v *RepositoryRemoteRepositoryConfigPythonRepository) *string { +// Specific uri to the registry, e.g. `"https://pypi.io"` +func (o RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutput) Uri() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository) *string { if v == nil { return nil } - return v.PublicRepository + return v.Uri }).(pulumi.StringPtrOutput) } @@ -3837,6 +4508,9 @@ type GetRepositoryRemoteRepositoryConfig struct { AptRepositories []GetRepositoryRemoteRepositoryConfigAptRepository `pulumi:"aptRepositories"` // The description of the remote source. Description string `pulumi:"description"` + // If true, the remote repository upstream and upstream credentials will + // not be validated. + DisableUpstreamValidation bool `pulumi:"disableUpstreamValidation"` // Specific settings for a Docker remote repository. DockerRepositories []GetRepositoryRemoteRepositoryConfigDockerRepository `pulumi:"dockerRepositories"` // Specific settings for a Maven remote repository. @@ -3867,6 +4541,9 @@ type GetRepositoryRemoteRepositoryConfigArgs struct { AptRepositories GetRepositoryRemoteRepositoryConfigAptRepositoryArrayInput `pulumi:"aptRepositories"` // The description of the remote source. Description pulumi.StringInput `pulumi:"description"` + // If true, the remote repository upstream and upstream credentials will + // not be validated. + DisableUpstreamValidation pulumi.BoolInput `pulumi:"disableUpstreamValidation"` // Specific settings for a Docker remote repository. DockerRepositories GetRepositoryRemoteRepositoryConfigDockerRepositoryArrayInput `pulumi:"dockerRepositories"` // Specific settings for a Maven remote repository. @@ -3944,6 +4621,12 @@ func (o GetRepositoryRemoteRepositoryConfigOutput) Description() pulumi.StringOu return o.ApplyT(func(v GetRepositoryRemoteRepositoryConfig) string { return v.Description }).(pulumi.StringOutput) } +// If true, the remote repository upstream and upstream credentials will +// not be validated. +func (o GetRepositoryRemoteRepositoryConfigOutput) DisableUpstreamValidation() pulumi.BoolOutput { + return o.ApplyT(func(v GetRepositoryRemoteRepositoryConfig) bool { return v.DisableUpstreamValidation }).(pulumi.BoolOutput) +} + // Specific settings for a Docker remote repository. func (o GetRepositoryRemoteRepositoryConfigOutput) DockerRepositories() GetRepositoryRemoteRepositoryConfigDockerRepositoryArrayOutput { return o.ApplyT(func(v GetRepositoryRemoteRepositoryConfig) []GetRepositoryRemoteRepositoryConfigDockerRepository { @@ -4216,6 +4899,8 @@ func (o GetRepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArrayOut } type GetRepositoryRemoteRepositoryConfigDockerRepository struct { + // Settings for a remote repository with a custom uri. + CustomRepositories []GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository `pulumi:"customRepositories"` // Address of the remote repository. Default value: "DOCKER_HUB" Possible values: ["DOCKER_HUB"] PublicRepository string `pulumi:"publicRepository"` } @@ -4232,6 +4917,8 @@ type GetRepositoryRemoteRepositoryConfigDockerRepositoryInput interface { } type GetRepositoryRemoteRepositoryConfigDockerRepositoryArgs struct { + // Settings for a remote repository with a custom uri. + CustomRepositories GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArrayInput `pulumi:"customRepositories"` // Address of the remote repository. Default value: "DOCKER_HUB" Possible values: ["DOCKER_HUB"] PublicRepository pulumi.StringInput `pulumi:"publicRepository"` } @@ -4287,6 +4974,13 @@ func (o GetRepositoryRemoteRepositoryConfigDockerRepositoryOutput) ToGetReposito return o } +// Settings for a remote repository with a custom uri. +func (o GetRepositoryRemoteRepositoryConfigDockerRepositoryOutput) CustomRepositories() GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArrayOutput { + return o.ApplyT(func(v GetRepositoryRemoteRepositoryConfigDockerRepository) []GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository { + return v.CustomRepositories + }).(GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArrayOutput) +} + // Address of the remote repository. Default value: "DOCKER_HUB" Possible values: ["DOCKER_HUB"] func (o GetRepositoryRemoteRepositoryConfigDockerRepositoryOutput) PublicRepository() pulumi.StringOutput { return o.ApplyT(func(v GetRepositoryRemoteRepositoryConfigDockerRepository) string { return v.PublicRepository }).(pulumi.StringOutput) @@ -4312,7 +5006,106 @@ func (o GetRepositoryRemoteRepositoryConfigDockerRepositoryArrayOutput) Index(i }).(GetRepositoryRemoteRepositoryConfigDockerRepositoryOutput) } +type GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository struct { + // Specific uri to the registry, e.g. '"https://registry-1.docker.io"' + Uri string `pulumi:"uri"` +} + +// GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryInput is an input type that accepts GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs and GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput values. +// You can construct a concrete instance of `GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryInput` via: +// +// GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs{...} +type GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryInput interface { + pulumi.Input + + ToGetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput() GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput + ToGetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutputWithContext(context.Context) GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput +} + +type GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs struct { + // Specific uri to the registry, e.g. '"https://registry-1.docker.io"' + Uri pulumi.StringInput `pulumi:"uri"` +} + +func (GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository)(nil)).Elem() +} + +func (i GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs) ToGetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput() GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput { + return i.ToGetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutputWithContext(context.Background()) +} + +func (i GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs) ToGetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutputWithContext(ctx context.Context) GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput) +} + +// GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArrayInput is an input type that accepts GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArray and GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArrayOutput values. +// You can construct a concrete instance of `GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArrayInput` via: +// +// GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArray{ GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs{...} } +type GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArrayInput interface { + pulumi.Input + + ToGetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArrayOutput() GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArrayOutput + ToGetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArrayOutputWithContext(context.Context) GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArrayOutput +} + +type GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArray []GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryInput + +func (GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository)(nil)).Elem() +} + +func (i GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArray) ToGetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArrayOutput() GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArrayOutput { + return i.ToGetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArrayOutputWithContext(context.Background()) +} + +func (i GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArray) ToGetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArrayOutputWithContext(ctx context.Context) GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArrayOutput) +} + +type GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput struct{ *pulumi.OutputState } + +func (GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository)(nil)).Elem() +} + +func (o GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput) ToGetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput() GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput { + return o +} + +func (o GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput) ToGetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutputWithContext(ctx context.Context) GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput { + return o +} + +// Specific uri to the registry, e.g. '"https://registry-1.docker.io"' +func (o GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput) Uri() pulumi.StringOutput { + return o.ApplyT(func(v GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository) string { return v.Uri }).(pulumi.StringOutput) +} + +type GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArrayOutput struct{ *pulumi.OutputState } + +func (GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository)(nil)).Elem() +} + +func (o GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArrayOutput) ToGetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArrayOutput() GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArrayOutput { + return o +} + +func (o GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArrayOutput) ToGetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArrayOutputWithContext(ctx context.Context) GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArrayOutput { + return o +} + +func (o GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArrayOutput) Index(i pulumi.IntInput) GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository { + return vs[0].([]GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository)[vs[1].(int)] + }).(GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput) +} + type GetRepositoryRemoteRepositoryConfigMavenRepository struct { + // Settings for a remote repository with a custom uri. + CustomRepositories []GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository `pulumi:"customRepositories"` // Address of the remote repository. Default value: "MAVEN_CENTRAL" Possible values: ["MAVEN_CENTRAL"] PublicRepository string `pulumi:"publicRepository"` } @@ -4329,6 +5122,8 @@ type GetRepositoryRemoteRepositoryConfigMavenRepositoryInput interface { } type GetRepositoryRemoteRepositoryConfigMavenRepositoryArgs struct { + // Settings for a remote repository with a custom uri. + CustomRepositories GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArrayInput `pulumi:"customRepositories"` // Address of the remote repository. Default value: "MAVEN_CENTRAL" Possible values: ["MAVEN_CENTRAL"] PublicRepository pulumi.StringInput `pulumi:"publicRepository"` } @@ -4384,6 +5179,13 @@ func (o GetRepositoryRemoteRepositoryConfigMavenRepositoryOutput) ToGetRepositor return o } +// Settings for a remote repository with a custom uri. +func (o GetRepositoryRemoteRepositoryConfigMavenRepositoryOutput) CustomRepositories() GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArrayOutput { + return o.ApplyT(func(v GetRepositoryRemoteRepositoryConfigMavenRepository) []GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository { + return v.CustomRepositories + }).(GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArrayOutput) +} + // Address of the remote repository. Default value: "MAVEN_CENTRAL" Possible values: ["MAVEN_CENTRAL"] func (o GetRepositoryRemoteRepositoryConfigMavenRepositoryOutput) PublicRepository() pulumi.StringOutput { return o.ApplyT(func(v GetRepositoryRemoteRepositoryConfigMavenRepository) string { return v.PublicRepository }).(pulumi.StringOutput) @@ -4409,7 +5211,106 @@ func (o GetRepositoryRemoteRepositoryConfigMavenRepositoryArrayOutput) Index(i p }).(GetRepositoryRemoteRepositoryConfigMavenRepositoryOutput) } +type GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository struct { + // Specific uri to the registry, e.g. '"https://repo.maven.apache.org/maven2"' + Uri string `pulumi:"uri"` +} + +// GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryInput is an input type that accepts GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs and GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput values. +// You can construct a concrete instance of `GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryInput` via: +// +// GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs{...} +type GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryInput interface { + pulumi.Input + + ToGetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput() GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput + ToGetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutputWithContext(context.Context) GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput +} + +type GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs struct { + // Specific uri to the registry, e.g. '"https://repo.maven.apache.org/maven2"' + Uri pulumi.StringInput `pulumi:"uri"` +} + +func (GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository)(nil)).Elem() +} + +func (i GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs) ToGetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput() GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput { + return i.ToGetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutputWithContext(context.Background()) +} + +func (i GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs) ToGetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutputWithContext(ctx context.Context) GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput) +} + +// GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArrayInput is an input type that accepts GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArray and GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArrayOutput values. +// You can construct a concrete instance of `GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArrayInput` via: +// +// GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArray{ GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs{...} } +type GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArrayInput interface { + pulumi.Input + + ToGetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArrayOutput() GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArrayOutput + ToGetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArrayOutputWithContext(context.Context) GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArrayOutput +} + +type GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArray []GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryInput + +func (GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository)(nil)).Elem() +} + +func (i GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArray) ToGetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArrayOutput() GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArrayOutput { + return i.ToGetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArrayOutputWithContext(context.Background()) +} + +func (i GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArray) ToGetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArrayOutputWithContext(ctx context.Context) GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArrayOutput) +} + +type GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput struct{ *pulumi.OutputState } + +func (GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository)(nil)).Elem() +} + +func (o GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput) ToGetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput() GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput { + return o +} + +func (o GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput) ToGetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutputWithContext(ctx context.Context) GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput { + return o +} + +// Specific uri to the registry, e.g. '"https://repo.maven.apache.org/maven2"' +func (o GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput) Uri() pulumi.StringOutput { + return o.ApplyT(func(v GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository) string { return v.Uri }).(pulumi.StringOutput) +} + +type GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArrayOutput struct{ *pulumi.OutputState } + +func (GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository)(nil)).Elem() +} + +func (o GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArrayOutput) ToGetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArrayOutput() GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArrayOutput { + return o +} + +func (o GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArrayOutput) ToGetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArrayOutputWithContext(ctx context.Context) GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArrayOutput { + return o +} + +func (o GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArrayOutput) Index(i pulumi.IntInput) GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository { + return vs[0].([]GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository)[vs[1].(int)] + }).(GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput) +} + type GetRepositoryRemoteRepositoryConfigNpmRepository struct { + // Settings for a remote repository with a custom uri. + CustomRepositories []GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository `pulumi:"customRepositories"` // Address of the remote repository. Default value: "NPMJS" Possible values: ["NPMJS"] PublicRepository string `pulumi:"publicRepository"` } @@ -4426,6 +5327,8 @@ type GetRepositoryRemoteRepositoryConfigNpmRepositoryInput interface { } type GetRepositoryRemoteRepositoryConfigNpmRepositoryArgs struct { + // Settings for a remote repository with a custom uri. + CustomRepositories GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArrayInput `pulumi:"customRepositories"` // Address of the remote repository. Default value: "NPMJS" Possible values: ["NPMJS"] PublicRepository pulumi.StringInput `pulumi:"publicRepository"` } @@ -4481,6 +5384,13 @@ func (o GetRepositoryRemoteRepositoryConfigNpmRepositoryOutput) ToGetRepositoryR return o } +// Settings for a remote repository with a custom uri. +func (o GetRepositoryRemoteRepositoryConfigNpmRepositoryOutput) CustomRepositories() GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArrayOutput { + return o.ApplyT(func(v GetRepositoryRemoteRepositoryConfigNpmRepository) []GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository { + return v.CustomRepositories + }).(GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArrayOutput) +} + // Address of the remote repository. Default value: "NPMJS" Possible values: ["NPMJS"] func (o GetRepositoryRemoteRepositoryConfigNpmRepositoryOutput) PublicRepository() pulumi.StringOutput { return o.ApplyT(func(v GetRepositoryRemoteRepositoryConfigNpmRepository) string { return v.PublicRepository }).(pulumi.StringOutput) @@ -4506,7 +5416,106 @@ func (o GetRepositoryRemoteRepositoryConfigNpmRepositoryArrayOutput) Index(i pul }).(GetRepositoryRemoteRepositoryConfigNpmRepositoryOutput) } +type GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository struct { + // Specific uri to the registry, e.g. '"https://registry.npmjs.org"' + Uri string `pulumi:"uri"` +} + +// GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryInput is an input type that accepts GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs and GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput values. +// You can construct a concrete instance of `GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryInput` via: +// +// GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs{...} +type GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryInput interface { + pulumi.Input + + ToGetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput() GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput + ToGetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutputWithContext(context.Context) GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput +} + +type GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs struct { + // Specific uri to the registry, e.g. '"https://registry.npmjs.org"' + Uri pulumi.StringInput `pulumi:"uri"` +} + +func (GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository)(nil)).Elem() +} + +func (i GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs) ToGetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput() GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput { + return i.ToGetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutputWithContext(context.Background()) +} + +func (i GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs) ToGetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutputWithContext(ctx context.Context) GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput) +} + +// GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArrayInput is an input type that accepts GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArray and GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArrayOutput values. +// You can construct a concrete instance of `GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArrayInput` via: +// +// GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArray{ GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs{...} } +type GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArrayInput interface { + pulumi.Input + + ToGetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArrayOutput() GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArrayOutput + ToGetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArrayOutputWithContext(context.Context) GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArrayOutput +} + +type GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArray []GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryInput + +func (GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository)(nil)).Elem() +} + +func (i GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArray) ToGetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArrayOutput() GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArrayOutput { + return i.ToGetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArrayOutputWithContext(context.Background()) +} + +func (i GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArray) ToGetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArrayOutputWithContext(ctx context.Context) GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArrayOutput) +} + +type GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput struct{ *pulumi.OutputState } + +func (GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository)(nil)).Elem() +} + +func (o GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput) ToGetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput() GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput { + return o +} + +func (o GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput) ToGetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutputWithContext(ctx context.Context) GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput { + return o +} + +// Specific uri to the registry, e.g. '"https://registry.npmjs.org"' +func (o GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput) Uri() pulumi.StringOutput { + return o.ApplyT(func(v GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository) string { return v.Uri }).(pulumi.StringOutput) +} + +type GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArrayOutput struct{ *pulumi.OutputState } + +func (GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository)(nil)).Elem() +} + +func (o GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArrayOutput) ToGetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArrayOutput() GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArrayOutput { + return o +} + +func (o GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArrayOutput) ToGetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArrayOutputWithContext(ctx context.Context) GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArrayOutput { + return o +} + +func (o GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArrayOutput) Index(i pulumi.IntInput) GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository { + return vs[0].([]GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository)[vs[1].(int)] + }).(GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput) +} + type GetRepositoryRemoteRepositoryConfigPythonRepository struct { + // Settings for a remote repository with a custom uri. + CustomRepositories []GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository `pulumi:"customRepositories"` // Address of the remote repository. Default value: "PYPI" Possible values: ["PYPI"] PublicRepository string `pulumi:"publicRepository"` } @@ -4523,6 +5532,8 @@ type GetRepositoryRemoteRepositoryConfigPythonRepositoryInput interface { } type GetRepositoryRemoteRepositoryConfigPythonRepositoryArgs struct { + // Settings for a remote repository with a custom uri. + CustomRepositories GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArrayInput `pulumi:"customRepositories"` // Address of the remote repository. Default value: "PYPI" Possible values: ["PYPI"] PublicRepository pulumi.StringInput `pulumi:"publicRepository"` } @@ -4578,6 +5589,13 @@ func (o GetRepositoryRemoteRepositoryConfigPythonRepositoryOutput) ToGetReposito return o } +// Settings for a remote repository with a custom uri. +func (o GetRepositoryRemoteRepositoryConfigPythonRepositoryOutput) CustomRepositories() GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArrayOutput { + return o.ApplyT(func(v GetRepositoryRemoteRepositoryConfigPythonRepository) []GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository { + return v.CustomRepositories + }).(GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArrayOutput) +} + // Address of the remote repository. Default value: "PYPI" Possible values: ["PYPI"] func (o GetRepositoryRemoteRepositoryConfigPythonRepositoryOutput) PublicRepository() pulumi.StringOutput { return o.ApplyT(func(v GetRepositoryRemoteRepositoryConfigPythonRepository) string { return v.PublicRepository }).(pulumi.StringOutput) @@ -4603,6 +5621,103 @@ func (o GetRepositoryRemoteRepositoryConfigPythonRepositoryArrayOutput) Index(i }).(GetRepositoryRemoteRepositoryConfigPythonRepositoryOutput) } +type GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository struct { + // Specific uri to the registry, e.g. '"https://pypi.io"' + Uri string `pulumi:"uri"` +} + +// GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryInput is an input type that accepts GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs and GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput values. +// You can construct a concrete instance of `GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryInput` via: +// +// GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs{...} +type GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryInput interface { + pulumi.Input + + ToGetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput() GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput + ToGetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutputWithContext(context.Context) GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput +} + +type GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs struct { + // Specific uri to the registry, e.g. '"https://pypi.io"' + Uri pulumi.StringInput `pulumi:"uri"` +} + +func (GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository)(nil)).Elem() +} + +func (i GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs) ToGetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput() GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput { + return i.ToGetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutputWithContext(context.Background()) +} + +func (i GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs) ToGetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutputWithContext(ctx context.Context) GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput) +} + +// GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArrayInput is an input type that accepts GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArray and GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArrayOutput values. +// You can construct a concrete instance of `GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArrayInput` via: +// +// GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArray{ GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs{...} } +type GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArrayInput interface { + pulumi.Input + + ToGetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArrayOutput() GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArrayOutput + ToGetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArrayOutputWithContext(context.Context) GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArrayOutput +} + +type GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArray []GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryInput + +func (GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository)(nil)).Elem() +} + +func (i GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArray) ToGetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArrayOutput() GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArrayOutput { + return i.ToGetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArrayOutputWithContext(context.Background()) +} + +func (i GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArray) ToGetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArrayOutputWithContext(ctx context.Context) GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArrayOutput) +} + +type GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput struct{ *pulumi.OutputState } + +func (GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository)(nil)).Elem() +} + +func (o GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput) ToGetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput() GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput { + return o +} + +func (o GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput) ToGetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutputWithContext(ctx context.Context) GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput { + return o +} + +// Specific uri to the registry, e.g. '"https://pypi.io"' +func (o GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput) Uri() pulumi.StringOutput { + return o.ApplyT(func(v GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository) string { return v.Uri }).(pulumi.StringOutput) +} + +type GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArrayOutput struct{ *pulumi.OutputState } + +func (GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository)(nil)).Elem() +} + +func (o GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArrayOutput) ToGetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArrayOutput() GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArrayOutput { + return o +} + +func (o GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArrayOutput) ToGetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArrayOutputWithContext(ctx context.Context) GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArrayOutput { + return o +} + +func (o GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArrayOutput) Index(i pulumi.IntInput) GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository { + return vs[0].([]GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository)[vs[1].(int)] + }).(GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput) +} + type GetRepositoryRemoteRepositoryConfigUpstreamCredential struct { // Use username and password to access the remote repository. UsernamePasswordCredentials []GetRepositoryRemoteRepositoryConfigUpstreamCredentialUsernamePasswordCredential `pulumi:"usernamePasswordCredentials"` @@ -5270,12 +6385,20 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryPtrInput)(nil)).Elem(), RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*RepositoryRemoteRepositoryConfigDockerRepositoryInput)(nil)).Elem(), RepositoryRemoteRepositoryConfigDockerRepositoryArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*RepositoryRemoteRepositoryConfigDockerRepositoryPtrInput)(nil)).Elem(), RepositoryRemoteRepositoryConfigDockerRepositoryArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryInput)(nil)).Elem(), RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrInput)(nil)).Elem(), RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*RepositoryRemoteRepositoryConfigMavenRepositoryInput)(nil)).Elem(), RepositoryRemoteRepositoryConfigMavenRepositoryArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*RepositoryRemoteRepositoryConfigMavenRepositoryPtrInput)(nil)).Elem(), RepositoryRemoteRepositoryConfigMavenRepositoryArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryInput)(nil)).Elem(), RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrInput)(nil)).Elem(), RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*RepositoryRemoteRepositoryConfigNpmRepositoryInput)(nil)).Elem(), RepositoryRemoteRepositoryConfigNpmRepositoryArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*RepositoryRemoteRepositoryConfigNpmRepositoryPtrInput)(nil)).Elem(), RepositoryRemoteRepositoryConfigNpmRepositoryArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryInput)(nil)).Elem(), RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrInput)(nil)).Elem(), RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*RepositoryRemoteRepositoryConfigPythonRepositoryInput)(nil)).Elem(), RepositoryRemoteRepositoryConfigPythonRepositoryArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*RepositoryRemoteRepositoryConfigPythonRepositoryPtrInput)(nil)).Elem(), RepositoryRemoteRepositoryConfigPythonRepositoryArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryInput)(nil)).Elem(), RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrInput)(nil)).Elem(), RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*RepositoryRemoteRepositoryConfigUpstreamCredentialsInput)(nil)).Elem(), RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*RepositoryRemoteRepositoryConfigUpstreamCredentialsPtrInput)(nil)).Elem(), RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsInput)(nil)).Elem(), RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{}) @@ -5306,12 +6429,20 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*GetRepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArrayInput)(nil)).Elem(), GetRepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetRepositoryRemoteRepositoryConfigDockerRepositoryInput)(nil)).Elem(), GetRepositoryRemoteRepositoryConfigDockerRepositoryArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetRepositoryRemoteRepositoryConfigDockerRepositoryArrayInput)(nil)).Elem(), GetRepositoryRemoteRepositoryConfigDockerRepositoryArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryInput)(nil)).Elem(), GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArrayInput)(nil)).Elem(), GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetRepositoryRemoteRepositoryConfigMavenRepositoryInput)(nil)).Elem(), GetRepositoryRemoteRepositoryConfigMavenRepositoryArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetRepositoryRemoteRepositoryConfigMavenRepositoryArrayInput)(nil)).Elem(), GetRepositoryRemoteRepositoryConfigMavenRepositoryArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryInput)(nil)).Elem(), GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArrayInput)(nil)).Elem(), GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetRepositoryRemoteRepositoryConfigNpmRepositoryInput)(nil)).Elem(), GetRepositoryRemoteRepositoryConfigNpmRepositoryArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetRepositoryRemoteRepositoryConfigNpmRepositoryArrayInput)(nil)).Elem(), GetRepositoryRemoteRepositoryConfigNpmRepositoryArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryInput)(nil)).Elem(), GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArrayInput)(nil)).Elem(), GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetRepositoryRemoteRepositoryConfigPythonRepositoryInput)(nil)).Elem(), GetRepositoryRemoteRepositoryConfigPythonRepositoryArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetRepositoryRemoteRepositoryConfigPythonRepositoryArrayInput)(nil)).Elem(), GetRepositoryRemoteRepositoryConfigPythonRepositoryArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryInput)(nil)).Elem(), GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArrayInput)(nil)).Elem(), GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetRepositoryRemoteRepositoryConfigUpstreamCredentialInput)(nil)).Elem(), GetRepositoryRemoteRepositoryConfigUpstreamCredentialArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetRepositoryRemoteRepositoryConfigUpstreamCredentialArrayInput)(nil)).Elem(), GetRepositoryRemoteRepositoryConfigUpstreamCredentialArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetRepositoryRemoteRepositoryConfigUpstreamCredentialUsernamePasswordCredentialInput)(nil)).Elem(), GetRepositoryRemoteRepositoryConfigUpstreamCredentialUsernamePasswordCredentialArgs{}) @@ -5346,12 +6477,20 @@ func init() { pulumi.RegisterOutputType(RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryPtrOutput{}) pulumi.RegisterOutputType(RepositoryRemoteRepositoryConfigDockerRepositoryOutput{}) pulumi.RegisterOutputType(RepositoryRemoteRepositoryConfigDockerRepositoryPtrOutput{}) + pulumi.RegisterOutputType(RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput{}) + pulumi.RegisterOutputType(RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryPtrOutput{}) pulumi.RegisterOutputType(RepositoryRemoteRepositoryConfigMavenRepositoryOutput{}) pulumi.RegisterOutputType(RepositoryRemoteRepositoryConfigMavenRepositoryPtrOutput{}) + pulumi.RegisterOutputType(RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput{}) + pulumi.RegisterOutputType(RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryPtrOutput{}) pulumi.RegisterOutputType(RepositoryRemoteRepositoryConfigNpmRepositoryOutput{}) pulumi.RegisterOutputType(RepositoryRemoteRepositoryConfigNpmRepositoryPtrOutput{}) + pulumi.RegisterOutputType(RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput{}) + pulumi.RegisterOutputType(RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryPtrOutput{}) pulumi.RegisterOutputType(RepositoryRemoteRepositoryConfigPythonRepositoryOutput{}) pulumi.RegisterOutputType(RepositoryRemoteRepositoryConfigPythonRepositoryPtrOutput{}) + pulumi.RegisterOutputType(RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput{}) + pulumi.RegisterOutputType(RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryPtrOutput{}) pulumi.RegisterOutputType(RepositoryRemoteRepositoryConfigUpstreamCredentialsOutput{}) pulumi.RegisterOutputType(RepositoryRemoteRepositoryConfigUpstreamCredentialsPtrOutput{}) pulumi.RegisterOutputType(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsOutput{}) @@ -5382,12 +6521,20 @@ func init() { pulumi.RegisterOutputType(GetRepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArrayOutput{}) pulumi.RegisterOutputType(GetRepositoryRemoteRepositoryConfigDockerRepositoryOutput{}) pulumi.RegisterOutputType(GetRepositoryRemoteRepositoryConfigDockerRepositoryArrayOutput{}) + pulumi.RegisterOutputType(GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryOutput{}) + pulumi.RegisterOutputType(GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArrayOutput{}) pulumi.RegisterOutputType(GetRepositoryRemoteRepositoryConfigMavenRepositoryOutput{}) pulumi.RegisterOutputType(GetRepositoryRemoteRepositoryConfigMavenRepositoryArrayOutput{}) + pulumi.RegisterOutputType(GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryOutput{}) + pulumi.RegisterOutputType(GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArrayOutput{}) pulumi.RegisterOutputType(GetRepositoryRemoteRepositoryConfigNpmRepositoryOutput{}) pulumi.RegisterOutputType(GetRepositoryRemoteRepositoryConfigNpmRepositoryArrayOutput{}) + pulumi.RegisterOutputType(GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryOutput{}) + pulumi.RegisterOutputType(GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArrayOutput{}) pulumi.RegisterOutputType(GetRepositoryRemoteRepositoryConfigPythonRepositoryOutput{}) pulumi.RegisterOutputType(GetRepositoryRemoteRepositoryConfigPythonRepositoryArrayOutput{}) + pulumi.RegisterOutputType(GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryOutput{}) + pulumi.RegisterOutputType(GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArrayOutput{}) pulumi.RegisterOutputType(GetRepositoryRemoteRepositoryConfigUpstreamCredentialOutput{}) pulumi.RegisterOutputType(GetRepositoryRemoteRepositoryConfigUpstreamCredentialArrayOutput{}) pulumi.RegisterOutputType(GetRepositoryRemoteRepositoryConfigUpstreamCredentialUsernamePasswordCredentialOutput{}) diff --git a/sdk/go/gcp/artifactregistry/repository.go b/sdk/go/gcp/artifactregistry/repository.go index 8941422261..ec2ec18ad5 100644 --- a/sdk/go/gcp/artifactregistry/repository.go +++ b/sdk/go/gcp/artifactregistry/repository.go @@ -367,7 +367,7 @@ import ( // } // // ``` -// ### Artifact Registry Repository Remote Custom +// ### Artifact Registry Repository Remote Dockerhub Auth // // ```go // package main @@ -389,7 +389,7 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecret(ctx, "example-custom-remote-secret", &secretmanager.SecretArgs{ +// _, err = secretmanager.NewSecret(ctx, "example-remote-secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("example-secret"), // Replication: &secretmanager.SecretReplicationArgs{ // Auto: nil, @@ -398,15 +398,15 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecretVersion(ctx, "example-custom-remote-secret_version", &secretmanager.SecretVersionArgs{ -// Secret: example_custom_remote_secret.ID(), +// _, err = secretmanager.NewSecretVersion(ctx, "example-remote-secret_version", &secretmanager.SecretVersionArgs{ +// Secret: example_remote_secret.ID(), // SecretData: pulumi.String("remote-password"), // }) // if err != nil { // return err // } // _, err = secretmanager.NewSecretIamMember(ctx, "secret-access", &secretmanager.SecretIamMemberArgs{ -// SecretId: example_custom_remote_secret.ID(), +// SecretId: example_remote_secret.ID(), // Role: pulumi.String("roles/secretmanager.secretAccessor"), // Member: pulumi.String(fmt.Sprintf("serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com", project.Number)), // }) @@ -415,19 +415,324 @@ import ( // } // _, err = artifactregistry.NewRepository(ctx, "my-repo", &artifactregistry.RepositoryArgs{ // Location: pulumi.String("us-central1"), -// RepositoryId: pulumi.String("example-custom-remote"), -// Description: pulumi.String("example remote docker repository with credentials"), +// RepositoryId: pulumi.String("example-dockerhub-remote"), +// Description: pulumi.String("example remote dockerhub repository with credentials"), // Format: pulumi.String("DOCKER"), // Mode: pulumi.String("REMOTE_REPOSITORY"), // RemoteRepositoryConfig: &artifactregistry.RepositoryRemoteRepositoryConfigArgs{ -// Description: pulumi.String("docker hub with custom credentials"), +// Description: pulumi.String("docker hub with custom credentials"), +// DisableUpstreamValidation: pulumi.Bool(true), // DockerRepository: &artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs{ // PublicRepository: pulumi.String("DOCKER_HUB"), // }, // UpstreamCredentials: &artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{ // UsernamePasswordCredentials: &artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{ // Username: pulumi.String("remote-username"), -// PasswordSecretVersion: example_custom_remote_secretVersion.Name, +// PasswordSecretVersion: example_remote_secretVersion.Name, +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// ### Artifact Registry Repository Remote Docker Custom With Auth +// +// ```go +// package main +// +// import ( +// +// "fmt" +// +// "github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry" +// "github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations" +// "github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// project, err := organizations.LookupProject(ctx, nil, nil) +// if err != nil { +// return err +// } +// _, err = secretmanager.NewSecret(ctx, "example-remote-secret", &secretmanager.SecretArgs{ +// SecretId: pulumi.String("example-secret"), +// Replication: &secretmanager.SecretReplicationArgs{ +// Auto: nil, +// }, +// }) +// if err != nil { +// return err +// } +// _, err = secretmanager.NewSecretVersion(ctx, "example-remote-secret_version", &secretmanager.SecretVersionArgs{ +// Secret: example_remote_secret.ID(), +// SecretData: pulumi.String("remote-password"), +// }) +// if err != nil { +// return err +// } +// _, err = secretmanager.NewSecretIamMember(ctx, "secret-access", &secretmanager.SecretIamMemberArgs{ +// SecretId: example_remote_secret.ID(), +// Role: pulumi.String("roles/secretmanager.secretAccessor"), +// Member: pulumi.String(fmt.Sprintf("serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com", project.Number)), +// }) +// if err != nil { +// return err +// } +// _, err = artifactregistry.NewRepository(ctx, "my-repo", &artifactregistry.RepositoryArgs{ +// Location: pulumi.String("us-central1"), +// RepositoryId: pulumi.String("example-docker-custom-remote"), +// Description: pulumi.String("example remote custom docker repository with credentials"), +// Format: pulumi.String("DOCKER"), +// Mode: pulumi.String("REMOTE_REPOSITORY"), +// RemoteRepositoryConfig: &artifactregistry.RepositoryRemoteRepositoryConfigArgs{ +// Description: pulumi.String("custom docker remote with credentials"), +// DisableUpstreamValidation: pulumi.Bool(true), +// DockerRepository: &artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs{ +// CustomRepository: &artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs{ +// Uri: pulumi.String("https://registry-1.docker.io"), +// }, +// }, +// UpstreamCredentials: &artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{ +// UsernamePasswordCredentials: &artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{ +// Username: pulumi.String("remote-username"), +// PasswordSecretVersion: example_remote_secretVersion.Name, +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// ### Artifact Registry Repository Remote Maven Custom With Auth +// +// ```go +// package main +// +// import ( +// +// "fmt" +// +// "github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry" +// "github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations" +// "github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// project, err := organizations.LookupProject(ctx, nil, nil) +// if err != nil { +// return err +// } +// _, err = secretmanager.NewSecret(ctx, "example-remote-secret", &secretmanager.SecretArgs{ +// SecretId: pulumi.String("example-secret"), +// Replication: &secretmanager.SecretReplicationArgs{ +// Auto: nil, +// }, +// }) +// if err != nil { +// return err +// } +// _, err = secretmanager.NewSecretVersion(ctx, "example-remote-secret_version", &secretmanager.SecretVersionArgs{ +// Secret: example_remote_secret.ID(), +// SecretData: pulumi.String("remote-password"), +// }) +// if err != nil { +// return err +// } +// _, err = secretmanager.NewSecretIamMember(ctx, "secret-access", &secretmanager.SecretIamMemberArgs{ +// SecretId: example_remote_secret.ID(), +// Role: pulumi.String("roles/secretmanager.secretAccessor"), +// Member: pulumi.String(fmt.Sprintf("serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com", project.Number)), +// }) +// if err != nil { +// return err +// } +// _, err = artifactregistry.NewRepository(ctx, "my-repo", &artifactregistry.RepositoryArgs{ +// Location: pulumi.String("us-central1"), +// RepositoryId: pulumi.String("example-maven-custom-remote"), +// Description: pulumi.String("example remote custom maven repository with credentials"), +// Format: pulumi.String("MAVEN"), +// Mode: pulumi.String("REMOTE_REPOSITORY"), +// RemoteRepositoryConfig: &artifactregistry.RepositoryRemoteRepositoryConfigArgs{ +// Description: pulumi.String("custom maven remote with credentials"), +// DisableUpstreamValidation: pulumi.Bool(true), +// MavenRepository: &artifactregistry.RepositoryRemoteRepositoryConfigMavenRepositoryArgs{ +// CustomRepository: &artifactregistry.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs{ +// Uri: pulumi.String("https://my.maven.registry"), +// }, +// }, +// UpstreamCredentials: &artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{ +// UsernamePasswordCredentials: &artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{ +// Username: pulumi.String("remote-username"), +// PasswordSecretVersion: example_remote_secretVersion.Name, +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// ### Artifact Registry Repository Remote Npm Custom With Auth +// +// ```go +// package main +// +// import ( +// +// "fmt" +// +// "github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry" +// "github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations" +// "github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// project, err := organizations.LookupProject(ctx, nil, nil) +// if err != nil { +// return err +// } +// _, err = secretmanager.NewSecret(ctx, "example-remote-secret", &secretmanager.SecretArgs{ +// SecretId: pulumi.String("example-secret"), +// Replication: &secretmanager.SecretReplicationArgs{ +// Auto: nil, +// }, +// }) +// if err != nil { +// return err +// } +// _, err = secretmanager.NewSecretVersion(ctx, "example-remote-secret_version", &secretmanager.SecretVersionArgs{ +// Secret: example_remote_secret.ID(), +// SecretData: pulumi.String("remote-password"), +// }) +// if err != nil { +// return err +// } +// _, err = secretmanager.NewSecretIamMember(ctx, "secret-access", &secretmanager.SecretIamMemberArgs{ +// SecretId: example_remote_secret.ID(), +// Role: pulumi.String("roles/secretmanager.secretAccessor"), +// Member: pulumi.String(fmt.Sprintf("serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com", project.Number)), +// }) +// if err != nil { +// return err +// } +// _, err = artifactregistry.NewRepository(ctx, "my-repo", &artifactregistry.RepositoryArgs{ +// Location: pulumi.String("us-central1"), +// RepositoryId: pulumi.String("example-npm-custom-remote"), +// Description: pulumi.String("example remote custom npm repository with credentials"), +// Format: pulumi.String("NPM"), +// Mode: pulumi.String("REMOTE_REPOSITORY"), +// RemoteRepositoryConfig: &artifactregistry.RepositoryRemoteRepositoryConfigArgs{ +// Description: pulumi.String("custom npm with credentials"), +// DisableUpstreamValidation: pulumi.Bool(true), +// NpmRepository: &artifactregistry.RepositoryRemoteRepositoryConfigNpmRepositoryArgs{ +// CustomRepository: &artifactregistry.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs{ +// Uri: pulumi.String("https://my.npm.registry"), +// }, +// }, +// UpstreamCredentials: &artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{ +// UsernamePasswordCredentials: &artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{ +// Username: pulumi.String("remote-username"), +// PasswordSecretVersion: example_remote_secretVersion.Name, +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// ### Artifact Registry Repository Remote Python Custom With Auth +// +// ```go +// package main +// +// import ( +// +// "fmt" +// +// "github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry" +// "github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations" +// "github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// project, err := organizations.LookupProject(ctx, nil, nil) +// if err != nil { +// return err +// } +// _, err = secretmanager.NewSecret(ctx, "example-remote-secret", &secretmanager.SecretArgs{ +// SecretId: pulumi.String("example-secret"), +// Replication: &secretmanager.SecretReplicationArgs{ +// Auto: nil, +// }, +// }) +// if err != nil { +// return err +// } +// _, err = secretmanager.NewSecretVersion(ctx, "example-remote-secret_version", &secretmanager.SecretVersionArgs{ +// Secret: example_remote_secret.ID(), +// SecretData: pulumi.String("remote-password"), +// }) +// if err != nil { +// return err +// } +// _, err = secretmanager.NewSecretIamMember(ctx, "secret-access", &secretmanager.SecretIamMemberArgs{ +// SecretId: example_remote_secret.ID(), +// Role: pulumi.String("roles/secretmanager.secretAccessor"), +// Member: pulumi.String(fmt.Sprintf("serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com", project.Number)), +// }) +// if err != nil { +// return err +// } +// _, err = artifactregistry.NewRepository(ctx, "my-repo", &artifactregistry.RepositoryArgs{ +// Location: pulumi.String("us-central1"), +// RepositoryId: pulumi.String("example-python-custom-remote"), +// Description: pulumi.String("example remote custom python repository with credentials"), +// Format: pulumi.String("PYTHON"), +// Mode: pulumi.String("REMOTE_REPOSITORY"), +// RemoteRepositoryConfig: &artifactregistry.RepositoryRemoteRepositoryConfigArgs{ +// Description: pulumi.String("custom npm with credentials"), +// DisableUpstreamValidation: pulumi.Bool(true), +// PythonRepository: &artifactregistry.RepositoryRemoteRepositoryConfigPythonRepositoryArgs{ +// CustomRepository: &artifactregistry.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs{ +// Uri: pulumi.String("https://my.python.registry"), +// }, +// }, +// UpstreamCredentials: &artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{ +// UsernamePasswordCredentials: &artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{ +// Username: pulumi.String("remote-username"), +// PasswordSecretVersion: example_remote_secretVersion.Name, // }, // }, // }, diff --git a/sdk/go/gcp/bigquery/table.go b/sdk/go/gcp/bigquery/table.go index c17f61092a..c0f66390b9 100644 --- a/sdk/go/gcp/bigquery/table.go +++ b/sdk/go/gcp/bigquery/table.go @@ -210,6 +210,10 @@ type Table struct { // require a partition filter that can be used for partition elimination to be // specified. RequirePartitionFilter pulumi.BoolPtrOutput `pulumi:"requirePartitionFilter"` + // The tags attached to this table. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for + // example "123456789012/environment" where 123456789012 is the ID of the parent organization or project resource for this + // tag key. Tag value is expected to be the short name, for example "Production". + ResourceTags pulumi.StringMapOutput `pulumi:"resourceTags"` // A JSON schema for the table. Schema pulumi.StringOutput `pulumi:"schema"` // The URI of the created resource. @@ -357,6 +361,10 @@ type tableState struct { // require a partition filter that can be used for partition elimination to be // specified. RequirePartitionFilter *bool `pulumi:"requirePartitionFilter"` + // The tags attached to this table. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for + // example "123456789012/environment" where 123456789012 is the ID of the parent organization or project resource for this + // tag key. Tag value is expected to be the short name, for example "Production". + ResourceTags map[string]string `pulumi:"resourceTags"` // A JSON schema for the table. Schema *string `pulumi:"schema"` // The URI of the created resource. @@ -464,6 +472,10 @@ type TableState struct { // require a partition filter that can be used for partition elimination to be // specified. RequirePartitionFilter pulumi.BoolPtrInput + // The tags attached to this table. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for + // example "123456789012/environment" where 123456789012 is the ID of the parent organization or project resource for this + // tag key. Tag value is expected to be the short name, for example "Production". + ResourceTags pulumi.StringMapInput // A JSON schema for the table. Schema pulumi.StringPtrInput // The URI of the created resource. @@ -542,6 +554,10 @@ type tableArgs struct { // require a partition filter that can be used for partition elimination to be // specified. RequirePartitionFilter *bool `pulumi:"requirePartitionFilter"` + // The tags attached to this table. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for + // example "123456789012/environment" where 123456789012 is the ID of the parent organization or project resource for this + // tag key. Tag value is expected to be the short name, for example "Production". + ResourceTags map[string]string `pulumi:"resourceTags"` // A JSON schema for the table. Schema *string `pulumi:"schema"` // Defines the primary key and foreign keys. @@ -613,6 +629,10 @@ type TableArgs struct { // require a partition filter that can be used for partition elimination to be // specified. RequirePartitionFilter pulumi.BoolPtrInput + // The tags attached to this table. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for + // example "123456789012/environment" where 123456789012 is the ID of the parent organization or project resource for this + // tag key. Tag value is expected to be the short name, for example "Production". + ResourceTags pulumi.StringMapInput // A JSON schema for the table. Schema pulumi.StringPtrInput // Defines the primary key and foreign keys. @@ -871,6 +891,13 @@ func (o TableOutput) RequirePartitionFilter() pulumi.BoolPtrOutput { return o.ApplyT(func(v *Table) pulumi.BoolPtrOutput { return v.RequirePartitionFilter }).(pulumi.BoolPtrOutput) } +// The tags attached to this table. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for +// example "123456789012/environment" where 123456789012 is the ID of the parent organization or project resource for this +// tag key. Tag value is expected to be the short name, for example "Production". +func (o TableOutput) ResourceTags() pulumi.StringMapOutput { + return o.ApplyT(func(v *Table) pulumi.StringMapOutput { return v.ResourceTags }).(pulumi.StringMapOutput) +} + // A JSON schema for the table. func (o TableOutput) Schema() pulumi.StringOutput { return o.ApplyT(func(v *Table) pulumi.StringOutput { return v.Schema }).(pulumi.StringOutput) diff --git a/sdk/go/gcp/billing/budget.go b/sdk/go/gcp/billing/budget.go index de7c3167d3..33b5f5f155 100644 --- a/sdk/go/gcp/billing/budget.go +++ b/sdk/go/gcp/billing/budget.go @@ -387,6 +387,9 @@ type Budget struct { // implies the scope of a budget. Values are of the form // billingAccounts/{billingAccountId}/budgets/{budgetId}. Name pulumi.StringOutput `pulumi:"name"` + // The ownership scope of the budget. The ownership scope and users' IAM permissions determine who has full access to the + // budget's data. Possible values: ["OWNERSHIP_SCOPE_UNSPECIFIED", "ALL_USERS", "BILLING_ACCOUNT"] + OwnershipScope pulumi.StringPtrOutput `pulumi:"ownershipScope"` // Rules that trigger alerts (notifications of thresholds being crossed) when spend exceeds the specified percentages of // the budget. ThresholdRules BudgetThresholdRuleArrayOutput `pulumi:"thresholdRules"` @@ -444,6 +447,9 @@ type budgetState struct { // implies the scope of a budget. Values are of the form // billingAccounts/{billingAccountId}/budgets/{budgetId}. Name *string `pulumi:"name"` + // The ownership scope of the budget. The ownership scope and users' IAM permissions determine who has full access to the + // budget's data. Possible values: ["OWNERSHIP_SCOPE_UNSPECIFIED", "ALL_USERS", "BILLING_ACCOUNT"] + OwnershipScope *string `pulumi:"ownershipScope"` // Rules that trigger alerts (notifications of thresholds being crossed) when spend exceeds the specified percentages of // the budget. ThresholdRules []BudgetThresholdRule `pulumi:"thresholdRules"` @@ -466,6 +472,9 @@ type BudgetState struct { // implies the scope of a budget. Values are of the form // billingAccounts/{billingAccountId}/budgets/{budgetId}. Name pulumi.StringPtrInput + // The ownership scope of the budget. The ownership scope and users' IAM permissions determine who has full access to the + // budget's data. Possible values: ["OWNERSHIP_SCOPE_UNSPECIFIED", "ALL_USERS", "BILLING_ACCOUNT"] + OwnershipScope pulumi.StringPtrInput // Rules that trigger alerts (notifications of thresholds being crossed) when spend exceeds the specified percentages of // the budget. ThresholdRules BudgetThresholdRuleArrayInput @@ -488,6 +497,9 @@ type budgetArgs struct { BudgetFilter *BudgetBudgetFilter `pulumi:"budgetFilter"` // User data for display name in UI. Must be <= 60 chars. DisplayName *string `pulumi:"displayName"` + // The ownership scope of the budget. The ownership scope and users' IAM permissions determine who has full access to the + // budget's data. Possible values: ["OWNERSHIP_SCOPE_UNSPECIFIED", "ALL_USERS", "BILLING_ACCOUNT"] + OwnershipScope *string `pulumi:"ownershipScope"` // Rules that trigger alerts (notifications of thresholds being crossed) when spend exceeds the specified percentages of // the budget. ThresholdRules []BudgetThresholdRule `pulumi:"thresholdRules"` @@ -507,6 +519,9 @@ type BudgetArgs struct { BudgetFilter BudgetBudgetFilterPtrInput // User data for display name in UI. Must be <= 60 chars. DisplayName pulumi.StringPtrInput + // The ownership scope of the budget. The ownership scope and users' IAM permissions determine who has full access to the + // budget's data. Possible values: ["OWNERSHIP_SCOPE_UNSPECIFIED", "ALL_USERS", "BILLING_ACCOUNT"] + OwnershipScope pulumi.StringPtrInput // Rules that trigger alerts (notifications of thresholds being crossed) when spend exceeds the specified percentages of // the budget. ThresholdRules BudgetThresholdRuleArrayInput @@ -633,6 +648,12 @@ func (o BudgetOutput) Name() pulumi.StringOutput { return o.ApplyT(func(v *Budget) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) } +// The ownership scope of the budget. The ownership scope and users' IAM permissions determine who has full access to the +// budget's data. Possible values: ["OWNERSHIP_SCOPE_UNSPECIFIED", "ALL_USERS", "BILLING_ACCOUNT"] +func (o BudgetOutput) OwnershipScope() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Budget) pulumi.StringPtrOutput { return v.OwnershipScope }).(pulumi.StringPtrOutput) +} + // Rules that trigger alerts (notifications of thresholds being crossed) when spend exceeds the specified percentages of // the budget. func (o BudgetOutput) ThresholdRules() BudgetThresholdRuleArrayOutput { diff --git a/sdk/go/gcp/cloudfunctionsv2/function.go b/sdk/go/gcp/cloudfunctionsv2/function.go index 0f83a165d2..33e407dac8 100644 --- a/sdk/go/gcp/cloudfunctionsv2/function.go +++ b/sdk/go/gcp/cloudfunctionsv2/function.go @@ -592,6 +592,119 @@ import ( // } // // ``` +// ### Cloudfunctions2 Basic Builder +// +// ```go +// package main +// +// import ( +// +// "fmt" +// +// "github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2" +// "github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects" +// "github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount" +// "github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/storage" +// "github.com/pulumi/pulumi-time/sdk/go/time" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// project := "my-project-name" +// account, err := serviceaccount.NewAccount(ctx, "account", &serviceaccount.AccountArgs{ +// AccountId: pulumi.String("gcf-sa"), +// DisplayName: pulumi.String("Test Service Account"), +// }) +// if err != nil { +// return err +// } +// _, err = projects.NewIAMMember(ctx, "log_writer", &projects.IAMMemberArgs{ +// Project: account.Project, +// Role: pulumi.String("roles/logging.logWriter"), +// Member: account.Email.ApplyT(func(email string) (string, error) { +// return fmt.Sprintf("serviceAccount:%v", email), nil +// }).(pulumi.StringOutput), +// }) +// if err != nil { +// return err +// } +// _, err = projects.NewIAMMember(ctx, "artifact_registry_writer", &projects.IAMMemberArgs{ +// Project: account.Project, +// Role: pulumi.String("roles/artifactregistry.writer"), +// Member: account.Email.ApplyT(func(email string) (string, error) { +// return fmt.Sprintf("serviceAccount:%v", email), nil +// }).(pulumi.StringOutput), +// }) +// if err != nil { +// return err +// } +// _, err = projects.NewIAMMember(ctx, "storage_object_admin", &projects.IAMMemberArgs{ +// Project: account.Project, +// Role: pulumi.String("roles/storage.objectAdmin"), +// Member: account.Email.ApplyT(func(email string) (string, error) { +// return fmt.Sprintf("serviceAccount:%v", email), nil +// }).(pulumi.StringOutput), +// }) +// if err != nil { +// return err +// } +// bucket, err := storage.NewBucket(ctx, "bucket", &storage.BucketArgs{ +// Name: pulumi.String(fmt.Sprintf("%v-gcf-source", project)), +// Location: pulumi.String("US"), +// UniformBucketLevelAccess: pulumi.Bool(true), +// }) +// if err != nil { +// return err +// } +// object, err := storage.NewBucketObject(ctx, "object", &storage.BucketObjectArgs{ +// Name: pulumi.String("function-source.zip"), +// Bucket: bucket.Name, +// Source: pulumi.NewFileAsset("function-source.zip"), +// }) +// if err != nil { +// return err +// } +// // builder permissions need to stablize before it can pull the source zip +// _, err = time.NewSleep(ctx, "wait_60s", &time.SleepArgs{ +// CreateDuration: "60s", +// }) +// if err != nil { +// return err +// } +// function, err := cloudfunctionsv2.NewFunction(ctx, "function", &cloudfunctionsv2.FunctionArgs{ +// Name: pulumi.String("function-v2"), +// Location: pulumi.String("us-central1"), +// Description: pulumi.String("a new function"), +// BuildConfig: &cloudfunctionsv2.FunctionBuildConfigArgs{ +// Runtime: pulumi.String("nodejs16"), +// EntryPoint: pulumi.String("helloHttp"), +// Source: &cloudfunctionsv2.FunctionBuildConfigSourceArgs{ +// StorageSource: &cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{ +// Bucket: bucket.Name, +// Object: object.Name, +// }, +// }, +// ServiceAccount: account.ID(), +// }, +// ServiceConfig: &cloudfunctionsv2.FunctionServiceConfigArgs{ +// MaxInstanceCount: pulumi.Int(1), +// AvailableMemory: pulumi.String("256M"), +// TimeoutSeconds: pulumi.Int(60), +// }, +// }) +// if err != nil { +// return err +// } +// ctx.Export("functionUri", function.ServiceConfig.ApplyT(func(serviceConfig cloudfunctionsv2.FunctionServiceConfig) (*string, error) { +// return &serviceConfig.Uri, nil +// }).(pulumi.StringPtrOutput)) +// return nil +// }) +// } +// +// ``` // ### Cloudfunctions2 Secret Env // // ```go diff --git a/sdk/go/gcp/cloudfunctionsv2/pulumiTypes.go b/sdk/go/gcp/cloudfunctionsv2/pulumiTypes.go index 74b7706d5c..a5d732cc27 100644 --- a/sdk/go/gcp/cloudfunctionsv2/pulumiTypes.go +++ b/sdk/go/gcp/cloudfunctionsv2/pulumiTypes.go @@ -31,6 +31,8 @@ type FunctionBuildConfig struct { // The runtime in which to run the function. Required when deploying a new // function, optional when updating an existing function. Runtime *string `pulumi:"runtime"` + // The fully-qualified name of the service account to be used for building the container. + ServiceAccount *string `pulumi:"serviceAccount"` // The location of the function source code. // Structure is documented below. Source *FunctionBuildConfigSource `pulumi:"source"` @@ -67,6 +69,8 @@ type FunctionBuildConfigArgs struct { // The runtime in which to run the function. Required when deploying a new // function, optional when updating an existing function. Runtime pulumi.StringPtrInput `pulumi:"runtime"` + // The fully-qualified name of the service account to be used for building the container. + ServiceAccount pulumi.StringPtrInput `pulumi:"serviceAccount"` // The location of the function source code. // Structure is documented below. Source FunctionBuildConfigSourcePtrInput `pulumi:"source"` @@ -183,6 +187,11 @@ func (o FunctionBuildConfigOutput) Runtime() pulumi.StringPtrOutput { return o.ApplyT(func(v FunctionBuildConfig) *string { return v.Runtime }).(pulumi.StringPtrOutput) } +// The fully-qualified name of the service account to be used for building the container. +func (o FunctionBuildConfigOutput) ServiceAccount() pulumi.StringPtrOutput { + return o.ApplyT(func(v FunctionBuildConfig) *string { return v.ServiceAccount }).(pulumi.StringPtrOutput) +} + // The location of the function source code. // Structure is documented below. func (o FunctionBuildConfigOutput) Source() FunctionBuildConfigSourcePtrOutput { @@ -275,6 +284,16 @@ func (o FunctionBuildConfigPtrOutput) Runtime() pulumi.StringPtrOutput { }).(pulumi.StringPtrOutput) } +// The fully-qualified name of the service account to be used for building the container. +func (o FunctionBuildConfigPtrOutput) ServiceAccount() pulumi.StringPtrOutput { + return o.ApplyT(func(v *FunctionBuildConfig) *string { + if v == nil { + return nil + } + return v.ServiceAccount + }).(pulumi.StringPtrOutput) +} + // The location of the function source code. // Structure is documented below. func (o FunctionBuildConfigPtrOutput) Source() FunctionBuildConfigSourcePtrOutput { @@ -2522,6 +2541,8 @@ type GetFunctionBuildConfig struct { // The runtime in which to run the function. Required when deploying a new // function, optional when updating an existing function. Runtime string `pulumi:"runtime"` + // The fully-qualified name of the service account to be used for building the container. + ServiceAccount string `pulumi:"serviceAccount"` // The location of the function source code. Sources []GetFunctionBuildConfigSource `pulumi:"sources"` // Name of the Cloud Build Custom Worker Pool that should be used to build the function. @@ -2556,6 +2577,8 @@ type GetFunctionBuildConfigArgs struct { // The runtime in which to run the function. Required when deploying a new // function, optional when updating an existing function. Runtime pulumi.StringInput `pulumi:"runtime"` + // The fully-qualified name of the service account to be used for building the container. + ServiceAccount pulumi.StringInput `pulumi:"serviceAccount"` // The location of the function source code. Sources GetFunctionBuildConfigSourceArrayInput `pulumi:"sources"` // Name of the Cloud Build Custom Worker Pool that should be used to build the function. @@ -2644,6 +2667,11 @@ func (o GetFunctionBuildConfigOutput) Runtime() pulumi.StringOutput { return o.ApplyT(func(v GetFunctionBuildConfig) string { return v.Runtime }).(pulumi.StringOutput) } +// The fully-qualified name of the service account to be used for building the container. +func (o GetFunctionBuildConfigOutput) ServiceAccount() pulumi.StringOutput { + return o.ApplyT(func(v GetFunctionBuildConfig) string { return v.ServiceAccount }).(pulumi.StringOutput) +} + // The location of the function source code. func (o GetFunctionBuildConfigOutput) Sources() GetFunctionBuildConfigSourceArrayOutput { return o.ApplyT(func(v GetFunctionBuildConfig) []GetFunctionBuildConfigSource { return v.Sources }).(GetFunctionBuildConfigSourceArrayOutput) diff --git a/sdk/go/gcp/compute/getInstanceGroupManager.go b/sdk/go/gcp/compute/getInstanceGroupManager.go index 3ca1d565d3..25cae272a0 100644 --- a/sdk/go/gcp/compute/getInstanceGroupManager.go +++ b/sdk/go/gcp/compute/getInstanceGroupManager.go @@ -85,6 +85,7 @@ type LookupInstanceGroupManagerResult struct { Name *string `pulumi:"name"` NamedPorts []GetInstanceGroupManagerNamedPort `pulumi:"namedPorts"` Operation string `pulumi:"operation"` + Params []GetInstanceGroupManagerParam `pulumi:"params"` Project *string `pulumi:"project"` SelfLink *string `pulumi:"selfLink"` StatefulDisks []GetInstanceGroupManagerStatefulDisk `pulumi:"statefulDisks"` @@ -203,6 +204,10 @@ func (o LookupInstanceGroupManagerResultOutput) Operation() pulumi.StringOutput return o.ApplyT(func(v LookupInstanceGroupManagerResult) string { return v.Operation }).(pulumi.StringOutput) } +func (o LookupInstanceGroupManagerResultOutput) Params() GetInstanceGroupManagerParamArrayOutput { + return o.ApplyT(func(v LookupInstanceGroupManagerResult) []GetInstanceGroupManagerParam { return v.Params }).(GetInstanceGroupManagerParamArrayOutput) +} + func (o LookupInstanceGroupManagerResultOutput) Project() pulumi.StringPtrOutput { return o.ApplyT(func(v LookupInstanceGroupManagerResult) *string { return v.Project }).(pulumi.StringPtrOutput) } diff --git a/sdk/go/gcp/compute/instanceGroupManager.go b/sdk/go/gcp/compute/instanceGroupManager.go index 0b9b4b361d..3671e268c4 100644 --- a/sdk/go/gcp/compute/instanceGroupManager.go +++ b/sdk/go/gcp/compute/instanceGroupManager.go @@ -204,6 +204,10 @@ type InstanceGroupManager struct { // for details on configuration. NamedPorts InstanceGroupManagerNamedPortArrayOutput `pulumi:"namedPorts"` Operation pulumi.StringOutput `pulumi:"operation"` + // Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + // + // *** + Params InstanceGroupManagerParamsPtrOutput `pulumi:"params"` // The ID of the project in which the resource belongs. If it // is not provided, the provider project is used. Project pulumi.StringOutput `pulumi:"project"` @@ -224,9 +228,7 @@ type InstanceGroupManager struct { // The target number of running instances for this managed instance group. This value should always be explicitly set // unless this resource is attached to an autoscaler, in which case it should never be set. Defaults to 0. TargetSize pulumi.IntOutput `pulumi:"targetSize"` - // The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch) - // - // *** + // The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch). UpdatePolicy InstanceGroupManagerUpdatePolicyOutput `pulumi:"updatePolicy"` // Application versions managed by this instance group. Each // version deals with a specific instance template, allowing canary release scenarios. @@ -325,6 +327,10 @@ type instanceGroupManagerState struct { // for details on configuration. NamedPorts []InstanceGroupManagerNamedPort `pulumi:"namedPorts"` Operation *string `pulumi:"operation"` + // Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + // + // *** + Params *InstanceGroupManagerParams `pulumi:"params"` // The ID of the project in which the resource belongs. If it // is not provided, the provider project is used. Project *string `pulumi:"project"` @@ -345,9 +351,7 @@ type instanceGroupManagerState struct { // The target number of running instances for this managed instance group. This value should always be explicitly set // unless this resource is attached to an autoscaler, in which case it should never be set. Defaults to 0. TargetSize *int `pulumi:"targetSize"` - // The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch) - // - // *** + // The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch). UpdatePolicy *InstanceGroupManagerUpdatePolicy `pulumi:"updatePolicy"` // Application versions managed by this instance group. Each // version deals with a specific instance template, allowing canary release scenarios. @@ -411,6 +415,10 @@ type InstanceGroupManagerState struct { // for details on configuration. NamedPorts InstanceGroupManagerNamedPortArrayInput Operation pulumi.StringPtrInput + // Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + // + // *** + Params InstanceGroupManagerParamsPtrInput // The ID of the project in which the resource belongs. If it // is not provided, the provider project is used. Project pulumi.StringPtrInput @@ -431,9 +439,7 @@ type InstanceGroupManagerState struct { // The target number of running instances for this managed instance group. This value should always be explicitly set // unless this resource is attached to an autoscaler, in which case it should never be set. Defaults to 0. TargetSize pulumi.IntPtrInput - // The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch) - // - // *** + // The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch). UpdatePolicy InstanceGroupManagerUpdatePolicyPtrInput // Application versions managed by this instance group. Each // version deals with a specific instance template, allowing canary release scenarios. @@ -494,6 +500,10 @@ type instanceGroupManagerArgs struct { // The named port configuration. See the section below // for details on configuration. NamedPorts []InstanceGroupManagerNamedPort `pulumi:"namedPorts"` + // Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + // + // *** + Params *InstanceGroupManagerParams `pulumi:"params"` // The ID of the project in which the resource belongs. If it // is not provided, the provider project is used. Project *string `pulumi:"project"` @@ -510,9 +520,7 @@ type instanceGroupManagerArgs struct { // The target number of running instances for this managed instance group. This value should always be explicitly set // unless this resource is attached to an autoscaler, in which case it should never be set. Defaults to 0. TargetSize *int `pulumi:"targetSize"` - // The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch) - // - // *** + // The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch). UpdatePolicy *InstanceGroupManagerUpdatePolicy `pulumi:"updatePolicy"` // Application versions managed by this instance group. Each // version deals with a specific instance template, allowing canary release scenarios. @@ -570,6 +578,10 @@ type InstanceGroupManagerArgs struct { // The named port configuration. See the section below // for details on configuration. NamedPorts InstanceGroupManagerNamedPortArrayInput + // Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + // + // *** + Params InstanceGroupManagerParamsPtrInput // The ID of the project in which the resource belongs. If it // is not provided, the provider project is used. Project pulumi.StringPtrInput @@ -586,9 +598,7 @@ type InstanceGroupManagerArgs struct { // The target number of running instances for this managed instance group. This value should always be explicitly set // unless this resource is attached to an autoscaler, in which case it should never be set. Defaults to 0. TargetSize pulumi.IntPtrInput - // The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch) - // - // *** + // The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch). UpdatePolicy InstanceGroupManagerUpdatePolicyPtrInput // Application versions managed by this instance group. Each // version deals with a specific instance template, allowing canary release scenarios. @@ -780,6 +790,13 @@ func (o InstanceGroupManagerOutput) Operation() pulumi.StringOutput { return o.ApplyT(func(v *InstanceGroupManager) pulumi.StringOutput { return v.Operation }).(pulumi.StringOutput) } +// Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). +// +// *** +func (o InstanceGroupManagerOutput) Params() InstanceGroupManagerParamsPtrOutput { + return o.ApplyT(func(v *InstanceGroupManager) InstanceGroupManagerParamsPtrOutput { return v.Params }).(InstanceGroupManagerParamsPtrOutput) +} + // The ID of the project in which the resource belongs. If it // is not provided, the provider project is used. func (o InstanceGroupManagerOutput) Project() pulumi.StringOutput { @@ -828,9 +845,7 @@ func (o InstanceGroupManagerOutput) TargetSize() pulumi.IntOutput { return o.ApplyT(func(v *InstanceGroupManager) pulumi.IntOutput { return v.TargetSize }).(pulumi.IntOutput) } -// The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch) -// -// *** +// The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch). func (o InstanceGroupManagerOutput) UpdatePolicy() InstanceGroupManagerUpdatePolicyOutput { return o.ApplyT(func(v *InstanceGroupManager) InstanceGroupManagerUpdatePolicyOutput { return v.UpdatePolicy }).(InstanceGroupManagerUpdatePolicyOutput) } diff --git a/sdk/go/gcp/compute/pulumiTypes.go b/sdk/go/gcp/compute/pulumiTypes.go index 30ee37370b..164884b69a 100644 --- a/sdk/go/gcp/compute/pulumiTypes.go +++ b/sdk/go/gcp/compute/pulumiTypes.go @@ -21923,6 +21923,143 @@ func (o InstanceGroupManagerNamedPortArrayOutput) Index(i pulumi.IntInput) Insta }).(InstanceGroupManagerNamedPortOutput) } +type InstanceGroupManagerParams struct { + // Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) + ResourceManagerTags map[string]interface{} `pulumi:"resourceManagerTags"` +} + +// InstanceGroupManagerParamsInput is an input type that accepts InstanceGroupManagerParamsArgs and InstanceGroupManagerParamsOutput values. +// You can construct a concrete instance of `InstanceGroupManagerParamsInput` via: +// +// InstanceGroupManagerParamsArgs{...} +type InstanceGroupManagerParamsInput interface { + pulumi.Input + + ToInstanceGroupManagerParamsOutput() InstanceGroupManagerParamsOutput + ToInstanceGroupManagerParamsOutputWithContext(context.Context) InstanceGroupManagerParamsOutput +} + +type InstanceGroupManagerParamsArgs struct { + // Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) + ResourceManagerTags pulumi.MapInput `pulumi:"resourceManagerTags"` +} + +func (InstanceGroupManagerParamsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*InstanceGroupManagerParams)(nil)).Elem() +} + +func (i InstanceGroupManagerParamsArgs) ToInstanceGroupManagerParamsOutput() InstanceGroupManagerParamsOutput { + return i.ToInstanceGroupManagerParamsOutputWithContext(context.Background()) +} + +func (i InstanceGroupManagerParamsArgs) ToInstanceGroupManagerParamsOutputWithContext(ctx context.Context) InstanceGroupManagerParamsOutput { + return pulumi.ToOutputWithContext(ctx, i).(InstanceGroupManagerParamsOutput) +} + +func (i InstanceGroupManagerParamsArgs) ToInstanceGroupManagerParamsPtrOutput() InstanceGroupManagerParamsPtrOutput { + return i.ToInstanceGroupManagerParamsPtrOutputWithContext(context.Background()) +} + +func (i InstanceGroupManagerParamsArgs) ToInstanceGroupManagerParamsPtrOutputWithContext(ctx context.Context) InstanceGroupManagerParamsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(InstanceGroupManagerParamsOutput).ToInstanceGroupManagerParamsPtrOutputWithContext(ctx) +} + +// InstanceGroupManagerParamsPtrInput is an input type that accepts InstanceGroupManagerParamsArgs, InstanceGroupManagerParamsPtr and InstanceGroupManagerParamsPtrOutput values. +// You can construct a concrete instance of `InstanceGroupManagerParamsPtrInput` via: +// +// InstanceGroupManagerParamsArgs{...} +// +// or: +// +// nil +type InstanceGroupManagerParamsPtrInput interface { + pulumi.Input + + ToInstanceGroupManagerParamsPtrOutput() InstanceGroupManagerParamsPtrOutput + ToInstanceGroupManagerParamsPtrOutputWithContext(context.Context) InstanceGroupManagerParamsPtrOutput +} + +type instanceGroupManagerParamsPtrType InstanceGroupManagerParamsArgs + +func InstanceGroupManagerParamsPtr(v *InstanceGroupManagerParamsArgs) InstanceGroupManagerParamsPtrInput { + return (*instanceGroupManagerParamsPtrType)(v) +} + +func (*instanceGroupManagerParamsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**InstanceGroupManagerParams)(nil)).Elem() +} + +func (i *instanceGroupManagerParamsPtrType) ToInstanceGroupManagerParamsPtrOutput() InstanceGroupManagerParamsPtrOutput { + return i.ToInstanceGroupManagerParamsPtrOutputWithContext(context.Background()) +} + +func (i *instanceGroupManagerParamsPtrType) ToInstanceGroupManagerParamsPtrOutputWithContext(ctx context.Context) InstanceGroupManagerParamsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(InstanceGroupManagerParamsPtrOutput) +} + +type InstanceGroupManagerParamsOutput struct{ *pulumi.OutputState } + +func (InstanceGroupManagerParamsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*InstanceGroupManagerParams)(nil)).Elem() +} + +func (o InstanceGroupManagerParamsOutput) ToInstanceGroupManagerParamsOutput() InstanceGroupManagerParamsOutput { + return o +} + +func (o InstanceGroupManagerParamsOutput) ToInstanceGroupManagerParamsOutputWithContext(ctx context.Context) InstanceGroupManagerParamsOutput { + return o +} + +func (o InstanceGroupManagerParamsOutput) ToInstanceGroupManagerParamsPtrOutput() InstanceGroupManagerParamsPtrOutput { + return o.ToInstanceGroupManagerParamsPtrOutputWithContext(context.Background()) +} + +func (o InstanceGroupManagerParamsOutput) ToInstanceGroupManagerParamsPtrOutputWithContext(ctx context.Context) InstanceGroupManagerParamsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v InstanceGroupManagerParams) *InstanceGroupManagerParams { + return &v + }).(InstanceGroupManagerParamsPtrOutput) +} + +// Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) +func (o InstanceGroupManagerParamsOutput) ResourceManagerTags() pulumi.MapOutput { + return o.ApplyT(func(v InstanceGroupManagerParams) map[string]interface{} { return v.ResourceManagerTags }).(pulumi.MapOutput) +} + +type InstanceGroupManagerParamsPtrOutput struct{ *pulumi.OutputState } + +func (InstanceGroupManagerParamsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**InstanceGroupManagerParams)(nil)).Elem() +} + +func (o InstanceGroupManagerParamsPtrOutput) ToInstanceGroupManagerParamsPtrOutput() InstanceGroupManagerParamsPtrOutput { + return o +} + +func (o InstanceGroupManagerParamsPtrOutput) ToInstanceGroupManagerParamsPtrOutputWithContext(ctx context.Context) InstanceGroupManagerParamsPtrOutput { + return o +} + +func (o InstanceGroupManagerParamsPtrOutput) Elem() InstanceGroupManagerParamsOutput { + return o.ApplyT(func(v *InstanceGroupManagerParams) InstanceGroupManagerParams { + if v != nil { + return *v + } + var ret InstanceGroupManagerParams + return ret + }).(InstanceGroupManagerParamsOutput) +} + +// Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) +func (o InstanceGroupManagerParamsPtrOutput) ResourceManagerTags() pulumi.MapOutput { + return o.ApplyT(func(v *InstanceGroupManagerParams) map[string]interface{} { + if v == nil { + return nil + } + return v.ResourceManagerTags + }).(pulumi.MapOutput) +} + type InstanceGroupManagerStatefulDisk struct { // , A value that prescribes what should happen to the stateful disk when the VM instance is deleted. The available options are `NEVER` and `ON_PERMANENT_INSTANCE_DELETION`. `NEVER` - detach the disk when the VM is deleted, but do not delete the disk. `ON_PERMANENT_INSTANCE_DELETION` will delete the stateful disk when the VM is permanently deleted from the instance group. The default is `NEVER`. DeleteRule *string `pulumi:"deleteRule"` @@ -45212,6 +45349,143 @@ func (o RegionInstanceGroupManagerNamedPortArrayOutput) Index(i pulumi.IntInput) }).(RegionInstanceGroupManagerNamedPortOutput) } +type RegionInstanceGroupManagerParams struct { + // Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) + ResourceManagerTags map[string]interface{} `pulumi:"resourceManagerTags"` +} + +// RegionInstanceGroupManagerParamsInput is an input type that accepts RegionInstanceGroupManagerParamsArgs and RegionInstanceGroupManagerParamsOutput values. +// You can construct a concrete instance of `RegionInstanceGroupManagerParamsInput` via: +// +// RegionInstanceGroupManagerParamsArgs{...} +type RegionInstanceGroupManagerParamsInput interface { + pulumi.Input + + ToRegionInstanceGroupManagerParamsOutput() RegionInstanceGroupManagerParamsOutput + ToRegionInstanceGroupManagerParamsOutputWithContext(context.Context) RegionInstanceGroupManagerParamsOutput +} + +type RegionInstanceGroupManagerParamsArgs struct { + // Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) + ResourceManagerTags pulumi.MapInput `pulumi:"resourceManagerTags"` +} + +func (RegionInstanceGroupManagerParamsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*RegionInstanceGroupManagerParams)(nil)).Elem() +} + +func (i RegionInstanceGroupManagerParamsArgs) ToRegionInstanceGroupManagerParamsOutput() RegionInstanceGroupManagerParamsOutput { + return i.ToRegionInstanceGroupManagerParamsOutputWithContext(context.Background()) +} + +func (i RegionInstanceGroupManagerParamsArgs) ToRegionInstanceGroupManagerParamsOutputWithContext(ctx context.Context) RegionInstanceGroupManagerParamsOutput { + return pulumi.ToOutputWithContext(ctx, i).(RegionInstanceGroupManagerParamsOutput) +} + +func (i RegionInstanceGroupManagerParamsArgs) ToRegionInstanceGroupManagerParamsPtrOutput() RegionInstanceGroupManagerParamsPtrOutput { + return i.ToRegionInstanceGroupManagerParamsPtrOutputWithContext(context.Background()) +} + +func (i RegionInstanceGroupManagerParamsArgs) ToRegionInstanceGroupManagerParamsPtrOutputWithContext(ctx context.Context) RegionInstanceGroupManagerParamsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(RegionInstanceGroupManagerParamsOutput).ToRegionInstanceGroupManagerParamsPtrOutputWithContext(ctx) +} + +// RegionInstanceGroupManagerParamsPtrInput is an input type that accepts RegionInstanceGroupManagerParamsArgs, RegionInstanceGroupManagerParamsPtr and RegionInstanceGroupManagerParamsPtrOutput values. +// You can construct a concrete instance of `RegionInstanceGroupManagerParamsPtrInput` via: +// +// RegionInstanceGroupManagerParamsArgs{...} +// +// or: +// +// nil +type RegionInstanceGroupManagerParamsPtrInput interface { + pulumi.Input + + ToRegionInstanceGroupManagerParamsPtrOutput() RegionInstanceGroupManagerParamsPtrOutput + ToRegionInstanceGroupManagerParamsPtrOutputWithContext(context.Context) RegionInstanceGroupManagerParamsPtrOutput +} + +type regionInstanceGroupManagerParamsPtrType RegionInstanceGroupManagerParamsArgs + +func RegionInstanceGroupManagerParamsPtr(v *RegionInstanceGroupManagerParamsArgs) RegionInstanceGroupManagerParamsPtrInput { + return (*regionInstanceGroupManagerParamsPtrType)(v) +} + +func (*regionInstanceGroupManagerParamsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**RegionInstanceGroupManagerParams)(nil)).Elem() +} + +func (i *regionInstanceGroupManagerParamsPtrType) ToRegionInstanceGroupManagerParamsPtrOutput() RegionInstanceGroupManagerParamsPtrOutput { + return i.ToRegionInstanceGroupManagerParamsPtrOutputWithContext(context.Background()) +} + +func (i *regionInstanceGroupManagerParamsPtrType) ToRegionInstanceGroupManagerParamsPtrOutputWithContext(ctx context.Context) RegionInstanceGroupManagerParamsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(RegionInstanceGroupManagerParamsPtrOutput) +} + +type RegionInstanceGroupManagerParamsOutput struct{ *pulumi.OutputState } + +func (RegionInstanceGroupManagerParamsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*RegionInstanceGroupManagerParams)(nil)).Elem() +} + +func (o RegionInstanceGroupManagerParamsOutput) ToRegionInstanceGroupManagerParamsOutput() RegionInstanceGroupManagerParamsOutput { + return o +} + +func (o RegionInstanceGroupManagerParamsOutput) ToRegionInstanceGroupManagerParamsOutputWithContext(ctx context.Context) RegionInstanceGroupManagerParamsOutput { + return o +} + +func (o RegionInstanceGroupManagerParamsOutput) ToRegionInstanceGroupManagerParamsPtrOutput() RegionInstanceGroupManagerParamsPtrOutput { + return o.ToRegionInstanceGroupManagerParamsPtrOutputWithContext(context.Background()) +} + +func (o RegionInstanceGroupManagerParamsOutput) ToRegionInstanceGroupManagerParamsPtrOutputWithContext(ctx context.Context) RegionInstanceGroupManagerParamsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v RegionInstanceGroupManagerParams) *RegionInstanceGroupManagerParams { + return &v + }).(RegionInstanceGroupManagerParamsPtrOutput) +} + +// Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) +func (o RegionInstanceGroupManagerParamsOutput) ResourceManagerTags() pulumi.MapOutput { + return o.ApplyT(func(v RegionInstanceGroupManagerParams) map[string]interface{} { return v.ResourceManagerTags }).(pulumi.MapOutput) +} + +type RegionInstanceGroupManagerParamsPtrOutput struct{ *pulumi.OutputState } + +func (RegionInstanceGroupManagerParamsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**RegionInstanceGroupManagerParams)(nil)).Elem() +} + +func (o RegionInstanceGroupManagerParamsPtrOutput) ToRegionInstanceGroupManagerParamsPtrOutput() RegionInstanceGroupManagerParamsPtrOutput { + return o +} + +func (o RegionInstanceGroupManagerParamsPtrOutput) ToRegionInstanceGroupManagerParamsPtrOutputWithContext(ctx context.Context) RegionInstanceGroupManagerParamsPtrOutput { + return o +} + +func (o RegionInstanceGroupManagerParamsPtrOutput) Elem() RegionInstanceGroupManagerParamsOutput { + return o.ApplyT(func(v *RegionInstanceGroupManagerParams) RegionInstanceGroupManagerParams { + if v != nil { + return *v + } + var ret RegionInstanceGroupManagerParams + return ret + }).(RegionInstanceGroupManagerParamsOutput) +} + +// Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) +func (o RegionInstanceGroupManagerParamsPtrOutput) ResourceManagerTags() pulumi.MapOutput { + return o.ApplyT(func(v *RegionInstanceGroupManagerParams) map[string]interface{} { + if v == nil { + return nil + } + return v.ResourceManagerTags + }).(pulumi.MapOutput) +} + type RegionInstanceGroupManagerStatefulDisk struct { // , A value that prescribes what should happen to the stateful disk when the VM instance is deleted. The available options are `NEVER` and `ON_PERMANENT_INSTANCE_DELETION`. `NEVER` - detach the disk when the VM is deleted, but do not delete the disk. `ON_PERMANENT_INSTANCE_DELETION` will delete the stateful disk when the VM is permanently deleted from the instance group. The default is `NEVER`. DeleteRule *string `pulumi:"deleteRule"` @@ -89622,673 +89896,6 @@ func (o URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput) Index }).(URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput) } -type URLMapPathMatcherRouteRuleRouteAction struct { - // The specification for allowing client side cross-origin requests. Please see W3C - // Recommendation for Cross Origin Resource Sharing - // Structure is documented below. - CorsPolicy *URLMapPathMatcherRouteRuleRouteActionCorsPolicy `pulumi:"corsPolicy"` - // The specification for fault injection introduced into traffic to test the - // resiliency of clients to backend service failure. As part of fault injection, - // when clients send requests to a backend service, delays can be introduced by - // Loadbalancer on a percentage of requests before sending those request to the - // backend service. Similarly requests from clients can be aborted by the - // Loadbalancer for a percentage of requests. timeout and retryPolicy will be - // ignored by clients that are configured with a fault_injection_policy. - // Structure is documented below. - FaultInjectionPolicy *URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicy `pulumi:"faultInjectionPolicy"` - // Specifies the policy on how requests intended for the route's backends are - // shadowed to a separate mirrored backend service. Loadbalancer does not wait for - // responses from the shadow service. Prior to sending traffic to the shadow - // service, the host / authority header is suffixed with -shadow. - // Structure is documented below. - RequestMirrorPolicy *URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicy `pulumi:"requestMirrorPolicy"` - // Specifies the retry policy associated with this route. - // Structure is documented below. - RetryPolicy *URLMapPathMatcherRouteRuleRouteActionRetryPolicy `pulumi:"retryPolicy"` - // Specifies the timeout for the selected route. Timeout is computed from the time - // the request is has been fully processed (i.e. end-of-stream) up until the - // response has been completely processed. Timeout includes all retries. If not - // specified, the default value is 15 seconds. - // Structure is documented below. - Timeout *URLMapPathMatcherRouteRuleRouteActionTimeout `pulumi:"timeout"` - // The spec to modify the URL of the request, prior to forwarding the request to - // the matched service - // Structure is documented below. - UrlRewrite *URLMapPathMatcherRouteRuleRouteActionUrlRewrite `pulumi:"urlRewrite"` - // A list of weighted backend services to send traffic to when a route match - // occurs. The weights determine the fraction of traffic that flows to their - // corresponding backend service. If all traffic needs to go to a single backend - // service, there must be one weightedBackendService with weight set to a non 0 - // number. Once a backendService is identified and before forwarding the request to - // the backend service, advanced routing actions like Url rewrites and header - // transformations are applied depending on additional settings specified in this - // HttpRouteAction. - // Structure is documented below. - WeightedBackendServices []URLMapPathMatcherRouteRuleRouteActionWeightedBackendService `pulumi:"weightedBackendServices"` -} - -// URLMapPathMatcherRouteRuleRouteActionInput is an input type that accepts URLMapPathMatcherRouteRuleRouteActionArgs and URLMapPathMatcherRouteRuleRouteActionOutput values. -// You can construct a concrete instance of `URLMapPathMatcherRouteRuleRouteActionInput` via: -// -// URLMapPathMatcherRouteRuleRouteActionArgs{...} -type URLMapPathMatcherRouteRuleRouteActionInput interface { - pulumi.Input - - ToURLMapPathMatcherRouteRuleRouteActionOutput() URLMapPathMatcherRouteRuleRouteActionOutput - ToURLMapPathMatcherRouteRuleRouteActionOutputWithContext(context.Context) URLMapPathMatcherRouteRuleRouteActionOutput -} - -type URLMapPathMatcherRouteRuleRouteActionArgs struct { - // The specification for allowing client side cross-origin requests. Please see W3C - // Recommendation for Cross Origin Resource Sharing - // Structure is documented below. - CorsPolicy URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrInput `pulumi:"corsPolicy"` - // The specification for fault injection introduced into traffic to test the - // resiliency of clients to backend service failure. As part of fault injection, - // when clients send requests to a backend service, delays can be introduced by - // Loadbalancer on a percentage of requests before sending those request to the - // backend service. Similarly requests from clients can be aborted by the - // Loadbalancer for a percentage of requests. timeout and retryPolicy will be - // ignored by clients that are configured with a fault_injection_policy. - // Structure is documented below. - FaultInjectionPolicy URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyPtrInput `pulumi:"faultInjectionPolicy"` - // Specifies the policy on how requests intended for the route's backends are - // shadowed to a separate mirrored backend service. Loadbalancer does not wait for - // responses from the shadow service. Prior to sending traffic to the shadow - // service, the host / authority header is suffixed with -shadow. - // Structure is documented below. - RequestMirrorPolicy URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicyPtrInput `pulumi:"requestMirrorPolicy"` - // Specifies the retry policy associated with this route. - // Structure is documented below. - RetryPolicy URLMapPathMatcherRouteRuleRouteActionRetryPolicyPtrInput `pulumi:"retryPolicy"` - // Specifies the timeout for the selected route. Timeout is computed from the time - // the request is has been fully processed (i.e. end-of-stream) up until the - // response has been completely processed. Timeout includes all retries. If not - // specified, the default value is 15 seconds. - // Structure is documented below. - Timeout URLMapPathMatcherRouteRuleRouteActionTimeoutPtrInput `pulumi:"timeout"` - // The spec to modify the URL of the request, prior to forwarding the request to - // the matched service - // Structure is documented below. - UrlRewrite URLMapPathMatcherRouteRuleRouteActionUrlRewritePtrInput `pulumi:"urlRewrite"` - // A list of weighted backend services to send traffic to when a route match - // occurs. The weights determine the fraction of traffic that flows to their - // corresponding backend service. If all traffic needs to go to a single backend - // service, there must be one weightedBackendService with weight set to a non 0 - // number. Once a backendService is identified and before forwarding the request to - // the backend service, advanced routing actions like Url rewrites and header - // transformations are applied depending on additional settings specified in this - // HttpRouteAction. - // Structure is documented below. - WeightedBackendServices URLMapPathMatcherRouteRuleRouteActionWeightedBackendServiceArrayInput `pulumi:"weightedBackendServices"` -} - -func (URLMapPathMatcherRouteRuleRouteActionArgs) ElementType() reflect.Type { - return reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteAction)(nil)).Elem() -} - -func (i URLMapPathMatcherRouteRuleRouteActionArgs) ToURLMapPathMatcherRouteRuleRouteActionOutput() URLMapPathMatcherRouteRuleRouteActionOutput { - return i.ToURLMapPathMatcherRouteRuleRouteActionOutputWithContext(context.Background()) -} - -func (i URLMapPathMatcherRouteRuleRouteActionArgs) ToURLMapPathMatcherRouteRuleRouteActionOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionOutput { - return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleRouteActionOutput) -} - -func (i URLMapPathMatcherRouteRuleRouteActionArgs) ToURLMapPathMatcherRouteRuleRouteActionPtrOutput() URLMapPathMatcherRouteRuleRouteActionPtrOutput { - return i.ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(context.Background()) -} - -func (i URLMapPathMatcherRouteRuleRouteActionArgs) ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleRouteActionOutput).ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(ctx) -} - -// URLMapPathMatcherRouteRuleRouteActionPtrInput is an input type that accepts URLMapPathMatcherRouteRuleRouteActionArgs, URLMapPathMatcherRouteRuleRouteActionPtr and URLMapPathMatcherRouteRuleRouteActionPtrOutput values. -// You can construct a concrete instance of `URLMapPathMatcherRouteRuleRouteActionPtrInput` via: -// -// URLMapPathMatcherRouteRuleRouteActionArgs{...} -// -// or: -// -// nil -type URLMapPathMatcherRouteRuleRouteActionPtrInput interface { - pulumi.Input - - ToURLMapPathMatcherRouteRuleRouteActionPtrOutput() URLMapPathMatcherRouteRuleRouteActionPtrOutput - ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(context.Context) URLMapPathMatcherRouteRuleRouteActionPtrOutput -} - -type urlmapPathMatcherRouteRuleRouteActionPtrType URLMapPathMatcherRouteRuleRouteActionArgs - -func URLMapPathMatcherRouteRuleRouteActionPtr(v *URLMapPathMatcherRouteRuleRouteActionArgs) URLMapPathMatcherRouteRuleRouteActionPtrInput { - return (*urlmapPathMatcherRouteRuleRouteActionPtrType)(v) -} - -func (*urlmapPathMatcherRouteRuleRouteActionPtrType) ElementType() reflect.Type { - return reflect.TypeOf((**URLMapPathMatcherRouteRuleRouteAction)(nil)).Elem() -} - -func (i *urlmapPathMatcherRouteRuleRouteActionPtrType) ToURLMapPathMatcherRouteRuleRouteActionPtrOutput() URLMapPathMatcherRouteRuleRouteActionPtrOutput { - return i.ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(context.Background()) -} - -func (i *urlmapPathMatcherRouteRuleRouteActionPtrType) ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleRouteActionPtrOutput) -} - -type URLMapPathMatcherRouteRuleRouteActionOutput struct{ *pulumi.OutputState } - -func (URLMapPathMatcherRouteRuleRouteActionOutput) ElementType() reflect.Type { - return reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteAction)(nil)).Elem() -} - -func (o URLMapPathMatcherRouteRuleRouteActionOutput) ToURLMapPathMatcherRouteRuleRouteActionOutput() URLMapPathMatcherRouteRuleRouteActionOutput { - return o -} - -func (o URLMapPathMatcherRouteRuleRouteActionOutput) ToURLMapPathMatcherRouteRuleRouteActionOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionOutput { - return o -} - -func (o URLMapPathMatcherRouteRuleRouteActionOutput) ToURLMapPathMatcherRouteRuleRouteActionPtrOutput() URLMapPathMatcherRouteRuleRouteActionPtrOutput { - return o.ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(context.Background()) -} - -func (o URLMapPathMatcherRouteRuleRouteActionOutput) ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteAction { - return &v - }).(URLMapPathMatcherRouteRuleRouteActionPtrOutput) -} - -// The specification for allowing client side cross-origin requests. Please see W3C -// Recommendation for Cross Origin Resource Sharing -// Structure is documented below. -func (o URLMapPathMatcherRouteRuleRouteActionOutput) CorsPolicy() URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionCorsPolicy { - return v.CorsPolicy - }).(URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) -} - -// The specification for fault injection introduced into traffic to test the -// resiliency of clients to backend service failure. As part of fault injection, -// when clients send requests to a backend service, delays can be introduced by -// Loadbalancer on a percentage of requests before sending those request to the -// backend service. Similarly requests from clients can be aborted by the -// Loadbalancer for a percentage of requests. timeout and retryPolicy will be -// ignored by clients that are configured with a fault_injection_policy. -// Structure is documented below. -func (o URLMapPathMatcherRouteRuleRouteActionOutput) FaultInjectionPolicy() URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyPtrOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicy { - return v.FaultInjectionPolicy - }).(URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyPtrOutput) -} - -// Specifies the policy on how requests intended for the route's backends are -// shadowed to a separate mirrored backend service. Loadbalancer does not wait for -// responses from the shadow service. Prior to sending traffic to the shadow -// service, the host / authority header is suffixed with -shadow. -// Structure is documented below. -func (o URLMapPathMatcherRouteRuleRouteActionOutput) RequestMirrorPolicy() URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicyPtrOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicy { - return v.RequestMirrorPolicy - }).(URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicyPtrOutput) -} - -// Specifies the retry policy associated with this route. -// Structure is documented below. -func (o URLMapPathMatcherRouteRuleRouteActionOutput) RetryPolicy() URLMapPathMatcherRouteRuleRouteActionRetryPolicyPtrOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionRetryPolicy { - return v.RetryPolicy - }).(URLMapPathMatcherRouteRuleRouteActionRetryPolicyPtrOutput) -} - -// Specifies the timeout for the selected route. Timeout is computed from the time -// the request is has been fully processed (i.e. end-of-stream) up until the -// response has been completely processed. Timeout includes all retries. If not -// specified, the default value is 15 seconds. -// Structure is documented below. -func (o URLMapPathMatcherRouteRuleRouteActionOutput) Timeout() URLMapPathMatcherRouteRuleRouteActionTimeoutPtrOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionTimeout { - return v.Timeout - }).(URLMapPathMatcherRouteRuleRouteActionTimeoutPtrOutput) -} - -// The spec to modify the URL of the request, prior to forwarding the request to -// the matched service -// Structure is documented below. -func (o URLMapPathMatcherRouteRuleRouteActionOutput) UrlRewrite() URLMapPathMatcherRouteRuleRouteActionUrlRewritePtrOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionUrlRewrite { - return v.UrlRewrite - }).(URLMapPathMatcherRouteRuleRouteActionUrlRewritePtrOutput) -} - -// A list of weighted backend services to send traffic to when a route match -// occurs. The weights determine the fraction of traffic that flows to their -// corresponding backend service. If all traffic needs to go to a single backend -// service, there must be one weightedBackendService with weight set to a non 0 -// number. Once a backendService is identified and before forwarding the request to -// the backend service, advanced routing actions like Url rewrites and header -// transformations are applied depending on additional settings specified in this -// HttpRouteAction. -// Structure is documented below. -func (o URLMapPathMatcherRouteRuleRouteActionOutput) WeightedBackendServices() URLMapPathMatcherRouteRuleRouteActionWeightedBackendServiceArrayOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteAction) []URLMapPathMatcherRouteRuleRouteActionWeightedBackendService { - return v.WeightedBackendServices - }).(URLMapPathMatcherRouteRuleRouteActionWeightedBackendServiceArrayOutput) -} - -type URLMapPathMatcherRouteRuleRouteActionPtrOutput struct{ *pulumi.OutputState } - -func (URLMapPathMatcherRouteRuleRouteActionPtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**URLMapPathMatcherRouteRuleRouteAction)(nil)).Elem() -} - -func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) ToURLMapPathMatcherRouteRuleRouteActionPtrOutput() URLMapPathMatcherRouteRuleRouteActionPtrOutput { - return o -} - -func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionPtrOutput { - return o -} - -func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) Elem() URLMapPathMatcherRouteRuleRouteActionOutput { - return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteAction) URLMapPathMatcherRouteRuleRouteAction { - if v != nil { - return *v - } - var ret URLMapPathMatcherRouteRuleRouteAction - return ret - }).(URLMapPathMatcherRouteRuleRouteActionOutput) -} - -// The specification for allowing client side cross-origin requests. Please see W3C -// Recommendation for Cross Origin Resource Sharing -// Structure is documented below. -func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) CorsPolicy() URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { - return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionCorsPolicy { - if v == nil { - return nil - } - return v.CorsPolicy - }).(URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) -} - -// The specification for fault injection introduced into traffic to test the -// resiliency of clients to backend service failure. As part of fault injection, -// when clients send requests to a backend service, delays can be introduced by -// Loadbalancer on a percentage of requests before sending those request to the -// backend service. Similarly requests from clients can be aborted by the -// Loadbalancer for a percentage of requests. timeout and retryPolicy will be -// ignored by clients that are configured with a fault_injection_policy. -// Structure is documented below. -func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) FaultInjectionPolicy() URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyPtrOutput { - return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicy { - if v == nil { - return nil - } - return v.FaultInjectionPolicy - }).(URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyPtrOutput) -} - -// Specifies the policy on how requests intended for the route's backends are -// shadowed to a separate mirrored backend service. Loadbalancer does not wait for -// responses from the shadow service. Prior to sending traffic to the shadow -// service, the host / authority header is suffixed with -shadow. -// Structure is documented below. -func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) RequestMirrorPolicy() URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicyPtrOutput { - return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicy { - if v == nil { - return nil - } - return v.RequestMirrorPolicy - }).(URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicyPtrOutput) -} - -// Specifies the retry policy associated with this route. -// Structure is documented below. -func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) RetryPolicy() URLMapPathMatcherRouteRuleRouteActionRetryPolicyPtrOutput { - return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionRetryPolicy { - if v == nil { - return nil - } - return v.RetryPolicy - }).(URLMapPathMatcherRouteRuleRouteActionRetryPolicyPtrOutput) -} - -// Specifies the timeout for the selected route. Timeout is computed from the time -// the request is has been fully processed (i.e. end-of-stream) up until the -// response has been completely processed. Timeout includes all retries. If not -// specified, the default value is 15 seconds. -// Structure is documented below. -func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) Timeout() URLMapPathMatcherRouteRuleRouteActionTimeoutPtrOutput { - return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionTimeout { - if v == nil { - return nil - } - return v.Timeout - }).(URLMapPathMatcherRouteRuleRouteActionTimeoutPtrOutput) -} - -// The spec to modify the URL of the request, prior to forwarding the request to -// the matched service -// Structure is documented below. -func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) UrlRewrite() URLMapPathMatcherRouteRuleRouteActionUrlRewritePtrOutput { - return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionUrlRewrite { - if v == nil { - return nil - } - return v.UrlRewrite - }).(URLMapPathMatcherRouteRuleRouteActionUrlRewritePtrOutput) -} - -// A list of weighted backend services to send traffic to when a route match -// occurs. The weights determine the fraction of traffic that flows to their -// corresponding backend service. If all traffic needs to go to a single backend -// service, there must be one weightedBackendService with weight set to a non 0 -// number. Once a backendService is identified and before forwarding the request to -// the backend service, advanced routing actions like Url rewrites and header -// transformations are applied depending on additional settings specified in this -// HttpRouteAction. -// Structure is documented below. -func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) WeightedBackendServices() URLMapPathMatcherRouteRuleRouteActionWeightedBackendServiceArrayOutput { - return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteAction) []URLMapPathMatcherRouteRuleRouteActionWeightedBackendService { - if v == nil { - return nil - } - return v.WeightedBackendServices - }).(URLMapPathMatcherRouteRuleRouteActionWeightedBackendServiceArrayOutput) -} - -type URLMapPathMatcherRouteRuleRouteActionCorsPolicy struct { - // In response to a preflight request, setting this to true indicates that the actual request can include user credentials. - // This translates to the Access-Control-Allow-Credentials header. - AllowCredentials *bool `pulumi:"allowCredentials"` - // Specifies the content for the Access-Control-Allow-Headers header. - AllowHeaders []string `pulumi:"allowHeaders"` - // Specifies the content for the Access-Control-Allow-Methods header. - AllowMethods []string `pulumi:"allowMethods"` - // Specifies the regular expression patterns that match allowed origins. For regular expression grammar - // please see en.cppreference.com/w/cpp/regex/ecmascript - // An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. - AllowOriginRegexes []string `pulumi:"allowOriginRegexes"` - // Specifies the list of origins that will be allowed to do CORS requests. - // An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. - AllowOrigins []string `pulumi:"allowOrigins"` - // If true, specifies the CORS policy is disabled. The default value is false, which indicates that the CORS policy is in effect. - Disabled *bool `pulumi:"disabled"` - // Specifies the content for the Access-Control-Expose-Headers header. - ExposeHeaders []string `pulumi:"exposeHeaders"` - // Specifies how long results of a preflight request can be cached in seconds. - // This translates to the Access-Control-Max-Age header. - MaxAge *int `pulumi:"maxAge"` -} - -// URLMapPathMatcherRouteRuleRouteActionCorsPolicyInput is an input type that accepts URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs and URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput values. -// You can construct a concrete instance of `URLMapPathMatcherRouteRuleRouteActionCorsPolicyInput` via: -// -// URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs{...} -type URLMapPathMatcherRouteRuleRouteActionCorsPolicyInput interface { - pulumi.Input - - ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput() URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput - ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyOutputWithContext(context.Context) URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput -} - -type URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs struct { - // In response to a preflight request, setting this to true indicates that the actual request can include user credentials. - // This translates to the Access-Control-Allow-Credentials header. - AllowCredentials pulumi.BoolPtrInput `pulumi:"allowCredentials"` - // Specifies the content for the Access-Control-Allow-Headers header. - AllowHeaders pulumi.StringArrayInput `pulumi:"allowHeaders"` - // Specifies the content for the Access-Control-Allow-Methods header. - AllowMethods pulumi.StringArrayInput `pulumi:"allowMethods"` - // Specifies the regular expression patterns that match allowed origins. For regular expression grammar - // please see en.cppreference.com/w/cpp/regex/ecmascript - // An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. - AllowOriginRegexes pulumi.StringArrayInput `pulumi:"allowOriginRegexes"` - // Specifies the list of origins that will be allowed to do CORS requests. - // An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. - AllowOrigins pulumi.StringArrayInput `pulumi:"allowOrigins"` - // If true, specifies the CORS policy is disabled. The default value is false, which indicates that the CORS policy is in effect. - Disabled pulumi.BoolPtrInput `pulumi:"disabled"` - // Specifies the content for the Access-Control-Expose-Headers header. - ExposeHeaders pulumi.StringArrayInput `pulumi:"exposeHeaders"` - // Specifies how long results of a preflight request can be cached in seconds. - // This translates to the Access-Control-Max-Age header. - MaxAge pulumi.IntPtrInput `pulumi:"maxAge"` -} - -func (URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs) ElementType() reflect.Type { - return reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteActionCorsPolicy)(nil)).Elem() -} - -func (i URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput() URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput { - return i.ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyOutputWithContext(context.Background()) -} - -func (i URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput { - return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) -} - -func (i URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput() URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { - return i.ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(context.Background()) -} - -func (i URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput).ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(ctx) -} - -// URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrInput is an input type that accepts URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs, URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtr and URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput values. -// You can construct a concrete instance of `URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrInput` via: -// -// URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs{...} -// -// or: -// -// nil -type URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrInput interface { - pulumi.Input - - ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput() URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput - ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(context.Context) URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput -} - -type urlmapPathMatcherRouteRuleRouteActionCorsPolicyPtrType URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs - -func URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtr(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs) URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrInput { - return (*urlmapPathMatcherRouteRuleRouteActionCorsPolicyPtrType)(v) -} - -func (*urlmapPathMatcherRouteRuleRouteActionCorsPolicyPtrType) ElementType() reflect.Type { - return reflect.TypeOf((**URLMapPathMatcherRouteRuleRouteActionCorsPolicy)(nil)).Elem() -} - -func (i *urlmapPathMatcherRouteRuleRouteActionCorsPolicyPtrType) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput() URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { - return i.ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(context.Background()) -} - -func (i *urlmapPathMatcherRouteRuleRouteActionCorsPolicyPtrType) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) -} - -type URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput struct{ *pulumi.OutputState } - -func (URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) ElementType() reflect.Type { - return reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteActionCorsPolicy)(nil)).Elem() -} - -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput() URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput { - return o -} - -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput { - return o -} - -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput() URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { - return o.ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(context.Background()) -} - -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) *URLMapPathMatcherRouteRuleRouteActionCorsPolicy { - return &v - }).(URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) -} - -// In response to a preflight request, setting this to true indicates that the actual request can include user credentials. -// This translates to the Access-Control-Allow-Credentials header. -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) AllowCredentials() pulumi.BoolPtrOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) *bool { return v.AllowCredentials }).(pulumi.BoolPtrOutput) -} - -// Specifies the content for the Access-Control-Allow-Headers header. -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) AllowHeaders() pulumi.StringArrayOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { return v.AllowHeaders }).(pulumi.StringArrayOutput) -} - -// Specifies the content for the Access-Control-Allow-Methods header. -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) AllowMethods() pulumi.StringArrayOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { return v.AllowMethods }).(pulumi.StringArrayOutput) -} - -// Specifies the regular expression patterns that match allowed origins. For regular expression grammar -// please see en.cppreference.com/w/cpp/regex/ecmascript -// An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) AllowOriginRegexes() pulumi.StringArrayOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { return v.AllowOriginRegexes }).(pulumi.StringArrayOutput) -} - -// Specifies the list of origins that will be allowed to do CORS requests. -// An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) AllowOrigins() pulumi.StringArrayOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { return v.AllowOrigins }).(pulumi.StringArrayOutput) -} - -// If true, specifies the CORS policy is disabled. The default value is false, which indicates that the CORS policy is in effect. -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) Disabled() pulumi.BoolPtrOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) *bool { return v.Disabled }).(pulumi.BoolPtrOutput) -} - -// Specifies the content for the Access-Control-Expose-Headers header. -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) ExposeHeaders() pulumi.StringArrayOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { return v.ExposeHeaders }).(pulumi.StringArrayOutput) -} - -// Specifies how long results of a preflight request can be cached in seconds. -// This translates to the Access-Control-Max-Age header. -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) MaxAge() pulumi.IntPtrOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) *int { return v.MaxAge }).(pulumi.IntPtrOutput) -} - -type URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput struct{ *pulumi.OutputState } - -func (URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**URLMapPathMatcherRouteRuleRouteActionCorsPolicy)(nil)).Elem() -} - -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput() URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { - return o -} - -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { - return o -} - -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) Elem() URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput { - return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) URLMapPathMatcherRouteRuleRouteActionCorsPolicy { - if v != nil { - return *v - } - var ret URLMapPathMatcherRouteRuleRouteActionCorsPolicy - return ret - }).(URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) -} - -// In response to a preflight request, setting this to true indicates that the actual request can include user credentials. -// This translates to the Access-Control-Allow-Credentials header. -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) AllowCredentials() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) *bool { - if v == nil { - return nil - } - return v.AllowCredentials - }).(pulumi.BoolPtrOutput) -} - -// Specifies the content for the Access-Control-Allow-Headers header. -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) AllowHeaders() pulumi.StringArrayOutput { - return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { - if v == nil { - return nil - } - return v.AllowHeaders - }).(pulumi.StringArrayOutput) -} - -// Specifies the content for the Access-Control-Allow-Methods header. -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) AllowMethods() pulumi.StringArrayOutput { - return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { - if v == nil { - return nil - } - return v.AllowMethods - }).(pulumi.StringArrayOutput) -} - -// Specifies the regular expression patterns that match allowed origins. For regular expression grammar -// please see en.cppreference.com/w/cpp/regex/ecmascript -// An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) AllowOriginRegexes() pulumi.StringArrayOutput { - return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { - if v == nil { - return nil - } - return v.AllowOriginRegexes - }).(pulumi.StringArrayOutput) -} - -// Specifies the list of origins that will be allowed to do CORS requests. -// An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) AllowOrigins() pulumi.StringArrayOutput { - return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { - if v == nil { - return nil - } - return v.AllowOrigins - }).(pulumi.StringArrayOutput) -} - -// If true, specifies the CORS policy is disabled. The default value is false, which indicates that the CORS policy is in effect. -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) Disabled() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) *bool { - if v == nil { - return nil - } - return v.Disabled - }).(pulumi.BoolPtrOutput) -} - -// Specifies the content for the Access-Control-Expose-Headers header. -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) ExposeHeaders() pulumi.StringArrayOutput { - return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { - if v == nil { - return nil - } - return v.ExposeHeaders - }).(pulumi.StringArrayOutput) -} - -// Specifies how long results of a preflight request can be cached in seconds. -// This translates to the Access-Control-Max-Age header. -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) MaxAge() pulumi.IntPtrOutput { - return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) *int { - if v == nil { - return nil - } - return v.MaxAge - }).(pulumi.IntPtrOutput) -} - func init() { pulumi.RegisterInputType(reflect.TypeOf((*AutoscalerAutoscalingPolicyInput)(nil)).Elem(), AutoscalerAutoscalingPolicyArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*AutoscalerAutoscalingPolicyPtrInput)(nil)).Elem(), AutoscalerAutoscalingPolicyArgs{}) @@ -90526,6 +90133,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*InstanceGroupManagerInstanceLifecyclePolicyPtrInput)(nil)).Elem(), InstanceGroupManagerInstanceLifecyclePolicyArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*InstanceGroupManagerNamedPortInput)(nil)).Elem(), InstanceGroupManagerNamedPortArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*InstanceGroupManagerNamedPortArrayInput)(nil)).Elem(), InstanceGroupManagerNamedPortArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*InstanceGroupManagerParamsInput)(nil)).Elem(), InstanceGroupManagerParamsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*InstanceGroupManagerParamsPtrInput)(nil)).Elem(), InstanceGroupManagerParamsArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*InstanceGroupManagerStatefulDiskInput)(nil)).Elem(), InstanceGroupManagerStatefulDiskArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*InstanceGroupManagerStatefulDiskArrayInput)(nil)).Elem(), InstanceGroupManagerStatefulDiskArray{}) pulumi.RegisterInputType(reflect.TypeOf((*InstanceGroupManagerStatefulExternalIpInput)(nil)).Elem(), InstanceGroupManagerStatefulExternalIpArgs{}) @@ -90788,6 +90397,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*RegionInstanceGroupManagerInstanceLifecyclePolicyPtrInput)(nil)).Elem(), RegionInstanceGroupManagerInstanceLifecyclePolicyArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*RegionInstanceGroupManagerNamedPortInput)(nil)).Elem(), RegionInstanceGroupManagerNamedPortArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*RegionInstanceGroupManagerNamedPortArrayInput)(nil)).Elem(), RegionInstanceGroupManagerNamedPortArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*RegionInstanceGroupManagerParamsInput)(nil)).Elem(), RegionInstanceGroupManagerParamsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*RegionInstanceGroupManagerParamsPtrInput)(nil)).Elem(), RegionInstanceGroupManagerParamsArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*RegionInstanceGroupManagerStatefulDiskInput)(nil)).Elem(), RegionInstanceGroupManagerStatefulDiskArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*RegionInstanceGroupManagerStatefulDiskArrayInput)(nil)).Elem(), RegionInstanceGroupManagerStatefulDiskArray{}) pulumi.RegisterInputType(reflect.TypeOf((*RegionInstanceGroupManagerStatefulExternalIpInput)(nil)).Elem(), RegionInstanceGroupManagerStatefulExternalIpArgs{}) @@ -91285,10 +90896,6 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayInput)(nil)).Elem(), URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArray{}) pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchInput)(nil)).Elem(), URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayInput)(nil)).Elem(), URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray{}) - pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteActionInput)(nil)).Elem(), URLMapPathMatcherRouteRuleRouteActionArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteActionPtrInput)(nil)).Elem(), URLMapPathMatcherRouteRuleRouteActionArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteActionCorsPolicyInput)(nil)).Elem(), URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrInput)(nil)).Elem(), URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs{}) pulumi.RegisterOutputType(AutoscalerAutoscalingPolicyOutput{}) pulumi.RegisterOutputType(AutoscalerAutoscalingPolicyPtrOutput{}) pulumi.RegisterOutputType(AutoscalerAutoscalingPolicyCpuUtilizationOutput{}) @@ -91525,6 +91132,8 @@ func init() { pulumi.RegisterOutputType(InstanceGroupManagerInstanceLifecyclePolicyPtrOutput{}) pulumi.RegisterOutputType(InstanceGroupManagerNamedPortOutput{}) pulumi.RegisterOutputType(InstanceGroupManagerNamedPortArrayOutput{}) + pulumi.RegisterOutputType(InstanceGroupManagerParamsOutput{}) + pulumi.RegisterOutputType(InstanceGroupManagerParamsPtrOutput{}) pulumi.RegisterOutputType(InstanceGroupManagerStatefulDiskOutput{}) pulumi.RegisterOutputType(InstanceGroupManagerStatefulDiskArrayOutput{}) pulumi.RegisterOutputType(InstanceGroupManagerStatefulExternalIpOutput{}) @@ -91787,6 +91396,8 @@ func init() { pulumi.RegisterOutputType(RegionInstanceGroupManagerInstanceLifecyclePolicyPtrOutput{}) pulumi.RegisterOutputType(RegionInstanceGroupManagerNamedPortOutput{}) pulumi.RegisterOutputType(RegionInstanceGroupManagerNamedPortArrayOutput{}) + pulumi.RegisterOutputType(RegionInstanceGroupManagerParamsOutput{}) + pulumi.RegisterOutputType(RegionInstanceGroupManagerParamsPtrOutput{}) pulumi.RegisterOutputType(RegionInstanceGroupManagerStatefulDiskOutput{}) pulumi.RegisterOutputType(RegionInstanceGroupManagerStatefulDiskArrayOutput{}) pulumi.RegisterOutputType(RegionInstanceGroupManagerStatefulExternalIpOutput{}) @@ -92284,8 +91895,4 @@ func init() { pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput{}) pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput{}) pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput{}) - pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleRouteActionOutput{}) - pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleRouteActionPtrOutput{}) - pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput{}) - pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput{}) } diff --git a/sdk/go/gcp/compute/pulumiTypes1.go b/sdk/go/gcp/compute/pulumiTypes1.go index 7377ab7468..7a728b5c7e 100644 --- a/sdk/go/gcp/compute/pulumiTypes1.go +++ b/sdk/go/gcp/compute/pulumiTypes1.go @@ -13,6 +13,673 @@ import ( var _ = internal.GetEnvOrDefault +type URLMapPathMatcherRouteRuleRouteAction struct { + // The specification for allowing client side cross-origin requests. Please see W3C + // Recommendation for Cross Origin Resource Sharing + // Structure is documented below. + CorsPolicy *URLMapPathMatcherRouteRuleRouteActionCorsPolicy `pulumi:"corsPolicy"` + // The specification for fault injection introduced into traffic to test the + // resiliency of clients to backend service failure. As part of fault injection, + // when clients send requests to a backend service, delays can be introduced by + // Loadbalancer on a percentage of requests before sending those request to the + // backend service. Similarly requests from clients can be aborted by the + // Loadbalancer for a percentage of requests. timeout and retryPolicy will be + // ignored by clients that are configured with a fault_injection_policy. + // Structure is documented below. + FaultInjectionPolicy *URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicy `pulumi:"faultInjectionPolicy"` + // Specifies the policy on how requests intended for the route's backends are + // shadowed to a separate mirrored backend service. Loadbalancer does not wait for + // responses from the shadow service. Prior to sending traffic to the shadow + // service, the host / authority header is suffixed with -shadow. + // Structure is documented below. + RequestMirrorPolicy *URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicy `pulumi:"requestMirrorPolicy"` + // Specifies the retry policy associated with this route. + // Structure is documented below. + RetryPolicy *URLMapPathMatcherRouteRuleRouteActionRetryPolicy `pulumi:"retryPolicy"` + // Specifies the timeout for the selected route. Timeout is computed from the time + // the request is has been fully processed (i.e. end-of-stream) up until the + // response has been completely processed. Timeout includes all retries. If not + // specified, the default value is 15 seconds. + // Structure is documented below. + Timeout *URLMapPathMatcherRouteRuleRouteActionTimeout `pulumi:"timeout"` + // The spec to modify the URL of the request, prior to forwarding the request to + // the matched service + // Structure is documented below. + UrlRewrite *URLMapPathMatcherRouteRuleRouteActionUrlRewrite `pulumi:"urlRewrite"` + // A list of weighted backend services to send traffic to when a route match + // occurs. The weights determine the fraction of traffic that flows to their + // corresponding backend service. If all traffic needs to go to a single backend + // service, there must be one weightedBackendService with weight set to a non 0 + // number. Once a backendService is identified and before forwarding the request to + // the backend service, advanced routing actions like Url rewrites and header + // transformations are applied depending on additional settings specified in this + // HttpRouteAction. + // Structure is documented below. + WeightedBackendServices []URLMapPathMatcherRouteRuleRouteActionWeightedBackendService `pulumi:"weightedBackendServices"` +} + +// URLMapPathMatcherRouteRuleRouteActionInput is an input type that accepts URLMapPathMatcherRouteRuleRouteActionArgs and URLMapPathMatcherRouteRuleRouteActionOutput values. +// You can construct a concrete instance of `URLMapPathMatcherRouteRuleRouteActionInput` via: +// +// URLMapPathMatcherRouteRuleRouteActionArgs{...} +type URLMapPathMatcherRouteRuleRouteActionInput interface { + pulumi.Input + + ToURLMapPathMatcherRouteRuleRouteActionOutput() URLMapPathMatcherRouteRuleRouteActionOutput + ToURLMapPathMatcherRouteRuleRouteActionOutputWithContext(context.Context) URLMapPathMatcherRouteRuleRouteActionOutput +} + +type URLMapPathMatcherRouteRuleRouteActionArgs struct { + // The specification for allowing client side cross-origin requests. Please see W3C + // Recommendation for Cross Origin Resource Sharing + // Structure is documented below. + CorsPolicy URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrInput `pulumi:"corsPolicy"` + // The specification for fault injection introduced into traffic to test the + // resiliency of clients to backend service failure. As part of fault injection, + // when clients send requests to a backend service, delays can be introduced by + // Loadbalancer on a percentage of requests before sending those request to the + // backend service. Similarly requests from clients can be aborted by the + // Loadbalancer for a percentage of requests. timeout and retryPolicy will be + // ignored by clients that are configured with a fault_injection_policy. + // Structure is documented below. + FaultInjectionPolicy URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyPtrInput `pulumi:"faultInjectionPolicy"` + // Specifies the policy on how requests intended for the route's backends are + // shadowed to a separate mirrored backend service. Loadbalancer does not wait for + // responses from the shadow service. Prior to sending traffic to the shadow + // service, the host / authority header is suffixed with -shadow. + // Structure is documented below. + RequestMirrorPolicy URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicyPtrInput `pulumi:"requestMirrorPolicy"` + // Specifies the retry policy associated with this route. + // Structure is documented below. + RetryPolicy URLMapPathMatcherRouteRuleRouteActionRetryPolicyPtrInput `pulumi:"retryPolicy"` + // Specifies the timeout for the selected route. Timeout is computed from the time + // the request is has been fully processed (i.e. end-of-stream) up until the + // response has been completely processed. Timeout includes all retries. If not + // specified, the default value is 15 seconds. + // Structure is documented below. + Timeout URLMapPathMatcherRouteRuleRouteActionTimeoutPtrInput `pulumi:"timeout"` + // The spec to modify the URL of the request, prior to forwarding the request to + // the matched service + // Structure is documented below. + UrlRewrite URLMapPathMatcherRouteRuleRouteActionUrlRewritePtrInput `pulumi:"urlRewrite"` + // A list of weighted backend services to send traffic to when a route match + // occurs. The weights determine the fraction of traffic that flows to their + // corresponding backend service. If all traffic needs to go to a single backend + // service, there must be one weightedBackendService with weight set to a non 0 + // number. Once a backendService is identified and before forwarding the request to + // the backend service, advanced routing actions like Url rewrites and header + // transformations are applied depending on additional settings specified in this + // HttpRouteAction. + // Structure is documented below. + WeightedBackendServices URLMapPathMatcherRouteRuleRouteActionWeightedBackendServiceArrayInput `pulumi:"weightedBackendServices"` +} + +func (URLMapPathMatcherRouteRuleRouteActionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteAction)(nil)).Elem() +} + +func (i URLMapPathMatcherRouteRuleRouteActionArgs) ToURLMapPathMatcherRouteRuleRouteActionOutput() URLMapPathMatcherRouteRuleRouteActionOutput { + return i.ToURLMapPathMatcherRouteRuleRouteActionOutputWithContext(context.Background()) +} + +func (i URLMapPathMatcherRouteRuleRouteActionArgs) ToURLMapPathMatcherRouteRuleRouteActionOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionOutput { + return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleRouteActionOutput) +} + +func (i URLMapPathMatcherRouteRuleRouteActionArgs) ToURLMapPathMatcherRouteRuleRouteActionPtrOutput() URLMapPathMatcherRouteRuleRouteActionPtrOutput { + return i.ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(context.Background()) +} + +func (i URLMapPathMatcherRouteRuleRouteActionArgs) ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleRouteActionOutput).ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(ctx) +} + +// URLMapPathMatcherRouteRuleRouteActionPtrInput is an input type that accepts URLMapPathMatcherRouteRuleRouteActionArgs, URLMapPathMatcherRouteRuleRouteActionPtr and URLMapPathMatcherRouteRuleRouteActionPtrOutput values. +// You can construct a concrete instance of `URLMapPathMatcherRouteRuleRouteActionPtrInput` via: +// +// URLMapPathMatcherRouteRuleRouteActionArgs{...} +// +// or: +// +// nil +type URLMapPathMatcherRouteRuleRouteActionPtrInput interface { + pulumi.Input + + ToURLMapPathMatcherRouteRuleRouteActionPtrOutput() URLMapPathMatcherRouteRuleRouteActionPtrOutput + ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(context.Context) URLMapPathMatcherRouteRuleRouteActionPtrOutput +} + +type urlmapPathMatcherRouteRuleRouteActionPtrType URLMapPathMatcherRouteRuleRouteActionArgs + +func URLMapPathMatcherRouteRuleRouteActionPtr(v *URLMapPathMatcherRouteRuleRouteActionArgs) URLMapPathMatcherRouteRuleRouteActionPtrInput { + return (*urlmapPathMatcherRouteRuleRouteActionPtrType)(v) +} + +func (*urlmapPathMatcherRouteRuleRouteActionPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**URLMapPathMatcherRouteRuleRouteAction)(nil)).Elem() +} + +func (i *urlmapPathMatcherRouteRuleRouteActionPtrType) ToURLMapPathMatcherRouteRuleRouteActionPtrOutput() URLMapPathMatcherRouteRuleRouteActionPtrOutput { + return i.ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(context.Background()) +} + +func (i *urlmapPathMatcherRouteRuleRouteActionPtrType) ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleRouteActionPtrOutput) +} + +type URLMapPathMatcherRouteRuleRouteActionOutput struct{ *pulumi.OutputState } + +func (URLMapPathMatcherRouteRuleRouteActionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteAction)(nil)).Elem() +} + +func (o URLMapPathMatcherRouteRuleRouteActionOutput) ToURLMapPathMatcherRouteRuleRouteActionOutput() URLMapPathMatcherRouteRuleRouteActionOutput { + return o +} + +func (o URLMapPathMatcherRouteRuleRouteActionOutput) ToURLMapPathMatcherRouteRuleRouteActionOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionOutput { + return o +} + +func (o URLMapPathMatcherRouteRuleRouteActionOutput) ToURLMapPathMatcherRouteRuleRouteActionPtrOutput() URLMapPathMatcherRouteRuleRouteActionPtrOutput { + return o.ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(context.Background()) +} + +func (o URLMapPathMatcherRouteRuleRouteActionOutput) ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteAction { + return &v + }).(URLMapPathMatcherRouteRuleRouteActionPtrOutput) +} + +// The specification for allowing client side cross-origin requests. Please see W3C +// Recommendation for Cross Origin Resource Sharing +// Structure is documented below. +func (o URLMapPathMatcherRouteRuleRouteActionOutput) CorsPolicy() URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionCorsPolicy { + return v.CorsPolicy + }).(URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) +} + +// The specification for fault injection introduced into traffic to test the +// resiliency of clients to backend service failure. As part of fault injection, +// when clients send requests to a backend service, delays can be introduced by +// Loadbalancer on a percentage of requests before sending those request to the +// backend service. Similarly requests from clients can be aborted by the +// Loadbalancer for a percentage of requests. timeout and retryPolicy will be +// ignored by clients that are configured with a fault_injection_policy. +// Structure is documented below. +func (o URLMapPathMatcherRouteRuleRouteActionOutput) FaultInjectionPolicy() URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyPtrOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicy { + return v.FaultInjectionPolicy + }).(URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyPtrOutput) +} + +// Specifies the policy on how requests intended for the route's backends are +// shadowed to a separate mirrored backend service. Loadbalancer does not wait for +// responses from the shadow service. Prior to sending traffic to the shadow +// service, the host / authority header is suffixed with -shadow. +// Structure is documented below. +func (o URLMapPathMatcherRouteRuleRouteActionOutput) RequestMirrorPolicy() URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicyPtrOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicy { + return v.RequestMirrorPolicy + }).(URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicyPtrOutput) +} + +// Specifies the retry policy associated with this route. +// Structure is documented below. +func (o URLMapPathMatcherRouteRuleRouteActionOutput) RetryPolicy() URLMapPathMatcherRouteRuleRouteActionRetryPolicyPtrOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionRetryPolicy { + return v.RetryPolicy + }).(URLMapPathMatcherRouteRuleRouteActionRetryPolicyPtrOutput) +} + +// Specifies the timeout for the selected route. Timeout is computed from the time +// the request is has been fully processed (i.e. end-of-stream) up until the +// response has been completely processed. Timeout includes all retries. If not +// specified, the default value is 15 seconds. +// Structure is documented below. +func (o URLMapPathMatcherRouteRuleRouteActionOutput) Timeout() URLMapPathMatcherRouteRuleRouteActionTimeoutPtrOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionTimeout { + return v.Timeout + }).(URLMapPathMatcherRouteRuleRouteActionTimeoutPtrOutput) +} + +// The spec to modify the URL of the request, prior to forwarding the request to +// the matched service +// Structure is documented below. +func (o URLMapPathMatcherRouteRuleRouteActionOutput) UrlRewrite() URLMapPathMatcherRouteRuleRouteActionUrlRewritePtrOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionUrlRewrite { + return v.UrlRewrite + }).(URLMapPathMatcherRouteRuleRouteActionUrlRewritePtrOutput) +} + +// A list of weighted backend services to send traffic to when a route match +// occurs. The weights determine the fraction of traffic that flows to their +// corresponding backend service. If all traffic needs to go to a single backend +// service, there must be one weightedBackendService with weight set to a non 0 +// number. Once a backendService is identified and before forwarding the request to +// the backend service, advanced routing actions like Url rewrites and header +// transformations are applied depending on additional settings specified in this +// HttpRouteAction. +// Structure is documented below. +func (o URLMapPathMatcherRouteRuleRouteActionOutput) WeightedBackendServices() URLMapPathMatcherRouteRuleRouteActionWeightedBackendServiceArrayOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteAction) []URLMapPathMatcherRouteRuleRouteActionWeightedBackendService { + return v.WeightedBackendServices + }).(URLMapPathMatcherRouteRuleRouteActionWeightedBackendServiceArrayOutput) +} + +type URLMapPathMatcherRouteRuleRouteActionPtrOutput struct{ *pulumi.OutputState } + +func (URLMapPathMatcherRouteRuleRouteActionPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**URLMapPathMatcherRouteRuleRouteAction)(nil)).Elem() +} + +func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) ToURLMapPathMatcherRouteRuleRouteActionPtrOutput() URLMapPathMatcherRouteRuleRouteActionPtrOutput { + return o +} + +func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionPtrOutput { + return o +} + +func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) Elem() URLMapPathMatcherRouteRuleRouteActionOutput { + return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteAction) URLMapPathMatcherRouteRuleRouteAction { + if v != nil { + return *v + } + var ret URLMapPathMatcherRouteRuleRouteAction + return ret + }).(URLMapPathMatcherRouteRuleRouteActionOutput) +} + +// The specification for allowing client side cross-origin requests. Please see W3C +// Recommendation for Cross Origin Resource Sharing +// Structure is documented below. +func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) CorsPolicy() URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { + return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionCorsPolicy { + if v == nil { + return nil + } + return v.CorsPolicy + }).(URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) +} + +// The specification for fault injection introduced into traffic to test the +// resiliency of clients to backend service failure. As part of fault injection, +// when clients send requests to a backend service, delays can be introduced by +// Loadbalancer on a percentage of requests before sending those request to the +// backend service. Similarly requests from clients can be aborted by the +// Loadbalancer for a percentage of requests. timeout and retryPolicy will be +// ignored by clients that are configured with a fault_injection_policy. +// Structure is documented below. +func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) FaultInjectionPolicy() URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyPtrOutput { + return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicy { + if v == nil { + return nil + } + return v.FaultInjectionPolicy + }).(URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyPtrOutput) +} + +// Specifies the policy on how requests intended for the route's backends are +// shadowed to a separate mirrored backend service. Loadbalancer does not wait for +// responses from the shadow service. Prior to sending traffic to the shadow +// service, the host / authority header is suffixed with -shadow. +// Structure is documented below. +func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) RequestMirrorPolicy() URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicyPtrOutput { + return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicy { + if v == nil { + return nil + } + return v.RequestMirrorPolicy + }).(URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicyPtrOutput) +} + +// Specifies the retry policy associated with this route. +// Structure is documented below. +func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) RetryPolicy() URLMapPathMatcherRouteRuleRouteActionRetryPolicyPtrOutput { + return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionRetryPolicy { + if v == nil { + return nil + } + return v.RetryPolicy + }).(URLMapPathMatcherRouteRuleRouteActionRetryPolicyPtrOutput) +} + +// Specifies the timeout for the selected route. Timeout is computed from the time +// the request is has been fully processed (i.e. end-of-stream) up until the +// response has been completely processed. Timeout includes all retries. If not +// specified, the default value is 15 seconds. +// Structure is documented below. +func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) Timeout() URLMapPathMatcherRouteRuleRouteActionTimeoutPtrOutput { + return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionTimeout { + if v == nil { + return nil + } + return v.Timeout + }).(URLMapPathMatcherRouteRuleRouteActionTimeoutPtrOutput) +} + +// The spec to modify the URL of the request, prior to forwarding the request to +// the matched service +// Structure is documented below. +func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) UrlRewrite() URLMapPathMatcherRouteRuleRouteActionUrlRewritePtrOutput { + return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionUrlRewrite { + if v == nil { + return nil + } + return v.UrlRewrite + }).(URLMapPathMatcherRouteRuleRouteActionUrlRewritePtrOutput) +} + +// A list of weighted backend services to send traffic to when a route match +// occurs. The weights determine the fraction of traffic that flows to their +// corresponding backend service. If all traffic needs to go to a single backend +// service, there must be one weightedBackendService with weight set to a non 0 +// number. Once a backendService is identified and before forwarding the request to +// the backend service, advanced routing actions like Url rewrites and header +// transformations are applied depending on additional settings specified in this +// HttpRouteAction. +// Structure is documented below. +func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) WeightedBackendServices() URLMapPathMatcherRouteRuleRouteActionWeightedBackendServiceArrayOutput { + return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteAction) []URLMapPathMatcherRouteRuleRouteActionWeightedBackendService { + if v == nil { + return nil + } + return v.WeightedBackendServices + }).(URLMapPathMatcherRouteRuleRouteActionWeightedBackendServiceArrayOutput) +} + +type URLMapPathMatcherRouteRuleRouteActionCorsPolicy struct { + // In response to a preflight request, setting this to true indicates that the actual request can include user credentials. + // This translates to the Access-Control-Allow-Credentials header. + AllowCredentials *bool `pulumi:"allowCredentials"` + // Specifies the content for the Access-Control-Allow-Headers header. + AllowHeaders []string `pulumi:"allowHeaders"` + // Specifies the content for the Access-Control-Allow-Methods header. + AllowMethods []string `pulumi:"allowMethods"` + // Specifies the regular expression patterns that match allowed origins. For regular expression grammar + // please see en.cppreference.com/w/cpp/regex/ecmascript + // An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. + AllowOriginRegexes []string `pulumi:"allowOriginRegexes"` + // Specifies the list of origins that will be allowed to do CORS requests. + // An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. + AllowOrigins []string `pulumi:"allowOrigins"` + // If true, specifies the CORS policy is disabled. The default value is false, which indicates that the CORS policy is in effect. + Disabled *bool `pulumi:"disabled"` + // Specifies the content for the Access-Control-Expose-Headers header. + ExposeHeaders []string `pulumi:"exposeHeaders"` + // Specifies how long results of a preflight request can be cached in seconds. + // This translates to the Access-Control-Max-Age header. + MaxAge *int `pulumi:"maxAge"` +} + +// URLMapPathMatcherRouteRuleRouteActionCorsPolicyInput is an input type that accepts URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs and URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput values. +// You can construct a concrete instance of `URLMapPathMatcherRouteRuleRouteActionCorsPolicyInput` via: +// +// URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs{...} +type URLMapPathMatcherRouteRuleRouteActionCorsPolicyInput interface { + pulumi.Input + + ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput() URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput + ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyOutputWithContext(context.Context) URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput +} + +type URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs struct { + // In response to a preflight request, setting this to true indicates that the actual request can include user credentials. + // This translates to the Access-Control-Allow-Credentials header. + AllowCredentials pulumi.BoolPtrInput `pulumi:"allowCredentials"` + // Specifies the content for the Access-Control-Allow-Headers header. + AllowHeaders pulumi.StringArrayInput `pulumi:"allowHeaders"` + // Specifies the content for the Access-Control-Allow-Methods header. + AllowMethods pulumi.StringArrayInput `pulumi:"allowMethods"` + // Specifies the regular expression patterns that match allowed origins. For regular expression grammar + // please see en.cppreference.com/w/cpp/regex/ecmascript + // An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. + AllowOriginRegexes pulumi.StringArrayInput `pulumi:"allowOriginRegexes"` + // Specifies the list of origins that will be allowed to do CORS requests. + // An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. + AllowOrigins pulumi.StringArrayInput `pulumi:"allowOrigins"` + // If true, specifies the CORS policy is disabled. The default value is false, which indicates that the CORS policy is in effect. + Disabled pulumi.BoolPtrInput `pulumi:"disabled"` + // Specifies the content for the Access-Control-Expose-Headers header. + ExposeHeaders pulumi.StringArrayInput `pulumi:"exposeHeaders"` + // Specifies how long results of a preflight request can be cached in seconds. + // This translates to the Access-Control-Max-Age header. + MaxAge pulumi.IntPtrInput `pulumi:"maxAge"` +} + +func (URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteActionCorsPolicy)(nil)).Elem() +} + +func (i URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput() URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput { + return i.ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyOutputWithContext(context.Background()) +} + +func (i URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput { + return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) +} + +func (i URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput() URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { + return i.ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(context.Background()) +} + +func (i URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput).ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(ctx) +} + +// URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrInput is an input type that accepts URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs, URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtr and URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput values. +// You can construct a concrete instance of `URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrInput` via: +// +// URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs{...} +// +// or: +// +// nil +type URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrInput interface { + pulumi.Input + + ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput() URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput + ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(context.Context) URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput +} + +type urlmapPathMatcherRouteRuleRouteActionCorsPolicyPtrType URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs + +func URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtr(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs) URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrInput { + return (*urlmapPathMatcherRouteRuleRouteActionCorsPolicyPtrType)(v) +} + +func (*urlmapPathMatcherRouteRuleRouteActionCorsPolicyPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**URLMapPathMatcherRouteRuleRouteActionCorsPolicy)(nil)).Elem() +} + +func (i *urlmapPathMatcherRouteRuleRouteActionCorsPolicyPtrType) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput() URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { + return i.ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(context.Background()) +} + +func (i *urlmapPathMatcherRouteRuleRouteActionCorsPolicyPtrType) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) +} + +type URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput struct{ *pulumi.OutputState } + +func (URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteActionCorsPolicy)(nil)).Elem() +} + +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput() URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput { + return o +} + +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput { + return o +} + +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput() URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { + return o.ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(context.Background()) +} + +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) *URLMapPathMatcherRouteRuleRouteActionCorsPolicy { + return &v + }).(URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) +} + +// In response to a preflight request, setting this to true indicates that the actual request can include user credentials. +// This translates to the Access-Control-Allow-Credentials header. +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) AllowCredentials() pulumi.BoolPtrOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) *bool { return v.AllowCredentials }).(pulumi.BoolPtrOutput) +} + +// Specifies the content for the Access-Control-Allow-Headers header. +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) AllowHeaders() pulumi.StringArrayOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { return v.AllowHeaders }).(pulumi.StringArrayOutput) +} + +// Specifies the content for the Access-Control-Allow-Methods header. +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) AllowMethods() pulumi.StringArrayOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { return v.AllowMethods }).(pulumi.StringArrayOutput) +} + +// Specifies the regular expression patterns that match allowed origins. For regular expression grammar +// please see en.cppreference.com/w/cpp/regex/ecmascript +// An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) AllowOriginRegexes() pulumi.StringArrayOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { return v.AllowOriginRegexes }).(pulumi.StringArrayOutput) +} + +// Specifies the list of origins that will be allowed to do CORS requests. +// An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) AllowOrigins() pulumi.StringArrayOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { return v.AllowOrigins }).(pulumi.StringArrayOutput) +} + +// If true, specifies the CORS policy is disabled. The default value is false, which indicates that the CORS policy is in effect. +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) Disabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) *bool { return v.Disabled }).(pulumi.BoolPtrOutput) +} + +// Specifies the content for the Access-Control-Expose-Headers header. +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) ExposeHeaders() pulumi.StringArrayOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { return v.ExposeHeaders }).(pulumi.StringArrayOutput) +} + +// Specifies how long results of a preflight request can be cached in seconds. +// This translates to the Access-Control-Max-Age header. +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) MaxAge() pulumi.IntPtrOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) *int { return v.MaxAge }).(pulumi.IntPtrOutput) +} + +type URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput struct{ *pulumi.OutputState } + +func (URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**URLMapPathMatcherRouteRuleRouteActionCorsPolicy)(nil)).Elem() +} + +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput() URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { + return o +} + +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { + return o +} + +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) Elem() URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput { + return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) URLMapPathMatcherRouteRuleRouteActionCorsPolicy { + if v != nil { + return *v + } + var ret URLMapPathMatcherRouteRuleRouteActionCorsPolicy + return ret + }).(URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) +} + +// In response to a preflight request, setting this to true indicates that the actual request can include user credentials. +// This translates to the Access-Control-Allow-Credentials header. +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) AllowCredentials() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) *bool { + if v == nil { + return nil + } + return v.AllowCredentials + }).(pulumi.BoolPtrOutput) +} + +// Specifies the content for the Access-Control-Allow-Headers header. +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) AllowHeaders() pulumi.StringArrayOutput { + return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { + if v == nil { + return nil + } + return v.AllowHeaders + }).(pulumi.StringArrayOutput) +} + +// Specifies the content for the Access-Control-Allow-Methods header. +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) AllowMethods() pulumi.StringArrayOutput { + return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { + if v == nil { + return nil + } + return v.AllowMethods + }).(pulumi.StringArrayOutput) +} + +// Specifies the regular expression patterns that match allowed origins. For regular expression grammar +// please see en.cppreference.com/w/cpp/regex/ecmascript +// An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) AllowOriginRegexes() pulumi.StringArrayOutput { + return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { + if v == nil { + return nil + } + return v.AllowOriginRegexes + }).(pulumi.StringArrayOutput) +} + +// Specifies the list of origins that will be allowed to do CORS requests. +// An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) AllowOrigins() pulumi.StringArrayOutput { + return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { + if v == nil { + return nil + } + return v.AllowOrigins + }).(pulumi.StringArrayOutput) +} + +// If true, specifies the CORS policy is disabled. The default value is false, which indicates that the CORS policy is in effect. +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) Disabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) *bool { + if v == nil { + return nil + } + return v.Disabled + }).(pulumi.BoolPtrOutput) +} + +// Specifies the content for the Access-Control-Expose-Headers header. +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) ExposeHeaders() pulumi.StringArrayOutput { + return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { + if v == nil { + return nil + } + return v.ExposeHeaders + }).(pulumi.StringArrayOutput) +} + +// Specifies how long results of a preflight request can be cached in seconds. +// This translates to the Access-Control-Max-Age header. +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) MaxAge() pulumi.IntPtrOutput { + return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) *int { + if v == nil { + return nil + } + return v.MaxAge + }).(pulumi.IntPtrOutput) +} + type URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicy struct { // The specification for how client requests are aborted as part of fault injection. // Structure is documented below. @@ -11018,6 +11685,103 @@ func (o GetInstanceGroupManagerNamedPortArrayOutput) Index(i pulumi.IntInput) Ge }).(GetInstanceGroupManagerNamedPortOutput) } +type GetInstanceGroupManagerParam struct { + // Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. + ResourceManagerTags map[string]interface{} `pulumi:"resourceManagerTags"` +} + +// GetInstanceGroupManagerParamInput is an input type that accepts GetInstanceGroupManagerParamArgs and GetInstanceGroupManagerParamOutput values. +// You can construct a concrete instance of `GetInstanceGroupManagerParamInput` via: +// +// GetInstanceGroupManagerParamArgs{...} +type GetInstanceGroupManagerParamInput interface { + pulumi.Input + + ToGetInstanceGroupManagerParamOutput() GetInstanceGroupManagerParamOutput + ToGetInstanceGroupManagerParamOutputWithContext(context.Context) GetInstanceGroupManagerParamOutput +} + +type GetInstanceGroupManagerParamArgs struct { + // Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. + ResourceManagerTags pulumi.MapInput `pulumi:"resourceManagerTags"` +} + +func (GetInstanceGroupManagerParamArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetInstanceGroupManagerParam)(nil)).Elem() +} + +func (i GetInstanceGroupManagerParamArgs) ToGetInstanceGroupManagerParamOutput() GetInstanceGroupManagerParamOutput { + return i.ToGetInstanceGroupManagerParamOutputWithContext(context.Background()) +} + +func (i GetInstanceGroupManagerParamArgs) ToGetInstanceGroupManagerParamOutputWithContext(ctx context.Context) GetInstanceGroupManagerParamOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetInstanceGroupManagerParamOutput) +} + +// GetInstanceGroupManagerParamArrayInput is an input type that accepts GetInstanceGroupManagerParamArray and GetInstanceGroupManagerParamArrayOutput values. +// You can construct a concrete instance of `GetInstanceGroupManagerParamArrayInput` via: +// +// GetInstanceGroupManagerParamArray{ GetInstanceGroupManagerParamArgs{...} } +type GetInstanceGroupManagerParamArrayInput interface { + pulumi.Input + + ToGetInstanceGroupManagerParamArrayOutput() GetInstanceGroupManagerParamArrayOutput + ToGetInstanceGroupManagerParamArrayOutputWithContext(context.Context) GetInstanceGroupManagerParamArrayOutput +} + +type GetInstanceGroupManagerParamArray []GetInstanceGroupManagerParamInput + +func (GetInstanceGroupManagerParamArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetInstanceGroupManagerParam)(nil)).Elem() +} + +func (i GetInstanceGroupManagerParamArray) ToGetInstanceGroupManagerParamArrayOutput() GetInstanceGroupManagerParamArrayOutput { + return i.ToGetInstanceGroupManagerParamArrayOutputWithContext(context.Background()) +} + +func (i GetInstanceGroupManagerParamArray) ToGetInstanceGroupManagerParamArrayOutputWithContext(ctx context.Context) GetInstanceGroupManagerParamArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetInstanceGroupManagerParamArrayOutput) +} + +type GetInstanceGroupManagerParamOutput struct{ *pulumi.OutputState } + +func (GetInstanceGroupManagerParamOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetInstanceGroupManagerParam)(nil)).Elem() +} + +func (o GetInstanceGroupManagerParamOutput) ToGetInstanceGroupManagerParamOutput() GetInstanceGroupManagerParamOutput { + return o +} + +func (o GetInstanceGroupManagerParamOutput) ToGetInstanceGroupManagerParamOutputWithContext(ctx context.Context) GetInstanceGroupManagerParamOutput { + return o +} + +// Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. +func (o GetInstanceGroupManagerParamOutput) ResourceManagerTags() pulumi.MapOutput { + return o.ApplyT(func(v GetInstanceGroupManagerParam) map[string]interface{} { return v.ResourceManagerTags }).(pulumi.MapOutput) +} + +type GetInstanceGroupManagerParamArrayOutput struct{ *pulumi.OutputState } + +func (GetInstanceGroupManagerParamArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetInstanceGroupManagerParam)(nil)).Elem() +} + +func (o GetInstanceGroupManagerParamArrayOutput) ToGetInstanceGroupManagerParamArrayOutput() GetInstanceGroupManagerParamArrayOutput { + return o +} + +func (o GetInstanceGroupManagerParamArrayOutput) ToGetInstanceGroupManagerParamArrayOutputWithContext(ctx context.Context) GetInstanceGroupManagerParamArrayOutput { + return o +} + +func (o GetInstanceGroupManagerParamArrayOutput) Index(i pulumi.IntInput) GetInstanceGroupManagerParamOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetInstanceGroupManagerParam { + return vs[0].([]GetInstanceGroupManagerParam)[vs[1].(int)] + }).(GetInstanceGroupManagerParamOutput) +} + type GetInstanceGroupManagerStatefulDisk struct { // A value that prescribes what should happen to the stateful disk when the VM instance is deleted. The available options are NEVER and ON_PERMANENT_INSTANCE_DELETION. NEVER - detach the disk when the VM is deleted, but do not delete the disk. ON_PERMANENT_INSTANCE_DELETION will delete the stateful disk when the VM is permanently deleted from the instance group. The default is NEVER. DeleteRule string `pulumi:"deleteRule"` @@ -25753,6 +26517,10 @@ func (o GetSubnetworkSecondaryIpRangeArrayOutput) Index(i pulumi.IntInput) GetSu } func init() { + pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteActionInput)(nil)).Elem(), URLMapPathMatcherRouteRuleRouteActionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteActionPtrInput)(nil)).Elem(), URLMapPathMatcherRouteRuleRouteActionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteActionCorsPolicyInput)(nil)).Elem(), URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrInput)(nil)).Elem(), URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyInput)(nil)).Elem(), URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyPtrInput)(nil)).Elem(), URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyAbortInput)(nil)).Elem(), URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyAbortArgs{}) @@ -25887,6 +26655,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*GetInstanceGroupManagerInstanceLifecyclePolicyArrayInput)(nil)).Elem(), GetInstanceGroupManagerInstanceLifecyclePolicyArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetInstanceGroupManagerNamedPortInput)(nil)).Elem(), GetInstanceGroupManagerNamedPortArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetInstanceGroupManagerNamedPortArrayInput)(nil)).Elem(), GetInstanceGroupManagerNamedPortArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetInstanceGroupManagerParamInput)(nil)).Elem(), GetInstanceGroupManagerParamArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetInstanceGroupManagerParamArrayInput)(nil)).Elem(), GetInstanceGroupManagerParamArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetInstanceGroupManagerStatefulDiskInput)(nil)).Elem(), GetInstanceGroupManagerStatefulDiskArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetInstanceGroupManagerStatefulDiskArrayInput)(nil)).Elem(), GetInstanceGroupManagerStatefulDiskArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetInstanceGroupManagerStatefulExternalIpInput)(nil)).Elem(), GetInstanceGroupManagerStatefulExternalIpArgs{}) @@ -26111,6 +26881,10 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*GetSnapshotSourceDiskEncryptionKeyArrayInput)(nil)).Elem(), GetSnapshotSourceDiskEncryptionKeyArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetSubnetworkSecondaryIpRangeInput)(nil)).Elem(), GetSubnetworkSecondaryIpRangeArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetSubnetworkSecondaryIpRangeArrayInput)(nil)).Elem(), GetSubnetworkSecondaryIpRangeArray{}) + pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleRouteActionOutput{}) + pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleRouteActionPtrOutput{}) + pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput{}) + pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput{}) pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyOutput{}) pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyPtrOutput{}) pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyAbortOutput{}) @@ -26245,6 +27019,8 @@ func init() { pulumi.RegisterOutputType(GetInstanceGroupManagerInstanceLifecyclePolicyArrayOutput{}) pulumi.RegisterOutputType(GetInstanceGroupManagerNamedPortOutput{}) pulumi.RegisterOutputType(GetInstanceGroupManagerNamedPortArrayOutput{}) + pulumi.RegisterOutputType(GetInstanceGroupManagerParamOutput{}) + pulumi.RegisterOutputType(GetInstanceGroupManagerParamArrayOutput{}) pulumi.RegisterOutputType(GetInstanceGroupManagerStatefulDiskOutput{}) pulumi.RegisterOutputType(GetInstanceGroupManagerStatefulDiskArrayOutput{}) pulumi.RegisterOutputType(GetInstanceGroupManagerStatefulExternalIpOutput{}) diff --git a/sdk/go/gcp/compute/regionInstanceGroupManager.go b/sdk/go/gcp/compute/regionInstanceGroupManager.go index 9de7a40d42..4688144933 100644 --- a/sdk/go/gcp/compute/regionInstanceGroupManager.go +++ b/sdk/go/gcp/compute/regionInstanceGroupManager.go @@ -197,6 +197,10 @@ type RegionInstanceGroupManager struct { // The named port configuration. See the section below // for details on configuration. NamedPorts RegionInstanceGroupManagerNamedPortArrayOutput `pulumi:"namedPorts"` + // Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + // + // *** + Params RegionInstanceGroupManagerParamsPtrOutput `pulumi:"params"` // The ID of the project in which the resource belongs. If it // is not provided, the provider project is used. Project pulumi.StringOutput `pulumi:"project"` @@ -209,8 +213,6 @@ type RegionInstanceGroupManager struct { // Disks created on the instances that will be preserved on instance delete, update, etc. Structure is documented below. For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/configuring-stateful-disks-in-migs). Proactive cross zone instance redistribution must be disabled before you can update stateful disks on existing instance group managers. This can be controlled via the `updatePolicy`. StatefulDisks RegionInstanceGroupManagerStatefulDiskArrayOutput `pulumi:"statefulDisks"` // External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. - // - // *** StatefulExternalIps RegionInstanceGroupManagerStatefulExternalIpArrayOutput `pulumi:"statefulExternalIps"` // Internal network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. StatefulInternalIps RegionInstanceGroupManagerStatefulInternalIpArrayOutput `pulumi:"statefulInternalIps"` @@ -321,6 +323,10 @@ type regionInstanceGroupManagerState struct { // The named port configuration. See the section below // for details on configuration. NamedPorts []RegionInstanceGroupManagerNamedPort `pulumi:"namedPorts"` + // Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + // + // *** + Params *RegionInstanceGroupManagerParams `pulumi:"params"` // The ID of the project in which the resource belongs. If it // is not provided, the provider project is used. Project *string `pulumi:"project"` @@ -333,8 +339,6 @@ type regionInstanceGroupManagerState struct { // Disks created on the instances that will be preserved on instance delete, update, etc. Structure is documented below. For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/configuring-stateful-disks-in-migs). Proactive cross zone instance redistribution must be disabled before you can update stateful disks on existing instance group managers. This can be controlled via the `updatePolicy`. StatefulDisks []RegionInstanceGroupManagerStatefulDisk `pulumi:"statefulDisks"` // External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. - // - // *** StatefulExternalIps []RegionInstanceGroupManagerStatefulExternalIp `pulumi:"statefulExternalIps"` // Internal network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. StatefulInternalIps []RegionInstanceGroupManagerStatefulInternalIp `pulumi:"statefulInternalIps"` @@ -410,6 +414,10 @@ type RegionInstanceGroupManagerState struct { // The named port configuration. See the section below // for details on configuration. NamedPorts RegionInstanceGroupManagerNamedPortArrayInput + // Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + // + // *** + Params RegionInstanceGroupManagerParamsPtrInput // The ID of the project in which the resource belongs. If it // is not provided, the provider project is used. Project pulumi.StringPtrInput @@ -422,8 +430,6 @@ type RegionInstanceGroupManagerState struct { // Disks created on the instances that will be preserved on instance delete, update, etc. Structure is documented below. For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/configuring-stateful-disks-in-migs). Proactive cross zone instance redistribution must be disabled before you can update stateful disks on existing instance group managers. This can be controlled via the `updatePolicy`. StatefulDisks RegionInstanceGroupManagerStatefulDiskArrayInput // External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. - // - // *** StatefulExternalIps RegionInstanceGroupManagerStatefulExternalIpArrayInput // Internal network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. StatefulInternalIps RegionInstanceGroupManagerStatefulInternalIpArrayInput @@ -497,6 +503,10 @@ type regionInstanceGroupManagerArgs struct { // The named port configuration. See the section below // for details on configuration. NamedPorts []RegionInstanceGroupManagerNamedPort `pulumi:"namedPorts"` + // Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + // + // *** + Params *RegionInstanceGroupManagerParams `pulumi:"params"` // The ID of the project in which the resource belongs. If it // is not provided, the provider project is used. Project *string `pulumi:"project"` @@ -507,8 +517,6 @@ type regionInstanceGroupManagerArgs struct { // Disks created on the instances that will be preserved on instance delete, update, etc. Structure is documented below. For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/configuring-stateful-disks-in-migs). Proactive cross zone instance redistribution must be disabled before you can update stateful disks on existing instance group managers. This can be controlled via the `updatePolicy`. StatefulDisks []RegionInstanceGroupManagerStatefulDisk `pulumi:"statefulDisks"` // External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. - // - // *** StatefulExternalIps []RegionInstanceGroupManagerStatefulExternalIp `pulumi:"statefulExternalIps"` // Internal network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. StatefulInternalIps []RegionInstanceGroupManagerStatefulInternalIp `pulumi:"statefulInternalIps"` @@ -577,6 +585,10 @@ type RegionInstanceGroupManagerArgs struct { // The named port configuration. See the section below // for details on configuration. NamedPorts RegionInstanceGroupManagerNamedPortArrayInput + // Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + // + // *** + Params RegionInstanceGroupManagerParamsPtrInput // The ID of the project in which the resource belongs. If it // is not provided, the provider project is used. Project pulumi.StringPtrInput @@ -587,8 +599,6 @@ type RegionInstanceGroupManagerArgs struct { // Disks created on the instances that will be preserved on instance delete, update, etc. Structure is documented below. For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/configuring-stateful-disks-in-migs). Proactive cross zone instance redistribution must be disabled before you can update stateful disks on existing instance group managers. This can be controlled via the `updatePolicy`. StatefulDisks RegionInstanceGroupManagerStatefulDiskArrayInput // External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. - // - // *** StatefulExternalIps RegionInstanceGroupManagerStatefulExternalIpArrayInput // Internal network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. StatefulInternalIps RegionInstanceGroupManagerStatefulInternalIpArrayInput @@ -795,6 +805,13 @@ func (o RegionInstanceGroupManagerOutput) NamedPorts() RegionInstanceGroupManage }).(RegionInstanceGroupManagerNamedPortArrayOutput) } +// Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). +// +// *** +func (o RegionInstanceGroupManagerOutput) Params() RegionInstanceGroupManagerParamsPtrOutput { + return o.ApplyT(func(v *RegionInstanceGroupManager) RegionInstanceGroupManagerParamsPtrOutput { return v.Params }).(RegionInstanceGroupManagerParamsPtrOutput) +} + // The ID of the project in which the resource belongs. If it // is not provided, the provider project is used. func (o RegionInstanceGroupManagerOutput) Project() pulumi.StringOutput { @@ -821,8 +838,6 @@ func (o RegionInstanceGroupManagerOutput) StatefulDisks() RegionInstanceGroupMan } // External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. -// -// *** func (o RegionInstanceGroupManagerOutput) StatefulExternalIps() RegionInstanceGroupManagerStatefulExternalIpArrayOutput { return o.ApplyT(func(v *RegionInstanceGroupManager) RegionInstanceGroupManagerStatefulExternalIpArrayOutput { return v.StatefulExternalIps diff --git a/sdk/go/gcp/container/pulumiTypes.go b/sdk/go/gcp/container/pulumiTypes.go index f60144a7b6..ca31fe9c2b 100644 --- a/sdk/go/gcp/container/pulumiTypes.go +++ b/sdk/go/gcp/container/pulumiTypes.go @@ -44691,7 +44691,7 @@ func (o GetClusterMasterAuthClientCertificateConfigArrayOutput) Index(i pulumi.I type GetClusterMasterAuthorizedNetworksConfig struct { // External networks that can access the Kubernetes cluster master through HTTPS. CidrBlocks []GetClusterMasterAuthorizedNetworksConfigCidrBlock `pulumi:"cidrBlocks"` - // Whether master is accessbile via Google Compute Engine Public IP addresses. + // Whether Kubernetes master is accessible via Google Compute Engine Public IPs. GcpPublicCidrsAccessEnabled bool `pulumi:"gcpPublicCidrsAccessEnabled"` } @@ -44709,7 +44709,7 @@ type GetClusterMasterAuthorizedNetworksConfigInput interface { type GetClusterMasterAuthorizedNetworksConfigArgs struct { // External networks that can access the Kubernetes cluster master through HTTPS. CidrBlocks GetClusterMasterAuthorizedNetworksConfigCidrBlockArrayInput `pulumi:"cidrBlocks"` - // Whether master is accessbile via Google Compute Engine Public IP addresses. + // Whether Kubernetes master is accessible via Google Compute Engine Public IPs. GcpPublicCidrsAccessEnabled pulumi.BoolInput `pulumi:"gcpPublicCidrsAccessEnabled"` } @@ -44771,7 +44771,7 @@ func (o GetClusterMasterAuthorizedNetworksConfigOutput) CidrBlocks() GetClusterM }).(GetClusterMasterAuthorizedNetworksConfigCidrBlockArrayOutput) } -// Whether master is accessbile via Google Compute Engine Public IP addresses. +// Whether Kubernetes master is accessible via Google Compute Engine Public IPs. func (o GetClusterMasterAuthorizedNetworksConfigOutput) GcpPublicCidrsAccessEnabled() pulumi.BoolOutput { return o.ApplyT(func(v GetClusterMasterAuthorizedNetworksConfig) bool { return v.GcpPublicCidrsAccessEnabled }).(pulumi.BoolOutput) } @@ -54376,7 +54376,7 @@ func (o GetClusterSecurityPostureConfigArrayOutput) Index(i pulumi.IntInput) Get } type GetClusterServiceExternalIpsConfig struct { - // When enabled, services with exterenal ips specified will be allowed. + // When enabled, services with external ips specified will be allowed. Enabled bool `pulumi:"enabled"` } @@ -54392,7 +54392,7 @@ type GetClusterServiceExternalIpsConfigInput interface { } type GetClusterServiceExternalIpsConfigArgs struct { - // When enabled, services with exterenal ips specified will be allowed. + // When enabled, services with external ips specified will be allowed. Enabled pulumi.BoolInput `pulumi:"enabled"` } @@ -54447,7 +54447,7 @@ func (o GetClusterServiceExternalIpsConfigOutput) ToGetClusterServiceExternalIps return o } -// When enabled, services with exterenal ips specified will be allowed. +// When enabled, services with external ips specified will be allowed. func (o GetClusterServiceExternalIpsConfigOutput) Enabled() pulumi.BoolOutput { return o.ApplyT(func(v GetClusterServiceExternalIpsConfig) bool { return v.Enabled }).(pulumi.BoolOutput) } diff --git a/sdk/go/gcp/dns/getKeys.go b/sdk/go/gcp/dns/getKeys.go index 59de5106ac..287338a6cd 100644 --- a/sdk/go/gcp/dns/getKeys.go +++ b/sdk/go/gcp/dns/getKeys.go @@ -78,7 +78,7 @@ type GetKeysArgs struct { // A collection of values returned by getKeys. type GetKeysResult struct { - // Unique identifier for the resource; defined by the server. + // The provider-assigned unique ID for this managed resource. Id string `pulumi:"id"` // A list of Key-signing key (KSK) records. Structure is documented below. Additionally, the DS record is provided: KeySigningKeys []GetKeysKeySigningKey `pulumi:"keySigningKeys"` @@ -128,7 +128,7 @@ func (o GetKeysResultOutput) ToGetKeysResultOutputWithContext(ctx context.Contex return o } -// Unique identifier for the resource; defined by the server. +// The provider-assigned unique ID for this managed resource. func (o GetKeysResultOutput) Id() pulumi.StringOutput { return o.ApplyT(func(v GetKeysResult) string { return v.Id }).(pulumi.StringOutput) } diff --git a/sdk/go/gcp/dns/getManagedZones.go b/sdk/go/gcp/dns/getManagedZones.go index a394eb79cd..cd2da60fbf 100644 --- a/sdk/go/gcp/dns/getManagedZones.go +++ b/sdk/go/gcp/dns/getManagedZones.go @@ -52,8 +52,6 @@ func GetManagedZones(ctx *pulumi.Context, args *GetManagedZonesArgs, opts ...pul // A collection of arguments for invoking getManagedZones. type GetManagedZonesArgs struct { - // A list of managed zones. - ManagedZones []GetManagedZonesManagedZone `pulumi:"managedZones"` // The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. Project *string `pulumi:"project"` } @@ -81,8 +79,6 @@ func GetManagedZonesOutput(ctx *pulumi.Context, args GetManagedZonesOutputArgs, // A collection of arguments for invoking getManagedZones. type GetManagedZonesOutputArgs struct { - // A list of managed zones. - ManagedZones GetManagedZonesManagedZoneArrayInput `pulumi:"managedZones"` // The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. Project pulumi.StringPtrInput `pulumi:"project"` } diff --git a/sdk/go/gcp/dns/getRecordSet.go b/sdk/go/gcp/dns/getRecordSet.go index 71a145c542..1741c7ae8e 100644 --- a/sdk/go/gcp/dns/getRecordSet.go +++ b/sdk/go/gcp/dns/getRecordSet.go @@ -42,6 +42,7 @@ type LookupRecordSetArgs struct { // A collection of values returned by getRecordSet. type LookupRecordSetResult struct { + // The provider-assigned unique ID for this managed resource. Id string `pulumi:"id"` ManagedZone string `pulumi:"managedZone"` Name string `pulumi:"name"` @@ -97,6 +98,7 @@ func (o LookupRecordSetResultOutput) ToLookupRecordSetResultOutputWithContext(ct return o } +// The provider-assigned unique ID for this managed resource. func (o LookupRecordSetResultOutput) Id() pulumi.StringOutput { return o.ApplyT(func(v LookupRecordSetResult) string { return v.Id }).(pulumi.StringOutput) } diff --git a/sdk/go/gcp/dns/pulumiTypes.go b/sdk/go/gcp/dns/pulumiTypes.go index 38c25cbb94..0bb09ca5c9 100644 --- a/sdk/go/gcp/dns/pulumiTypes.go +++ b/sdk/go/gcp/dns/pulumiTypes.go @@ -5041,9 +5041,9 @@ func (o GetKeysKeySigningKeyArrayOutput) Index(i pulumi.IntInput) GetKeysKeySign type GetKeysKeySigningKeyDigest struct { // The base-16 encoded bytes of this digest. Suitable for use in a DS resource record. - Digest string `pulumi:"digest"` + Digest *string `pulumi:"digest"` // Specifies the algorithm used to calculate this digest. Possible values are `sha1`, `sha256` and `sha384` - Type string `pulumi:"type"` + Type *string `pulumi:"type"` } // GetKeysKeySigningKeyDigestInput is an input type that accepts GetKeysKeySigningKeyDigestArgs and GetKeysKeySigningKeyDigestOutput values. @@ -5059,9 +5059,9 @@ type GetKeysKeySigningKeyDigestInput interface { type GetKeysKeySigningKeyDigestArgs struct { // The base-16 encoded bytes of this digest. Suitable for use in a DS resource record. - Digest pulumi.StringInput `pulumi:"digest"` + Digest pulumi.StringPtrInput `pulumi:"digest"` // Specifies the algorithm used to calculate this digest. Possible values are `sha1`, `sha256` and `sha384` - Type pulumi.StringInput `pulumi:"type"` + Type pulumi.StringPtrInput `pulumi:"type"` } func (GetKeysKeySigningKeyDigestArgs) ElementType() reflect.Type { @@ -5116,13 +5116,13 @@ func (o GetKeysKeySigningKeyDigestOutput) ToGetKeysKeySigningKeyDigestOutputWith } // The base-16 encoded bytes of this digest. Suitable for use in a DS resource record. -func (o GetKeysKeySigningKeyDigestOutput) Digest() pulumi.StringOutput { - return o.ApplyT(func(v GetKeysKeySigningKeyDigest) string { return v.Digest }).(pulumi.StringOutput) +func (o GetKeysKeySigningKeyDigestOutput) Digest() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetKeysKeySigningKeyDigest) *string { return v.Digest }).(pulumi.StringPtrOutput) } // Specifies the algorithm used to calculate this digest. Possible values are `sha1`, `sha256` and `sha384` -func (o GetKeysKeySigningKeyDigestOutput) Type() pulumi.StringOutput { - return o.ApplyT(func(v GetKeysKeySigningKeyDigest) string { return v.Type }).(pulumi.StringOutput) +func (o GetKeysKeySigningKeyDigestOutput) Type() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetKeysKeySigningKeyDigest) *string { return v.Type }).(pulumi.StringPtrOutput) } type GetKeysKeySigningKeyDigestArrayOutput struct{ *pulumi.OutputState } @@ -5316,9 +5316,9 @@ func (o GetKeysZoneSigningKeyArrayOutput) Index(i pulumi.IntInput) GetKeysZoneSi type GetKeysZoneSigningKeyDigest struct { // The base-16 encoded bytes of this digest. Suitable for use in a DS resource record. - Digest string `pulumi:"digest"` + Digest *string `pulumi:"digest"` // Specifies the algorithm used to calculate this digest. Possible values are `sha1`, `sha256` and `sha384` - Type string `pulumi:"type"` + Type *string `pulumi:"type"` } // GetKeysZoneSigningKeyDigestInput is an input type that accepts GetKeysZoneSigningKeyDigestArgs and GetKeysZoneSigningKeyDigestOutput values. @@ -5334,9 +5334,9 @@ type GetKeysZoneSigningKeyDigestInput interface { type GetKeysZoneSigningKeyDigestArgs struct { // The base-16 encoded bytes of this digest. Suitable for use in a DS resource record. - Digest pulumi.StringInput `pulumi:"digest"` + Digest pulumi.StringPtrInput `pulumi:"digest"` // Specifies the algorithm used to calculate this digest. Possible values are `sha1`, `sha256` and `sha384` - Type pulumi.StringInput `pulumi:"type"` + Type pulumi.StringPtrInput `pulumi:"type"` } func (GetKeysZoneSigningKeyDigestArgs) ElementType() reflect.Type { @@ -5391,13 +5391,13 @@ func (o GetKeysZoneSigningKeyDigestOutput) ToGetKeysZoneSigningKeyDigestOutputWi } // The base-16 encoded bytes of this digest. Suitable for use in a DS resource record. -func (o GetKeysZoneSigningKeyDigestOutput) Digest() pulumi.StringOutput { - return o.ApplyT(func(v GetKeysZoneSigningKeyDigest) string { return v.Digest }).(pulumi.StringOutput) +func (o GetKeysZoneSigningKeyDigestOutput) Digest() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetKeysZoneSigningKeyDigest) *string { return v.Digest }).(pulumi.StringPtrOutput) } // Specifies the algorithm used to calculate this digest. Possible values are `sha1`, `sha256` and `sha384` -func (o GetKeysZoneSigningKeyDigestOutput) Type() pulumi.StringOutput { - return o.ApplyT(func(v GetKeysZoneSigningKeyDigest) string { return v.Type }).(pulumi.StringOutput) +func (o GetKeysZoneSigningKeyDigestOutput) Type() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetKeysZoneSigningKeyDigest) *string { return v.Type }).(pulumi.StringPtrOutput) } type GetKeysZoneSigningKeyDigestArrayOutput struct{ *pulumi.OutputState } @@ -5421,22 +5421,15 @@ func (o GetKeysZoneSigningKeyDigestArrayOutput) Index(i pulumi.IntInput) GetKeys } type GetManagedZonesManagedZone struct { - // A textual description field. - Description string `pulumi:"description"` - // The fully qualified DNS name of this zone. - DnsName string `pulumi:"dnsName"` - // DNS managed zone identifier - Id string `pulumi:"id"` - // Unique identifier for the resource; defined by the server. - ManagedZoneId int `pulumi:"managedZoneId"` - // A unique name for the resource. - Name string `pulumi:"name"` - // The list of nameservers that will be authoritative for this domain. Use NS records to redirect from your DNS provider to these names, thus making Google Cloud DNS authoritative for this zone. - NameServers []string `pulumi:"nameServers"` + Description string `pulumi:"description"` + DnsName string `pulumi:"dnsName"` + Id string `pulumi:"id"` + ManagedZoneId int `pulumi:"managedZoneId"` + Name *string `pulumi:"name"` + NameServers []string `pulumi:"nameServers"` // The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. - Project string `pulumi:"project"` - // The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources. - Visibility string `pulumi:"visibility"` + Project *string `pulumi:"project"` + Visibility string `pulumi:"visibility"` } // GetManagedZonesManagedZoneInput is an input type that accepts GetManagedZonesManagedZoneArgs and GetManagedZonesManagedZoneOutput values. @@ -5451,22 +5444,15 @@ type GetManagedZonesManagedZoneInput interface { } type GetManagedZonesManagedZoneArgs struct { - // A textual description field. - Description pulumi.StringInput `pulumi:"description"` - // The fully qualified DNS name of this zone. - DnsName pulumi.StringInput `pulumi:"dnsName"` - // DNS managed zone identifier - Id pulumi.StringInput `pulumi:"id"` - // Unique identifier for the resource; defined by the server. - ManagedZoneId pulumi.IntInput `pulumi:"managedZoneId"` - // A unique name for the resource. - Name pulumi.StringInput `pulumi:"name"` - // The list of nameservers that will be authoritative for this domain. Use NS records to redirect from your DNS provider to these names, thus making Google Cloud DNS authoritative for this zone. - NameServers pulumi.StringArrayInput `pulumi:"nameServers"` + Description pulumi.StringInput `pulumi:"description"` + DnsName pulumi.StringInput `pulumi:"dnsName"` + Id pulumi.StringInput `pulumi:"id"` + ManagedZoneId pulumi.IntInput `pulumi:"managedZoneId"` + Name pulumi.StringPtrInput `pulumi:"name"` + NameServers pulumi.StringArrayInput `pulumi:"nameServers"` // The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. - Project pulumi.StringInput `pulumi:"project"` - // The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources. - Visibility pulumi.StringInput `pulumi:"visibility"` + Project pulumi.StringPtrInput `pulumi:"project"` + Visibility pulumi.StringInput `pulumi:"visibility"` } func (GetManagedZonesManagedZoneArgs) ElementType() reflect.Type { @@ -5520,42 +5506,35 @@ func (o GetManagedZonesManagedZoneOutput) ToGetManagedZonesManagedZoneOutputWith return o } -// A textual description field. func (o GetManagedZonesManagedZoneOutput) Description() pulumi.StringOutput { return o.ApplyT(func(v GetManagedZonesManagedZone) string { return v.Description }).(pulumi.StringOutput) } -// The fully qualified DNS name of this zone. func (o GetManagedZonesManagedZoneOutput) DnsName() pulumi.StringOutput { return o.ApplyT(func(v GetManagedZonesManagedZone) string { return v.DnsName }).(pulumi.StringOutput) } -// DNS managed zone identifier func (o GetManagedZonesManagedZoneOutput) Id() pulumi.StringOutput { return o.ApplyT(func(v GetManagedZonesManagedZone) string { return v.Id }).(pulumi.StringOutput) } -// Unique identifier for the resource; defined by the server. func (o GetManagedZonesManagedZoneOutput) ManagedZoneId() pulumi.IntOutput { return o.ApplyT(func(v GetManagedZonesManagedZone) int { return v.ManagedZoneId }).(pulumi.IntOutput) } -// A unique name for the resource. -func (o GetManagedZonesManagedZoneOutput) Name() pulumi.StringOutput { - return o.ApplyT(func(v GetManagedZonesManagedZone) string { return v.Name }).(pulumi.StringOutput) +func (o GetManagedZonesManagedZoneOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetManagedZonesManagedZone) *string { return v.Name }).(pulumi.StringPtrOutput) } -// The list of nameservers that will be authoritative for this domain. Use NS records to redirect from your DNS provider to these names, thus making Google Cloud DNS authoritative for this zone. func (o GetManagedZonesManagedZoneOutput) NameServers() pulumi.StringArrayOutput { return o.ApplyT(func(v GetManagedZonesManagedZone) []string { return v.NameServers }).(pulumi.StringArrayOutput) } // The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. -func (o GetManagedZonesManagedZoneOutput) Project() pulumi.StringOutput { - return o.ApplyT(func(v GetManagedZonesManagedZone) string { return v.Project }).(pulumi.StringOutput) +func (o GetManagedZonesManagedZoneOutput) Project() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetManagedZonesManagedZone) *string { return v.Project }).(pulumi.StringPtrOutput) } -// The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources. func (o GetManagedZonesManagedZoneOutput) Visibility() pulumi.StringOutput { return o.ApplyT(func(v GetManagedZonesManagedZone) string { return v.Visibility }).(pulumi.StringOutput) } diff --git a/sdk/go/gcp/firestore/document.go b/sdk/go/gcp/firestore/document.go index c6880be7e3..a9611efdec 100644 --- a/sdk/go/gcp/firestore/document.go +++ b/sdk/go/gcp/firestore/document.go @@ -209,7 +209,7 @@ type Document struct { DocumentId pulumi.StringOutput `pulumi:"documentId"` // The document's [fields](https://cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.documents) formated as a json string. Fields pulumi.StringOutput `pulumi:"fields"` - // A server defined name for this index. Format: + // A server defined name for this document. Format: // `projects/{{project_id}}/databases/{{database_id}}/documents/{{path}}/{{document_id}}` Name pulumi.StringOutput `pulumi:"name"` // A relative path to the collection this document exists within @@ -272,7 +272,7 @@ type documentState struct { DocumentId *string `pulumi:"documentId"` // The document's [fields](https://cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.documents) formated as a json string. Fields *string `pulumi:"fields"` - // A server defined name for this index. Format: + // A server defined name for this document. Format: // `projects/{{project_id}}/databases/{{database_id}}/documents/{{path}}/{{document_id}}` Name *string `pulumi:"name"` // A relative path to the collection this document exists within @@ -297,7 +297,7 @@ type DocumentState struct { DocumentId pulumi.StringPtrInput // The document's [fields](https://cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.documents) formated as a json string. Fields pulumi.StringPtrInput - // A server defined name for this index. Format: + // A server defined name for this document. Format: // `projects/{{project_id}}/databases/{{database_id}}/documents/{{path}}/{{document_id}}` Name pulumi.StringPtrInput // A relative path to the collection this document exists within @@ -460,7 +460,7 @@ func (o DocumentOutput) Fields() pulumi.StringOutput { return o.ApplyT(func(v *Document) pulumi.StringOutput { return v.Fields }).(pulumi.StringOutput) } -// A server defined name for this index. Format: +// A server defined name for this document. Format: // `projects/{{project_id}}/databases/{{database_id}}/documents/{{path}}/{{document_id}}` func (o DocumentOutput) Name() pulumi.StringOutput { return o.ApplyT(func(v *Document) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) diff --git a/sdk/go/gcp/organizations/getActiveFolder.go b/sdk/go/gcp/organizations/getActiveFolder.go index cb5ef83ba1..75b434dd46 100644 --- a/sdk/go/gcp/organizations/getActiveFolder.go +++ b/sdk/go/gcp/organizations/getActiveFolder.go @@ -26,6 +26,8 @@ func GetActiveFolder(ctx *pulumi.Context, args *GetActiveFolderArgs, opts ...pul // A collection of arguments for invoking getActiveFolder. type GetActiveFolderArgs struct { + // The API method to use to search for the folder. Valid values are `LIST` and `SEARCH`. Default Value is `LIST`. `LIST` is [strongly consistent]() and requires `resourcemanager.folders.list` on the parent folder, while `SEARCH` is [eventually consistent](https://cloud.google.com/resource-manager/reference/rest/v3/folders/search#:~:text=eventually%20consistent) and only returns folders that the user has `resourcemanager.folders.get` permission on. + ApiMethod *string `pulumi:"apiMethod"` // The folder's display name. DisplayName string `pulumi:"displayName"` // The resource name of the parent Folder or Organization. @@ -34,7 +36,8 @@ type GetActiveFolderArgs struct { // A collection of values returned by getActiveFolder. type GetActiveFolderResult struct { - DisplayName string `pulumi:"displayName"` + ApiMethod *string `pulumi:"apiMethod"` + DisplayName string `pulumi:"displayName"` // The provider-assigned unique ID for this managed resource. Id string `pulumi:"id"` // The resource name of the Folder. This uniquely identifies the folder. @@ -57,6 +60,8 @@ func GetActiveFolderOutput(ctx *pulumi.Context, args GetActiveFolderOutputArgs, // A collection of arguments for invoking getActiveFolder. type GetActiveFolderOutputArgs struct { + // The API method to use to search for the folder. Valid values are `LIST` and `SEARCH`. Default Value is `LIST`. `LIST` is [strongly consistent]() and requires `resourcemanager.folders.list` on the parent folder, while `SEARCH` is [eventually consistent](https://cloud.google.com/resource-manager/reference/rest/v3/folders/search#:~:text=eventually%20consistent) and only returns folders that the user has `resourcemanager.folders.get` permission on. + ApiMethod pulumi.StringPtrInput `pulumi:"apiMethod"` // The folder's display name. DisplayName pulumi.StringInput `pulumi:"displayName"` // The resource name of the parent Folder or Organization. @@ -82,6 +87,10 @@ func (o GetActiveFolderResultOutput) ToGetActiveFolderResultOutputWithContext(ct return o } +func (o GetActiveFolderResultOutput) ApiMethod() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetActiveFolderResult) *string { return v.ApiMethod }).(pulumi.StringPtrOutput) +} + func (o GetActiveFolderResultOutput) DisplayName() pulumi.StringOutput { return o.ApplyT(func(v GetActiveFolderResult) string { return v.DisplayName }).(pulumi.StringOutput) } diff --git a/sdk/go/gcp/projects/iamMemberRemove.go b/sdk/go/gcp/projects/iamMemberRemove.go new file mode 100644 index 0000000000..2220e7eac9 --- /dev/null +++ b/sdk/go/gcp/projects/iamMemberRemove.go @@ -0,0 +1,303 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package projects + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Ensures that a member:role pairing does not exist in a project's IAM policy. +// +// On create, this resource will modify the policy to remove the `member` from the +// `role`. If the membership is ever re-added, the next refresh will clear this +// resource from state, proposing re-adding it to correct the membership. Import is +// not supported- this resource will acquire the current policy and modify it as +// part of creating the resource. +// +// This resource will conflict with `projects.IAMPolicy` and +// `projects.IAMBinding` resources that share a role, as well as +// `projects.IAMMember` resources that target the same membership. When +// multiple resources conflict the final state is not guaranteed to include or omit +// the membership. Subsequent `pulumi up` calls will always show a diff +// until the configuration is corrected. +// +// For more information see +// [the official documentation](https://cloud.google.com/iam/docs/granting-changing-revoking-access) +// and +// [API reference](https://cloud.google.com/resource-manager/reference/rest/v1/projects/setIamPolicy). +type IamMemberRemove struct { + pulumi.CustomResourceState + + // The IAM principal that should not have the target role. + // Each entry can have one of the following values: + // * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. + // * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + // * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. + // * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com. + Member pulumi.StringOutput `pulumi:"member"` + // The project id of the target project. + Project pulumi.StringOutput `pulumi:"project"` + // The target role that should be removed. + Role pulumi.StringOutput `pulumi:"role"` +} + +// NewIamMemberRemove registers a new resource with the given unique name, arguments, and options. +func NewIamMemberRemove(ctx *pulumi.Context, + name string, args *IamMemberRemoveArgs, opts ...pulumi.ResourceOption) (*IamMemberRemove, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Member == nil { + return nil, errors.New("invalid value for required argument 'Member'") + } + if args.Project == nil { + return nil, errors.New("invalid value for required argument 'Project'") + } + if args.Role == nil { + return nil, errors.New("invalid value for required argument 'Role'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource IamMemberRemove + err := ctx.RegisterResource("gcp:projects/iamMemberRemove:IamMemberRemove", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetIamMemberRemove gets an existing IamMemberRemove resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetIamMemberRemove(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *IamMemberRemoveState, opts ...pulumi.ResourceOption) (*IamMemberRemove, error) { + var resource IamMemberRemove + err := ctx.ReadResource("gcp:projects/iamMemberRemove:IamMemberRemove", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering IamMemberRemove resources. +type iamMemberRemoveState struct { + // The IAM principal that should not have the target role. + // Each entry can have one of the following values: + // * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. + // * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + // * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. + // * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com. + Member *string `pulumi:"member"` + // The project id of the target project. + Project *string `pulumi:"project"` + // The target role that should be removed. + Role *string `pulumi:"role"` +} + +type IamMemberRemoveState struct { + // The IAM principal that should not have the target role. + // Each entry can have one of the following values: + // * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. + // * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + // * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. + // * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com. + Member pulumi.StringPtrInput + // The project id of the target project. + Project pulumi.StringPtrInput + // The target role that should be removed. + Role pulumi.StringPtrInput +} + +func (IamMemberRemoveState) ElementType() reflect.Type { + return reflect.TypeOf((*iamMemberRemoveState)(nil)).Elem() +} + +type iamMemberRemoveArgs struct { + // The IAM principal that should not have the target role. + // Each entry can have one of the following values: + // * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. + // * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + // * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. + // * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com. + Member string `pulumi:"member"` + // The project id of the target project. + Project string `pulumi:"project"` + // The target role that should be removed. + Role string `pulumi:"role"` +} + +// The set of arguments for constructing a IamMemberRemove resource. +type IamMemberRemoveArgs struct { + // The IAM principal that should not have the target role. + // Each entry can have one of the following values: + // * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. + // * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + // * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. + // * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com. + Member pulumi.StringInput + // The project id of the target project. + Project pulumi.StringInput + // The target role that should be removed. + Role pulumi.StringInput +} + +func (IamMemberRemoveArgs) ElementType() reflect.Type { + return reflect.TypeOf((*iamMemberRemoveArgs)(nil)).Elem() +} + +type IamMemberRemoveInput interface { + pulumi.Input + + ToIamMemberRemoveOutput() IamMemberRemoveOutput + ToIamMemberRemoveOutputWithContext(ctx context.Context) IamMemberRemoveOutput +} + +func (*IamMemberRemove) ElementType() reflect.Type { + return reflect.TypeOf((**IamMemberRemove)(nil)).Elem() +} + +func (i *IamMemberRemove) ToIamMemberRemoveOutput() IamMemberRemoveOutput { + return i.ToIamMemberRemoveOutputWithContext(context.Background()) +} + +func (i *IamMemberRemove) ToIamMemberRemoveOutputWithContext(ctx context.Context) IamMemberRemoveOutput { + return pulumi.ToOutputWithContext(ctx, i).(IamMemberRemoveOutput) +} + +// IamMemberRemoveArrayInput is an input type that accepts IamMemberRemoveArray and IamMemberRemoveArrayOutput values. +// You can construct a concrete instance of `IamMemberRemoveArrayInput` via: +// +// IamMemberRemoveArray{ IamMemberRemoveArgs{...} } +type IamMemberRemoveArrayInput interface { + pulumi.Input + + ToIamMemberRemoveArrayOutput() IamMemberRemoveArrayOutput + ToIamMemberRemoveArrayOutputWithContext(context.Context) IamMemberRemoveArrayOutput +} + +type IamMemberRemoveArray []IamMemberRemoveInput + +func (IamMemberRemoveArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*IamMemberRemove)(nil)).Elem() +} + +func (i IamMemberRemoveArray) ToIamMemberRemoveArrayOutput() IamMemberRemoveArrayOutput { + return i.ToIamMemberRemoveArrayOutputWithContext(context.Background()) +} + +func (i IamMemberRemoveArray) ToIamMemberRemoveArrayOutputWithContext(ctx context.Context) IamMemberRemoveArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(IamMemberRemoveArrayOutput) +} + +// IamMemberRemoveMapInput is an input type that accepts IamMemberRemoveMap and IamMemberRemoveMapOutput values. +// You can construct a concrete instance of `IamMemberRemoveMapInput` via: +// +// IamMemberRemoveMap{ "key": IamMemberRemoveArgs{...} } +type IamMemberRemoveMapInput interface { + pulumi.Input + + ToIamMemberRemoveMapOutput() IamMemberRemoveMapOutput + ToIamMemberRemoveMapOutputWithContext(context.Context) IamMemberRemoveMapOutput +} + +type IamMemberRemoveMap map[string]IamMemberRemoveInput + +func (IamMemberRemoveMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*IamMemberRemove)(nil)).Elem() +} + +func (i IamMemberRemoveMap) ToIamMemberRemoveMapOutput() IamMemberRemoveMapOutput { + return i.ToIamMemberRemoveMapOutputWithContext(context.Background()) +} + +func (i IamMemberRemoveMap) ToIamMemberRemoveMapOutputWithContext(ctx context.Context) IamMemberRemoveMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(IamMemberRemoveMapOutput) +} + +type IamMemberRemoveOutput struct{ *pulumi.OutputState } + +func (IamMemberRemoveOutput) ElementType() reflect.Type { + return reflect.TypeOf((**IamMemberRemove)(nil)).Elem() +} + +func (o IamMemberRemoveOutput) ToIamMemberRemoveOutput() IamMemberRemoveOutput { + return o +} + +func (o IamMemberRemoveOutput) ToIamMemberRemoveOutputWithContext(ctx context.Context) IamMemberRemoveOutput { + return o +} + +// The IAM principal that should not have the target role. +// Each entry can have one of the following values: +// * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. +// * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. +// * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. +// * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com. +func (o IamMemberRemoveOutput) Member() pulumi.StringOutput { + return o.ApplyT(func(v *IamMemberRemove) pulumi.StringOutput { return v.Member }).(pulumi.StringOutput) +} + +// The project id of the target project. +func (o IamMemberRemoveOutput) Project() pulumi.StringOutput { + return o.ApplyT(func(v *IamMemberRemove) pulumi.StringOutput { return v.Project }).(pulumi.StringOutput) +} + +// The target role that should be removed. +func (o IamMemberRemoveOutput) Role() pulumi.StringOutput { + return o.ApplyT(func(v *IamMemberRemove) pulumi.StringOutput { return v.Role }).(pulumi.StringOutput) +} + +type IamMemberRemoveArrayOutput struct{ *pulumi.OutputState } + +func (IamMemberRemoveArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*IamMemberRemove)(nil)).Elem() +} + +func (o IamMemberRemoveArrayOutput) ToIamMemberRemoveArrayOutput() IamMemberRemoveArrayOutput { + return o +} + +func (o IamMemberRemoveArrayOutput) ToIamMemberRemoveArrayOutputWithContext(ctx context.Context) IamMemberRemoveArrayOutput { + return o +} + +func (o IamMemberRemoveArrayOutput) Index(i pulumi.IntInput) IamMemberRemoveOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *IamMemberRemove { + return vs[0].([]*IamMemberRemove)[vs[1].(int)] + }).(IamMemberRemoveOutput) +} + +type IamMemberRemoveMapOutput struct{ *pulumi.OutputState } + +func (IamMemberRemoveMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*IamMemberRemove)(nil)).Elem() +} + +func (o IamMemberRemoveMapOutput) ToIamMemberRemoveMapOutput() IamMemberRemoveMapOutput { + return o +} + +func (o IamMemberRemoveMapOutput) ToIamMemberRemoveMapOutputWithContext(ctx context.Context) IamMemberRemoveMapOutput { + return o +} + +func (o IamMemberRemoveMapOutput) MapIndex(k pulumi.StringInput) IamMemberRemoveOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *IamMemberRemove { + return vs[0].(map[string]*IamMemberRemove)[vs[1].(string)] + }).(IamMemberRemoveOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*IamMemberRemoveInput)(nil)).Elem(), &IamMemberRemove{}) + pulumi.RegisterInputType(reflect.TypeOf((*IamMemberRemoveArrayInput)(nil)).Elem(), IamMemberRemoveArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*IamMemberRemoveMapInput)(nil)).Elem(), IamMemberRemoveMap{}) + pulumi.RegisterOutputType(IamMemberRemoveOutput{}) + pulumi.RegisterOutputType(IamMemberRemoveArrayOutput{}) + pulumi.RegisterOutputType(IamMemberRemoveMapOutput{}) +} diff --git a/sdk/go/gcp/projects/init.go b/sdk/go/gcp/projects/init.go index e666be990c..bdc5a1e9aa 100644 --- a/sdk/go/gcp/projects/init.go +++ b/sdk/go/gcp/projects/init.go @@ -37,6 +37,8 @@ func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi r = &IAMMember{} case "gcp:projects/iAMPolicy:IAMPolicy": r = &IAMPolicy{} + case "gcp:projects/iamMemberRemove:IamMemberRemove": + r = &IamMemberRemove{} case "gcp:projects/organizationPolicy:OrganizationPolicy": r = &OrganizationPolicy{} case "gcp:projects/service:Service": @@ -98,6 +100,11 @@ func init() { "projects/iAMPolicy", &module{version}, ) + pulumi.RegisterResourceModule( + "gcp", + "projects/iamMemberRemove", + &module{version}, + ) pulumi.RegisterResourceModule( "gcp", "projects/organizationPolicy", diff --git a/sdk/go/gcp/vmwareengine/getPrivateCloud.go b/sdk/go/gcp/vmwareengine/getPrivateCloud.go index 0555345b75..0651631572 100644 --- a/sdk/go/gcp/vmwareengine/getPrivateCloud.go +++ b/sdk/go/gcp/vmwareengine/getPrivateCloud.go @@ -76,9 +76,7 @@ type LookupPrivateCloudResult struct { Name string `pulumi:"name"` NetworkConfigs []GetPrivateCloudNetworkConfig `pulumi:"networkConfigs"` Nsxes []GetPrivateCloudNsx `pulumi:"nsxes"` - PreferredZone string `pulumi:"preferredZone"` Project *string `pulumi:"project"` - SecondaryZone string `pulumi:"secondaryZone"` State string `pulumi:"state"` Type string `pulumi:"type"` Uid string `pulumi:"uid"` @@ -163,18 +161,10 @@ func (o LookupPrivateCloudResultOutput) Nsxes() GetPrivateCloudNsxArrayOutput { return o.ApplyT(func(v LookupPrivateCloudResult) []GetPrivateCloudNsx { return v.Nsxes }).(GetPrivateCloudNsxArrayOutput) } -func (o LookupPrivateCloudResultOutput) PreferredZone() pulumi.StringOutput { - return o.ApplyT(func(v LookupPrivateCloudResult) string { return v.PreferredZone }).(pulumi.StringOutput) -} - func (o LookupPrivateCloudResultOutput) Project() pulumi.StringPtrOutput { return o.ApplyT(func(v LookupPrivateCloudResult) *string { return v.Project }).(pulumi.StringPtrOutput) } -func (o LookupPrivateCloudResultOutput) SecondaryZone() pulumi.StringOutput { - return o.ApplyT(func(v LookupPrivateCloudResult) string { return v.SecondaryZone }).(pulumi.StringOutput) -} - func (o LookupPrivateCloudResultOutput) State() pulumi.StringOutput { return o.ApplyT(func(v LookupPrivateCloudResult) string { return v.State }).(pulumi.StringOutput) } diff --git a/sdk/go/gcp/vmwareengine/privateCloud.go b/sdk/go/gcp/vmwareengine/privateCloud.go index 14acee2b58..60b716cc9b 100644 --- a/sdk/go/gcp/vmwareengine/privateCloud.go +++ b/sdk/go/gcp/vmwareengine/privateCloud.go @@ -164,12 +164,8 @@ type PrivateCloud struct { NetworkConfig PrivateCloudNetworkConfigOutput `pulumi:"networkConfig"` // Details about a NSX Manager appliance. // Structure is documented below. - Nsxes PrivateCloudNsxArrayOutput `pulumi:"nsxes"` - // The preferred single failure domain within a region. - PreferredZone pulumi.StringPtrOutput `pulumi:"preferredZone"` - Project pulumi.StringOutput `pulumi:"project"` - // The secondary single failure domain within a region. - SecondaryZone pulumi.StringPtrOutput `pulumi:"secondaryZone"` + Nsxes PrivateCloudNsxArrayOutput `pulumi:"nsxes"` + Project pulumi.StringOutput `pulumi:"project"` // State of the appliance. // Possible values are: `ACTIVE`, `CREATING`. State pulumi.StringOutput `pulumi:"state"` @@ -238,12 +234,8 @@ type privateCloudState struct { NetworkConfig *PrivateCloudNetworkConfig `pulumi:"networkConfig"` // Details about a NSX Manager appliance. // Structure is documented below. - Nsxes []PrivateCloudNsx `pulumi:"nsxes"` - // The preferred single failure domain within a region. - PreferredZone *string `pulumi:"preferredZone"` - Project *string `pulumi:"project"` - // The secondary single failure domain within a region. - SecondaryZone *string `pulumi:"secondaryZone"` + Nsxes []PrivateCloudNsx `pulumi:"nsxes"` + Project *string `pulumi:"project"` // State of the appliance. // Possible values are: `ACTIVE`, `CREATING`. State *string `pulumi:"state"` @@ -274,12 +266,8 @@ type PrivateCloudState struct { NetworkConfig PrivateCloudNetworkConfigPtrInput // Details about a NSX Manager appliance. // Structure is documented below. - Nsxes PrivateCloudNsxArrayInput - // The preferred single failure domain within a region. - PreferredZone pulumi.StringPtrInput - Project pulumi.StringPtrInput - // The secondary single failure domain within a region. - SecondaryZone pulumi.StringPtrInput + Nsxes PrivateCloudNsxArrayInput + Project pulumi.StringPtrInput // State of the appliance. // Possible values are: `ACTIVE`, `CREATING`. State pulumi.StringPtrInput @@ -309,11 +297,7 @@ type privateCloudArgs struct { // Network configuration in the consumer project with which the peering has to be done. // Structure is documented below. NetworkConfig PrivateCloudNetworkConfig `pulumi:"networkConfig"` - // The preferred single failure domain within a region. - PreferredZone *string `pulumi:"preferredZone"` - Project *string `pulumi:"project"` - // The secondary single failure domain within a region. - SecondaryZone *string `pulumi:"secondaryZone"` + Project *string `pulumi:"project"` // Initial type of the private cloud. Possible values: ["STANDARD", "TIME_LIMITED", "STRETCHED"] Type *string `pulumi:"type"` } @@ -332,11 +316,7 @@ type PrivateCloudArgs struct { // Network configuration in the consumer project with which the peering has to be done. // Structure is documented below. NetworkConfig PrivateCloudNetworkConfigInput - // The preferred single failure domain within a region. - PreferredZone pulumi.StringPtrInput Project pulumi.StringPtrInput - // The secondary single failure domain within a region. - SecondaryZone pulumi.StringPtrInput // Initial type of the private cloud. Possible values: ["STANDARD", "TIME_LIMITED", "STRETCHED"] Type pulumi.StringPtrInput } @@ -467,20 +447,10 @@ func (o PrivateCloudOutput) Nsxes() PrivateCloudNsxArrayOutput { return o.ApplyT(func(v *PrivateCloud) PrivateCloudNsxArrayOutput { return v.Nsxes }).(PrivateCloudNsxArrayOutput) } -// The preferred single failure domain within a region. -func (o PrivateCloudOutput) PreferredZone() pulumi.StringPtrOutput { - return o.ApplyT(func(v *PrivateCloud) pulumi.StringPtrOutput { return v.PreferredZone }).(pulumi.StringPtrOutput) -} - func (o PrivateCloudOutput) Project() pulumi.StringOutput { return o.ApplyT(func(v *PrivateCloud) pulumi.StringOutput { return v.Project }).(pulumi.StringOutput) } -// The secondary single failure domain within a region. -func (o PrivateCloudOutput) SecondaryZone() pulumi.StringPtrOutput { - return o.ApplyT(func(v *PrivateCloud) pulumi.StringPtrOutput { return v.SecondaryZone }).(pulumi.StringPtrOutput) -} - // State of the appliance. // Possible values are: `ACTIVE`, `CREATING`. func (o PrivateCloudOutput) State() pulumi.StringOutput { diff --git a/sdk/go/gcp/vmwareengine/pulumiTypes.go b/sdk/go/gcp/vmwareengine/pulumiTypes.go index 5ca7e77be5..6b5f1d7d28 100644 --- a/sdk/go/gcp/vmwareengine/pulumiTypes.go +++ b/sdk/go/gcp/vmwareengine/pulumiTypes.go @@ -929,6 +929,9 @@ type PrivateCloudManagementCluster struct { // where the key is canonical identifier of the node type (corresponds to the NodeType). // Structure is documented below. NodeTypeConfigs []PrivateCloudManagementClusterNodeTypeConfig `pulumi:"nodeTypeConfigs"` + // The stretched cluster configuration for the private cloud. + // Structure is documented below. + StretchedClusterConfig *PrivateCloudManagementClusterStretchedClusterConfig `pulumi:"stretchedClusterConfig"` } // PrivateCloudManagementClusterInput is an input type that accepts PrivateCloudManagementClusterArgs and PrivateCloudManagementClusterOutput values. @@ -954,6 +957,9 @@ type PrivateCloudManagementClusterArgs struct { // where the key is canonical identifier of the node type (corresponds to the NodeType). // Structure is documented below. NodeTypeConfigs PrivateCloudManagementClusterNodeTypeConfigArrayInput `pulumi:"nodeTypeConfigs"` + // The stretched cluster configuration for the private cloud. + // Structure is documented below. + StretchedClusterConfig PrivateCloudManagementClusterStretchedClusterConfigPtrInput `pulumi:"stretchedClusterConfig"` } func (PrivateCloudManagementClusterArgs) ElementType() reflect.Type { @@ -1052,6 +1058,14 @@ func (o PrivateCloudManagementClusterOutput) NodeTypeConfigs() PrivateCloudManag }).(PrivateCloudManagementClusterNodeTypeConfigArrayOutput) } +// The stretched cluster configuration for the private cloud. +// Structure is documented below. +func (o PrivateCloudManagementClusterOutput) StretchedClusterConfig() PrivateCloudManagementClusterStretchedClusterConfigPtrOutput { + return o.ApplyT(func(v PrivateCloudManagementCluster) *PrivateCloudManagementClusterStretchedClusterConfig { + return v.StretchedClusterConfig + }).(PrivateCloudManagementClusterStretchedClusterConfigPtrOutput) +} + type PrivateCloudManagementClusterPtrOutput struct{ *pulumi.OutputState } func (PrivateCloudManagementClusterPtrOutput) ElementType() reflect.Type { @@ -1103,13 +1117,22 @@ func (o PrivateCloudManagementClusterPtrOutput) NodeTypeConfigs() PrivateCloudMa }).(PrivateCloudManagementClusterNodeTypeConfigArrayOutput) } +// The stretched cluster configuration for the private cloud. +// Structure is documented below. +func (o PrivateCloudManagementClusterPtrOutput) StretchedClusterConfig() PrivateCloudManagementClusterStretchedClusterConfigPtrOutput { + return o.ApplyT(func(v *PrivateCloudManagementCluster) *PrivateCloudManagementClusterStretchedClusterConfig { + if v == nil { + return nil + } + return v.StretchedClusterConfig + }).(PrivateCloudManagementClusterStretchedClusterConfigPtrOutput) +} + type PrivateCloudManagementClusterNodeTypeConfig struct { // Customized number of cores available to each node of the type. // This number must always be one of `nodeType.availableCustomCoreCounts`. // If zero is provided max value from `nodeType.availableCustomCoreCounts` will be used. // This cannot be changed once the PrivateCloud is created. - // - // *** CustomCoreCount *int `pulumi:"customCoreCount"` // The number of nodes of this type in the cluster. NodeCount int `pulumi:"nodeCount"` @@ -1133,8 +1156,6 @@ type PrivateCloudManagementClusterNodeTypeConfigArgs struct { // This number must always be one of `nodeType.availableCustomCoreCounts`. // If zero is provided max value from `nodeType.availableCustomCoreCounts` will be used. // This cannot be changed once the PrivateCloud is created. - // - // *** CustomCoreCount pulumi.IntPtrInput `pulumi:"customCoreCount"` // The number of nodes of this type in the cluster. NodeCount pulumi.IntInput `pulumi:"nodeCount"` @@ -1197,8 +1218,6 @@ func (o PrivateCloudManagementClusterNodeTypeConfigOutput) ToPrivateCloudManagem // This number must always be one of `nodeType.availableCustomCoreCounts`. // If zero is provided max value from `nodeType.availableCustomCoreCounts` will be used. // This cannot be changed once the PrivateCloud is created. -// -// *** func (o PrivateCloudManagementClusterNodeTypeConfigOutput) CustomCoreCount() pulumi.IntPtrOutput { return o.ApplyT(func(v PrivateCloudManagementClusterNodeTypeConfig) *int { return v.CustomCoreCount }).(pulumi.IntPtrOutput) } @@ -1233,6 +1252,170 @@ func (o PrivateCloudManagementClusterNodeTypeConfigArrayOutput) Index(i pulumi.I }).(PrivateCloudManagementClusterNodeTypeConfigOutput) } +type PrivateCloudManagementClusterStretchedClusterConfig struct { + // Zone that will remain operational when connection between the two zones is lost. + PreferredLocation *string `pulumi:"preferredLocation"` + // Additional zone for a higher level of availability and load balancing. + // + // *** + SecondaryLocation *string `pulumi:"secondaryLocation"` +} + +// PrivateCloudManagementClusterStretchedClusterConfigInput is an input type that accepts PrivateCloudManagementClusterStretchedClusterConfigArgs and PrivateCloudManagementClusterStretchedClusterConfigOutput values. +// You can construct a concrete instance of `PrivateCloudManagementClusterStretchedClusterConfigInput` via: +// +// PrivateCloudManagementClusterStretchedClusterConfigArgs{...} +type PrivateCloudManagementClusterStretchedClusterConfigInput interface { + pulumi.Input + + ToPrivateCloudManagementClusterStretchedClusterConfigOutput() PrivateCloudManagementClusterStretchedClusterConfigOutput + ToPrivateCloudManagementClusterStretchedClusterConfigOutputWithContext(context.Context) PrivateCloudManagementClusterStretchedClusterConfigOutput +} + +type PrivateCloudManagementClusterStretchedClusterConfigArgs struct { + // Zone that will remain operational when connection between the two zones is lost. + PreferredLocation pulumi.StringPtrInput `pulumi:"preferredLocation"` + // Additional zone for a higher level of availability and load balancing. + // + // *** + SecondaryLocation pulumi.StringPtrInput `pulumi:"secondaryLocation"` +} + +func (PrivateCloudManagementClusterStretchedClusterConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*PrivateCloudManagementClusterStretchedClusterConfig)(nil)).Elem() +} + +func (i PrivateCloudManagementClusterStretchedClusterConfigArgs) ToPrivateCloudManagementClusterStretchedClusterConfigOutput() PrivateCloudManagementClusterStretchedClusterConfigOutput { + return i.ToPrivateCloudManagementClusterStretchedClusterConfigOutputWithContext(context.Background()) +} + +func (i PrivateCloudManagementClusterStretchedClusterConfigArgs) ToPrivateCloudManagementClusterStretchedClusterConfigOutputWithContext(ctx context.Context) PrivateCloudManagementClusterStretchedClusterConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(PrivateCloudManagementClusterStretchedClusterConfigOutput) +} + +func (i PrivateCloudManagementClusterStretchedClusterConfigArgs) ToPrivateCloudManagementClusterStretchedClusterConfigPtrOutput() PrivateCloudManagementClusterStretchedClusterConfigPtrOutput { + return i.ToPrivateCloudManagementClusterStretchedClusterConfigPtrOutputWithContext(context.Background()) +} + +func (i PrivateCloudManagementClusterStretchedClusterConfigArgs) ToPrivateCloudManagementClusterStretchedClusterConfigPtrOutputWithContext(ctx context.Context) PrivateCloudManagementClusterStretchedClusterConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(PrivateCloudManagementClusterStretchedClusterConfigOutput).ToPrivateCloudManagementClusterStretchedClusterConfigPtrOutputWithContext(ctx) +} + +// PrivateCloudManagementClusterStretchedClusterConfigPtrInput is an input type that accepts PrivateCloudManagementClusterStretchedClusterConfigArgs, PrivateCloudManagementClusterStretchedClusterConfigPtr and PrivateCloudManagementClusterStretchedClusterConfigPtrOutput values. +// You can construct a concrete instance of `PrivateCloudManagementClusterStretchedClusterConfigPtrInput` via: +// +// PrivateCloudManagementClusterStretchedClusterConfigArgs{...} +// +// or: +// +// nil +type PrivateCloudManagementClusterStretchedClusterConfigPtrInput interface { + pulumi.Input + + ToPrivateCloudManagementClusterStretchedClusterConfigPtrOutput() PrivateCloudManagementClusterStretchedClusterConfigPtrOutput + ToPrivateCloudManagementClusterStretchedClusterConfigPtrOutputWithContext(context.Context) PrivateCloudManagementClusterStretchedClusterConfigPtrOutput +} + +type privateCloudManagementClusterStretchedClusterConfigPtrType PrivateCloudManagementClusterStretchedClusterConfigArgs + +func PrivateCloudManagementClusterStretchedClusterConfigPtr(v *PrivateCloudManagementClusterStretchedClusterConfigArgs) PrivateCloudManagementClusterStretchedClusterConfigPtrInput { + return (*privateCloudManagementClusterStretchedClusterConfigPtrType)(v) +} + +func (*privateCloudManagementClusterStretchedClusterConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**PrivateCloudManagementClusterStretchedClusterConfig)(nil)).Elem() +} + +func (i *privateCloudManagementClusterStretchedClusterConfigPtrType) ToPrivateCloudManagementClusterStretchedClusterConfigPtrOutput() PrivateCloudManagementClusterStretchedClusterConfigPtrOutput { + return i.ToPrivateCloudManagementClusterStretchedClusterConfigPtrOutputWithContext(context.Background()) +} + +func (i *privateCloudManagementClusterStretchedClusterConfigPtrType) ToPrivateCloudManagementClusterStretchedClusterConfigPtrOutputWithContext(ctx context.Context) PrivateCloudManagementClusterStretchedClusterConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(PrivateCloudManagementClusterStretchedClusterConfigPtrOutput) +} + +type PrivateCloudManagementClusterStretchedClusterConfigOutput struct{ *pulumi.OutputState } + +func (PrivateCloudManagementClusterStretchedClusterConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*PrivateCloudManagementClusterStretchedClusterConfig)(nil)).Elem() +} + +func (o PrivateCloudManagementClusterStretchedClusterConfigOutput) ToPrivateCloudManagementClusterStretchedClusterConfigOutput() PrivateCloudManagementClusterStretchedClusterConfigOutput { + return o +} + +func (o PrivateCloudManagementClusterStretchedClusterConfigOutput) ToPrivateCloudManagementClusterStretchedClusterConfigOutputWithContext(ctx context.Context) PrivateCloudManagementClusterStretchedClusterConfigOutput { + return o +} + +func (o PrivateCloudManagementClusterStretchedClusterConfigOutput) ToPrivateCloudManagementClusterStretchedClusterConfigPtrOutput() PrivateCloudManagementClusterStretchedClusterConfigPtrOutput { + return o.ToPrivateCloudManagementClusterStretchedClusterConfigPtrOutputWithContext(context.Background()) +} + +func (o PrivateCloudManagementClusterStretchedClusterConfigOutput) ToPrivateCloudManagementClusterStretchedClusterConfigPtrOutputWithContext(ctx context.Context) PrivateCloudManagementClusterStretchedClusterConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v PrivateCloudManagementClusterStretchedClusterConfig) *PrivateCloudManagementClusterStretchedClusterConfig { + return &v + }).(PrivateCloudManagementClusterStretchedClusterConfigPtrOutput) +} + +// Zone that will remain operational when connection between the two zones is lost. +func (o PrivateCloudManagementClusterStretchedClusterConfigOutput) PreferredLocation() pulumi.StringPtrOutput { + return o.ApplyT(func(v PrivateCloudManagementClusterStretchedClusterConfig) *string { return v.PreferredLocation }).(pulumi.StringPtrOutput) +} + +// Additional zone for a higher level of availability and load balancing. +// +// *** +func (o PrivateCloudManagementClusterStretchedClusterConfigOutput) SecondaryLocation() pulumi.StringPtrOutput { + return o.ApplyT(func(v PrivateCloudManagementClusterStretchedClusterConfig) *string { return v.SecondaryLocation }).(pulumi.StringPtrOutput) +} + +type PrivateCloudManagementClusterStretchedClusterConfigPtrOutput struct{ *pulumi.OutputState } + +func (PrivateCloudManagementClusterStretchedClusterConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**PrivateCloudManagementClusterStretchedClusterConfig)(nil)).Elem() +} + +func (o PrivateCloudManagementClusterStretchedClusterConfigPtrOutput) ToPrivateCloudManagementClusterStretchedClusterConfigPtrOutput() PrivateCloudManagementClusterStretchedClusterConfigPtrOutput { + return o +} + +func (o PrivateCloudManagementClusterStretchedClusterConfigPtrOutput) ToPrivateCloudManagementClusterStretchedClusterConfigPtrOutputWithContext(ctx context.Context) PrivateCloudManagementClusterStretchedClusterConfigPtrOutput { + return o +} + +func (o PrivateCloudManagementClusterStretchedClusterConfigPtrOutput) Elem() PrivateCloudManagementClusterStretchedClusterConfigOutput { + return o.ApplyT(func(v *PrivateCloudManagementClusterStretchedClusterConfig) PrivateCloudManagementClusterStretchedClusterConfig { + if v != nil { + return *v + } + var ret PrivateCloudManagementClusterStretchedClusterConfig + return ret + }).(PrivateCloudManagementClusterStretchedClusterConfigOutput) +} + +// Zone that will remain operational when connection between the two zones is lost. +func (o PrivateCloudManagementClusterStretchedClusterConfigPtrOutput) PreferredLocation() pulumi.StringPtrOutput { + return o.ApplyT(func(v *PrivateCloudManagementClusterStretchedClusterConfig) *string { + if v == nil { + return nil + } + return v.PreferredLocation + }).(pulumi.StringPtrOutput) +} + +// Additional zone for a higher level of availability and load balancing. +// +// *** +func (o PrivateCloudManagementClusterStretchedClusterConfigPtrOutput) SecondaryLocation() pulumi.StringPtrOutput { + return o.ApplyT(func(v *PrivateCloudManagementClusterStretchedClusterConfig) *string { + if v == nil { + return nil + } + return v.SecondaryLocation + }).(pulumi.StringPtrOutput) +} + type PrivateCloudNetworkConfig struct { // (Output) // DNS Server IP of the Private Cloud. @@ -2645,6 +2828,8 @@ type GetPrivateCloudManagementCluster struct { // The map of cluster node types in this cluster, // where the key is canonical identifier of the node type (corresponds to the NodeType). NodeTypeConfigs []GetPrivateCloudManagementClusterNodeTypeConfig `pulumi:"nodeTypeConfigs"` + // The stretched cluster configuration for the private cloud. + StretchedClusterConfigs []GetPrivateCloudManagementClusterStretchedClusterConfig `pulumi:"stretchedClusterConfigs"` } // GetPrivateCloudManagementClusterInput is an input type that accepts GetPrivateCloudManagementClusterArgs and GetPrivateCloudManagementClusterOutput values. @@ -2669,6 +2854,8 @@ type GetPrivateCloudManagementClusterArgs struct { // The map of cluster node types in this cluster, // where the key is canonical identifier of the node type (corresponds to the NodeType). NodeTypeConfigs GetPrivateCloudManagementClusterNodeTypeConfigArrayInput `pulumi:"nodeTypeConfigs"` + // The stretched cluster configuration for the private cloud. + StretchedClusterConfigs GetPrivateCloudManagementClusterStretchedClusterConfigArrayInput `pulumi:"stretchedClusterConfigs"` } func (GetPrivateCloudManagementClusterArgs) ElementType() reflect.Type { @@ -2740,6 +2927,13 @@ func (o GetPrivateCloudManagementClusterOutput) NodeTypeConfigs() GetPrivateClou }).(GetPrivateCloudManagementClusterNodeTypeConfigArrayOutput) } +// The stretched cluster configuration for the private cloud. +func (o GetPrivateCloudManagementClusterOutput) StretchedClusterConfigs() GetPrivateCloudManagementClusterStretchedClusterConfigArrayOutput { + return o.ApplyT(func(v GetPrivateCloudManagementCluster) []GetPrivateCloudManagementClusterStretchedClusterConfig { + return v.StretchedClusterConfigs + }).(GetPrivateCloudManagementClusterStretchedClusterConfigArrayOutput) +} + type GetPrivateCloudManagementClusterArrayOutput struct{ *pulumi.OutputState } func (GetPrivateCloudManagementClusterArrayOutput) ElementType() reflect.Type { @@ -2881,6 +3075,112 @@ func (o GetPrivateCloudManagementClusterNodeTypeConfigArrayOutput) Index(i pulum }).(GetPrivateCloudManagementClusterNodeTypeConfigOutput) } +type GetPrivateCloudManagementClusterStretchedClusterConfig struct { + // Zone that will remain operational when connection between the two zones is lost. + PreferredLocation string `pulumi:"preferredLocation"` + // Additional zone for a higher level of availability and load balancing. + SecondaryLocation string `pulumi:"secondaryLocation"` +} + +// GetPrivateCloudManagementClusterStretchedClusterConfigInput is an input type that accepts GetPrivateCloudManagementClusterStretchedClusterConfigArgs and GetPrivateCloudManagementClusterStretchedClusterConfigOutput values. +// You can construct a concrete instance of `GetPrivateCloudManagementClusterStretchedClusterConfigInput` via: +// +// GetPrivateCloudManagementClusterStretchedClusterConfigArgs{...} +type GetPrivateCloudManagementClusterStretchedClusterConfigInput interface { + pulumi.Input + + ToGetPrivateCloudManagementClusterStretchedClusterConfigOutput() GetPrivateCloudManagementClusterStretchedClusterConfigOutput + ToGetPrivateCloudManagementClusterStretchedClusterConfigOutputWithContext(context.Context) GetPrivateCloudManagementClusterStretchedClusterConfigOutput +} + +type GetPrivateCloudManagementClusterStretchedClusterConfigArgs struct { + // Zone that will remain operational when connection between the two zones is lost. + PreferredLocation pulumi.StringInput `pulumi:"preferredLocation"` + // Additional zone for a higher level of availability and load balancing. + SecondaryLocation pulumi.StringInput `pulumi:"secondaryLocation"` +} + +func (GetPrivateCloudManagementClusterStretchedClusterConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetPrivateCloudManagementClusterStretchedClusterConfig)(nil)).Elem() +} + +func (i GetPrivateCloudManagementClusterStretchedClusterConfigArgs) ToGetPrivateCloudManagementClusterStretchedClusterConfigOutput() GetPrivateCloudManagementClusterStretchedClusterConfigOutput { + return i.ToGetPrivateCloudManagementClusterStretchedClusterConfigOutputWithContext(context.Background()) +} + +func (i GetPrivateCloudManagementClusterStretchedClusterConfigArgs) ToGetPrivateCloudManagementClusterStretchedClusterConfigOutputWithContext(ctx context.Context) GetPrivateCloudManagementClusterStretchedClusterConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetPrivateCloudManagementClusterStretchedClusterConfigOutput) +} + +// GetPrivateCloudManagementClusterStretchedClusterConfigArrayInput is an input type that accepts GetPrivateCloudManagementClusterStretchedClusterConfigArray and GetPrivateCloudManagementClusterStretchedClusterConfigArrayOutput values. +// You can construct a concrete instance of `GetPrivateCloudManagementClusterStretchedClusterConfigArrayInput` via: +// +// GetPrivateCloudManagementClusterStretchedClusterConfigArray{ GetPrivateCloudManagementClusterStretchedClusterConfigArgs{...} } +type GetPrivateCloudManagementClusterStretchedClusterConfigArrayInput interface { + pulumi.Input + + ToGetPrivateCloudManagementClusterStretchedClusterConfigArrayOutput() GetPrivateCloudManagementClusterStretchedClusterConfigArrayOutput + ToGetPrivateCloudManagementClusterStretchedClusterConfigArrayOutputWithContext(context.Context) GetPrivateCloudManagementClusterStretchedClusterConfigArrayOutput +} + +type GetPrivateCloudManagementClusterStretchedClusterConfigArray []GetPrivateCloudManagementClusterStretchedClusterConfigInput + +func (GetPrivateCloudManagementClusterStretchedClusterConfigArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetPrivateCloudManagementClusterStretchedClusterConfig)(nil)).Elem() +} + +func (i GetPrivateCloudManagementClusterStretchedClusterConfigArray) ToGetPrivateCloudManagementClusterStretchedClusterConfigArrayOutput() GetPrivateCloudManagementClusterStretchedClusterConfigArrayOutput { + return i.ToGetPrivateCloudManagementClusterStretchedClusterConfigArrayOutputWithContext(context.Background()) +} + +func (i GetPrivateCloudManagementClusterStretchedClusterConfigArray) ToGetPrivateCloudManagementClusterStretchedClusterConfigArrayOutputWithContext(ctx context.Context) GetPrivateCloudManagementClusterStretchedClusterConfigArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetPrivateCloudManagementClusterStretchedClusterConfigArrayOutput) +} + +type GetPrivateCloudManagementClusterStretchedClusterConfigOutput struct{ *pulumi.OutputState } + +func (GetPrivateCloudManagementClusterStretchedClusterConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetPrivateCloudManagementClusterStretchedClusterConfig)(nil)).Elem() +} + +func (o GetPrivateCloudManagementClusterStretchedClusterConfigOutput) ToGetPrivateCloudManagementClusterStretchedClusterConfigOutput() GetPrivateCloudManagementClusterStretchedClusterConfigOutput { + return o +} + +func (o GetPrivateCloudManagementClusterStretchedClusterConfigOutput) ToGetPrivateCloudManagementClusterStretchedClusterConfigOutputWithContext(ctx context.Context) GetPrivateCloudManagementClusterStretchedClusterConfigOutput { + return o +} + +// Zone that will remain operational when connection between the two zones is lost. +func (o GetPrivateCloudManagementClusterStretchedClusterConfigOutput) PreferredLocation() pulumi.StringOutput { + return o.ApplyT(func(v GetPrivateCloudManagementClusterStretchedClusterConfig) string { return v.PreferredLocation }).(pulumi.StringOutput) +} + +// Additional zone for a higher level of availability and load balancing. +func (o GetPrivateCloudManagementClusterStretchedClusterConfigOutput) SecondaryLocation() pulumi.StringOutput { + return o.ApplyT(func(v GetPrivateCloudManagementClusterStretchedClusterConfig) string { return v.SecondaryLocation }).(pulumi.StringOutput) +} + +type GetPrivateCloudManagementClusterStretchedClusterConfigArrayOutput struct{ *pulumi.OutputState } + +func (GetPrivateCloudManagementClusterStretchedClusterConfigArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetPrivateCloudManagementClusterStretchedClusterConfig)(nil)).Elem() +} + +func (o GetPrivateCloudManagementClusterStretchedClusterConfigArrayOutput) ToGetPrivateCloudManagementClusterStretchedClusterConfigArrayOutput() GetPrivateCloudManagementClusterStretchedClusterConfigArrayOutput { + return o +} + +func (o GetPrivateCloudManagementClusterStretchedClusterConfigArrayOutput) ToGetPrivateCloudManagementClusterStretchedClusterConfigArrayOutputWithContext(ctx context.Context) GetPrivateCloudManagementClusterStretchedClusterConfigArrayOutput { + return o +} + +func (o GetPrivateCloudManagementClusterStretchedClusterConfigArrayOutput) Index(i pulumi.IntInput) GetPrivateCloudManagementClusterStretchedClusterConfigOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetPrivateCloudManagementClusterStretchedClusterConfig { + return vs[0].([]GetPrivateCloudManagementClusterStretchedClusterConfig)[vs[1].(int)] + }).(GetPrivateCloudManagementClusterStretchedClusterConfigOutput) +} + type GetPrivateCloudNetworkConfig struct { // DNS Server IP of the Private Cloud. DnsServerIp string `pulumi:"dnsServerIp"` @@ -3411,6 +3711,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*PrivateCloudManagementClusterPtrInput)(nil)).Elem(), PrivateCloudManagementClusterArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*PrivateCloudManagementClusterNodeTypeConfigInput)(nil)).Elem(), PrivateCloudManagementClusterNodeTypeConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*PrivateCloudManagementClusterNodeTypeConfigArrayInput)(nil)).Elem(), PrivateCloudManagementClusterNodeTypeConfigArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*PrivateCloudManagementClusterStretchedClusterConfigInput)(nil)).Elem(), PrivateCloudManagementClusterStretchedClusterConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*PrivateCloudManagementClusterStretchedClusterConfigPtrInput)(nil)).Elem(), PrivateCloudManagementClusterStretchedClusterConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*PrivateCloudNetworkConfigInput)(nil)).Elem(), PrivateCloudNetworkConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*PrivateCloudNetworkConfigPtrInput)(nil)).Elem(), PrivateCloudNetworkConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*PrivateCloudNsxInput)(nil)).Elem(), PrivateCloudNsxArgs{}) @@ -3437,6 +3739,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*GetPrivateCloudManagementClusterArrayInput)(nil)).Elem(), GetPrivateCloudManagementClusterArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetPrivateCloudManagementClusterNodeTypeConfigInput)(nil)).Elem(), GetPrivateCloudManagementClusterNodeTypeConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetPrivateCloudManagementClusterNodeTypeConfigArrayInput)(nil)).Elem(), GetPrivateCloudManagementClusterNodeTypeConfigArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetPrivateCloudManagementClusterStretchedClusterConfigInput)(nil)).Elem(), GetPrivateCloudManagementClusterStretchedClusterConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetPrivateCloudManagementClusterStretchedClusterConfigArrayInput)(nil)).Elem(), GetPrivateCloudManagementClusterStretchedClusterConfigArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetPrivateCloudNetworkConfigInput)(nil)).Elem(), GetPrivateCloudNetworkConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetPrivateCloudNetworkConfigArrayInput)(nil)).Elem(), GetPrivateCloudNetworkConfigArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetPrivateCloudNsxInput)(nil)).Elem(), GetPrivateCloudNsxArgs{}) @@ -3463,6 +3767,8 @@ func init() { pulumi.RegisterOutputType(PrivateCloudManagementClusterPtrOutput{}) pulumi.RegisterOutputType(PrivateCloudManagementClusterNodeTypeConfigOutput{}) pulumi.RegisterOutputType(PrivateCloudManagementClusterNodeTypeConfigArrayOutput{}) + pulumi.RegisterOutputType(PrivateCloudManagementClusterStretchedClusterConfigOutput{}) + pulumi.RegisterOutputType(PrivateCloudManagementClusterStretchedClusterConfigPtrOutput{}) pulumi.RegisterOutputType(PrivateCloudNetworkConfigOutput{}) pulumi.RegisterOutputType(PrivateCloudNetworkConfigPtrOutput{}) pulumi.RegisterOutputType(PrivateCloudNsxOutput{}) @@ -3489,6 +3795,8 @@ func init() { pulumi.RegisterOutputType(GetPrivateCloudManagementClusterArrayOutput{}) pulumi.RegisterOutputType(GetPrivateCloudManagementClusterNodeTypeConfigOutput{}) pulumi.RegisterOutputType(GetPrivateCloudManagementClusterNodeTypeConfigArrayOutput{}) + pulumi.RegisterOutputType(GetPrivateCloudManagementClusterStretchedClusterConfigOutput{}) + pulumi.RegisterOutputType(GetPrivateCloudManagementClusterStretchedClusterConfigArrayOutput{}) pulumi.RegisterOutputType(GetPrivateCloudNetworkConfigOutput{}) pulumi.RegisterOutputType(GetPrivateCloudNetworkConfigArrayOutput{}) pulumi.RegisterOutputType(GetPrivateCloudNsxOutput{}) diff --git a/sdk/go/gcp/workbench/instance.go b/sdk/go/gcp/workbench/instance.go index bc402020db..e86243ec80 100644 --- a/sdk/go/gcp/workbench/instance.go +++ b/sdk/go/gcp/workbench/instance.go @@ -100,8 +100,8 @@ import ( // }, // }, // VmImage: &workbench.InstanceGceSetupVmImageArgs{ -// Project: pulumi.String("deeplearning-platform-release"), -// Family: pulumi.String("tf-latest-gpu"), +// Project: pulumi.String("cloud-notebooks-managed"), +// Family: pulumi.String("workbench-instances"), // }, // }, // }) diff --git a/sdk/go/gcp/workstations/workstationCluster.go b/sdk/go/gcp/workstations/workstationCluster.go index a0ec8a3ae5..1143a92dc2 100644 --- a/sdk/go/gcp/workstations/workstationCluster.go +++ b/sdk/go/gcp/workstations/workstationCluster.go @@ -225,6 +225,9 @@ type WorkstationCluster struct { // Status conditions describing the current resource state. // Structure is documented below. Conditions WorkstationClusterConditionArrayOutput `pulumi:"conditions"` + // The private IP address of the control plane for this workstation cluster. + // Workstation VMs need access to this IP address to work with the service, so make sure that your firewall rules allow egress from the workstation VMs to this address. + ControlPlaneIp pulumi.StringOutput `pulumi:"controlPlaneIp"` // Time when this resource was created. CreateTime pulumi.StringOutput `pulumi:"createTime"` // Whether this resource is in degraded mode, in which case it may require user action to restore full functionality. @@ -325,6 +328,9 @@ type workstationClusterState struct { // Status conditions describing the current resource state. // Structure is documented below. Conditions []WorkstationClusterCondition `pulumi:"conditions"` + // The private IP address of the control plane for this workstation cluster. + // Workstation VMs need access to this IP address to work with the service, so make sure that your firewall rules allow egress from the workstation VMs to this address. + ControlPlaneIp *string `pulumi:"controlPlaneIp"` // Time when this resource was created. CreateTime *string `pulumi:"createTime"` // Whether this resource is in degraded mode, in which case it may require user action to restore full functionality. @@ -382,6 +388,9 @@ type WorkstationClusterState struct { // Status conditions describing the current resource state. // Structure is documented below. Conditions WorkstationClusterConditionArrayInput + // The private IP address of the control plane for this workstation cluster. + // Workstation VMs need access to this IP address to work with the service, so make sure that your firewall rules allow egress from the workstation VMs to this address. + ControlPlaneIp pulumi.StringPtrInput // Time when this resource was created. CreateTime pulumi.StringPtrInput // Whether this resource is in degraded mode, in which case it may require user action to restore full functionality. @@ -604,6 +613,12 @@ func (o WorkstationClusterOutput) Conditions() WorkstationClusterConditionArrayO return o.ApplyT(func(v *WorkstationCluster) WorkstationClusterConditionArrayOutput { return v.Conditions }).(WorkstationClusterConditionArrayOutput) } +// The private IP address of the control plane for this workstation cluster. +// Workstation VMs need access to this IP address to work with the service, so make sure that your firewall rules allow egress from the workstation VMs to this address. +func (o WorkstationClusterOutput) ControlPlaneIp() pulumi.StringOutput { + return o.ApplyT(func(v *WorkstationCluster) pulumi.StringOutput { return v.ControlPlaneIp }).(pulumi.StringOutput) +} + // Time when this resource was created. func (o WorkstationClusterOutput) CreateTime() pulumi.StringOutput { return o.ApplyT(func(v *WorkstationCluster) pulumi.StringOutput { return v.CreateTime }).(pulumi.StringOutput) diff --git a/sdk/java/src/main/java/com/pulumi/gcp/apigee/Organization.java b/sdk/java/src/main/java/com/pulumi/gcp/apigee/Organization.java index 5c1b9cf59a..f05022aa20 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/apigee/Organization.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/apigee/Organization.java @@ -324,6 +324,38 @@ public class Organization extends com.pulumi.resources.CustomResource { public Output> analyticsRegion() { return Codegen.optional(this.analyticsRegion); } + /** + * Cloud KMS key name used for encrypting API consumer data. + * + */ + @Export(name="apiConsumerDataEncryptionKeyName", refs={String.class}, tree="[0]") + private Output apiConsumerDataEncryptionKeyName; + + /** + * @return Cloud KMS key name used for encrypting API consumer data. + * + */ + public Output> apiConsumerDataEncryptionKeyName() { + return Codegen.optional(this.apiConsumerDataEncryptionKeyName); + } + /** + * This field is needed only for customers using non-default data residency regions. + * Apigee stores some control plane data only in single region. + * This field determines which single region Apigee should use. + * + */ + @Export(name="apiConsumerDataLocation", refs={String.class}, tree="[0]") + private Output apiConsumerDataLocation; + + /** + * @return This field is needed only for customers using non-default data residency regions. + * Apigee stores some control plane data only in single region. + * This field determines which single region Apigee should use. + * + */ + public Output> apiConsumerDataLocation() { + return Codegen.optional(this.apiConsumerDataLocation); + } /** * Output only. Project ID of the Apigee Tenant Project. * @@ -386,6 +418,22 @@ public Output billingType() { public Output caCertificate() { return this.caCertificate; } + /** + * Cloud KMS key name used for encrypting control plane data that is stored in a multi region. + * Only used for the data residency region "US" or "EU". + * + */ + @Export(name="controlPlaneEncryptionKeyName", refs={String.class}, tree="[0]") + private Output controlPlaneEncryptionKeyName; + + /** + * @return Cloud KMS key name used for encrypting control plane data that is stored in a multi region. + * Only used for the data residency region "US" or "EU". + * + */ + public Output> controlPlaneEncryptionKeyName() { + return Codegen.optional(this.controlPlaneEncryptionKeyName); + } /** * Description of the Apigee organization. * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/apigee/OrganizationArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/apigee/OrganizationArgs.java index 21255f3997..e0123f0719 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/apigee/OrganizationArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/apigee/OrganizationArgs.java @@ -33,6 +33,40 @@ public Optional> analyticsRegion() { return Optional.ofNullable(this.analyticsRegion); } + /** + * Cloud KMS key name used for encrypting API consumer data. + * + */ + @Import(name="apiConsumerDataEncryptionKeyName") + private @Nullable Output apiConsumerDataEncryptionKeyName; + + /** + * @return Cloud KMS key name used for encrypting API consumer data. + * + */ + public Optional> apiConsumerDataEncryptionKeyName() { + return Optional.ofNullable(this.apiConsumerDataEncryptionKeyName); + } + + /** + * This field is needed only for customers using non-default data residency regions. + * Apigee stores some control plane data only in single region. + * This field determines which single region Apigee should use. + * + */ + @Import(name="apiConsumerDataLocation") + private @Nullable Output apiConsumerDataLocation; + + /** + * @return This field is needed only for customers using non-default data residency regions. + * Apigee stores some control plane data only in single region. + * This field determines which single region Apigee should use. + * + */ + public Optional> apiConsumerDataLocation() { + return Optional.ofNullable(this.apiConsumerDataLocation); + } + /** * Compute Engine network used for Service Networking to be peered with Apigee runtime instances. * See [Getting started with the Service Networking API](https://cloud.google.com/service-infrastructure/docs/service-networking/getting-started). @@ -67,6 +101,23 @@ public Optional> billingType() { return Optional.ofNullable(this.billingType); } + /** + * Cloud KMS key name used for encrypting control plane data that is stored in a multi region. + * Only used for the data residency region "US" or "EU". + * + */ + @Import(name="controlPlaneEncryptionKeyName") + private @Nullable Output controlPlaneEncryptionKeyName; + + /** + * @return Cloud KMS key name used for encrypting control plane data that is stored in a multi region. + * Only used for the data residency region "US" or "EU". + * + */ + public Optional> controlPlaneEncryptionKeyName() { + return Optional.ofNullable(this.controlPlaneEncryptionKeyName); + } + /** * Description of the Apigee organization. * @@ -225,8 +276,11 @@ private OrganizationArgs() {} private OrganizationArgs(OrganizationArgs $) { this.analyticsRegion = $.analyticsRegion; + this.apiConsumerDataEncryptionKeyName = $.apiConsumerDataEncryptionKeyName; + this.apiConsumerDataLocation = $.apiConsumerDataLocation; this.authorizedNetwork = $.authorizedNetwork; this.billingType = $.billingType; + this.controlPlaneEncryptionKeyName = $.controlPlaneEncryptionKeyName; this.description = $.description; this.disableVpcPeering = $.disableVpcPeering; this.displayName = $.displayName; @@ -276,6 +330,52 @@ public Builder analyticsRegion(String analyticsRegion) { return analyticsRegion(Output.of(analyticsRegion)); } + /** + * @param apiConsumerDataEncryptionKeyName Cloud KMS key name used for encrypting API consumer data. + * + * @return builder + * + */ + public Builder apiConsumerDataEncryptionKeyName(@Nullable Output apiConsumerDataEncryptionKeyName) { + $.apiConsumerDataEncryptionKeyName = apiConsumerDataEncryptionKeyName; + return this; + } + + /** + * @param apiConsumerDataEncryptionKeyName Cloud KMS key name used for encrypting API consumer data. + * + * @return builder + * + */ + public Builder apiConsumerDataEncryptionKeyName(String apiConsumerDataEncryptionKeyName) { + return apiConsumerDataEncryptionKeyName(Output.of(apiConsumerDataEncryptionKeyName)); + } + + /** + * @param apiConsumerDataLocation This field is needed only for customers using non-default data residency regions. + * Apigee stores some control plane data only in single region. + * This field determines which single region Apigee should use. + * + * @return builder + * + */ + public Builder apiConsumerDataLocation(@Nullable Output apiConsumerDataLocation) { + $.apiConsumerDataLocation = apiConsumerDataLocation; + return this; + } + + /** + * @param apiConsumerDataLocation This field is needed only for customers using non-default data residency regions. + * Apigee stores some control plane data only in single region. + * This field determines which single region Apigee should use. + * + * @return builder + * + */ + public Builder apiConsumerDataLocation(String apiConsumerDataLocation) { + return apiConsumerDataLocation(Output.of(apiConsumerDataLocation)); + } + /** * @param authorizedNetwork Compute Engine network used for Service Networking to be peered with Apigee runtime instances. * See [Getting started with the Service Networking API](https://cloud.google.com/service-infrastructure/docs/service-networking/getting-started). @@ -322,6 +422,29 @@ public Builder billingType(String billingType) { return billingType(Output.of(billingType)); } + /** + * @param controlPlaneEncryptionKeyName Cloud KMS key name used for encrypting control plane data that is stored in a multi region. + * Only used for the data residency region "US" or "EU". + * + * @return builder + * + */ + public Builder controlPlaneEncryptionKeyName(@Nullable Output controlPlaneEncryptionKeyName) { + $.controlPlaneEncryptionKeyName = controlPlaneEncryptionKeyName; + return this; + } + + /** + * @param controlPlaneEncryptionKeyName Cloud KMS key name used for encrypting control plane data that is stored in a multi region. + * Only used for the data residency region "US" or "EU". + * + * @return builder + * + */ + public Builder controlPlaneEncryptionKeyName(String controlPlaneEncryptionKeyName) { + return controlPlaneEncryptionKeyName(Output.of(controlPlaneEncryptionKeyName)); + } + /** * @param description Description of the Apigee organization. * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/apigee/inputs/OrganizationState.java b/sdk/java/src/main/java/com/pulumi/gcp/apigee/inputs/OrganizationState.java index 78f8dfc613..94495fc9b5 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/apigee/inputs/OrganizationState.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/apigee/inputs/OrganizationState.java @@ -32,6 +32,40 @@ public Optional> analyticsRegion() { return Optional.ofNullable(this.analyticsRegion); } + /** + * Cloud KMS key name used for encrypting API consumer data. + * + */ + @Import(name="apiConsumerDataEncryptionKeyName") + private @Nullable Output apiConsumerDataEncryptionKeyName; + + /** + * @return Cloud KMS key name used for encrypting API consumer data. + * + */ + public Optional> apiConsumerDataEncryptionKeyName() { + return Optional.ofNullable(this.apiConsumerDataEncryptionKeyName); + } + + /** + * This field is needed only for customers using non-default data residency regions. + * Apigee stores some control plane data only in single region. + * This field determines which single region Apigee should use. + * + */ + @Import(name="apiConsumerDataLocation") + private @Nullable Output apiConsumerDataLocation; + + /** + * @return This field is needed only for customers using non-default data residency regions. + * Apigee stores some control plane data only in single region. + * This field determines which single region Apigee should use. + * + */ + public Optional> apiConsumerDataLocation() { + return Optional.ofNullable(this.apiConsumerDataLocation); + } + /** * Output only. Project ID of the Apigee Tenant Project. * @@ -98,6 +132,23 @@ public Optional> caCertificate() { return Optional.ofNullable(this.caCertificate); } + /** + * Cloud KMS key name used for encrypting control plane data that is stored in a multi region. + * Only used for the data residency region "US" or "EU". + * + */ + @Import(name="controlPlaneEncryptionKeyName") + private @Nullable Output controlPlaneEncryptionKeyName; + + /** + * @return Cloud KMS key name used for encrypting control plane data that is stored in a multi region. + * Only used for the data residency region "US" or "EU". + * + */ + public Optional> controlPlaneEncryptionKeyName() { + return Optional.ofNullable(this.controlPlaneEncryptionKeyName); + } + /** * Description of the Apigee organization. * @@ -288,10 +339,13 @@ private OrganizationState() {} private OrganizationState(OrganizationState $) { this.analyticsRegion = $.analyticsRegion; + this.apiConsumerDataEncryptionKeyName = $.apiConsumerDataEncryptionKeyName; + this.apiConsumerDataLocation = $.apiConsumerDataLocation; this.apigeeProjectId = $.apigeeProjectId; this.authorizedNetwork = $.authorizedNetwork; this.billingType = $.billingType; this.caCertificate = $.caCertificate; + this.controlPlaneEncryptionKeyName = $.controlPlaneEncryptionKeyName; this.description = $.description; this.disableVpcPeering = $.disableVpcPeering; this.displayName = $.displayName; @@ -343,6 +397,52 @@ public Builder analyticsRegion(String analyticsRegion) { return analyticsRegion(Output.of(analyticsRegion)); } + /** + * @param apiConsumerDataEncryptionKeyName Cloud KMS key name used for encrypting API consumer data. + * + * @return builder + * + */ + public Builder apiConsumerDataEncryptionKeyName(@Nullable Output apiConsumerDataEncryptionKeyName) { + $.apiConsumerDataEncryptionKeyName = apiConsumerDataEncryptionKeyName; + return this; + } + + /** + * @param apiConsumerDataEncryptionKeyName Cloud KMS key name used for encrypting API consumer data. + * + * @return builder + * + */ + public Builder apiConsumerDataEncryptionKeyName(String apiConsumerDataEncryptionKeyName) { + return apiConsumerDataEncryptionKeyName(Output.of(apiConsumerDataEncryptionKeyName)); + } + + /** + * @param apiConsumerDataLocation This field is needed only for customers using non-default data residency regions. + * Apigee stores some control plane data only in single region. + * This field determines which single region Apigee should use. + * + * @return builder + * + */ + public Builder apiConsumerDataLocation(@Nullable Output apiConsumerDataLocation) { + $.apiConsumerDataLocation = apiConsumerDataLocation; + return this; + } + + /** + * @param apiConsumerDataLocation This field is needed only for customers using non-default data residency regions. + * Apigee stores some control plane data only in single region. + * This field determines which single region Apigee should use. + * + * @return builder + * + */ + public Builder apiConsumerDataLocation(String apiConsumerDataLocation) { + return apiConsumerDataLocation(Output.of(apiConsumerDataLocation)); + } + /** * @param apigeeProjectId Output only. Project ID of the Apigee Tenant Project. * @@ -433,6 +533,29 @@ public Builder caCertificate(String caCertificate) { return caCertificate(Output.of(caCertificate)); } + /** + * @param controlPlaneEncryptionKeyName Cloud KMS key name used for encrypting control plane data that is stored in a multi region. + * Only used for the data residency region "US" or "EU". + * + * @return builder + * + */ + public Builder controlPlaneEncryptionKeyName(@Nullable Output controlPlaneEncryptionKeyName) { + $.controlPlaneEncryptionKeyName = controlPlaneEncryptionKeyName; + return this; + } + + /** + * @param controlPlaneEncryptionKeyName Cloud KMS key name used for encrypting control plane data that is stored in a multi region. + * Only used for the data residency region "US" or "EU". + * + * @return builder + * + */ + public Builder controlPlaneEncryptionKeyName(String controlPlaneEncryptionKeyName) { + return controlPlaneEncryptionKeyName(Output.of(controlPlaneEncryptionKeyName)); + } + /** * @param description Description of the Apigee organization. * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/Repository.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/Repository.java index dfc0247bd5..3691c68886 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/Repository.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/Repository.java @@ -432,7 +432,7 @@ * } * ``` * <!--End PulumiCodeChooser --> - * ### Artifact Registry Repository Remote Custom + * ### Artifact Registry Repository Remote Dockerhub Auth * * <!--Start PulumiCodeChooser --> * ```java @@ -472,39 +472,384 @@ * public static void stack(Context ctx) { * final var project = OrganizationsFunctions.getProject(); * - * var example_custom_remote_secret = new Secret("example-custom-remote-secret", SecretArgs.builder() + * var example_remote_secret = new Secret("example-remote-secret", SecretArgs.builder() * .secretId("example-secret") * .replication(SecretReplicationArgs.builder() * .auto() * .build()) * .build()); * - * var example_custom_remote_secretVersion = new SecretVersion("example-custom-remote-secretVersion", SecretVersionArgs.builder() - * .secret(example_custom_remote_secret.id()) + * var example_remote_secretVersion = new SecretVersion("example-remote-secretVersion", SecretVersionArgs.builder() + * .secret(example_remote_secret.id()) * .secretData("remote-password") * .build()); * * var secret_access = new SecretIamMember("secret-access", SecretIamMemberArgs.builder() - * .secretId(example_custom_remote_secret.id()) + * .secretId(example_remote_secret.id()) * .role("roles/secretmanager.secretAccessor") * .member(String.format("serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com", project.applyValue(getProjectResult -> getProjectResult.number()))) * .build()); * * var my_repo = new Repository("my-repo", RepositoryArgs.builder() * .location("us-central1") - * .repositoryId("example-custom-remote") - * .description("example remote docker repository with credentials") + * .repositoryId("example-dockerhub-remote") + * .description("example remote dockerhub repository with credentials") * .format("DOCKER") * .mode("REMOTE_REPOSITORY") * .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder() * .description("docker hub with custom credentials") + * .disableUpstreamValidation(true) * .dockerRepository(RepositoryRemoteRepositoryConfigDockerRepositoryArgs.builder() * .publicRepository("DOCKER_HUB") * .build()) * .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder() * .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder() * .username("remote-username") - * .passwordSecretVersion(example_custom_remote_secretVersion.name()) + * .passwordSecretVersion(example_remote_secretVersion.name()) + * .build()) + * .build()) + * .build()) + * .build()); + * + * } + * } + * ``` + * <!--End PulumiCodeChooser --> + * ### Artifact Registry Repository Remote Docker Custom With Auth + * + * <!--Start PulumiCodeChooser --> + * ```java + * package generated_program; + * + * import com.pulumi.Context; + * import com.pulumi.Pulumi; + * import com.pulumi.core.Output; + * import com.pulumi.gcp.organizations.OrganizationsFunctions; + * import com.pulumi.gcp.organizations.inputs.GetProjectArgs; + * import com.pulumi.gcp.secretmanager.Secret; + * import com.pulumi.gcp.secretmanager.SecretArgs; + * import com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs; + * import com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs; + * import com.pulumi.gcp.secretmanager.SecretVersion; + * import com.pulumi.gcp.secretmanager.SecretVersionArgs; + * import com.pulumi.gcp.secretmanager.SecretIamMember; + * import com.pulumi.gcp.secretmanager.SecretIamMemberArgs; + * import com.pulumi.gcp.artifactregistry.Repository; + * import com.pulumi.gcp.artifactregistry.RepositoryArgs; + * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs; + * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs; + * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs; + * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs; + * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs; + * import java.util.List; + * import java.util.ArrayList; + * import java.util.Map; + * import java.io.File; + * import java.nio.file.Files; + * import java.nio.file.Paths; + * + * public class App { + * public static void main(String[] args) { + * Pulumi.run(App::stack); + * } + * + * public static void stack(Context ctx) { + * final var project = OrganizationsFunctions.getProject(); + * + * var example_remote_secret = new Secret("example-remote-secret", SecretArgs.builder() + * .secretId("example-secret") + * .replication(SecretReplicationArgs.builder() + * .auto() + * .build()) + * .build()); + * + * var example_remote_secretVersion = new SecretVersion("example-remote-secretVersion", SecretVersionArgs.builder() + * .secret(example_remote_secret.id()) + * .secretData("remote-password") + * .build()); + * + * var secret_access = new SecretIamMember("secret-access", SecretIamMemberArgs.builder() + * .secretId(example_remote_secret.id()) + * .role("roles/secretmanager.secretAccessor") + * .member(String.format("serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com", project.applyValue(getProjectResult -> getProjectResult.number()))) + * .build()); + * + * var my_repo = new Repository("my-repo", RepositoryArgs.builder() + * .location("us-central1") + * .repositoryId("example-docker-custom-remote") + * .description("example remote custom docker repository with credentials") + * .format("DOCKER") + * .mode("REMOTE_REPOSITORY") + * .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder() + * .description("custom docker remote with credentials") + * .disableUpstreamValidation(true) + * .dockerRepository(RepositoryRemoteRepositoryConfigDockerRepositoryArgs.builder() + * .customRepository(RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs.builder() + * .uri("https://registry-1.docker.io") + * .build()) + * .build()) + * .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder() + * .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder() + * .username("remote-username") + * .passwordSecretVersion(example_remote_secretVersion.name()) + * .build()) + * .build()) + * .build()) + * .build()); + * + * } + * } + * ``` + * <!--End PulumiCodeChooser --> + * ### Artifact Registry Repository Remote Maven Custom With Auth + * + * <!--Start PulumiCodeChooser --> + * ```java + * package generated_program; + * + * import com.pulumi.Context; + * import com.pulumi.Pulumi; + * import com.pulumi.core.Output; + * import com.pulumi.gcp.organizations.OrganizationsFunctions; + * import com.pulumi.gcp.organizations.inputs.GetProjectArgs; + * import com.pulumi.gcp.secretmanager.Secret; + * import com.pulumi.gcp.secretmanager.SecretArgs; + * import com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs; + * import com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs; + * import com.pulumi.gcp.secretmanager.SecretVersion; + * import com.pulumi.gcp.secretmanager.SecretVersionArgs; + * import com.pulumi.gcp.secretmanager.SecretIamMember; + * import com.pulumi.gcp.secretmanager.SecretIamMemberArgs; + * import com.pulumi.gcp.artifactregistry.Repository; + * import com.pulumi.gcp.artifactregistry.RepositoryArgs; + * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs; + * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigMavenRepositoryArgs; + * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs; + * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs; + * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs; + * import java.util.List; + * import java.util.ArrayList; + * import java.util.Map; + * import java.io.File; + * import java.nio.file.Files; + * import java.nio.file.Paths; + * + * public class App { + * public static void main(String[] args) { + * Pulumi.run(App::stack); + * } + * + * public static void stack(Context ctx) { + * final var project = OrganizationsFunctions.getProject(); + * + * var example_remote_secret = new Secret("example-remote-secret", SecretArgs.builder() + * .secretId("example-secret") + * .replication(SecretReplicationArgs.builder() + * .auto() + * .build()) + * .build()); + * + * var example_remote_secretVersion = new SecretVersion("example-remote-secretVersion", SecretVersionArgs.builder() + * .secret(example_remote_secret.id()) + * .secretData("remote-password") + * .build()); + * + * var secret_access = new SecretIamMember("secret-access", SecretIamMemberArgs.builder() + * .secretId(example_remote_secret.id()) + * .role("roles/secretmanager.secretAccessor") + * .member(String.format("serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com", project.applyValue(getProjectResult -> getProjectResult.number()))) + * .build()); + * + * var my_repo = new Repository("my-repo", RepositoryArgs.builder() + * .location("us-central1") + * .repositoryId("example-maven-custom-remote") + * .description("example remote custom maven repository with credentials") + * .format("MAVEN") + * .mode("REMOTE_REPOSITORY") + * .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder() + * .description("custom maven remote with credentials") + * .disableUpstreamValidation(true) + * .mavenRepository(RepositoryRemoteRepositoryConfigMavenRepositoryArgs.builder() + * .customRepository(RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs.builder() + * .uri("https://my.maven.registry") + * .build()) + * .build()) + * .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder() + * .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder() + * .username("remote-username") + * .passwordSecretVersion(example_remote_secretVersion.name()) + * .build()) + * .build()) + * .build()) + * .build()); + * + * } + * } + * ``` + * <!--End PulumiCodeChooser --> + * ### Artifact Registry Repository Remote Npm Custom With Auth + * + * <!--Start PulumiCodeChooser --> + * ```java + * package generated_program; + * + * import com.pulumi.Context; + * import com.pulumi.Pulumi; + * import com.pulumi.core.Output; + * import com.pulumi.gcp.organizations.OrganizationsFunctions; + * import com.pulumi.gcp.organizations.inputs.GetProjectArgs; + * import com.pulumi.gcp.secretmanager.Secret; + * import com.pulumi.gcp.secretmanager.SecretArgs; + * import com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs; + * import com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs; + * import com.pulumi.gcp.secretmanager.SecretVersion; + * import com.pulumi.gcp.secretmanager.SecretVersionArgs; + * import com.pulumi.gcp.secretmanager.SecretIamMember; + * import com.pulumi.gcp.secretmanager.SecretIamMemberArgs; + * import com.pulumi.gcp.artifactregistry.Repository; + * import com.pulumi.gcp.artifactregistry.RepositoryArgs; + * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs; + * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigNpmRepositoryArgs; + * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs; + * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs; + * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs; + * import java.util.List; + * import java.util.ArrayList; + * import java.util.Map; + * import java.io.File; + * import java.nio.file.Files; + * import java.nio.file.Paths; + * + * public class App { + * public static void main(String[] args) { + * Pulumi.run(App::stack); + * } + * + * public static void stack(Context ctx) { + * final var project = OrganizationsFunctions.getProject(); + * + * var example_remote_secret = new Secret("example-remote-secret", SecretArgs.builder() + * .secretId("example-secret") + * .replication(SecretReplicationArgs.builder() + * .auto() + * .build()) + * .build()); + * + * var example_remote_secretVersion = new SecretVersion("example-remote-secretVersion", SecretVersionArgs.builder() + * .secret(example_remote_secret.id()) + * .secretData("remote-password") + * .build()); + * + * var secret_access = new SecretIamMember("secret-access", SecretIamMemberArgs.builder() + * .secretId(example_remote_secret.id()) + * .role("roles/secretmanager.secretAccessor") + * .member(String.format("serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com", project.applyValue(getProjectResult -> getProjectResult.number()))) + * .build()); + * + * var my_repo = new Repository("my-repo", RepositoryArgs.builder() + * .location("us-central1") + * .repositoryId("example-npm-custom-remote") + * .description("example remote custom npm repository with credentials") + * .format("NPM") + * .mode("REMOTE_REPOSITORY") + * .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder() + * .description("custom npm with credentials") + * .disableUpstreamValidation(true) + * .npmRepository(RepositoryRemoteRepositoryConfigNpmRepositoryArgs.builder() + * .customRepository(RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs.builder() + * .uri("https://my.npm.registry") + * .build()) + * .build()) + * .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder() + * .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder() + * .username("remote-username") + * .passwordSecretVersion(example_remote_secretVersion.name()) + * .build()) + * .build()) + * .build()) + * .build()); + * + * } + * } + * ``` + * <!--End PulumiCodeChooser --> + * ### Artifact Registry Repository Remote Python Custom With Auth + * + * <!--Start PulumiCodeChooser --> + * ```java + * package generated_program; + * + * import com.pulumi.Context; + * import com.pulumi.Pulumi; + * import com.pulumi.core.Output; + * import com.pulumi.gcp.organizations.OrganizationsFunctions; + * import com.pulumi.gcp.organizations.inputs.GetProjectArgs; + * import com.pulumi.gcp.secretmanager.Secret; + * import com.pulumi.gcp.secretmanager.SecretArgs; + * import com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs; + * import com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs; + * import com.pulumi.gcp.secretmanager.SecretVersion; + * import com.pulumi.gcp.secretmanager.SecretVersionArgs; + * import com.pulumi.gcp.secretmanager.SecretIamMember; + * import com.pulumi.gcp.secretmanager.SecretIamMemberArgs; + * import com.pulumi.gcp.artifactregistry.Repository; + * import com.pulumi.gcp.artifactregistry.RepositoryArgs; + * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs; + * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigPythonRepositoryArgs; + * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs; + * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs; + * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs; + * import java.util.List; + * import java.util.ArrayList; + * import java.util.Map; + * import java.io.File; + * import java.nio.file.Files; + * import java.nio.file.Paths; + * + * public class App { + * public static void main(String[] args) { + * Pulumi.run(App::stack); + * } + * + * public static void stack(Context ctx) { + * final var project = OrganizationsFunctions.getProject(); + * + * var example_remote_secret = new Secret("example-remote-secret", SecretArgs.builder() + * .secretId("example-secret") + * .replication(SecretReplicationArgs.builder() + * .auto() + * .build()) + * .build()); + * + * var example_remote_secretVersion = new SecretVersion("example-remote-secretVersion", SecretVersionArgs.builder() + * .secret(example_remote_secret.id()) + * .secretData("remote-password") + * .build()); + * + * var secret_access = new SecretIamMember("secret-access", SecretIamMemberArgs.builder() + * .secretId(example_remote_secret.id()) + * .role("roles/secretmanager.secretAccessor") + * .member(String.format("serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com", project.applyValue(getProjectResult -> getProjectResult.number()))) + * .build()); + * + * var my_repo = new Repository("my-repo", RepositoryArgs.builder() + * .location("us-central1") + * .repositoryId("example-python-custom-remote") + * .description("example remote custom python repository with credentials") + * .format("PYTHON") + * .mode("REMOTE_REPOSITORY") + * .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder() + * .description("custom npm with credentials") + * .disableUpstreamValidation(true) + * .pythonRepository(RepositoryRemoteRepositoryConfigPythonRepositoryArgs.builder() + * .customRepository(RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs.builder() + * .uri("https://my.python.registry") + * .build()) + * .build()) + * .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder() + * .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder() + * .username("remote-username") + * .passwordSecretVersion(example_remote_secretVersion.name()) * .build()) * .build()) * .build()) diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryRemoteRepositoryConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryRemoteRepositoryConfigArgs.java index 3011bdbcfe..8226302fa7 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryRemoteRepositoryConfigArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryRemoteRepositoryConfigArgs.java @@ -12,6 +12,7 @@ import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigPythonRepositoryArgs; import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs; import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigYumRepositoryArgs; +import java.lang.Boolean; import java.lang.String; import java.util.Objects; import java.util.Optional; @@ -54,6 +55,23 @@ public Optional> description() { return Optional.ofNullable(this.description); } + /** + * If true, the remote repository upstream and upstream credentials will + * not be validated. + * + */ + @Import(name="disableUpstreamValidation") + private @Nullable Output disableUpstreamValidation; + + /** + * @return If true, the remote repository upstream and upstream credentials will + * not be validated. + * + */ + public Optional> disableUpstreamValidation() { + return Optional.ofNullable(this.disableUpstreamValidation); + } + /** * Specific settings for a Docker remote repository. * Structure is documented below. @@ -161,6 +179,7 @@ private RepositoryRemoteRepositoryConfigArgs() {} private RepositoryRemoteRepositoryConfigArgs(RepositoryRemoteRepositoryConfigArgs $) { this.aptRepository = $.aptRepository; this.description = $.description; + this.disableUpstreamValidation = $.disableUpstreamValidation; this.dockerRepository = $.dockerRepository; this.mavenRepository = $.mavenRepository; this.npmRepository = $.npmRepository; @@ -231,6 +250,29 @@ public Builder description(String description) { return description(Output.of(description)); } + /** + * @param disableUpstreamValidation If true, the remote repository upstream and upstream credentials will + * not be validated. + * + * @return builder + * + */ + public Builder disableUpstreamValidation(@Nullable Output disableUpstreamValidation) { + $.disableUpstreamValidation = disableUpstreamValidation; + return this; + } + + /** + * @param disableUpstreamValidation If true, the remote repository upstream and upstream credentials will + * not be validated. + * + * @return builder + * + */ + public Builder disableUpstreamValidation(Boolean disableUpstreamValidation) { + return disableUpstreamValidation(Output.of(disableUpstreamValidation)); + } + /** * @param dockerRepository Specific settings for a Docker remote repository. * Structure is documented below. diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryRemoteRepositoryConfigDockerRepositoryArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryRemoteRepositoryConfigDockerRepositoryArgs.java index ac8798370a..67a434a415 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryRemoteRepositoryConfigDockerRepositoryArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryRemoteRepositoryConfigDockerRepositoryArgs.java @@ -5,6 +5,7 @@ import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; +import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs; import java.lang.String; import java.util.Objects; import java.util.Optional; @@ -15,6 +16,23 @@ public final class RepositoryRemoteRepositoryConfigDockerRepositoryArgs extends public static final RepositoryRemoteRepositoryConfigDockerRepositoryArgs Empty = new RepositoryRemoteRepositoryConfigDockerRepositoryArgs(); + /** + * Settings for a remote repository with a custom uri. + * Structure is documented below. + * + */ + @Import(name="customRepository") + private @Nullable Output customRepository; + + /** + * @return Settings for a remote repository with a custom uri. + * Structure is documented below. + * + */ + public Optional> customRepository() { + return Optional.ofNullable(this.customRepository); + } + /** * Address of the remote repository. * Default value is `DOCKER_HUB`. @@ -37,6 +55,7 @@ public Optional> publicRepository() { private RepositoryRemoteRepositoryConfigDockerRepositoryArgs() {} private RepositoryRemoteRepositoryConfigDockerRepositoryArgs(RepositoryRemoteRepositoryConfigDockerRepositoryArgs $) { + this.customRepository = $.customRepository; this.publicRepository = $.publicRepository; } @@ -58,6 +77,29 @@ public Builder(RepositoryRemoteRepositoryConfigDockerRepositoryArgs defaults) { $ = new RepositoryRemoteRepositoryConfigDockerRepositoryArgs(Objects.requireNonNull(defaults)); } + /** + * @param customRepository Settings for a remote repository with a custom uri. + * Structure is documented below. + * + * @return builder + * + */ + public Builder customRepository(@Nullable Output customRepository) { + $.customRepository = customRepository; + return this; + } + + /** + * @param customRepository Settings for a remote repository with a custom uri. + * Structure is documented below. + * + * @return builder + * + */ + public Builder customRepository(RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs customRepository) { + return customRepository(Output.of(customRepository)); + } + /** * @param publicRepository Address of the remote repository. * Default value is `DOCKER_HUB`. diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs.java new file mode 100644 index 0000000000..7d6035b61f --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs.java @@ -0,0 +1,83 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.artifactregistry.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs extends com.pulumi.resources.ResourceArgs { + + public static final RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs Empty = new RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs(); + + /** + * Specific uri to the registry, e.g. `"https://pypi.io"` + * + */ + @Import(name="uri") + private @Nullable Output uri; + + /** + * @return Specific uri to the registry, e.g. `"https://pypi.io"` + * + */ + public Optional> uri() { + return Optional.ofNullable(this.uri); + } + + private RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs() {} + + private RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs(RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs $) { + this.uri = $.uri; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs $; + + public Builder() { + $ = new RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs(); + } + + public Builder(RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs defaults) { + $ = new RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param uri Specific uri to the registry, e.g. `"https://pypi.io"` + * + * @return builder + * + */ + public Builder uri(@Nullable Output uri) { + $.uri = uri; + return this; + } + + /** + * @param uri Specific uri to the registry, e.g. `"https://pypi.io"` + * + * @return builder + * + */ + public Builder uri(String uri) { + return uri(Output.of(uri)); + } + + public RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryRemoteRepositoryConfigMavenRepositoryArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryRemoteRepositoryConfigMavenRepositoryArgs.java index f8d3ac16e4..0b59643614 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryRemoteRepositoryConfigMavenRepositoryArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryRemoteRepositoryConfigMavenRepositoryArgs.java @@ -5,6 +5,7 @@ import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; +import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs; import java.lang.String; import java.util.Objects; import java.util.Optional; @@ -15,6 +16,23 @@ public final class RepositoryRemoteRepositoryConfigMavenRepositoryArgs extends c public static final RepositoryRemoteRepositoryConfigMavenRepositoryArgs Empty = new RepositoryRemoteRepositoryConfigMavenRepositoryArgs(); + /** + * Settings for a remote repository with a custom uri. + * Structure is documented below. + * + */ + @Import(name="customRepository") + private @Nullable Output customRepository; + + /** + * @return Settings for a remote repository with a custom uri. + * Structure is documented below. + * + */ + public Optional> customRepository() { + return Optional.ofNullable(this.customRepository); + } + /** * Address of the remote repository. * Default value is `MAVEN_CENTRAL`. @@ -37,6 +55,7 @@ public Optional> publicRepository() { private RepositoryRemoteRepositoryConfigMavenRepositoryArgs() {} private RepositoryRemoteRepositoryConfigMavenRepositoryArgs(RepositoryRemoteRepositoryConfigMavenRepositoryArgs $) { + this.customRepository = $.customRepository; this.publicRepository = $.publicRepository; } @@ -58,6 +77,29 @@ public Builder(RepositoryRemoteRepositoryConfigMavenRepositoryArgs defaults) { $ = new RepositoryRemoteRepositoryConfigMavenRepositoryArgs(Objects.requireNonNull(defaults)); } + /** + * @param customRepository Settings for a remote repository with a custom uri. + * Structure is documented below. + * + * @return builder + * + */ + public Builder customRepository(@Nullable Output customRepository) { + $.customRepository = customRepository; + return this; + } + + /** + * @param customRepository Settings for a remote repository with a custom uri. + * Structure is documented below. + * + * @return builder + * + */ + public Builder customRepository(RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs customRepository) { + return customRepository(Output.of(customRepository)); + } + /** * @param publicRepository Address of the remote repository. * Default value is `MAVEN_CENTRAL`. diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs.java new file mode 100644 index 0000000000..e8a4d8e8f0 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs.java @@ -0,0 +1,83 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.artifactregistry.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs extends com.pulumi.resources.ResourceArgs { + + public static final RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs Empty = new RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs(); + + /** + * Specific uri to the registry, e.g. `"https://pypi.io"` + * + */ + @Import(name="uri") + private @Nullable Output uri; + + /** + * @return Specific uri to the registry, e.g. `"https://pypi.io"` + * + */ + public Optional> uri() { + return Optional.ofNullable(this.uri); + } + + private RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs() {} + + private RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs(RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs $) { + this.uri = $.uri; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs $; + + public Builder() { + $ = new RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs(); + } + + public Builder(RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs defaults) { + $ = new RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param uri Specific uri to the registry, e.g. `"https://pypi.io"` + * + * @return builder + * + */ + public Builder uri(@Nullable Output uri) { + $.uri = uri; + return this; + } + + /** + * @param uri Specific uri to the registry, e.g. `"https://pypi.io"` + * + * @return builder + * + */ + public Builder uri(String uri) { + return uri(Output.of(uri)); + } + + public RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryRemoteRepositoryConfigNpmRepositoryArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryRemoteRepositoryConfigNpmRepositoryArgs.java index 276c5a749c..0bca12faa6 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryRemoteRepositoryConfigNpmRepositoryArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryRemoteRepositoryConfigNpmRepositoryArgs.java @@ -5,6 +5,7 @@ import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; +import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs; import java.lang.String; import java.util.Objects; import java.util.Optional; @@ -15,6 +16,23 @@ public final class RepositoryRemoteRepositoryConfigNpmRepositoryArgs extends com public static final RepositoryRemoteRepositoryConfigNpmRepositoryArgs Empty = new RepositoryRemoteRepositoryConfigNpmRepositoryArgs(); + /** + * Settings for a remote repository with a custom uri. + * Structure is documented below. + * + */ + @Import(name="customRepository") + private @Nullable Output customRepository; + + /** + * @return Settings for a remote repository with a custom uri. + * Structure is documented below. + * + */ + public Optional> customRepository() { + return Optional.ofNullable(this.customRepository); + } + /** * Address of the remote repository. * Default value is `NPMJS`. @@ -37,6 +55,7 @@ public Optional> publicRepository() { private RepositoryRemoteRepositoryConfigNpmRepositoryArgs() {} private RepositoryRemoteRepositoryConfigNpmRepositoryArgs(RepositoryRemoteRepositoryConfigNpmRepositoryArgs $) { + this.customRepository = $.customRepository; this.publicRepository = $.publicRepository; } @@ -58,6 +77,29 @@ public Builder(RepositoryRemoteRepositoryConfigNpmRepositoryArgs defaults) { $ = new RepositoryRemoteRepositoryConfigNpmRepositoryArgs(Objects.requireNonNull(defaults)); } + /** + * @param customRepository Settings for a remote repository with a custom uri. + * Structure is documented below. + * + * @return builder + * + */ + public Builder customRepository(@Nullable Output customRepository) { + $.customRepository = customRepository; + return this; + } + + /** + * @param customRepository Settings for a remote repository with a custom uri. + * Structure is documented below. + * + * @return builder + * + */ + public Builder customRepository(RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs customRepository) { + return customRepository(Output.of(customRepository)); + } + /** * @param publicRepository Address of the remote repository. * Default value is `NPMJS`. diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs.java new file mode 100644 index 0000000000..5a4c5bfbf0 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs.java @@ -0,0 +1,83 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.artifactregistry.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs extends com.pulumi.resources.ResourceArgs { + + public static final RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs Empty = new RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs(); + + /** + * Specific uri to the registry, e.g. `"https://pypi.io"` + * + */ + @Import(name="uri") + private @Nullable Output uri; + + /** + * @return Specific uri to the registry, e.g. `"https://pypi.io"` + * + */ + public Optional> uri() { + return Optional.ofNullable(this.uri); + } + + private RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs() {} + + private RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs(RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs $) { + this.uri = $.uri; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs $; + + public Builder() { + $ = new RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs(); + } + + public Builder(RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs defaults) { + $ = new RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param uri Specific uri to the registry, e.g. `"https://pypi.io"` + * + * @return builder + * + */ + public Builder uri(@Nullable Output uri) { + $.uri = uri; + return this; + } + + /** + * @param uri Specific uri to the registry, e.g. `"https://pypi.io"` + * + * @return builder + * + */ + public Builder uri(String uri) { + return uri(Output.of(uri)); + } + + public RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryRemoteRepositoryConfigPythonRepositoryArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryRemoteRepositoryConfigPythonRepositoryArgs.java index 69b175f8f0..573f0db94f 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryRemoteRepositoryConfigPythonRepositoryArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryRemoteRepositoryConfigPythonRepositoryArgs.java @@ -5,6 +5,7 @@ import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; +import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs; import java.lang.String; import java.util.Objects; import java.util.Optional; @@ -15,6 +16,23 @@ public final class RepositoryRemoteRepositoryConfigPythonRepositoryArgs extends public static final RepositoryRemoteRepositoryConfigPythonRepositoryArgs Empty = new RepositoryRemoteRepositoryConfigPythonRepositoryArgs(); + /** + * Settings for a remote repository with a custom uri. + * Structure is documented below. + * + */ + @Import(name="customRepository") + private @Nullable Output customRepository; + + /** + * @return Settings for a remote repository with a custom uri. + * Structure is documented below. + * + */ + public Optional> customRepository() { + return Optional.ofNullable(this.customRepository); + } + /** * Address of the remote repository. * Default value is `PYPI`. @@ -37,6 +55,7 @@ public Optional> publicRepository() { private RepositoryRemoteRepositoryConfigPythonRepositoryArgs() {} private RepositoryRemoteRepositoryConfigPythonRepositoryArgs(RepositoryRemoteRepositoryConfigPythonRepositoryArgs $) { + this.customRepository = $.customRepository; this.publicRepository = $.publicRepository; } @@ -58,6 +77,29 @@ public Builder(RepositoryRemoteRepositoryConfigPythonRepositoryArgs defaults) { $ = new RepositoryRemoteRepositoryConfigPythonRepositoryArgs(Objects.requireNonNull(defaults)); } + /** + * @param customRepository Settings for a remote repository with a custom uri. + * Structure is documented below. + * + * @return builder + * + */ + public Builder customRepository(@Nullable Output customRepository) { + $.customRepository = customRepository; + return this; + } + + /** + * @param customRepository Settings for a remote repository with a custom uri. + * Structure is documented below. + * + * @return builder + * + */ + public Builder customRepository(RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs customRepository) { + return customRepository(Output.of(customRepository)); + } + /** * @param publicRepository Address of the remote repository. * Default value is `PYPI`. diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs.java new file mode 100644 index 0000000000..e1aa4ecc6a --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs.java @@ -0,0 +1,83 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.artifactregistry.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs extends com.pulumi.resources.ResourceArgs { + + public static final RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs Empty = new RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs(); + + /** + * Specific uri to the registry, e.g. `"https://pypi.io"` + * + */ + @Import(name="uri") + private @Nullable Output uri; + + /** + * @return Specific uri to the registry, e.g. `"https://pypi.io"` + * + */ + public Optional> uri() { + return Optional.ofNullable(this.uri); + } + + private RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs() {} + + private RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs(RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs $) { + this.uri = $.uri; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs $; + + public Builder() { + $ = new RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs(); + } + + public Builder(RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs defaults) { + $ = new RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param uri Specific uri to the registry, e.g. `"https://pypi.io"` + * + * @return builder + * + */ + public Builder uri(@Nullable Output uri) { + $.uri = uri; + return this; + } + + /** + * @param uri Specific uri to the registry, e.g. `"https://pypi.io"` + * + * @return builder + * + */ + public Builder uri(String uri) { + return uri(Output.of(uri)); + } + + public RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryRemoteRepositoryConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryRemoteRepositoryConfig.java index cccffd50c5..681a18dd94 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryRemoteRepositoryConfig.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryRemoteRepositoryConfig.java @@ -12,6 +12,7 @@ import com.pulumi.gcp.artifactregistry.outputs.GetRepositoryRemoteRepositoryConfigPythonRepository; import com.pulumi.gcp.artifactregistry.outputs.GetRepositoryRemoteRepositoryConfigUpstreamCredential; import com.pulumi.gcp.artifactregistry.outputs.GetRepositoryRemoteRepositoryConfigYumRepository; +import java.lang.Boolean; import java.lang.String; import java.util.List; import java.util.Objects; @@ -28,6 +29,12 @@ public final class GetRepositoryRemoteRepositoryConfig { * */ private String description; + /** + * @return If true, the remote repository upstream and upstream credentials will + * not be validated. + * + */ + private Boolean disableUpstreamValidation; /** * @return Specific settings for a Docker remote repository. * @@ -74,6 +81,14 @@ public List aptRepositories() public String description() { return this.description; } + /** + * @return If true, the remote repository upstream and upstream credentials will + * not be validated. + * + */ + public Boolean disableUpstreamValidation() { + return this.disableUpstreamValidation; + } /** * @return Specific settings for a Docker remote repository. * @@ -128,6 +143,7 @@ public static Builder builder(GetRepositoryRemoteRepositoryConfig defaults) { public static final class Builder { private List aptRepositories; private String description; + private Boolean disableUpstreamValidation; private List dockerRepositories; private List mavenRepositories; private List npmRepositories; @@ -139,6 +155,7 @@ public Builder(GetRepositoryRemoteRepositoryConfig defaults) { Objects.requireNonNull(defaults); this.aptRepositories = defaults.aptRepositories; this.description = defaults.description; + this.disableUpstreamValidation = defaults.disableUpstreamValidation; this.dockerRepositories = defaults.dockerRepositories; this.mavenRepositories = defaults.mavenRepositories; this.npmRepositories = defaults.npmRepositories; @@ -167,6 +184,14 @@ public Builder description(String description) { return this; } @CustomType.Setter + public Builder disableUpstreamValidation(Boolean disableUpstreamValidation) { + if (disableUpstreamValidation == null) { + throw new MissingRequiredPropertyException("GetRepositoryRemoteRepositoryConfig", "disableUpstreamValidation"); + } + this.disableUpstreamValidation = disableUpstreamValidation; + return this; + } + @CustomType.Setter public Builder dockerRepositories(List dockerRepositories) { if (dockerRepositories == null) { throw new MissingRequiredPropertyException("GetRepositoryRemoteRepositoryConfig", "dockerRepositories"); @@ -236,6 +261,7 @@ public GetRepositoryRemoteRepositoryConfig build() { final var _resultValue = new GetRepositoryRemoteRepositoryConfig(); _resultValue.aptRepositories = aptRepositories; _resultValue.description = description; + _resultValue.disableUpstreamValidation = disableUpstreamValidation; _resultValue.dockerRepositories = dockerRepositories; _resultValue.mavenRepositories = mavenRepositories; _resultValue.npmRepositories = npmRepositories; diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryRemoteRepositoryConfigDockerRepository.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryRemoteRepositoryConfigDockerRepository.java index b0c4fff05a..275d09fd79 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryRemoteRepositoryConfigDockerRepository.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryRemoteRepositoryConfigDockerRepository.java @@ -5,11 +5,18 @@ import com.pulumi.core.annotations.CustomType; import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.artifactregistry.outputs.GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository; import java.lang.String; +import java.util.List; import java.util.Objects; @CustomType public final class GetRepositoryRemoteRepositoryConfigDockerRepository { + /** + * @return Settings for a remote repository with a custom uri. + * + */ + private List customRepositories; /** * @return Address of the remote repository. Default value: "DOCKER_HUB" Possible values: ["DOCKER_HUB"] * @@ -17,6 +24,13 @@ public final class GetRepositoryRemoteRepositoryConfigDockerRepository { private String publicRepository; private GetRepositoryRemoteRepositoryConfigDockerRepository() {} + /** + * @return Settings for a remote repository with a custom uri. + * + */ + public List customRepositories() { + return this.customRepositories; + } /** * @return Address of the remote repository. Default value: "DOCKER_HUB" Possible values: ["DOCKER_HUB"] * @@ -34,13 +48,26 @@ public static Builder builder(GetRepositoryRemoteRepositoryConfigDockerRepositor } @CustomType.Builder public static final class Builder { + private List customRepositories; private String publicRepository; public Builder() {} public Builder(GetRepositoryRemoteRepositoryConfigDockerRepository defaults) { Objects.requireNonNull(defaults); + this.customRepositories = defaults.customRepositories; this.publicRepository = defaults.publicRepository; } + @CustomType.Setter + public Builder customRepositories(List customRepositories) { + if (customRepositories == null) { + throw new MissingRequiredPropertyException("GetRepositoryRemoteRepositoryConfigDockerRepository", "customRepositories"); + } + this.customRepositories = customRepositories; + return this; + } + public Builder customRepositories(GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository... customRepositories) { + return customRepositories(List.of(customRepositories)); + } @CustomType.Setter public Builder publicRepository(String publicRepository) { if (publicRepository == null) { @@ -51,6 +78,7 @@ public Builder publicRepository(String publicRepository) { } public GetRepositoryRemoteRepositoryConfigDockerRepository build() { final var _resultValue = new GetRepositoryRemoteRepositoryConfigDockerRepository(); + _resultValue.customRepositories = customRepositories; _resultValue.publicRepository = publicRepository; return _resultValue; } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository.java new file mode 100644 index 0000000000..d39eab07ab --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository.java @@ -0,0 +1,58 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.artifactregistry.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository { + /** + * @return Specific uri to the registry, e.g. '"https://registry-1.docker.io"' + * + */ + private String uri; + + private GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository() {} + /** + * @return Specific uri to the registry, e.g. '"https://registry-1.docker.io"' + * + */ + public String uri() { + return this.uri; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String uri; + public Builder() {} + public Builder(GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository defaults) { + Objects.requireNonNull(defaults); + this.uri = defaults.uri; + } + + @CustomType.Setter + public Builder uri(String uri) { + if (uri == null) { + throw new MissingRequiredPropertyException("GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository", "uri"); + } + this.uri = uri; + return this; + } + public GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository build() { + final var _resultValue = new GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository(); + _resultValue.uri = uri; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryRemoteRepositoryConfigMavenRepository.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryRemoteRepositoryConfigMavenRepository.java index 1a60b47a78..99c95d8821 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryRemoteRepositoryConfigMavenRepository.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryRemoteRepositoryConfigMavenRepository.java @@ -5,11 +5,18 @@ import com.pulumi.core.annotations.CustomType; import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.artifactregistry.outputs.GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository; import java.lang.String; +import java.util.List; import java.util.Objects; @CustomType public final class GetRepositoryRemoteRepositoryConfigMavenRepository { + /** + * @return Settings for a remote repository with a custom uri. + * + */ + private List customRepositories; /** * @return Address of the remote repository. Default value: "MAVEN_CENTRAL" Possible values: ["MAVEN_CENTRAL"] * @@ -17,6 +24,13 @@ public final class GetRepositoryRemoteRepositoryConfigMavenRepository { private String publicRepository; private GetRepositoryRemoteRepositoryConfigMavenRepository() {} + /** + * @return Settings for a remote repository with a custom uri. + * + */ + public List customRepositories() { + return this.customRepositories; + } /** * @return Address of the remote repository. Default value: "MAVEN_CENTRAL" Possible values: ["MAVEN_CENTRAL"] * @@ -34,13 +48,26 @@ public static Builder builder(GetRepositoryRemoteRepositoryConfigMavenRepository } @CustomType.Builder public static final class Builder { + private List customRepositories; private String publicRepository; public Builder() {} public Builder(GetRepositoryRemoteRepositoryConfigMavenRepository defaults) { Objects.requireNonNull(defaults); + this.customRepositories = defaults.customRepositories; this.publicRepository = defaults.publicRepository; } + @CustomType.Setter + public Builder customRepositories(List customRepositories) { + if (customRepositories == null) { + throw new MissingRequiredPropertyException("GetRepositoryRemoteRepositoryConfigMavenRepository", "customRepositories"); + } + this.customRepositories = customRepositories; + return this; + } + public Builder customRepositories(GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository... customRepositories) { + return customRepositories(List.of(customRepositories)); + } @CustomType.Setter public Builder publicRepository(String publicRepository) { if (publicRepository == null) { @@ -51,6 +78,7 @@ public Builder publicRepository(String publicRepository) { } public GetRepositoryRemoteRepositoryConfigMavenRepository build() { final var _resultValue = new GetRepositoryRemoteRepositoryConfigMavenRepository(); + _resultValue.customRepositories = customRepositories; _resultValue.publicRepository = publicRepository; return _resultValue; } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository.java new file mode 100644 index 0000000000..ed31526d6d --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository.java @@ -0,0 +1,58 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.artifactregistry.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository { + /** + * @return Specific uri to the registry, e.g. '"https://repo.maven.apache.org/maven2"' + * + */ + private String uri; + + private GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository() {} + /** + * @return Specific uri to the registry, e.g. '"https://repo.maven.apache.org/maven2"' + * + */ + public String uri() { + return this.uri; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String uri; + public Builder() {} + public Builder(GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository defaults) { + Objects.requireNonNull(defaults); + this.uri = defaults.uri; + } + + @CustomType.Setter + public Builder uri(String uri) { + if (uri == null) { + throw new MissingRequiredPropertyException("GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository", "uri"); + } + this.uri = uri; + return this; + } + public GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository build() { + final var _resultValue = new GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository(); + _resultValue.uri = uri; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryRemoteRepositoryConfigNpmRepository.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryRemoteRepositoryConfigNpmRepository.java index a67f783946..ebf8787929 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryRemoteRepositoryConfigNpmRepository.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryRemoteRepositoryConfigNpmRepository.java @@ -5,11 +5,18 @@ import com.pulumi.core.annotations.CustomType; import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.artifactregistry.outputs.GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository; import java.lang.String; +import java.util.List; import java.util.Objects; @CustomType public final class GetRepositoryRemoteRepositoryConfigNpmRepository { + /** + * @return Settings for a remote repository with a custom uri. + * + */ + private List customRepositories; /** * @return Address of the remote repository. Default value: "NPMJS" Possible values: ["NPMJS"] * @@ -17,6 +24,13 @@ public final class GetRepositoryRemoteRepositoryConfigNpmRepository { private String publicRepository; private GetRepositoryRemoteRepositoryConfigNpmRepository() {} + /** + * @return Settings for a remote repository with a custom uri. + * + */ + public List customRepositories() { + return this.customRepositories; + } /** * @return Address of the remote repository. Default value: "NPMJS" Possible values: ["NPMJS"] * @@ -34,13 +48,26 @@ public static Builder builder(GetRepositoryRemoteRepositoryConfigNpmRepository d } @CustomType.Builder public static final class Builder { + private List customRepositories; private String publicRepository; public Builder() {} public Builder(GetRepositoryRemoteRepositoryConfigNpmRepository defaults) { Objects.requireNonNull(defaults); + this.customRepositories = defaults.customRepositories; this.publicRepository = defaults.publicRepository; } + @CustomType.Setter + public Builder customRepositories(List customRepositories) { + if (customRepositories == null) { + throw new MissingRequiredPropertyException("GetRepositoryRemoteRepositoryConfigNpmRepository", "customRepositories"); + } + this.customRepositories = customRepositories; + return this; + } + public Builder customRepositories(GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository... customRepositories) { + return customRepositories(List.of(customRepositories)); + } @CustomType.Setter public Builder publicRepository(String publicRepository) { if (publicRepository == null) { @@ -51,6 +78,7 @@ public Builder publicRepository(String publicRepository) { } public GetRepositoryRemoteRepositoryConfigNpmRepository build() { final var _resultValue = new GetRepositoryRemoteRepositoryConfigNpmRepository(); + _resultValue.customRepositories = customRepositories; _resultValue.publicRepository = publicRepository; return _resultValue; } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository.java new file mode 100644 index 0000000000..5244147acd --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository.java @@ -0,0 +1,58 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.artifactregistry.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository { + /** + * @return Specific uri to the registry, e.g. '"https://registry.npmjs.org"' + * + */ + private String uri; + + private GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository() {} + /** + * @return Specific uri to the registry, e.g. '"https://registry.npmjs.org"' + * + */ + public String uri() { + return this.uri; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String uri; + public Builder() {} + public Builder(GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository defaults) { + Objects.requireNonNull(defaults); + this.uri = defaults.uri; + } + + @CustomType.Setter + public Builder uri(String uri) { + if (uri == null) { + throw new MissingRequiredPropertyException("GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository", "uri"); + } + this.uri = uri; + return this; + } + public GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository build() { + final var _resultValue = new GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository(); + _resultValue.uri = uri; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryRemoteRepositoryConfigPythonRepository.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryRemoteRepositoryConfigPythonRepository.java index 772013685f..e331cd82c9 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryRemoteRepositoryConfigPythonRepository.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryRemoteRepositoryConfigPythonRepository.java @@ -5,11 +5,18 @@ import com.pulumi.core.annotations.CustomType; import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.artifactregistry.outputs.GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository; import java.lang.String; +import java.util.List; import java.util.Objects; @CustomType public final class GetRepositoryRemoteRepositoryConfigPythonRepository { + /** + * @return Settings for a remote repository with a custom uri. + * + */ + private List customRepositories; /** * @return Address of the remote repository. Default value: "PYPI" Possible values: ["PYPI"] * @@ -17,6 +24,13 @@ public final class GetRepositoryRemoteRepositoryConfigPythonRepository { private String publicRepository; private GetRepositoryRemoteRepositoryConfigPythonRepository() {} + /** + * @return Settings for a remote repository with a custom uri. + * + */ + public List customRepositories() { + return this.customRepositories; + } /** * @return Address of the remote repository. Default value: "PYPI" Possible values: ["PYPI"] * @@ -34,13 +48,26 @@ public static Builder builder(GetRepositoryRemoteRepositoryConfigPythonRepositor } @CustomType.Builder public static final class Builder { + private List customRepositories; private String publicRepository; public Builder() {} public Builder(GetRepositoryRemoteRepositoryConfigPythonRepository defaults) { Objects.requireNonNull(defaults); + this.customRepositories = defaults.customRepositories; this.publicRepository = defaults.publicRepository; } + @CustomType.Setter + public Builder customRepositories(List customRepositories) { + if (customRepositories == null) { + throw new MissingRequiredPropertyException("GetRepositoryRemoteRepositoryConfigPythonRepository", "customRepositories"); + } + this.customRepositories = customRepositories; + return this; + } + public Builder customRepositories(GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository... customRepositories) { + return customRepositories(List.of(customRepositories)); + } @CustomType.Setter public Builder publicRepository(String publicRepository) { if (publicRepository == null) { @@ -51,6 +78,7 @@ public Builder publicRepository(String publicRepository) { } public GetRepositoryRemoteRepositoryConfigPythonRepository build() { final var _resultValue = new GetRepositoryRemoteRepositoryConfigPythonRepository(); + _resultValue.customRepositories = customRepositories; _resultValue.publicRepository = publicRepository; return _resultValue; } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository.java new file mode 100644 index 0000000000..9752c6332f --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository.java @@ -0,0 +1,58 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.artifactregistry.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository { + /** + * @return Specific uri to the registry, e.g. '"https://pypi.io"' + * + */ + private String uri; + + private GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository() {} + /** + * @return Specific uri to the registry, e.g. '"https://pypi.io"' + * + */ + public String uri() { + return this.uri; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String uri; + public Builder() {} + public Builder(GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository defaults) { + Objects.requireNonNull(defaults); + this.uri = defaults.uri; + } + + @CustomType.Setter + public Builder uri(String uri) { + if (uri == null) { + throw new MissingRequiredPropertyException("GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository", "uri"); + } + this.uri = uri; + return this; + } + public GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository build() { + final var _resultValue = new GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository(); + _resultValue.uri = uri; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryRemoteRepositoryConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryRemoteRepositoryConfig.java index c789998609..2ac1dfe261 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryRemoteRepositoryConfig.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryRemoteRepositoryConfig.java @@ -11,6 +11,7 @@ import com.pulumi.gcp.artifactregistry.outputs.RepositoryRemoteRepositoryConfigPythonRepository; import com.pulumi.gcp.artifactregistry.outputs.RepositoryRemoteRepositoryConfigUpstreamCredentials; import com.pulumi.gcp.artifactregistry.outputs.RepositoryRemoteRepositoryConfigYumRepository; +import java.lang.Boolean; import java.lang.String; import java.util.Objects; import java.util.Optional; @@ -29,6 +30,12 @@ public final class RepositoryRemoteRepositoryConfig { * */ private @Nullable String description; + /** + * @return If true, the remote repository upstream and upstream credentials will + * not be validated. + * + */ + private @Nullable Boolean disableUpstreamValidation; /** * @return Specific settings for a Docker remote repository. * Structure is documented below. @@ -82,6 +89,14 @@ public Optional aptRepository() { public Optional description() { return Optional.ofNullable(this.description); } + /** + * @return If true, the remote repository upstream and upstream credentials will + * not be validated. + * + */ + public Optional disableUpstreamValidation() { + return Optional.ofNullable(this.disableUpstreamValidation); + } /** * @return Specific settings for a Docker remote repository. * Structure is documented below. @@ -142,6 +157,7 @@ public static Builder builder(RepositoryRemoteRepositoryConfig defaults) { public static final class Builder { private @Nullable RepositoryRemoteRepositoryConfigAptRepository aptRepository; private @Nullable String description; + private @Nullable Boolean disableUpstreamValidation; private @Nullable RepositoryRemoteRepositoryConfigDockerRepository dockerRepository; private @Nullable RepositoryRemoteRepositoryConfigMavenRepository mavenRepository; private @Nullable RepositoryRemoteRepositoryConfigNpmRepository npmRepository; @@ -153,6 +169,7 @@ public Builder(RepositoryRemoteRepositoryConfig defaults) { Objects.requireNonNull(defaults); this.aptRepository = defaults.aptRepository; this.description = defaults.description; + this.disableUpstreamValidation = defaults.disableUpstreamValidation; this.dockerRepository = defaults.dockerRepository; this.mavenRepository = defaults.mavenRepository; this.npmRepository = defaults.npmRepository; @@ -174,6 +191,12 @@ public Builder description(@Nullable String description) { return this; } @CustomType.Setter + public Builder disableUpstreamValidation(@Nullable Boolean disableUpstreamValidation) { + + this.disableUpstreamValidation = disableUpstreamValidation; + return this; + } + @CustomType.Setter public Builder dockerRepository(@Nullable RepositoryRemoteRepositoryConfigDockerRepository dockerRepository) { this.dockerRepository = dockerRepository; @@ -213,6 +236,7 @@ public RepositoryRemoteRepositoryConfig build() { final var _resultValue = new RepositoryRemoteRepositoryConfig(); _resultValue.aptRepository = aptRepository; _resultValue.description = description; + _resultValue.disableUpstreamValidation = disableUpstreamValidation; _resultValue.dockerRepository = dockerRepository; _resultValue.mavenRepository = mavenRepository; _resultValue.npmRepository = npmRepository; diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryRemoteRepositoryConfigDockerRepository.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryRemoteRepositoryConfigDockerRepository.java index fe48300912..8b2be01dd8 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryRemoteRepositoryConfigDockerRepository.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryRemoteRepositoryConfigDockerRepository.java @@ -4,6 +4,7 @@ package com.pulumi.gcp.artifactregistry.outputs; import com.pulumi.core.annotations.CustomType; +import com.pulumi.gcp.artifactregistry.outputs.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository; import java.lang.String; import java.util.Objects; import java.util.Optional; @@ -11,6 +12,12 @@ @CustomType public final class RepositoryRemoteRepositoryConfigDockerRepository { + /** + * @return Settings for a remote repository with a custom uri. + * Structure is documented below. + * + */ + private @Nullable RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository customRepository; /** * @return Address of the remote repository. * Default value is `DOCKER_HUB`. @@ -20,6 +27,14 @@ public final class RepositoryRemoteRepositoryConfigDockerRepository { private @Nullable String publicRepository; private RepositoryRemoteRepositoryConfigDockerRepository() {} + /** + * @return Settings for a remote repository with a custom uri. + * Structure is documented below. + * + */ + public Optional customRepository() { + return Optional.ofNullable(this.customRepository); + } /** * @return Address of the remote repository. * Default value is `DOCKER_HUB`. @@ -39,13 +54,21 @@ public static Builder builder(RepositoryRemoteRepositoryConfigDockerRepository d } @CustomType.Builder public static final class Builder { + private @Nullable RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository customRepository; private @Nullable String publicRepository; public Builder() {} public Builder(RepositoryRemoteRepositoryConfigDockerRepository defaults) { Objects.requireNonNull(defaults); + this.customRepository = defaults.customRepository; this.publicRepository = defaults.publicRepository; } + @CustomType.Setter + public Builder customRepository(@Nullable RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository customRepository) { + + this.customRepository = customRepository; + return this; + } @CustomType.Setter public Builder publicRepository(@Nullable String publicRepository) { @@ -54,6 +77,7 @@ public Builder publicRepository(@Nullable String publicRepository) { } public RepositoryRemoteRepositoryConfigDockerRepository build() { final var _resultValue = new RepositoryRemoteRepositoryConfigDockerRepository(); + _resultValue.customRepository = customRepository; _resultValue.publicRepository = publicRepository; return _resultValue; } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository.java new file mode 100644 index 0000000000..4742ca6667 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository.java @@ -0,0 +1,57 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.artifactregistry.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository { + /** + * @return Specific uri to the registry, e.g. `"https://pypi.io"` + * + */ + private @Nullable String uri; + + private RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository() {} + /** + * @return Specific uri to the registry, e.g. `"https://pypi.io"` + * + */ + public Optional uri() { + return Optional.ofNullable(this.uri); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String uri; + public Builder() {} + public Builder(RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository defaults) { + Objects.requireNonNull(defaults); + this.uri = defaults.uri; + } + + @CustomType.Setter + public Builder uri(@Nullable String uri) { + + this.uri = uri; + return this; + } + public RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository build() { + final var _resultValue = new RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository(); + _resultValue.uri = uri; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryRemoteRepositoryConfigMavenRepository.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryRemoteRepositoryConfigMavenRepository.java index 7abd668d48..6c8fa10f5b 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryRemoteRepositoryConfigMavenRepository.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryRemoteRepositoryConfigMavenRepository.java @@ -4,6 +4,7 @@ package com.pulumi.gcp.artifactregistry.outputs; import com.pulumi.core.annotations.CustomType; +import com.pulumi.gcp.artifactregistry.outputs.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository; import java.lang.String; import java.util.Objects; import java.util.Optional; @@ -11,6 +12,12 @@ @CustomType public final class RepositoryRemoteRepositoryConfigMavenRepository { + /** + * @return Settings for a remote repository with a custom uri. + * Structure is documented below. + * + */ + private @Nullable RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository customRepository; /** * @return Address of the remote repository. * Default value is `MAVEN_CENTRAL`. @@ -20,6 +27,14 @@ public final class RepositoryRemoteRepositoryConfigMavenRepository { private @Nullable String publicRepository; private RepositoryRemoteRepositoryConfigMavenRepository() {} + /** + * @return Settings for a remote repository with a custom uri. + * Structure is documented below. + * + */ + public Optional customRepository() { + return Optional.ofNullable(this.customRepository); + } /** * @return Address of the remote repository. * Default value is `MAVEN_CENTRAL`. @@ -39,13 +54,21 @@ public static Builder builder(RepositoryRemoteRepositoryConfigMavenRepository de } @CustomType.Builder public static final class Builder { + private @Nullable RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository customRepository; private @Nullable String publicRepository; public Builder() {} public Builder(RepositoryRemoteRepositoryConfigMavenRepository defaults) { Objects.requireNonNull(defaults); + this.customRepository = defaults.customRepository; this.publicRepository = defaults.publicRepository; } + @CustomType.Setter + public Builder customRepository(@Nullable RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository customRepository) { + + this.customRepository = customRepository; + return this; + } @CustomType.Setter public Builder publicRepository(@Nullable String publicRepository) { @@ -54,6 +77,7 @@ public Builder publicRepository(@Nullable String publicRepository) { } public RepositoryRemoteRepositoryConfigMavenRepository build() { final var _resultValue = new RepositoryRemoteRepositoryConfigMavenRepository(); + _resultValue.customRepository = customRepository; _resultValue.publicRepository = publicRepository; return _resultValue; } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository.java new file mode 100644 index 0000000000..6e913891c5 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository.java @@ -0,0 +1,57 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.artifactregistry.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository { + /** + * @return Specific uri to the registry, e.g. `"https://pypi.io"` + * + */ + private @Nullable String uri; + + private RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository() {} + /** + * @return Specific uri to the registry, e.g. `"https://pypi.io"` + * + */ + public Optional uri() { + return Optional.ofNullable(this.uri); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String uri; + public Builder() {} + public Builder(RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository defaults) { + Objects.requireNonNull(defaults); + this.uri = defaults.uri; + } + + @CustomType.Setter + public Builder uri(@Nullable String uri) { + + this.uri = uri; + return this; + } + public RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository build() { + final var _resultValue = new RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository(); + _resultValue.uri = uri; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryRemoteRepositoryConfigNpmRepository.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryRemoteRepositoryConfigNpmRepository.java index b3d46a11ed..0b23bce914 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryRemoteRepositoryConfigNpmRepository.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryRemoteRepositoryConfigNpmRepository.java @@ -4,6 +4,7 @@ package com.pulumi.gcp.artifactregistry.outputs; import com.pulumi.core.annotations.CustomType; +import com.pulumi.gcp.artifactregistry.outputs.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository; import java.lang.String; import java.util.Objects; import java.util.Optional; @@ -11,6 +12,12 @@ @CustomType public final class RepositoryRemoteRepositoryConfigNpmRepository { + /** + * @return Settings for a remote repository with a custom uri. + * Structure is documented below. + * + */ + private @Nullable RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository customRepository; /** * @return Address of the remote repository. * Default value is `NPMJS`. @@ -20,6 +27,14 @@ public final class RepositoryRemoteRepositoryConfigNpmRepository { private @Nullable String publicRepository; private RepositoryRemoteRepositoryConfigNpmRepository() {} + /** + * @return Settings for a remote repository with a custom uri. + * Structure is documented below. + * + */ + public Optional customRepository() { + return Optional.ofNullable(this.customRepository); + } /** * @return Address of the remote repository. * Default value is `NPMJS`. @@ -39,13 +54,21 @@ public static Builder builder(RepositoryRemoteRepositoryConfigNpmRepository defa } @CustomType.Builder public static final class Builder { + private @Nullable RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository customRepository; private @Nullable String publicRepository; public Builder() {} public Builder(RepositoryRemoteRepositoryConfigNpmRepository defaults) { Objects.requireNonNull(defaults); + this.customRepository = defaults.customRepository; this.publicRepository = defaults.publicRepository; } + @CustomType.Setter + public Builder customRepository(@Nullable RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository customRepository) { + + this.customRepository = customRepository; + return this; + } @CustomType.Setter public Builder publicRepository(@Nullable String publicRepository) { @@ -54,6 +77,7 @@ public Builder publicRepository(@Nullable String publicRepository) { } public RepositoryRemoteRepositoryConfigNpmRepository build() { final var _resultValue = new RepositoryRemoteRepositoryConfigNpmRepository(); + _resultValue.customRepository = customRepository; _resultValue.publicRepository = publicRepository; return _resultValue; } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository.java new file mode 100644 index 0000000000..f8ca0211c8 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository.java @@ -0,0 +1,57 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.artifactregistry.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository { + /** + * @return Specific uri to the registry, e.g. `"https://pypi.io"` + * + */ + private @Nullable String uri; + + private RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository() {} + /** + * @return Specific uri to the registry, e.g. `"https://pypi.io"` + * + */ + public Optional uri() { + return Optional.ofNullable(this.uri); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String uri; + public Builder() {} + public Builder(RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository defaults) { + Objects.requireNonNull(defaults); + this.uri = defaults.uri; + } + + @CustomType.Setter + public Builder uri(@Nullable String uri) { + + this.uri = uri; + return this; + } + public RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository build() { + final var _resultValue = new RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository(); + _resultValue.uri = uri; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryRemoteRepositoryConfigPythonRepository.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryRemoteRepositoryConfigPythonRepository.java index 528ec8ae35..46a8d5c592 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryRemoteRepositoryConfigPythonRepository.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryRemoteRepositoryConfigPythonRepository.java @@ -4,6 +4,7 @@ package com.pulumi.gcp.artifactregistry.outputs; import com.pulumi.core.annotations.CustomType; +import com.pulumi.gcp.artifactregistry.outputs.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository; import java.lang.String; import java.util.Objects; import java.util.Optional; @@ -11,6 +12,12 @@ @CustomType public final class RepositoryRemoteRepositoryConfigPythonRepository { + /** + * @return Settings for a remote repository with a custom uri. + * Structure is documented below. + * + */ + private @Nullable RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository customRepository; /** * @return Address of the remote repository. * Default value is `PYPI`. @@ -20,6 +27,14 @@ public final class RepositoryRemoteRepositoryConfigPythonRepository { private @Nullable String publicRepository; private RepositoryRemoteRepositoryConfigPythonRepository() {} + /** + * @return Settings for a remote repository with a custom uri. + * Structure is documented below. + * + */ + public Optional customRepository() { + return Optional.ofNullable(this.customRepository); + } /** * @return Address of the remote repository. * Default value is `PYPI`. @@ -39,13 +54,21 @@ public static Builder builder(RepositoryRemoteRepositoryConfigPythonRepository d } @CustomType.Builder public static final class Builder { + private @Nullable RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository customRepository; private @Nullable String publicRepository; public Builder() {} public Builder(RepositoryRemoteRepositoryConfigPythonRepository defaults) { Objects.requireNonNull(defaults); + this.customRepository = defaults.customRepository; this.publicRepository = defaults.publicRepository; } + @CustomType.Setter + public Builder customRepository(@Nullable RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository customRepository) { + + this.customRepository = customRepository; + return this; + } @CustomType.Setter public Builder publicRepository(@Nullable String publicRepository) { @@ -54,6 +77,7 @@ public Builder publicRepository(@Nullable String publicRepository) { } public RepositoryRemoteRepositoryConfigPythonRepository build() { final var _resultValue = new RepositoryRemoteRepositoryConfigPythonRepository(); + _resultValue.customRepository = customRepository; _resultValue.publicRepository = publicRepository; return _resultValue; } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository.java new file mode 100644 index 0000000000..49b01b027d --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository.java @@ -0,0 +1,57 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.artifactregistry.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository { + /** + * @return Specific uri to the registry, e.g. `"https://pypi.io"` + * + */ + private @Nullable String uri; + + private RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository() {} + /** + * @return Specific uri to the registry, e.g. `"https://pypi.io"` + * + */ + public Optional uri() { + return Optional.ofNullable(this.uri); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String uri; + public Builder() {} + public Builder(RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository defaults) { + Objects.requireNonNull(defaults); + this.uri = defaults.uri; + } + + @CustomType.Setter + public Builder uri(@Nullable String uri) { + + this.uri = uri; + return this; + } + public RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository build() { + final var _resultValue = new RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository(); + _resultValue.uri = uri; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/bigquery/Table.java b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/Table.java index 7080ac8c9e..c30a651083 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/bigquery/Table.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/Table.java @@ -541,6 +541,24 @@ public Output> rangePartitioning() { public Output> requirePartitionFilter() { return Codegen.optional(this.requirePartitionFilter); } + /** + * The tags attached to this table. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for + * example "123456789012/environment" where 123456789012 is the ID of the parent organization or project resource for this + * tag key. Tag value is expected to be the short name, for example "Production". + * + */ + @Export(name="resourceTags", refs={Map.class,String.class}, tree="[0,1,1]") + private Output> resourceTags; + + /** + * @return The tags attached to this table. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for + * example "123456789012/environment" where 123456789012 is the ID of the parent organization or project resource for this + * tag key. Tag value is expected to be the short name, for example "Production". + * + */ + public Output>> resourceTags() { + return Codegen.optional(this.resourceTags); + } /** * A JSON schema for the table. * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/bigquery/TableArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/TableArgs.java index 16b7eb353c..64be920140 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/bigquery/TableArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/TableArgs.java @@ -284,6 +284,25 @@ public Optional> requirePartitionFilter() { return Optional.ofNullable(this.requirePartitionFilter); } + /** + * The tags attached to this table. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for + * example "123456789012/environment" where 123456789012 is the ID of the parent organization or project resource for this + * tag key. Tag value is expected to be the short name, for example "Production". + * + */ + @Import(name="resourceTags") + private @Nullable Output> resourceTags; + + /** + * @return The tags attached to this table. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for + * example "123456789012/environment" where 123456789012 is the ID of the parent organization or project resource for this + * tag key. Tag value is expected to be the short name, for example "Production". + * + */ + public Optional>> resourceTags() { + return Optional.ofNullable(this.resourceTags); + } + /** * A JSON schema for the table. * @@ -399,6 +418,7 @@ private TableArgs(TableArgs $) { this.project = $.project; this.rangePartitioning = $.rangePartitioning; this.requirePartitionFilter = $.requirePartitionFilter; + this.resourceTags = $.resourceTags; this.schema = $.schema; this.tableConstraints = $.tableConstraints; this.tableId = $.tableId; @@ -777,6 +797,31 @@ public Builder requirePartitionFilter(Boolean requirePartitionFilter) { return requirePartitionFilter(Output.of(requirePartitionFilter)); } + /** + * @param resourceTags The tags attached to this table. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for + * example "123456789012/environment" where 123456789012 is the ID of the parent organization or project resource for this + * tag key. Tag value is expected to be the short name, for example "Production". + * + * @return builder + * + */ + public Builder resourceTags(@Nullable Output> resourceTags) { + $.resourceTags = resourceTags; + return this; + } + + /** + * @param resourceTags The tags attached to this table. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for + * example "123456789012/environment" where 123456789012 is the ID of the parent organization or project resource for this + * tag key. Tag value is expected to be the short name, for example "Production". + * + * @return builder + * + */ + public Builder resourceTags(Map resourceTags) { + return resourceTags(Output.of(resourceTags)); + } + /** * @param schema A JSON schema for the table. * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/bigquery/inputs/TableState.java b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/inputs/TableState.java index 0a732d43de..ee7720bb1b 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/bigquery/inputs/TableState.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/inputs/TableState.java @@ -448,6 +448,25 @@ public Optional> requirePartitionFilter() { return Optional.ofNullable(this.requirePartitionFilter); } + /** + * The tags attached to this table. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for + * example "123456789012/environment" where 123456789012 is the ID of the parent organization or project resource for this + * tag key. Tag value is expected to be the short name, for example "Production". + * + */ + @Import(name="resourceTags") + private @Nullable Output> resourceTags; + + /** + * @return The tags attached to this table. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for + * example "123456789012/environment" where 123456789012 is the ID of the parent organization or project resource for this + * tag key. Tag value is expected to be the short name, for example "Production". + * + */ + public Optional>> resourceTags() { + return Optional.ofNullable(this.resourceTags); + } + /** * A JSON schema for the table. * @@ -602,6 +621,7 @@ private TableState(TableState $) { this.pulumiLabels = $.pulumiLabels; this.rangePartitioning = $.rangePartitioning; this.requirePartitionFilter = $.requirePartitionFilter; + this.resourceTags = $.resourceTags; this.schema = $.schema; this.selfLink = $.selfLink; this.tableConstraints = $.tableConstraints; @@ -1201,6 +1221,31 @@ public Builder requirePartitionFilter(Boolean requirePartitionFilter) { return requirePartitionFilter(Output.of(requirePartitionFilter)); } + /** + * @param resourceTags The tags attached to this table. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for + * example "123456789012/environment" where 123456789012 is the ID of the parent organization or project resource for this + * tag key. Tag value is expected to be the short name, for example "Production". + * + * @return builder + * + */ + public Builder resourceTags(@Nullable Output> resourceTags) { + $.resourceTags = resourceTags; + return this; + } + + /** + * @param resourceTags The tags attached to this table. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for + * example "123456789012/environment" where 123456789012 is the ID of the parent organization or project resource for this + * tag key. Tag value is expected to be the short name, for example "Production". + * + * @return builder + * + */ + public Builder resourceTags(Map resourceTags) { + return resourceTags(Output.of(resourceTags)); + } + /** * @param schema A JSON schema for the table. * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/billing/Budget.java b/sdk/java/src/main/java/com/pulumi/gcp/billing/Budget.java index d8d6d3c51b..6b75b8dc18 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/billing/Budget.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/billing/Budget.java @@ -485,6 +485,22 @@ public Output> displayName() { public Output name() { return this.name; } + /** + * The ownership scope of the budget. The ownership scope and users' IAM permissions determine who has full access to the + * budget's data. Possible values: ["OWNERSHIP_SCOPE_UNSPECIFIED", "ALL_USERS", "BILLING_ACCOUNT"] + * + */ + @Export(name="ownershipScope", refs={String.class}, tree="[0]") + private Output ownershipScope; + + /** + * @return The ownership scope of the budget. The ownership scope and users' IAM permissions determine who has full access to the + * budget's data. Possible values: ["OWNERSHIP_SCOPE_UNSPECIFIED", "ALL_USERS", "BILLING_ACCOUNT"] + * + */ + public Output> ownershipScope() { + return Codegen.optional(this.ownershipScope); + } /** * Rules that trigger alerts (notifications of thresholds being crossed) when spend exceeds the specified percentages of * the budget. diff --git a/sdk/java/src/main/java/com/pulumi/gcp/billing/BudgetArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/billing/BudgetArgs.java index 0b116bb6aa..08d6bddc3d 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/billing/BudgetArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/billing/BudgetArgs.java @@ -100,6 +100,23 @@ public Optional> displayName() { return Optional.ofNullable(this.displayName); } + /** + * The ownership scope of the budget. The ownership scope and users' IAM permissions determine who has full access to the + * budget's data. Possible values: ["OWNERSHIP_SCOPE_UNSPECIFIED", "ALL_USERS", "BILLING_ACCOUNT"] + * + */ + @Import(name="ownershipScope") + private @Nullable Output ownershipScope; + + /** + * @return The ownership scope of the budget. The ownership scope and users' IAM permissions determine who has full access to the + * budget's data. Possible values: ["OWNERSHIP_SCOPE_UNSPECIFIED", "ALL_USERS", "BILLING_ACCOUNT"] + * + */ + public Optional> ownershipScope() { + return Optional.ofNullable(this.ownershipScope); + } + /** * Rules that trigger alerts (notifications of thresholds being crossed) when spend exceeds the specified percentages of * the budget. @@ -125,6 +142,7 @@ private BudgetArgs(BudgetArgs $) { this.billingAccount = $.billingAccount; this.budgetFilter = $.budgetFilter; this.displayName = $.displayName; + this.ownershipScope = $.ownershipScope; this.thresholdRules = $.thresholdRules; } @@ -255,6 +273,29 @@ public Builder displayName(String displayName) { return displayName(Output.of(displayName)); } + /** + * @param ownershipScope The ownership scope of the budget. The ownership scope and users' IAM permissions determine who has full access to the + * budget's data. Possible values: ["OWNERSHIP_SCOPE_UNSPECIFIED", "ALL_USERS", "BILLING_ACCOUNT"] + * + * @return builder + * + */ + public Builder ownershipScope(@Nullable Output ownershipScope) { + $.ownershipScope = ownershipScope; + return this; + } + + /** + * @param ownershipScope The ownership scope of the budget. The ownership scope and users' IAM permissions determine who has full access to the + * budget's data. Possible values: ["OWNERSHIP_SCOPE_UNSPECIFIED", "ALL_USERS", "BILLING_ACCOUNT"] + * + * @return builder + * + */ + public Builder ownershipScope(String ownershipScope) { + return ownershipScope(Output.of(ownershipScope)); + } + /** * @param thresholdRules Rules that trigger alerts (notifications of thresholds being crossed) when spend exceeds the specified percentages of * the budget. diff --git a/sdk/java/src/main/java/com/pulumi/gcp/billing/inputs/BudgetState.java b/sdk/java/src/main/java/com/pulumi/gcp/billing/inputs/BudgetState.java index c51be10229..3c179baccf 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/billing/inputs/BudgetState.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/billing/inputs/BudgetState.java @@ -118,6 +118,23 @@ public Optional> name() { return Optional.ofNullable(this.name); } + /** + * The ownership scope of the budget. The ownership scope and users' IAM permissions determine who has full access to the + * budget's data. Possible values: ["OWNERSHIP_SCOPE_UNSPECIFIED", "ALL_USERS", "BILLING_ACCOUNT"] + * + */ + @Import(name="ownershipScope") + private @Nullable Output ownershipScope; + + /** + * @return The ownership scope of the budget. The ownership scope and users' IAM permissions determine who has full access to the + * budget's data. Possible values: ["OWNERSHIP_SCOPE_UNSPECIFIED", "ALL_USERS", "BILLING_ACCOUNT"] + * + */ + public Optional> ownershipScope() { + return Optional.ofNullable(this.ownershipScope); + } + /** * Rules that trigger alerts (notifications of thresholds being crossed) when spend exceeds the specified percentages of * the budget. @@ -144,6 +161,7 @@ private BudgetState(BudgetState $) { this.budgetFilter = $.budgetFilter; this.displayName = $.displayName; this.name = $.name; + this.ownershipScope = $.ownershipScope; this.thresholdRules = $.thresholdRules; } @@ -299,6 +317,29 @@ public Builder name(String name) { return name(Output.of(name)); } + /** + * @param ownershipScope The ownership scope of the budget. The ownership scope and users' IAM permissions determine who has full access to the + * budget's data. Possible values: ["OWNERSHIP_SCOPE_UNSPECIFIED", "ALL_USERS", "BILLING_ACCOUNT"] + * + * @return builder + * + */ + public Builder ownershipScope(@Nullable Output ownershipScope) { + $.ownershipScope = ownershipScope; + return this; + } + + /** + * @param ownershipScope The ownership scope of the budget. The ownership scope and users' IAM permissions determine who has full access to the + * budget's data. Possible values: ["OWNERSHIP_SCOPE_UNSPECIFIED", "ALL_USERS", "BILLING_ACCOUNT"] + * + * @return builder + * + */ + public Builder ownershipScope(String ownershipScope) { + return ownershipScope(Output.of(ownershipScope)); + } + /** * @param thresholdRules Rules that trigger alerts (notifications of thresholds being crossed) when spend exceeds the specified percentages of * the budget. diff --git a/sdk/java/src/main/java/com/pulumi/gcp/cloudfunctionsv2/Function.java b/sdk/java/src/main/java/com/pulumi/gcp/cloudfunctionsv2/Function.java index 25f6c08ca2..183250501f 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/cloudfunctionsv2/Function.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/cloudfunctionsv2/Function.java @@ -591,6 +591,114 @@ * } * ``` * <!--End PulumiCodeChooser --> + * ### Cloudfunctions2 Basic Builder + * + * <!--Start PulumiCodeChooser --> + * ```java + * package generated_program; + * + * import com.pulumi.Context; + * import com.pulumi.Pulumi; + * import com.pulumi.core.Output; + * import com.pulumi.gcp.serviceaccount.Account; + * import com.pulumi.gcp.serviceaccount.AccountArgs; + * import com.pulumi.gcp.projects.IAMMember; + * import com.pulumi.gcp.projects.IAMMemberArgs; + * import com.pulumi.gcp.storage.Bucket; + * import com.pulumi.gcp.storage.BucketArgs; + * import com.pulumi.gcp.storage.BucketObject; + * import com.pulumi.gcp.storage.BucketObjectArgs; + * import com.pulumi.time.sleep; + * import com.pulumi.time.SleepArgs; + * import com.pulumi.gcp.cloudfunctionsv2.Function; + * import com.pulumi.gcp.cloudfunctionsv2.FunctionArgs; + * import com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs; + * import com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs; + * import com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs; + * import com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs; + * import com.pulumi.asset.FileAsset; + * import java.util.List; + * import java.util.ArrayList; + * import java.util.Map; + * import java.io.File; + * import java.nio.file.Files; + * import java.nio.file.Paths; + * + * public class App { + * public static void main(String[] args) { + * Pulumi.run(App::stack); + * } + * + * public static void stack(Context ctx) { + * final var project = "my-project-name"; + * + * var account = new Account("account", AccountArgs.builder() + * .accountId("gcf-sa") + * .displayName("Test Service Account") + * .build()); + * + * var logWriter = new IAMMember("logWriter", IAMMemberArgs.builder() + * .project(account.project()) + * .role("roles/logging.logWriter") + * .member(account.email().applyValue(email -> String.format("serviceAccount:%s", email))) + * .build()); + * + * var artifactRegistryWriter = new IAMMember("artifactRegistryWriter", IAMMemberArgs.builder() + * .project(account.project()) + * .role("roles/artifactregistry.writer") + * .member(account.email().applyValue(email -> String.format("serviceAccount:%s", email))) + * .build()); + * + * var storageObjectAdmin = new IAMMember("storageObjectAdmin", IAMMemberArgs.builder() + * .project(account.project()) + * .role("roles/storage.objectAdmin") + * .member(account.email().applyValue(email -> String.format("serviceAccount:%s", email))) + * .build()); + * + * var bucket = new Bucket("bucket", BucketArgs.builder() + * .name(String.format("%s-gcf-source", project)) + * .location("US") + * .uniformBucketLevelAccess(true) + * .build()); + * + * var object = new BucketObject("object", BucketObjectArgs.builder() + * .name("function-source.zip") + * .bucket(bucket.name()) + * .source(new FileAsset("function-source.zip")) + * .build()); + * + * // builder permissions need to stablize before it can pull the source zip + * var wait60s = new Sleep("wait60s", SleepArgs.builder() + * .createDuration("60s") + * .build()); + * + * var function = new Function("function", FunctionArgs.builder() + * .name("function-v2") + * .location("us-central1") + * .description("a new function") + * .buildConfig(FunctionBuildConfigArgs.builder() + * .runtime("nodejs16") + * .entryPoint("helloHttp") + * .source(FunctionBuildConfigSourceArgs.builder() + * .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder() + * .bucket(bucket.name()) + * .object(object.name()) + * .build()) + * .build()) + * .serviceAccount(account.id()) + * .build()) + * .serviceConfig(FunctionServiceConfigArgs.builder() + * .maxInstanceCount(1) + * .availableMemory("256M") + * .timeoutSeconds(60) + * .build()) + * .build()); + * + * ctx.export("functionUri", function.serviceConfig().applyValue(serviceConfig -> serviceConfig.uri())); + * } + * } + * ``` + * <!--End PulumiCodeChooser --> * ### Cloudfunctions2 Secret Env * * <!--Start PulumiCodeChooser --> diff --git a/sdk/java/src/main/java/com/pulumi/gcp/cloudfunctionsv2/inputs/FunctionBuildConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/cloudfunctionsv2/inputs/FunctionBuildConfigArgs.java index 01347c984f..334b21f552 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/cloudfunctionsv2/inputs/FunctionBuildConfigArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/cloudfunctionsv2/inputs/FunctionBuildConfigArgs.java @@ -106,6 +106,21 @@ public Optional> runtime() { return Optional.ofNullable(this.runtime); } + /** + * The fully-qualified name of the service account to be used for building the container. + * + */ + @Import(name="serviceAccount") + private @Nullable Output serviceAccount; + + /** + * @return The fully-qualified name of the service account to be used for building the container. + * + */ + public Optional> serviceAccount() { + return Optional.ofNullable(this.serviceAccount); + } + /** * The location of the function source code. * Structure is documented below. @@ -146,6 +161,7 @@ private FunctionBuildConfigArgs(FunctionBuildConfigArgs $) { this.entryPoint = $.entryPoint; this.environmentVariables = $.environmentVariables; this.runtime = $.runtime; + this.serviceAccount = $.serviceAccount; this.source = $.source; this.workerPool = $.workerPool; } @@ -287,6 +303,27 @@ public Builder runtime(String runtime) { return runtime(Output.of(runtime)); } + /** + * @param serviceAccount The fully-qualified name of the service account to be used for building the container. + * + * @return builder + * + */ + public Builder serviceAccount(@Nullable Output serviceAccount) { + $.serviceAccount = serviceAccount; + return this; + } + + /** + * @param serviceAccount The fully-qualified name of the service account to be used for building the container. + * + * @return builder + * + */ + public Builder serviceAccount(String serviceAccount) { + return serviceAccount(Output.of(serviceAccount)); + } + /** * @param source The location of the function source code. * Structure is documented below. diff --git a/sdk/java/src/main/java/com/pulumi/gcp/cloudfunctionsv2/outputs/FunctionBuildConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/cloudfunctionsv2/outputs/FunctionBuildConfig.java index d65e42fd3e..263021712e 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/cloudfunctionsv2/outputs/FunctionBuildConfig.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/cloudfunctionsv2/outputs/FunctionBuildConfig.java @@ -45,6 +45,11 @@ public final class FunctionBuildConfig { * */ private @Nullable String runtime; + /** + * @return The fully-qualified name of the service account to be used for building the container. + * + */ + private @Nullable String serviceAccount; /** * @return The location of the function source code. * Structure is documented below. @@ -100,6 +105,13 @@ public Map environmentVariables() { public Optional runtime() { return Optional.ofNullable(this.runtime); } + /** + * @return The fully-qualified name of the service account to be used for building the container. + * + */ + public Optional serviceAccount() { + return Optional.ofNullable(this.serviceAccount); + } /** * @return The location of the function source code. * Structure is documented below. @@ -130,6 +142,7 @@ public static final class Builder { private @Nullable String entryPoint; private @Nullable Map environmentVariables; private @Nullable String runtime; + private @Nullable String serviceAccount; private @Nullable FunctionBuildConfigSource source; private @Nullable String workerPool; public Builder() {} @@ -140,6 +153,7 @@ public Builder(FunctionBuildConfig defaults) { this.entryPoint = defaults.entryPoint; this.environmentVariables = defaults.environmentVariables; this.runtime = defaults.runtime; + this.serviceAccount = defaults.serviceAccount; this.source = defaults.source; this.workerPool = defaults.workerPool; } @@ -175,6 +189,12 @@ public Builder runtime(@Nullable String runtime) { return this; } @CustomType.Setter + public Builder serviceAccount(@Nullable String serviceAccount) { + + this.serviceAccount = serviceAccount; + return this; + } + @CustomType.Setter public Builder source(@Nullable FunctionBuildConfigSource source) { this.source = source; @@ -193,6 +213,7 @@ public FunctionBuildConfig build() { _resultValue.entryPoint = entryPoint; _resultValue.environmentVariables = environmentVariables; _resultValue.runtime = runtime; + _resultValue.serviceAccount = serviceAccount; _resultValue.source = source; _resultValue.workerPool = workerPool; return _resultValue; diff --git a/sdk/java/src/main/java/com/pulumi/gcp/cloudfunctionsv2/outputs/GetFunctionBuildConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/cloudfunctionsv2/outputs/GetFunctionBuildConfig.java index 7b4f460973..b831ee14b2 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/cloudfunctionsv2/outputs/GetFunctionBuildConfig.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/cloudfunctionsv2/outputs/GetFunctionBuildConfig.java @@ -44,6 +44,11 @@ public final class GetFunctionBuildConfig { * */ private String runtime; + /** + * @return The fully-qualified name of the service account to be used for building the container. + * + */ + private String serviceAccount; /** * @return The location of the function source code. * @@ -97,6 +102,13 @@ public Map environmentVariables() { public String runtime() { return this.runtime; } + /** + * @return The fully-qualified name of the service account to be used for building the container. + * + */ + public String serviceAccount() { + return this.serviceAccount; + } /** * @return The location of the function source code. * @@ -126,6 +138,7 @@ public static final class Builder { private String entryPoint; private Map environmentVariables; private String runtime; + private String serviceAccount; private List sources; private String workerPool; public Builder() {} @@ -136,6 +149,7 @@ public Builder(GetFunctionBuildConfig defaults) { this.entryPoint = defaults.entryPoint; this.environmentVariables = defaults.environmentVariables; this.runtime = defaults.runtime; + this.serviceAccount = defaults.serviceAccount; this.sources = defaults.sources; this.workerPool = defaults.workerPool; } @@ -181,6 +195,14 @@ public Builder runtime(String runtime) { return this; } @CustomType.Setter + public Builder serviceAccount(String serviceAccount) { + if (serviceAccount == null) { + throw new MissingRequiredPropertyException("GetFunctionBuildConfig", "serviceAccount"); + } + this.serviceAccount = serviceAccount; + return this; + } + @CustomType.Setter public Builder sources(List sources) { if (sources == null) { throw new MissingRequiredPropertyException("GetFunctionBuildConfig", "sources"); @@ -206,6 +228,7 @@ public GetFunctionBuildConfig build() { _resultValue.entryPoint = entryPoint; _resultValue.environmentVariables = environmentVariables; _resultValue.runtime = runtime; + _resultValue.serviceAccount = serviceAccount; _resultValue.sources = sources; _resultValue.workerPool = workerPool; return _resultValue; diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/InstanceGroupManager.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/InstanceGroupManager.java index 3a7d7ac08e..747d864a68 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/compute/InstanceGroupManager.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/InstanceGroupManager.java @@ -14,6 +14,7 @@ import com.pulumi.gcp.compute.outputs.InstanceGroupManagerAutoHealingPolicies; import com.pulumi.gcp.compute.outputs.InstanceGroupManagerInstanceLifecyclePolicy; import com.pulumi.gcp.compute.outputs.InstanceGroupManagerNamedPort; +import com.pulumi.gcp.compute.outputs.InstanceGroupManagerParams; import com.pulumi.gcp.compute.outputs.InstanceGroupManagerStatefulDisk; import com.pulumi.gcp.compute.outputs.InstanceGroupManagerStatefulExternalIp; import com.pulumi.gcp.compute.outputs.InstanceGroupManagerStatefulInternalIp; @@ -386,6 +387,24 @@ public Output>> namedPorts() { public Output operation() { return this.operation; } + /** + * Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + * + * *** + * + */ + @Export(name="params", refs={InstanceGroupManagerParams.class}, tree="[0]") + private Output params; + + /** + * @return Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + * + * *** + * + */ + public Output> params() { + return Codegen.optional(this.params); + } /** * The ID of the project in which the resource belongs. If it * is not provided, the provider project is used. @@ -507,18 +526,14 @@ public Output targetSize() { return this.targetSize; } /** - * The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch) - * - * *** + * The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch). * */ @Export(name="updatePolicy", refs={InstanceGroupManagerUpdatePolicy.class}, tree="[0]") private Output updatePolicy; /** - * @return The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch) - * - * *** + * @return The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch). * */ public Output updatePolicy() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/InstanceGroupManagerArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/InstanceGroupManagerArgs.java index a81a21cd8a..78a3934ca3 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/compute/InstanceGroupManagerArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/InstanceGroupManagerArgs.java @@ -10,6 +10,7 @@ import com.pulumi.gcp.compute.inputs.InstanceGroupManagerAutoHealingPoliciesArgs; import com.pulumi.gcp.compute.inputs.InstanceGroupManagerInstanceLifecyclePolicyArgs; import com.pulumi.gcp.compute.inputs.InstanceGroupManagerNamedPortArgs; +import com.pulumi.gcp.compute.inputs.InstanceGroupManagerParamsArgs; import com.pulumi.gcp.compute.inputs.InstanceGroupManagerStatefulDiskArgs; import com.pulumi.gcp.compute.inputs.InstanceGroupManagerStatefulExternalIpArgs; import com.pulumi.gcp.compute.inputs.InstanceGroupManagerStatefulInternalIpArgs; @@ -184,6 +185,25 @@ public Optional>> namedPorts() { return Optional.ofNullable(this.namedPorts); } + /** + * Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + * + * *** + * + */ + @Import(name="params") + private @Nullable Output params; + + /** + * @return Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + * + * *** + * + */ + public Optional> params() { + return Optional.ofNullable(this.params); + } + /** * The ID of the project in which the resource belongs. If it * is not provided, the provider project is used. @@ -283,18 +303,14 @@ public Optional> targetSize() { } /** - * The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch) - * - * *** + * The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch). * */ @Import(name="updatePolicy") private @Nullable Output updatePolicy; /** - * @return The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch) - * - * *** + * @return The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch). * */ public Optional> updatePolicy() { @@ -392,6 +408,7 @@ private InstanceGroupManagerArgs(InstanceGroupManagerArgs $) { this.listManagedInstancesResults = $.listManagedInstancesResults; this.name = $.name; this.namedPorts = $.namedPorts; + this.params = $.params; this.project = $.project; this.statefulDisks = $.statefulDisks; this.statefulExternalIps = $.statefulExternalIps; @@ -638,6 +655,31 @@ public Builder namedPorts(InstanceGroupManagerNamedPortArgs... namedPorts) { return namedPorts(List.of(namedPorts)); } + /** + * @param params Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + * + * *** + * + * @return builder + * + */ + public Builder params(@Nullable Output params) { + $.params = params; + return this; + } + + /** + * @param params Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + * + * *** + * + * @return builder + * + */ + public Builder params(InstanceGroupManagerParamsArgs params) { + return params(Output.of(params)); + } + /** * @param project The ID of the project in which the resource belongs. If it * is not provided, the provider project is used. @@ -815,9 +857,7 @@ public Builder targetSize(Integer targetSize) { } /** - * @param updatePolicy The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch) - * - * *** + * @param updatePolicy The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch). * * @return builder * @@ -828,9 +868,7 @@ public Builder updatePolicy(@Nullable Output name() { public Output>> namedPorts() { return Codegen.optional(this.namedPorts); } + /** + * Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + * + * *** + * + */ + @Export(name="params", refs={RegionInstanceGroupManagerParams.class}, tree="[0]") + private Output params; + + /** + * @return Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + * + * *** + * + */ + public Output> params() { + return Codegen.optional(this.params); + } /** * The ID of the project in which the resource belongs. If it * is not provided, the provider project is used. @@ -463,8 +482,6 @@ public Output>> statefulDi /** * External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. * - * *** - * */ @Export(name="statefulExternalIps", refs={List.class,RegionInstanceGroupManagerStatefulExternalIp.class}, tree="[0,1]") private Output> statefulExternalIps; @@ -472,8 +489,6 @@ public Output>> statefulDi /** * @return External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. * - * *** - * */ public Output>> statefulExternalIps() { return Codegen.optional(this.statefulExternalIps); diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/RegionInstanceGroupManagerArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/RegionInstanceGroupManagerArgs.java index e90490db75..4c3715a108 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/compute/RegionInstanceGroupManagerArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/RegionInstanceGroupManagerArgs.java @@ -10,6 +10,7 @@ import com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerAutoHealingPoliciesArgs; import com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerInstanceLifecyclePolicyArgs; import com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerNamedPortArgs; +import com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerParamsArgs; import com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerStatefulDiskArgs; import com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerStatefulExternalIpArgs; import com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerStatefulInternalIpArgs; @@ -216,6 +217,25 @@ public Optional>> namedPort return Optional.ofNullable(this.namedPorts); } + /** + * Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + * + * *** + * + */ + @Import(name="params") + private @Nullable Output params; + + /** + * @return Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + * + * *** + * + */ + public Optional> params() { + return Optional.ofNullable(this.params); + } + /** * The ID of the project in which the resource belongs. If it * is not provided, the provider project is used. @@ -270,8 +290,6 @@ public Optional>> statef /** * External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. * - * *** - * */ @Import(name="statefulExternalIps") private @Nullable Output> statefulExternalIps; @@ -279,8 +297,6 @@ public Optional>> statef /** * @return External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. * - * *** - * */ public Optional>> statefulExternalIps() { return Optional.ofNullable(this.statefulExternalIps); @@ -424,6 +440,7 @@ private RegionInstanceGroupManagerArgs(RegionInstanceGroupManagerArgs $) { this.listManagedInstancesResults = $.listManagedInstancesResults; this.name = $.name; this.namedPorts = $.namedPorts; + this.params = $.params; this.project = $.project; this.region = $.region; this.statefulDisks = $.statefulDisks; @@ -725,6 +742,31 @@ public Builder namedPorts(RegionInstanceGroupManagerNamedPortArgs... namedPorts) return namedPorts(List.of(namedPorts)); } + /** + * @param params Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + * + * *** + * + * @return builder + * + */ + public Builder params(@Nullable Output params) { + $.params = params; + return this; + } + + /** + * @param params Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + * + * *** + * + * @return builder + * + */ + public Builder params(RegionInstanceGroupManagerParamsArgs params) { + return params(Output.of(params)); + } + /** * @param project The ID of the project in which the resource belongs. If it * is not provided, the provider project is used. @@ -807,8 +849,6 @@ public Builder statefulDisks(RegionInstanceGroupManagerStatefulDiskArgs... state /** * @param statefulExternalIps External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. * - * *** - * * @return builder * */ @@ -820,8 +860,6 @@ public Builder statefulExternalIps(@Nullable Output> resourceManagerTags; + + /** + * @return Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) + * + */ + public Optional>> resourceManagerTags() { + return Optional.ofNullable(this.resourceManagerTags); + } + + private InstanceGroupManagerParamsArgs() {} + + private InstanceGroupManagerParamsArgs(InstanceGroupManagerParamsArgs $) { + this.resourceManagerTags = $.resourceManagerTags; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(InstanceGroupManagerParamsArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private InstanceGroupManagerParamsArgs $; + + public Builder() { + $ = new InstanceGroupManagerParamsArgs(); + } + + public Builder(InstanceGroupManagerParamsArgs defaults) { + $ = new InstanceGroupManagerParamsArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param resourceManagerTags Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) + * + * @return builder + * + */ + public Builder resourceManagerTags(@Nullable Output> resourceManagerTags) { + $.resourceManagerTags = resourceManagerTags; + return this; + } + + /** + * @param resourceManagerTags Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) + * + * @return builder + * + */ + public Builder resourceManagerTags(Map resourceManagerTags) { + return resourceManagerTags(Output.of(resourceManagerTags)); + } + + public InstanceGroupManagerParamsArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/InstanceGroupManagerState.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/InstanceGroupManagerState.java index 608df86e95..abf158ed08 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/InstanceGroupManagerState.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/InstanceGroupManagerState.java @@ -9,6 +9,7 @@ import com.pulumi.gcp.compute.inputs.InstanceGroupManagerAutoHealingPoliciesArgs; import com.pulumi.gcp.compute.inputs.InstanceGroupManagerInstanceLifecyclePolicyArgs; import com.pulumi.gcp.compute.inputs.InstanceGroupManagerNamedPortArgs; +import com.pulumi.gcp.compute.inputs.InstanceGroupManagerParamsArgs; import com.pulumi.gcp.compute.inputs.InstanceGroupManagerStatefulDiskArgs; import com.pulumi.gcp.compute.inputs.InstanceGroupManagerStatefulExternalIpArgs; import com.pulumi.gcp.compute.inputs.InstanceGroupManagerStatefulInternalIpArgs; @@ -236,6 +237,25 @@ public Optional> operation() { return Optional.ofNullable(this.operation); } + /** + * Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + * + * *** + * + */ + @Import(name="params") + private @Nullable Output params; + + /** + * @return Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + * + * *** + * + */ + public Optional> params() { + return Optional.ofNullable(this.params); + } + /** * The ID of the project in which the resource belongs. If it * is not provided, the provider project is used. @@ -365,18 +385,14 @@ public Optional> targetSize() { } /** - * The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch) - * - * *** + * The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch). * */ @Import(name="updatePolicy") private @Nullable Output updatePolicy; /** - * @return The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch) - * - * *** + * @return The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch). * */ public Optional> updatePolicy() { @@ -478,6 +494,7 @@ private InstanceGroupManagerState(InstanceGroupManagerState $) { this.name = $.name; this.namedPorts = $.namedPorts; this.operation = $.operation; + this.params = $.params; this.project = $.project; this.selfLink = $.selfLink; this.statefulDisks = $.statefulDisks; @@ -798,6 +815,31 @@ public Builder operation(String operation) { return operation(Output.of(operation)); } + /** + * @param params Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + * + * *** + * + * @return builder + * + */ + public Builder params(@Nullable Output params) { + $.params = params; + return this; + } + + /** + * @param params Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + * + * *** + * + * @return builder + * + */ + public Builder params(InstanceGroupManagerParamsArgs params) { + return params(Output.of(params)); + } + /** * @param project The ID of the project in which the resource belongs. If it * is not provided, the provider project is used. @@ -1027,9 +1069,7 @@ public Builder targetSize(Integer targetSize) { } /** - * @param updatePolicy The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch) - * - * *** + * @param updatePolicy The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch). * * @return builder * @@ -1040,9 +1080,7 @@ public Builder updatePolicy(@Nullable Output> resourceManagerTags; + + /** + * @return Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) + * + */ + public Optional>> resourceManagerTags() { + return Optional.ofNullable(this.resourceManagerTags); + } + + private RegionInstanceGroupManagerParamsArgs() {} + + private RegionInstanceGroupManagerParamsArgs(RegionInstanceGroupManagerParamsArgs $) { + this.resourceManagerTags = $.resourceManagerTags; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(RegionInstanceGroupManagerParamsArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private RegionInstanceGroupManagerParamsArgs $; + + public Builder() { + $ = new RegionInstanceGroupManagerParamsArgs(); + } + + public Builder(RegionInstanceGroupManagerParamsArgs defaults) { + $ = new RegionInstanceGroupManagerParamsArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param resourceManagerTags Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) + * + * @return builder + * + */ + public Builder resourceManagerTags(@Nullable Output> resourceManagerTags) { + $.resourceManagerTags = resourceManagerTags; + return this; + } + + /** + * @param resourceManagerTags Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) + * + * @return builder + * + */ + public Builder resourceManagerTags(Map resourceManagerTags) { + return resourceManagerTags(Output.of(resourceManagerTags)); + } + + public RegionInstanceGroupManagerParamsArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionInstanceGroupManagerState.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionInstanceGroupManagerState.java index 6db093c041..de87f38b02 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionInstanceGroupManagerState.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionInstanceGroupManagerState.java @@ -9,6 +9,7 @@ import com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerAutoHealingPoliciesArgs; import com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerInstanceLifecyclePolicyArgs; import com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerNamedPortArgs; +import com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerParamsArgs; import com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerStatefulDiskArgs; import com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerStatefulExternalIpArgs; import com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerStatefulInternalIpArgs; @@ -261,6 +262,25 @@ public Optional>> namedPort return Optional.ofNullable(this.namedPorts); } + /** + * Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + * + * *** + * + */ + @Import(name="params") + private @Nullable Output params; + + /** + * @return Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + * + * *** + * + */ + public Optional> params() { + return Optional.ofNullable(this.params); + } + /** * The ID of the project in which the resource belongs. If it * is not provided, the provider project is used. @@ -330,8 +350,6 @@ public Optional>> statef /** * External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. * - * *** - * */ @Import(name="statefulExternalIps") private @Nullable Output> statefulExternalIps; @@ -339,8 +357,6 @@ public Optional>> statef /** * @return External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. * - * *** - * */ public Optional>> statefulExternalIps() { return Optional.ofNullable(this.statefulExternalIps); @@ -502,6 +518,7 @@ private RegionInstanceGroupManagerState(RegionInstanceGroupManagerState $) { this.listManagedInstancesResults = $.listManagedInstancesResults; this.name = $.name; this.namedPorts = $.namedPorts; + this.params = $.params; this.project = $.project; this.region = $.region; this.selfLink = $.selfLink; @@ -868,6 +885,31 @@ public Builder namedPorts(RegionInstanceGroupManagerNamedPortArgs... namedPorts) return namedPorts(List.of(namedPorts)); } + /** + * @param params Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + * + * *** + * + * @return builder + * + */ + public Builder params(@Nullable Output params) { + $.params = params; + return this; + } + + /** + * @param params Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + * + * *** + * + * @return builder + * + */ + public Builder params(RegionInstanceGroupManagerParamsArgs params) { + return params(Output.of(params)); + } + /** * @param project The ID of the project in which the resource belongs. If it * is not provided, the provider project is used. @@ -971,8 +1013,6 @@ public Builder statefulDisks(RegionInstanceGroupManagerStatefulDiskArgs... state /** * @param statefulExternalIps External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. * - * *** - * * @return builder * */ @@ -984,8 +1024,6 @@ public Builder statefulExternalIps(@Nullable Output resourceManagerTags; + + private GetInstanceGroupManagerParam() {} + /** + * @return Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. + * + */ + public Map resourceManagerTags() { + return this.resourceManagerTags; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetInstanceGroupManagerParam defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private Map resourceManagerTags; + public Builder() {} + public Builder(GetInstanceGroupManagerParam defaults) { + Objects.requireNonNull(defaults); + this.resourceManagerTags = defaults.resourceManagerTags; + } + + @CustomType.Setter + public Builder resourceManagerTags(Map resourceManagerTags) { + if (resourceManagerTags == null) { + throw new MissingRequiredPropertyException("GetInstanceGroupManagerParam", "resourceManagerTags"); + } + this.resourceManagerTags = resourceManagerTags; + return this; + } + public GetInstanceGroupManagerParam build() { + final var _resultValue = new GetInstanceGroupManagerParam(); + _resultValue.resourceManagerTags = resourceManagerTags; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/GetInstanceGroupManagerResult.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/GetInstanceGroupManagerResult.java index ec25153c1d..835f11309b 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/GetInstanceGroupManagerResult.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/GetInstanceGroupManagerResult.java @@ -9,6 +9,7 @@ import com.pulumi.gcp.compute.outputs.GetInstanceGroupManagerAutoHealingPolicy; import com.pulumi.gcp.compute.outputs.GetInstanceGroupManagerInstanceLifecyclePolicy; import com.pulumi.gcp.compute.outputs.GetInstanceGroupManagerNamedPort; +import com.pulumi.gcp.compute.outputs.GetInstanceGroupManagerParam; import com.pulumi.gcp.compute.outputs.GetInstanceGroupManagerStatefulDisk; import com.pulumi.gcp.compute.outputs.GetInstanceGroupManagerStatefulExternalIp; import com.pulumi.gcp.compute.outputs.GetInstanceGroupManagerStatefulInternalIp; @@ -42,6 +43,7 @@ public final class GetInstanceGroupManagerResult { private @Nullable String name; private List namedPorts; private String operation; + private List params; private @Nullable String project; private @Nullable String selfLink; private List statefulDisks; @@ -100,6 +102,9 @@ public List namedPorts() { public String operation() { return this.operation; } + public List params() { + return this.params; + } public Optional project() { return Optional.ofNullable(this.project); } @@ -162,6 +167,7 @@ public static final class Builder { private @Nullable String name; private List namedPorts; private String operation; + private List params; private @Nullable String project; private @Nullable String selfLink; private List statefulDisks; @@ -191,6 +197,7 @@ public Builder(GetInstanceGroupManagerResult defaults) { this.name = defaults.name; this.namedPorts = defaults.namedPorts; this.operation = defaults.operation; + this.params = defaults.params; this.project = defaults.project; this.selfLink = defaults.selfLink; this.statefulDisks = defaults.statefulDisks; @@ -321,6 +328,17 @@ public Builder operation(String operation) { return this; } @CustomType.Setter + public Builder params(List params) { + if (params == null) { + throw new MissingRequiredPropertyException("GetInstanceGroupManagerResult", "params"); + } + this.params = params; + return this; + } + public Builder params(GetInstanceGroupManagerParam... params) { + return params(List.of(params)); + } + @CustomType.Setter public Builder project(@Nullable String project) { this.project = project; @@ -454,6 +472,7 @@ public GetInstanceGroupManagerResult build() { _resultValue.name = name; _resultValue.namedPorts = namedPorts; _resultValue.operation = operation; + _resultValue.params = params; _resultValue.project = project; _resultValue.selfLink = selfLink; _resultValue.statefulDisks = statefulDisks; diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/InstanceGroupManagerParams.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/InstanceGroupManagerParams.java new file mode 100644 index 0000000000..129b459dad --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/InstanceGroupManagerParams.java @@ -0,0 +1,58 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.compute.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.Object; +import java.lang.String; +import java.util.Map; +import java.util.Objects; +import javax.annotation.Nullable; + +@CustomType +public final class InstanceGroupManagerParams { + /** + * @return Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) + * + */ + private @Nullable Map resourceManagerTags; + + private InstanceGroupManagerParams() {} + /** + * @return Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) + * + */ + public Map resourceManagerTags() { + return this.resourceManagerTags == null ? Map.of() : this.resourceManagerTags; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(InstanceGroupManagerParams defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable Map resourceManagerTags; + public Builder() {} + public Builder(InstanceGroupManagerParams defaults) { + Objects.requireNonNull(defaults); + this.resourceManagerTags = defaults.resourceManagerTags; + } + + @CustomType.Setter + public Builder resourceManagerTags(@Nullable Map resourceManagerTags) { + + this.resourceManagerTags = resourceManagerTags; + return this; + } + public InstanceGroupManagerParams build() { + final var _resultValue = new InstanceGroupManagerParams(); + _resultValue.resourceManagerTags = resourceManagerTags; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionInstanceGroupManagerParams.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionInstanceGroupManagerParams.java new file mode 100644 index 0000000000..a8f49907cc --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionInstanceGroupManagerParams.java @@ -0,0 +1,58 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.compute.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.Object; +import java.lang.String; +import java.util.Map; +import java.util.Objects; +import javax.annotation.Nullable; + +@CustomType +public final class RegionInstanceGroupManagerParams { + /** + * @return Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) + * + */ + private @Nullable Map resourceManagerTags; + + private RegionInstanceGroupManagerParams() {} + /** + * @return Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) + * + */ + public Map resourceManagerTags() { + return this.resourceManagerTags == null ? Map.of() : this.resourceManagerTags; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(RegionInstanceGroupManagerParams defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable Map resourceManagerTags; + public Builder() {} + public Builder(RegionInstanceGroupManagerParams defaults) { + Objects.requireNonNull(defaults); + this.resourceManagerTags = defaults.resourceManagerTags; + } + + @CustomType.Setter + public Builder resourceManagerTags(@Nullable Map resourceManagerTags) { + + this.resourceManagerTags = resourceManagerTags; + return this; + } + public RegionInstanceGroupManagerParams build() { + final var _resultValue = new RegionInstanceGroupManagerParams(); + _resultValue.resourceManagerTags = resourceManagerTags; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/container/outputs/GetClusterMasterAuthorizedNetworksConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/container/outputs/GetClusterMasterAuthorizedNetworksConfig.java index 2dff8ea1a4..ca9736449f 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/container/outputs/GetClusterMasterAuthorizedNetworksConfig.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/container/outputs/GetClusterMasterAuthorizedNetworksConfig.java @@ -18,7 +18,7 @@ public final class GetClusterMasterAuthorizedNetworksConfig { */ private List cidrBlocks; /** - * @return Whether master is accessbile via Google Compute Engine Public IP addresses. + * @return Whether Kubernetes master is accessible via Google Compute Engine Public IPs. * */ private Boolean gcpPublicCidrsAccessEnabled; @@ -32,7 +32,7 @@ public List cidrBlocks() { return this.cidrBlocks; } /** - * @return Whether master is accessbile via Google Compute Engine Public IP addresses. + * @return Whether Kubernetes master is accessible via Google Compute Engine Public IPs. * */ public Boolean gcpPublicCidrsAccessEnabled() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/container/outputs/GetClusterServiceExternalIpsConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/container/outputs/GetClusterServiceExternalIpsConfig.java index b1f37d758d..cc748f1aa6 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/container/outputs/GetClusterServiceExternalIpsConfig.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/container/outputs/GetClusterServiceExternalIpsConfig.java @@ -11,14 +11,14 @@ @CustomType public final class GetClusterServiceExternalIpsConfig { /** - * @return When enabled, services with exterenal ips specified will be allowed. + * @return When enabled, services with external ips specified will be allowed. * */ private Boolean enabled; private GetClusterServiceExternalIpsConfig() {} /** - * @return When enabled, services with exterenal ips specified will be allowed. + * @return When enabled, services with external ips specified will be allowed. * */ public Boolean enabled() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/GetManagedZonesArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/GetManagedZonesArgs.java index c2485e9540..d770daa03b 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/GetManagedZonesArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/GetManagedZonesArgs.java @@ -5,9 +5,7 @@ import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; -import com.pulumi.gcp.dns.inputs.GetManagedZonesManagedZoneArgs; import java.lang.String; -import java.util.List; import java.util.Objects; import java.util.Optional; import javax.annotation.Nullable; @@ -17,21 +15,6 @@ public final class GetManagedZonesArgs extends com.pulumi.resources.InvokeArgs { public static final GetManagedZonesArgs Empty = new GetManagedZonesArgs(); - /** - * A list of managed zones. - * - */ - @Import(name="managedZones") - private @Nullable Output> managedZones; - - /** - * @return A list of managed zones. - * - */ - public Optional>> managedZones() { - return Optional.ofNullable(this.managedZones); - } - /** * The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. * @@ -50,7 +33,6 @@ public Optional> project() { private GetManagedZonesArgs() {} private GetManagedZonesArgs(GetManagedZonesArgs $) { - this.managedZones = $.managedZones; this.project = $.project; } @@ -72,37 +54,6 @@ public Builder(GetManagedZonesArgs defaults) { $ = new GetManagedZonesArgs(Objects.requireNonNull(defaults)); } - /** - * @param managedZones A list of managed zones. - * - * @return builder - * - */ - public Builder managedZones(@Nullable Output> managedZones) { - $.managedZones = managedZones; - return this; - } - - /** - * @param managedZones A list of managed zones. - * - * @return builder - * - */ - public Builder managedZones(List managedZones) { - return managedZones(Output.of(managedZones)); - } - - /** - * @param managedZones A list of managed zones. - * - * @return builder - * - */ - public Builder managedZones(GetManagedZonesManagedZoneArgs... managedZones) { - return managedZones(List.of(managedZones)); - } - /** * @param project The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/GetManagedZonesManagedZone.java b/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/GetManagedZonesManagedZone.java deleted file mode 100644 index cb10eb8286..0000000000 --- a/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/GetManagedZonesManagedZone.java +++ /dev/null @@ -1,296 +0,0 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.gcp.dns.inputs; - -import com.pulumi.core.annotations.Import; -import com.pulumi.exceptions.MissingRequiredPropertyException; -import java.lang.Integer; -import java.lang.String; -import java.util.List; -import java.util.Objects; - - -public final class GetManagedZonesManagedZone extends com.pulumi.resources.InvokeArgs { - - public static final GetManagedZonesManagedZone Empty = new GetManagedZonesManagedZone(); - - /** - * A textual description field. - * - */ - @Import(name="description", required=true) - private String description; - - /** - * @return A textual description field. - * - */ - public String description() { - return this.description; - } - - /** - * The fully qualified DNS name of this zone. - * - */ - @Import(name="dnsName", required=true) - private String dnsName; - - /** - * @return The fully qualified DNS name of this zone. - * - */ - public String dnsName() { - return this.dnsName; - } - - /** - * DNS managed zone identifier - * - */ - @Import(name="id", required=true) - private String id; - - /** - * @return DNS managed zone identifier - * - */ - public String id() { - return this.id; - } - - /** - * Unique identifier for the resource; defined by the server. - * - */ - @Import(name="managedZoneId", required=true) - private Integer managedZoneId; - - /** - * @return Unique identifier for the resource; defined by the server. - * - */ - public Integer managedZoneId() { - return this.managedZoneId; - } - - /** - * A unique name for the resource. - * - */ - @Import(name="name", required=true) - private String name; - - /** - * @return A unique name for the resource. - * - */ - public String name() { - return this.name; - } - - /** - * The list of nameservers that will be authoritative for this domain. Use NS records to redirect from your DNS provider to these names, thus making Google Cloud DNS authoritative for this zone. - * - */ - @Import(name="nameServers", required=true) - private List nameServers; - - /** - * @return The list of nameservers that will be authoritative for this domain. Use NS records to redirect from your DNS provider to these names, thus making Google Cloud DNS authoritative for this zone. - * - */ - public List nameServers() { - return this.nameServers; - } - - /** - * The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. - * - */ - @Import(name="project", required=true) - private String project; - - /** - * @return The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. - * - */ - public String project() { - return this.project; - } - - /** - * The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources. - * - */ - @Import(name="visibility", required=true) - private String visibility; - - /** - * @return The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources. - * - */ - public String visibility() { - return this.visibility; - } - - private GetManagedZonesManagedZone() {} - - private GetManagedZonesManagedZone(GetManagedZonesManagedZone $) { - this.description = $.description; - this.dnsName = $.dnsName; - this.id = $.id; - this.managedZoneId = $.managedZoneId; - this.name = $.name; - this.nameServers = $.nameServers; - this.project = $.project; - this.visibility = $.visibility; - } - - public static Builder builder() { - return new Builder(); - } - public static Builder builder(GetManagedZonesManagedZone defaults) { - return new Builder(defaults); - } - - public static final class Builder { - private GetManagedZonesManagedZone $; - - public Builder() { - $ = new GetManagedZonesManagedZone(); - } - - public Builder(GetManagedZonesManagedZone defaults) { - $ = new GetManagedZonesManagedZone(Objects.requireNonNull(defaults)); - } - - /** - * @param description A textual description field. - * - * @return builder - * - */ - public Builder description(String description) { - $.description = description; - return this; - } - - /** - * @param dnsName The fully qualified DNS name of this zone. - * - * @return builder - * - */ - public Builder dnsName(String dnsName) { - $.dnsName = dnsName; - return this; - } - - /** - * @param id DNS managed zone identifier - * - * @return builder - * - */ - public Builder id(String id) { - $.id = id; - return this; - } - - /** - * @param managedZoneId Unique identifier for the resource; defined by the server. - * - * @return builder - * - */ - public Builder managedZoneId(Integer managedZoneId) { - $.managedZoneId = managedZoneId; - return this; - } - - /** - * @param name A unique name for the resource. - * - * @return builder - * - */ - public Builder name(String name) { - $.name = name; - return this; - } - - /** - * @param nameServers The list of nameservers that will be authoritative for this domain. Use NS records to redirect from your DNS provider to these names, thus making Google Cloud DNS authoritative for this zone. - * - * @return builder - * - */ - public Builder nameServers(List nameServers) { - $.nameServers = nameServers; - return this; - } - - /** - * @param nameServers The list of nameservers that will be authoritative for this domain. Use NS records to redirect from your DNS provider to these names, thus making Google Cloud DNS authoritative for this zone. - * - * @return builder - * - */ - public Builder nameServers(String... nameServers) { - return nameServers(List.of(nameServers)); - } - - /** - * @param project The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. - * - * @return builder - * - */ - public Builder project(String project) { - $.project = project; - return this; - } - - /** - * @param visibility The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources. - * - * @return builder - * - */ - public Builder visibility(String visibility) { - $.visibility = visibility; - return this; - } - - public GetManagedZonesManagedZone build() { - if ($.description == null) { - throw new MissingRequiredPropertyException("GetManagedZonesManagedZone", "description"); - } - if ($.dnsName == null) { - throw new MissingRequiredPropertyException("GetManagedZonesManagedZone", "dnsName"); - } - if ($.id == null) { - throw new MissingRequiredPropertyException("GetManagedZonesManagedZone", "id"); - } - if ($.managedZoneId == null) { - throw new MissingRequiredPropertyException("GetManagedZonesManagedZone", "managedZoneId"); - } - if ($.name == null) { - throw new MissingRequiredPropertyException("GetManagedZonesManagedZone", "name"); - } - if ($.nameServers == null) { - throw new MissingRequiredPropertyException("GetManagedZonesManagedZone", "nameServers"); - } - if ($.project == null) { - throw new MissingRequiredPropertyException("GetManagedZonesManagedZone", "project"); - } - if ($.visibility == null) { - throw new MissingRequiredPropertyException("GetManagedZonesManagedZone", "visibility"); - } - return $; - } - } - -} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/GetManagedZonesManagedZoneArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/GetManagedZonesManagedZoneArgs.java deleted file mode 100644 index d33488430e..0000000000 --- a/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/GetManagedZonesManagedZoneArgs.java +++ /dev/null @@ -1,377 +0,0 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.gcp.dns.inputs; - -import com.pulumi.core.Output; -import com.pulumi.core.annotations.Import; -import com.pulumi.exceptions.MissingRequiredPropertyException; -import java.lang.Integer; -import java.lang.String; -import java.util.List; -import java.util.Objects; - - -public final class GetManagedZonesManagedZoneArgs extends com.pulumi.resources.ResourceArgs { - - public static final GetManagedZonesManagedZoneArgs Empty = new GetManagedZonesManagedZoneArgs(); - - /** - * A textual description field. - * - */ - @Import(name="description", required=true) - private Output description; - - /** - * @return A textual description field. - * - */ - public Output description() { - return this.description; - } - - /** - * The fully qualified DNS name of this zone. - * - */ - @Import(name="dnsName", required=true) - private Output dnsName; - - /** - * @return The fully qualified DNS name of this zone. - * - */ - public Output dnsName() { - return this.dnsName; - } - - /** - * DNS managed zone identifier - * - */ - @Import(name="id", required=true) - private Output id; - - /** - * @return DNS managed zone identifier - * - */ - public Output id() { - return this.id; - } - - /** - * Unique identifier for the resource; defined by the server. - * - */ - @Import(name="managedZoneId", required=true) - private Output managedZoneId; - - /** - * @return Unique identifier for the resource; defined by the server. - * - */ - public Output managedZoneId() { - return this.managedZoneId; - } - - /** - * A unique name for the resource. - * - */ - @Import(name="name", required=true) - private Output name; - - /** - * @return A unique name for the resource. - * - */ - public Output name() { - return this.name; - } - - /** - * The list of nameservers that will be authoritative for this domain. Use NS records to redirect from your DNS provider to these names, thus making Google Cloud DNS authoritative for this zone. - * - */ - @Import(name="nameServers", required=true) - private Output> nameServers; - - /** - * @return The list of nameservers that will be authoritative for this domain. Use NS records to redirect from your DNS provider to these names, thus making Google Cloud DNS authoritative for this zone. - * - */ - public Output> nameServers() { - return this.nameServers; - } - - /** - * The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. - * - */ - @Import(name="project", required=true) - private Output project; - - /** - * @return The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. - * - */ - public Output project() { - return this.project; - } - - /** - * The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources. - * - */ - @Import(name="visibility", required=true) - private Output visibility; - - /** - * @return The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources. - * - */ - public Output visibility() { - return this.visibility; - } - - private GetManagedZonesManagedZoneArgs() {} - - private GetManagedZonesManagedZoneArgs(GetManagedZonesManagedZoneArgs $) { - this.description = $.description; - this.dnsName = $.dnsName; - this.id = $.id; - this.managedZoneId = $.managedZoneId; - this.name = $.name; - this.nameServers = $.nameServers; - this.project = $.project; - this.visibility = $.visibility; - } - - public static Builder builder() { - return new Builder(); - } - public static Builder builder(GetManagedZonesManagedZoneArgs defaults) { - return new Builder(defaults); - } - - public static final class Builder { - private GetManagedZonesManagedZoneArgs $; - - public Builder() { - $ = new GetManagedZonesManagedZoneArgs(); - } - - public Builder(GetManagedZonesManagedZoneArgs defaults) { - $ = new GetManagedZonesManagedZoneArgs(Objects.requireNonNull(defaults)); - } - - /** - * @param description A textual description field. - * - * @return builder - * - */ - public Builder description(Output description) { - $.description = description; - return this; - } - - /** - * @param description A textual description field. - * - * @return builder - * - */ - public Builder description(String description) { - return description(Output.of(description)); - } - - /** - * @param dnsName The fully qualified DNS name of this zone. - * - * @return builder - * - */ - public Builder dnsName(Output dnsName) { - $.dnsName = dnsName; - return this; - } - - /** - * @param dnsName The fully qualified DNS name of this zone. - * - * @return builder - * - */ - public Builder dnsName(String dnsName) { - return dnsName(Output.of(dnsName)); - } - - /** - * @param id DNS managed zone identifier - * - * @return builder - * - */ - public Builder id(Output id) { - $.id = id; - return this; - } - - /** - * @param id DNS managed zone identifier - * - * @return builder - * - */ - public Builder id(String id) { - return id(Output.of(id)); - } - - /** - * @param managedZoneId Unique identifier for the resource; defined by the server. - * - * @return builder - * - */ - public Builder managedZoneId(Output managedZoneId) { - $.managedZoneId = managedZoneId; - return this; - } - - /** - * @param managedZoneId Unique identifier for the resource; defined by the server. - * - * @return builder - * - */ - public Builder managedZoneId(Integer managedZoneId) { - return managedZoneId(Output.of(managedZoneId)); - } - - /** - * @param name A unique name for the resource. - * - * @return builder - * - */ - public Builder name(Output name) { - $.name = name; - return this; - } - - /** - * @param name A unique name for the resource. - * - * @return builder - * - */ - public Builder name(String name) { - return name(Output.of(name)); - } - - /** - * @param nameServers The list of nameservers that will be authoritative for this domain. Use NS records to redirect from your DNS provider to these names, thus making Google Cloud DNS authoritative for this zone. - * - * @return builder - * - */ - public Builder nameServers(Output> nameServers) { - $.nameServers = nameServers; - return this; - } - - /** - * @param nameServers The list of nameservers that will be authoritative for this domain. Use NS records to redirect from your DNS provider to these names, thus making Google Cloud DNS authoritative for this zone. - * - * @return builder - * - */ - public Builder nameServers(List nameServers) { - return nameServers(Output.of(nameServers)); - } - - /** - * @param nameServers The list of nameservers that will be authoritative for this domain. Use NS records to redirect from your DNS provider to these names, thus making Google Cloud DNS authoritative for this zone. - * - * @return builder - * - */ - public Builder nameServers(String... nameServers) { - return nameServers(List.of(nameServers)); - } - - /** - * @param project The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. - * - * @return builder - * - */ - public Builder project(Output project) { - $.project = project; - return this; - } - - /** - * @param project The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. - * - * @return builder - * - */ - public Builder project(String project) { - return project(Output.of(project)); - } - - /** - * @param visibility The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources. - * - * @return builder - * - */ - public Builder visibility(Output visibility) { - $.visibility = visibility; - return this; - } - - /** - * @param visibility The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources. - * - * @return builder - * - */ - public Builder visibility(String visibility) { - return visibility(Output.of(visibility)); - } - - public GetManagedZonesManagedZoneArgs build() { - if ($.description == null) { - throw new MissingRequiredPropertyException("GetManagedZonesManagedZoneArgs", "description"); - } - if ($.dnsName == null) { - throw new MissingRequiredPropertyException("GetManagedZonesManagedZoneArgs", "dnsName"); - } - if ($.id == null) { - throw new MissingRequiredPropertyException("GetManagedZonesManagedZoneArgs", "id"); - } - if ($.managedZoneId == null) { - throw new MissingRequiredPropertyException("GetManagedZonesManagedZoneArgs", "managedZoneId"); - } - if ($.name == null) { - throw new MissingRequiredPropertyException("GetManagedZonesManagedZoneArgs", "name"); - } - if ($.nameServers == null) { - throw new MissingRequiredPropertyException("GetManagedZonesManagedZoneArgs", "nameServers"); - } - if ($.project == null) { - throw new MissingRequiredPropertyException("GetManagedZonesManagedZoneArgs", "project"); - } - if ($.visibility == null) { - throw new MissingRequiredPropertyException("GetManagedZonesManagedZoneArgs", "visibility"); - } - return $; - } - } - -} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/GetManagedZonesPlainArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/GetManagedZonesPlainArgs.java index 0ed1525b16..06f5507074 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/GetManagedZonesPlainArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/GetManagedZonesPlainArgs.java @@ -4,9 +4,7 @@ package com.pulumi.gcp.dns.inputs; import com.pulumi.core.annotations.Import; -import com.pulumi.gcp.dns.inputs.GetManagedZonesManagedZone; import java.lang.String; -import java.util.List; import java.util.Objects; import java.util.Optional; import javax.annotation.Nullable; @@ -16,21 +14,6 @@ public final class GetManagedZonesPlainArgs extends com.pulumi.resources.InvokeA public static final GetManagedZonesPlainArgs Empty = new GetManagedZonesPlainArgs(); - /** - * A list of managed zones. - * - */ - @Import(name="managedZones") - private @Nullable List managedZones; - - /** - * @return A list of managed zones. - * - */ - public Optional> managedZones() { - return Optional.ofNullable(this.managedZones); - } - /** * The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. * @@ -49,7 +32,6 @@ public Optional project() { private GetManagedZonesPlainArgs() {} private GetManagedZonesPlainArgs(GetManagedZonesPlainArgs $) { - this.managedZones = $.managedZones; this.project = $.project; } @@ -71,27 +53,6 @@ public Builder(GetManagedZonesPlainArgs defaults) { $ = new GetManagedZonesPlainArgs(Objects.requireNonNull(defaults)); } - /** - * @param managedZones A list of managed zones. - * - * @return builder - * - */ - public Builder managedZones(@Nullable List managedZones) { - $.managedZones = managedZones; - return this; - } - - /** - * @param managedZones A list of managed zones. - * - * @return builder - * - */ - public Builder managedZones(GetManagedZonesManagedZone... managedZones) { - return managedZones(List.of(managedZones)); - } - /** * @param project The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/GetKeysKeySigningKeyDigest.java b/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/GetKeysKeySigningKeyDigest.java index 695cee14b9..9777a88ffc 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/GetKeysKeySigningKeyDigest.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/GetKeysKeySigningKeyDigest.java @@ -4,9 +4,10 @@ package com.pulumi.gcp.dns.outputs; import com.pulumi.core.annotations.CustomType; -import com.pulumi.exceptions.MissingRequiredPropertyException; import java.lang.String; import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; @CustomType public final class GetKeysKeySigningKeyDigest { @@ -14,27 +15,27 @@ public final class GetKeysKeySigningKeyDigest { * @return The base-16 encoded bytes of this digest. Suitable for use in a DS resource record. * */ - private String digest; + private @Nullable String digest; /** * @return Specifies the algorithm used to calculate this digest. Possible values are `sha1`, `sha256` and `sha384` * */ - private String type; + private @Nullable String type; private GetKeysKeySigningKeyDigest() {} /** * @return The base-16 encoded bytes of this digest. Suitable for use in a DS resource record. * */ - public String digest() { - return this.digest; + public Optional digest() { + return Optional.ofNullable(this.digest); } /** * @return Specifies the algorithm used to calculate this digest. Possible values are `sha1`, `sha256` and `sha384` * */ - public String type() { - return this.type; + public Optional type() { + return Optional.ofNullable(this.type); } public static Builder builder() { @@ -46,8 +47,8 @@ public static Builder builder(GetKeysKeySigningKeyDigest defaults) { } @CustomType.Builder public static final class Builder { - private String digest; - private String type; + private @Nullable String digest; + private @Nullable String type; public Builder() {} public Builder(GetKeysKeySigningKeyDigest defaults) { Objects.requireNonNull(defaults); @@ -56,18 +57,14 @@ public Builder(GetKeysKeySigningKeyDigest defaults) { } @CustomType.Setter - public Builder digest(String digest) { - if (digest == null) { - throw new MissingRequiredPropertyException("GetKeysKeySigningKeyDigest", "digest"); - } + public Builder digest(@Nullable String digest) { + this.digest = digest; return this; } @CustomType.Setter - public Builder type(String type) { - if (type == null) { - throw new MissingRequiredPropertyException("GetKeysKeySigningKeyDigest", "type"); - } + public Builder type(@Nullable String type) { + this.type = type; return this; } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/GetKeysResult.java b/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/GetKeysResult.java index aefcc6bab6..7b462aac4d 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/GetKeysResult.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/GetKeysResult.java @@ -14,7 +14,7 @@ @CustomType public final class GetKeysResult { /** - * @return Unique identifier for the resource; defined by the server. + * @return The provider-assigned unique ID for this managed resource. * */ private String id; @@ -33,7 +33,7 @@ public final class GetKeysResult { private GetKeysResult() {} /** - * @return Unique identifier for the resource; defined by the server. + * @return The provider-assigned unique ID for this managed resource. * */ public String id() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/GetKeysZoneSigningKeyDigest.java b/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/GetKeysZoneSigningKeyDigest.java index 80d005d0ad..4533641f9d 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/GetKeysZoneSigningKeyDigest.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/GetKeysZoneSigningKeyDigest.java @@ -4,9 +4,10 @@ package com.pulumi.gcp.dns.outputs; import com.pulumi.core.annotations.CustomType; -import com.pulumi.exceptions.MissingRequiredPropertyException; import java.lang.String; import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; @CustomType public final class GetKeysZoneSigningKeyDigest { @@ -14,27 +15,27 @@ public final class GetKeysZoneSigningKeyDigest { * @return The base-16 encoded bytes of this digest. Suitable for use in a DS resource record. * */ - private String digest; + private @Nullable String digest; /** * @return Specifies the algorithm used to calculate this digest. Possible values are `sha1`, `sha256` and `sha384` * */ - private String type; + private @Nullable String type; private GetKeysZoneSigningKeyDigest() {} /** * @return The base-16 encoded bytes of this digest. Suitable for use in a DS resource record. * */ - public String digest() { - return this.digest; + public Optional digest() { + return Optional.ofNullable(this.digest); } /** * @return Specifies the algorithm used to calculate this digest. Possible values are `sha1`, `sha256` and `sha384` * */ - public String type() { - return this.type; + public Optional type() { + return Optional.ofNullable(this.type); } public static Builder builder() { @@ -46,8 +47,8 @@ public static Builder builder(GetKeysZoneSigningKeyDigest defaults) { } @CustomType.Builder public static final class Builder { - private String digest; - private String type; + private @Nullable String digest; + private @Nullable String type; public Builder() {} public Builder(GetKeysZoneSigningKeyDigest defaults) { Objects.requireNonNull(defaults); @@ -56,18 +57,14 @@ public Builder(GetKeysZoneSigningKeyDigest defaults) { } @CustomType.Setter - public Builder digest(String digest) { - if (digest == null) { - throw new MissingRequiredPropertyException("GetKeysZoneSigningKeyDigest", "digest"); - } + public Builder digest(@Nullable String digest) { + this.digest = digest; return this; } @CustomType.Setter - public Builder type(String type) { - if (type == null) { - throw new MissingRequiredPropertyException("GetKeysZoneSigningKeyDigest", "type"); - } + public Builder type(@Nullable String type) { + this.type = type; return this; } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/GetManagedZonesManagedZone.java b/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/GetManagedZonesManagedZone.java index 4916229d1b..e5e47731cf 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/GetManagedZonesManagedZone.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/GetManagedZonesManagedZone.java @@ -9,90 +9,40 @@ import java.lang.String; import java.util.List; import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; @CustomType public final class GetManagedZonesManagedZone { - /** - * @return A textual description field. - * - */ private String description; - /** - * @return The fully qualified DNS name of this zone. - * - */ private String dnsName; - /** - * @return DNS managed zone identifier - * - */ private String id; - /** - * @return Unique identifier for the resource; defined by the server. - * - */ private Integer managedZoneId; - /** - * @return A unique name for the resource. - * - */ - private String name; - /** - * @return The list of nameservers that will be authoritative for this domain. Use NS records to redirect from your DNS provider to these names, thus making Google Cloud DNS authoritative for this zone. - * - */ + private @Nullable String name; private List nameServers; /** * @return The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. * */ - private String project; - /** - * @return The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources. - * - */ + private @Nullable String project; private String visibility; private GetManagedZonesManagedZone() {} - /** - * @return A textual description field. - * - */ public String description() { return this.description; } - /** - * @return The fully qualified DNS name of this zone. - * - */ public String dnsName() { return this.dnsName; } - /** - * @return DNS managed zone identifier - * - */ public String id() { return this.id; } - /** - * @return Unique identifier for the resource; defined by the server. - * - */ public Integer managedZoneId() { return this.managedZoneId; } - /** - * @return A unique name for the resource. - * - */ - public String name() { - return this.name; + public Optional name() { + return Optional.ofNullable(this.name); } - /** - * @return The list of nameservers that will be authoritative for this domain. Use NS records to redirect from your DNS provider to these names, thus making Google Cloud DNS authoritative for this zone. - * - */ public List nameServers() { return this.nameServers; } @@ -100,13 +50,9 @@ public List nameServers() { * @return The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. * */ - public String project() { - return this.project; + public Optional project() { + return Optional.ofNullable(this.project); } - /** - * @return The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources. - * - */ public String visibility() { return this.visibility; } @@ -124,9 +70,9 @@ public static final class Builder { private String dnsName; private String id; private Integer managedZoneId; - private String name; + private @Nullable String name; private List nameServers; - private String project; + private @Nullable String project; private String visibility; public Builder() {} public Builder(GetManagedZonesManagedZone defaults) { @@ -174,10 +120,8 @@ public Builder managedZoneId(Integer managedZoneId) { return this; } @CustomType.Setter - public Builder name(String name) { - if (name == null) { - throw new MissingRequiredPropertyException("GetManagedZonesManagedZone", "name"); - } + public Builder name(@Nullable String name) { + this.name = name; return this; } @@ -193,10 +137,8 @@ public Builder nameServers(String... nameServers) { return nameServers(List.of(nameServers)); } @CustomType.Setter - public Builder project(String project) { - if (project == null) { - throw new MissingRequiredPropertyException("GetManagedZonesManagedZone", "project"); - } + public Builder project(@Nullable String project) { + this.project = project; return this; } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/GetManagedZonesResult.java b/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/GetManagedZonesResult.java index 0d636aceeb..51124e772d 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/GetManagedZonesResult.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/GetManagedZonesResult.java @@ -19,7 +19,7 @@ public final class GetManagedZonesResult { * @return A list of managed zones. * */ - private @Nullable List managedZones; + private List managedZones; private @Nullable String project; private GetManagedZonesResult() {} @@ -31,7 +31,7 @@ public String id() { * */ public List managedZones() { - return this.managedZones == null ? List.of() : this.managedZones; + return this.managedZones; } public Optional project() { return Optional.ofNullable(this.project); @@ -47,7 +47,7 @@ public static Builder builder(GetManagedZonesResult defaults) { @CustomType.Builder public static final class Builder { private String id; - private @Nullable List managedZones; + private List managedZones; private @Nullable String project; public Builder() {} public Builder(GetManagedZonesResult defaults) { @@ -66,8 +66,10 @@ public Builder id(String id) { return this; } @CustomType.Setter - public Builder managedZones(@Nullable List managedZones) { - + public Builder managedZones(List managedZones) { + if (managedZones == null) { + throw new MissingRequiredPropertyException("GetManagedZonesResult", "managedZones"); + } this.managedZones = managedZones; return this; } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/GetRecordSetResult.java b/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/GetRecordSetResult.java index 5eafa8d9c6..4e291cc277 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/GetRecordSetResult.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/GetRecordSetResult.java @@ -14,6 +14,10 @@ @CustomType public final class GetRecordSetResult { + /** + * @return The provider-assigned unique ID for this managed resource. + * + */ private String id; private String managedZone; private String name; @@ -31,6 +35,10 @@ public final class GetRecordSetResult { private String type; private GetRecordSetResult() {} + /** + * @return The provider-assigned unique ID for this managed resource. + * + */ public String id() { return this.id; } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/firestore/Document.java b/sdk/java/src/main/java/com/pulumi/gcp/firestore/Document.java index 6e00552773..4aed8ad17f 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/firestore/Document.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/firestore/Document.java @@ -274,7 +274,7 @@ public Output fields() { return this.fields; } /** - * A server defined name for this index. Format: + * A server defined name for this document. Format: * `projects/{{project_id}}/databases/{{database_id}}/documents/{{path}}/{{document_id}}` * */ @@ -282,7 +282,7 @@ public Output fields() { private Output name; /** - * @return A server defined name for this index. Format: + * @return A server defined name for this document. Format: * `projects/{{project_id}}/databases/{{database_id}}/documents/{{path}}/{{document_id}}` * */ diff --git a/sdk/java/src/main/java/com/pulumi/gcp/firestore/inputs/DocumentState.java b/sdk/java/src/main/java/com/pulumi/gcp/firestore/inputs/DocumentState.java index 174798ddbb..1305383b60 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/firestore/inputs/DocumentState.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/firestore/inputs/DocumentState.java @@ -95,7 +95,7 @@ public Optional> fields() { } /** - * A server defined name for this index. Format: + * A server defined name for this document. Format: * `projects/{{project_id}}/databases/{{database_id}}/documents/{{path}}/{{document_id}}` * */ @@ -103,7 +103,7 @@ public Optional> fields() { private @Nullable Output name; /** - * @return A server defined name for this index. Format: + * @return A server defined name for this document. Format: * `projects/{{project_id}}/databases/{{database_id}}/documents/{{path}}/{{document_id}}` * */ @@ -300,7 +300,7 @@ public Builder fields(String fields) { } /** - * @param name A server defined name for this index. Format: + * @param name A server defined name for this document. Format: * `projects/{{project_id}}/databases/{{database_id}}/documents/{{path}}/{{document_id}}` * * @return builder @@ -312,7 +312,7 @@ public Builder name(@Nullable Output name) { } /** - * @param name A server defined name for this index. Format: + * @param name A server defined name for this document. Format: * `projects/{{project_id}}/databases/{{database_id}}/documents/{{path}}/{{document_id}}` * * @return builder diff --git a/sdk/java/src/main/java/com/pulumi/gcp/organizations/inputs/GetActiveFolderArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/organizations/inputs/GetActiveFolderArgs.java index 9ceea75e9b..d9c11c6992 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/organizations/inputs/GetActiveFolderArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/organizations/inputs/GetActiveFolderArgs.java @@ -8,12 +8,29 @@ import com.pulumi.exceptions.MissingRequiredPropertyException; import java.lang.String; import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; public final class GetActiveFolderArgs extends com.pulumi.resources.InvokeArgs { public static final GetActiveFolderArgs Empty = new GetActiveFolderArgs(); + /** + * The API method to use to search for the folder. Valid values are `LIST` and `SEARCH`. Default Value is `LIST`. `LIST` is [strongly consistent](<https://cloud.google.com/resource-manager/reference/rest/v3/folders/list#:~:text=list()%20provides%20a-,strongly%20consistent,-view%20of%20the>) and requires `resourcemanager.folders.list` on the parent folder, while `SEARCH` is [eventually consistent](https://cloud.google.com/resource-manager/reference/rest/v3/folders/search#:~:text=eventually%20consistent) and only returns folders that the user has `resourcemanager.folders.get` permission on. + * + */ + @Import(name="apiMethod") + private @Nullable Output apiMethod; + + /** + * @return The API method to use to search for the folder. Valid values are `LIST` and `SEARCH`. Default Value is `LIST`. `LIST` is [strongly consistent](<https://cloud.google.com/resource-manager/reference/rest/v3/folders/list#:~:text=list()%20provides%20a-,strongly%20consistent,-view%20of%20the>) and requires `resourcemanager.folders.list` on the parent folder, while `SEARCH` is [eventually consistent](https://cloud.google.com/resource-manager/reference/rest/v3/folders/search#:~:text=eventually%20consistent) and only returns folders that the user has `resourcemanager.folders.get` permission on. + * + */ + public Optional> apiMethod() { + return Optional.ofNullable(this.apiMethod); + } + /** * The folder's display name. * @@ -47,6 +64,7 @@ public Output parent() { private GetActiveFolderArgs() {} private GetActiveFolderArgs(GetActiveFolderArgs $) { + this.apiMethod = $.apiMethod; this.displayName = $.displayName; this.parent = $.parent; } @@ -69,6 +87,27 @@ public Builder(GetActiveFolderArgs defaults) { $ = new GetActiveFolderArgs(Objects.requireNonNull(defaults)); } + /** + * @param apiMethod The API method to use to search for the folder. Valid values are `LIST` and `SEARCH`. Default Value is `LIST`. `LIST` is [strongly consistent](<https://cloud.google.com/resource-manager/reference/rest/v3/folders/list#:~:text=list()%20provides%20a-,strongly%20consistent,-view%20of%20the>) and requires `resourcemanager.folders.list` on the parent folder, while `SEARCH` is [eventually consistent](https://cloud.google.com/resource-manager/reference/rest/v3/folders/search#:~:text=eventually%20consistent) and only returns folders that the user has `resourcemanager.folders.get` permission on. + * + * @return builder + * + */ + public Builder apiMethod(@Nullable Output apiMethod) { + $.apiMethod = apiMethod; + return this; + } + + /** + * @param apiMethod The API method to use to search for the folder. Valid values are `LIST` and `SEARCH`. Default Value is `LIST`. `LIST` is [strongly consistent](<https://cloud.google.com/resource-manager/reference/rest/v3/folders/list#:~:text=list()%20provides%20a-,strongly%20consistent,-view%20of%20the>) and requires `resourcemanager.folders.list` on the parent folder, while `SEARCH` is [eventually consistent](https://cloud.google.com/resource-manager/reference/rest/v3/folders/search#:~:text=eventually%20consistent) and only returns folders that the user has `resourcemanager.folders.get` permission on. + * + * @return builder + * + */ + public Builder apiMethod(String apiMethod) { + return apiMethod(Output.of(apiMethod)); + } + /** * @param displayName The folder's display name. * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/organizations/inputs/GetActiveFolderPlainArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/organizations/inputs/GetActiveFolderPlainArgs.java index ee94074644..5b554c65eb 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/organizations/inputs/GetActiveFolderPlainArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/organizations/inputs/GetActiveFolderPlainArgs.java @@ -7,12 +7,29 @@ import com.pulumi.exceptions.MissingRequiredPropertyException; import java.lang.String; import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; public final class GetActiveFolderPlainArgs extends com.pulumi.resources.InvokeArgs { public static final GetActiveFolderPlainArgs Empty = new GetActiveFolderPlainArgs(); + /** + * The API method to use to search for the folder. Valid values are `LIST` and `SEARCH`. Default Value is `LIST`. `LIST` is [strongly consistent](<https://cloud.google.com/resource-manager/reference/rest/v3/folders/list#:~:text=list()%20provides%20a-,strongly%20consistent,-view%20of%20the>) and requires `resourcemanager.folders.list` on the parent folder, while `SEARCH` is [eventually consistent](https://cloud.google.com/resource-manager/reference/rest/v3/folders/search#:~:text=eventually%20consistent) and only returns folders that the user has `resourcemanager.folders.get` permission on. + * + */ + @Import(name="apiMethod") + private @Nullable String apiMethod; + + /** + * @return The API method to use to search for the folder. Valid values are `LIST` and `SEARCH`. Default Value is `LIST`. `LIST` is [strongly consistent](<https://cloud.google.com/resource-manager/reference/rest/v3/folders/list#:~:text=list()%20provides%20a-,strongly%20consistent,-view%20of%20the>) and requires `resourcemanager.folders.list` on the parent folder, while `SEARCH` is [eventually consistent](https://cloud.google.com/resource-manager/reference/rest/v3/folders/search#:~:text=eventually%20consistent) and only returns folders that the user has `resourcemanager.folders.get` permission on. + * + */ + public Optional apiMethod() { + return Optional.ofNullable(this.apiMethod); + } + /** * The folder's display name. * @@ -46,6 +63,7 @@ public String parent() { private GetActiveFolderPlainArgs() {} private GetActiveFolderPlainArgs(GetActiveFolderPlainArgs $) { + this.apiMethod = $.apiMethod; this.displayName = $.displayName; this.parent = $.parent; } @@ -68,6 +86,17 @@ public Builder(GetActiveFolderPlainArgs defaults) { $ = new GetActiveFolderPlainArgs(Objects.requireNonNull(defaults)); } + /** + * @param apiMethod The API method to use to search for the folder. Valid values are `LIST` and `SEARCH`. Default Value is `LIST`. `LIST` is [strongly consistent](<https://cloud.google.com/resource-manager/reference/rest/v3/folders/list#:~:text=list()%20provides%20a-,strongly%20consistent,-view%20of%20the>) and requires `resourcemanager.folders.list` on the parent folder, while `SEARCH` is [eventually consistent](https://cloud.google.com/resource-manager/reference/rest/v3/folders/search#:~:text=eventually%20consistent) and only returns folders that the user has `resourcemanager.folders.get` permission on. + * + * @return builder + * + */ + public Builder apiMethod(@Nullable String apiMethod) { + $.apiMethod = apiMethod; + return this; + } + /** * @param displayName The folder's display name. * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/organizations/outputs/GetActiveFolderResult.java b/sdk/java/src/main/java/com/pulumi/gcp/organizations/outputs/GetActiveFolderResult.java index 97623bcf9e..61e330a23f 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/organizations/outputs/GetActiveFolderResult.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/organizations/outputs/GetActiveFolderResult.java @@ -7,9 +7,12 @@ import com.pulumi.exceptions.MissingRequiredPropertyException; import java.lang.String; import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; @CustomType public final class GetActiveFolderResult { + private @Nullable String apiMethod; private String displayName; /** * @return The provider-assigned unique ID for this managed resource. @@ -24,6 +27,9 @@ public final class GetActiveFolderResult { private String parent; private GetActiveFolderResult() {} + public Optional apiMethod() { + return Optional.ofNullable(this.apiMethod); + } public String displayName() { return this.displayName; } @@ -54,6 +60,7 @@ public static Builder builder(GetActiveFolderResult defaults) { } @CustomType.Builder public static final class Builder { + private @Nullable String apiMethod; private String displayName; private String id; private String name; @@ -61,12 +68,19 @@ public static final class Builder { public Builder() {} public Builder(GetActiveFolderResult defaults) { Objects.requireNonNull(defaults); + this.apiMethod = defaults.apiMethod; this.displayName = defaults.displayName; this.id = defaults.id; this.name = defaults.name; this.parent = defaults.parent; } + @CustomType.Setter + public Builder apiMethod(@Nullable String apiMethod) { + + this.apiMethod = apiMethod; + return this; + } @CustomType.Setter public Builder displayName(String displayName) { if (displayName == null) { @@ -101,6 +115,7 @@ public Builder parent(String parent) { } public GetActiveFolderResult build() { final var _resultValue = new GetActiveFolderResult(); + _resultValue.apiMethod = apiMethod; _resultValue.displayName = displayName; _resultValue.id = id; _resultValue.name = name; diff --git a/sdk/java/src/main/java/com/pulumi/gcp/projects/IamMemberRemove.java b/sdk/java/src/main/java/com/pulumi/gcp/projects/IamMemberRemove.java new file mode 100644 index 0000000000..875bb32f71 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/projects/IamMemberRemove.java @@ -0,0 +1,141 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.projects; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Export; +import com.pulumi.core.annotations.ResourceType; +import com.pulumi.core.internal.Codegen; +import com.pulumi.gcp.Utilities; +import com.pulumi.gcp.projects.IamMemberRemoveArgs; +import com.pulumi.gcp.projects.inputs.IamMemberRemoveState; +import java.lang.String; +import javax.annotation.Nullable; + +/** + * Ensures that a member:role pairing does not exist in a project's IAM policy. + * + * On create, this resource will modify the policy to remove the `member` from the + * `role`. If the membership is ever re-added, the next refresh will clear this + * resource from state, proposing re-adding it to correct the membership. Import is + * not supported- this resource will acquire the current policy and modify it as + * part of creating the resource. + * + * This resource will conflict with `gcp.projects.IAMPolicy` and + * `gcp.projects.IAMBinding` resources that share a role, as well as + * `gcp.projects.IAMMember` resources that target the same membership. When + * multiple resources conflict the final state is not guaranteed to include or omit + * the membership. Subsequent `pulumi up` calls will always show a diff + * until the configuration is corrected. + * + * For more information see + * [the official documentation](https://cloud.google.com/iam/docs/granting-changing-revoking-access) + * and + * [API reference](https://cloud.google.com/resource-manager/reference/rest/v1/projects/setIamPolicy). + * + */ +@ResourceType(type="gcp:projects/iamMemberRemove:IamMemberRemove") +public class IamMemberRemove extends com.pulumi.resources.CustomResource { + /** + * The IAM principal that should not have the target role. + * Each entry can have one of the following values: + * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. + * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. + * * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com. + * + */ + @Export(name="member", refs={String.class}, tree="[0]") + private Output member; + + /** + * @return The IAM principal that should not have the target role. + * Each entry can have one of the following values: + * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. + * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. + * * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com. + * + */ + public Output member() { + return this.member; + } + /** + * The project id of the target project. + * + */ + @Export(name="project", refs={String.class}, tree="[0]") + private Output project; + + /** + * @return The project id of the target project. + * + */ + public Output project() { + return this.project; + } + /** + * The target role that should be removed. + * + */ + @Export(name="role", refs={String.class}, tree="[0]") + private Output role; + + /** + * @return The target role that should be removed. + * + */ + public Output role() { + return this.role; + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public IamMemberRemove(String name) { + this(name, IamMemberRemoveArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public IamMemberRemove(String name, IamMemberRemoveArgs args) { + this(name, args, null); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + * @param options A bag of options that control this resource's behavior. + */ + public IamMemberRemove(String name, IamMemberRemoveArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("gcp:projects/iamMemberRemove:IamMemberRemove", name, args == null ? IamMemberRemoveArgs.Empty : args, makeResourceOptions(options, Codegen.empty())); + } + + private IamMemberRemove(String name, Output id, @Nullable IamMemberRemoveState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("gcp:projects/iamMemberRemove:IamMemberRemove", name, state, makeResourceOptions(options, id)); + } + + private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { + var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() + .version(Utilities.getVersion()) + .build(); + return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); + } + + /** + * Get an existing Host resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state + * @param options Optional settings to control the behavior of the CustomResource. + */ + public static IamMemberRemove get(String name, Output id, @Nullable IamMemberRemoveState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new IamMemberRemove(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/projects/IamMemberRemoveArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/projects/IamMemberRemoveArgs.java new file mode 100644 index 0000000000..31d616bf38 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/projects/IamMemberRemoveArgs.java @@ -0,0 +1,185 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.projects; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + + +public final class IamMemberRemoveArgs extends com.pulumi.resources.ResourceArgs { + + public static final IamMemberRemoveArgs Empty = new IamMemberRemoveArgs(); + + /** + * The IAM principal that should not have the target role. + * Each entry can have one of the following values: + * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. + * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. + * * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com. + * + */ + @Import(name="member", required=true) + private Output member; + + /** + * @return The IAM principal that should not have the target role. + * Each entry can have one of the following values: + * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. + * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. + * * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com. + * + */ + public Output member() { + return this.member; + } + + /** + * The project id of the target project. + * + */ + @Import(name="project", required=true) + private Output project; + + /** + * @return The project id of the target project. + * + */ + public Output project() { + return this.project; + } + + /** + * The target role that should be removed. + * + */ + @Import(name="role", required=true) + private Output role; + + /** + * @return The target role that should be removed. + * + */ + public Output role() { + return this.role; + } + + private IamMemberRemoveArgs() {} + + private IamMemberRemoveArgs(IamMemberRemoveArgs $) { + this.member = $.member; + this.project = $.project; + this.role = $.role; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(IamMemberRemoveArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private IamMemberRemoveArgs $; + + public Builder() { + $ = new IamMemberRemoveArgs(); + } + + public Builder(IamMemberRemoveArgs defaults) { + $ = new IamMemberRemoveArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param member The IAM principal that should not have the target role. + * Each entry can have one of the following values: + * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. + * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. + * * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com. + * + * @return builder + * + */ + public Builder member(Output member) { + $.member = member; + return this; + } + + /** + * @param member The IAM principal that should not have the target role. + * Each entry can have one of the following values: + * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. + * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. + * * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com. + * + * @return builder + * + */ + public Builder member(String member) { + return member(Output.of(member)); + } + + /** + * @param project The project id of the target project. + * + * @return builder + * + */ + public Builder project(Output project) { + $.project = project; + return this; + } + + /** + * @param project The project id of the target project. + * + * @return builder + * + */ + public Builder project(String project) { + return project(Output.of(project)); + } + + /** + * @param role The target role that should be removed. + * + * @return builder + * + */ + public Builder role(Output role) { + $.role = role; + return this; + } + + /** + * @param role The target role that should be removed. + * + * @return builder + * + */ + public Builder role(String role) { + return role(Output.of(role)); + } + + public IamMemberRemoveArgs build() { + if ($.member == null) { + throw new MissingRequiredPropertyException("IamMemberRemoveArgs", "member"); + } + if ($.project == null) { + throw new MissingRequiredPropertyException("IamMemberRemoveArgs", "project"); + } + if ($.role == null) { + throw new MissingRequiredPropertyException("IamMemberRemoveArgs", "role"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/projects/inputs/IamMemberRemoveState.java b/sdk/java/src/main/java/com/pulumi/gcp/projects/inputs/IamMemberRemoveState.java new file mode 100644 index 0000000000..60fd11965b --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/projects/inputs/IamMemberRemoveState.java @@ -0,0 +1,177 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.projects.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class IamMemberRemoveState extends com.pulumi.resources.ResourceArgs { + + public static final IamMemberRemoveState Empty = new IamMemberRemoveState(); + + /** + * The IAM principal that should not have the target role. + * Each entry can have one of the following values: + * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. + * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. + * * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com. + * + */ + @Import(name="member") + private @Nullable Output member; + + /** + * @return The IAM principal that should not have the target role. + * Each entry can have one of the following values: + * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. + * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. + * * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com. + * + */ + public Optional> member() { + return Optional.ofNullable(this.member); + } + + /** + * The project id of the target project. + * + */ + @Import(name="project") + private @Nullable Output project; + + /** + * @return The project id of the target project. + * + */ + public Optional> project() { + return Optional.ofNullable(this.project); + } + + /** + * The target role that should be removed. + * + */ + @Import(name="role") + private @Nullable Output role; + + /** + * @return The target role that should be removed. + * + */ + public Optional> role() { + return Optional.ofNullable(this.role); + } + + private IamMemberRemoveState() {} + + private IamMemberRemoveState(IamMemberRemoveState $) { + this.member = $.member; + this.project = $.project; + this.role = $.role; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(IamMemberRemoveState defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private IamMemberRemoveState $; + + public Builder() { + $ = new IamMemberRemoveState(); + } + + public Builder(IamMemberRemoveState defaults) { + $ = new IamMemberRemoveState(Objects.requireNonNull(defaults)); + } + + /** + * @param member The IAM principal that should not have the target role. + * Each entry can have one of the following values: + * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. + * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. + * * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com. + * + * @return builder + * + */ + public Builder member(@Nullable Output member) { + $.member = member; + return this; + } + + /** + * @param member The IAM principal that should not have the target role. + * Each entry can have one of the following values: + * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. + * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. + * * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com. + * + * @return builder + * + */ + public Builder member(String member) { + return member(Output.of(member)); + } + + /** + * @param project The project id of the target project. + * + * @return builder + * + */ + public Builder project(@Nullable Output project) { + $.project = project; + return this; + } + + /** + * @param project The project id of the target project. + * + * @return builder + * + */ + public Builder project(String project) { + return project(Output.of(project)); + } + + /** + * @param role The target role that should be removed. + * + * @return builder + * + */ + public Builder role(@Nullable Output role) { + $.role = role; + return this; + } + + /** + * @param role The target role that should be removed. + * + * @return builder + * + */ + public Builder role(String role) { + return role(Output.of(role)); + } + + public IamMemberRemoveState build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/PrivateCloud.java b/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/PrivateCloud.java index 0df07e2589..779a1540ab 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/PrivateCloud.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/PrivateCloud.java @@ -277,40 +277,12 @@ public Output networkConfig() { public Output> nsxes() { return this.nsxes; } - /** - * The preferred single failure domain within a region. - * - */ - @Export(name="preferredZone", refs={String.class}, tree="[0]") - private Output preferredZone; - - /** - * @return The preferred single failure domain within a region. - * - */ - public Output> preferredZone() { - return Codegen.optional(this.preferredZone); - } @Export(name="project", refs={String.class}, tree="[0]") private Output project; public Output project() { return this.project; } - /** - * The secondary single failure domain within a region. - * - */ - @Export(name="secondaryZone", refs={String.class}, tree="[0]") - private Output secondaryZone; - - /** - * @return The secondary single failure domain within a region. - * - */ - public Output> secondaryZone() { - return Codegen.optional(this.secondaryZone); - } /** * State of the appliance. * Possible values are: `ACTIVE`, `CREATING`. diff --git a/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/PrivateCloudArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/PrivateCloudArgs.java index 5156890ebc..37c1c1e960 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/PrivateCloudArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/PrivateCloudArgs.java @@ -97,21 +97,6 @@ public Output networkConfig() { return this.networkConfig; } - /** - * The preferred single failure domain within a region. - * - */ - @Import(name="preferredZone") - private @Nullable Output preferredZone; - - /** - * @return The preferred single failure domain within a region. - * - */ - public Optional> preferredZone() { - return Optional.ofNullable(this.preferredZone); - } - @Import(name="project") private @Nullable Output project; @@ -119,21 +104,6 @@ public Optional> project() { return Optional.ofNullable(this.project); } - /** - * The secondary single failure domain within a region. - * - */ - @Import(name="secondaryZone") - private @Nullable Output secondaryZone; - - /** - * @return The secondary single failure domain within a region. - * - */ - public Optional> secondaryZone() { - return Optional.ofNullable(this.secondaryZone); - } - /** * Initial type of the private cloud. Possible values: ["STANDARD", "TIME_LIMITED", "STRETCHED"] * @@ -157,9 +127,7 @@ private PrivateCloudArgs(PrivateCloudArgs $) { this.managementCluster = $.managementCluster; this.name = $.name; this.networkConfig = $.networkConfig; - this.preferredZone = $.preferredZone; this.project = $.project; - this.secondaryZone = $.secondaryZone; this.type = $.type; } @@ -290,27 +258,6 @@ public Builder networkConfig(PrivateCloudNetworkConfigArgs networkConfig) { return networkConfig(Output.of(networkConfig)); } - /** - * @param preferredZone The preferred single failure domain within a region. - * - * @return builder - * - */ - public Builder preferredZone(@Nullable Output preferredZone) { - $.preferredZone = preferredZone; - return this; - } - - /** - * @param preferredZone The preferred single failure domain within a region. - * - * @return builder - * - */ - public Builder preferredZone(String preferredZone) { - return preferredZone(Output.of(preferredZone)); - } - public Builder project(@Nullable Output project) { $.project = project; return this; @@ -320,27 +267,6 @@ public Builder project(String project) { return project(Output.of(project)); } - /** - * @param secondaryZone The secondary single failure domain within a region. - * - * @return builder - * - */ - public Builder secondaryZone(@Nullable Output secondaryZone) { - $.secondaryZone = secondaryZone; - return this; - } - - /** - * @param secondaryZone The secondary single failure domain within a region. - * - * @return builder - * - */ - public Builder secondaryZone(String secondaryZone) { - return secondaryZone(Output.of(secondaryZone)); - } - /** * @param type Initial type of the private cloud. Possible values: ["STANDARD", "TIME_LIMITED", "STRETCHED"] * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/inputs/PrivateCloudManagementClusterArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/inputs/PrivateCloudManagementClusterArgs.java index 1970d68719..c055e887db 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/inputs/PrivateCloudManagementClusterArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/inputs/PrivateCloudManagementClusterArgs.java @@ -7,6 +7,7 @@ import com.pulumi.core.annotations.Import; import com.pulumi.exceptions.MissingRequiredPropertyException; import com.pulumi.gcp.vmwareengine.inputs.PrivateCloudManagementClusterNodeTypeConfigArgs; +import com.pulumi.gcp.vmwareengine.inputs.PrivateCloudManagementClusterStretchedClusterConfigArgs; import java.lang.String; import java.util.List; import java.util.Objects; @@ -62,11 +63,29 @@ public Optional>> n return Optional.ofNullable(this.nodeTypeConfigs); } + /** + * The stretched cluster configuration for the private cloud. + * Structure is documented below. + * + */ + @Import(name="stretchedClusterConfig") + private @Nullable Output stretchedClusterConfig; + + /** + * @return The stretched cluster configuration for the private cloud. + * Structure is documented below. + * + */ + public Optional> stretchedClusterConfig() { + return Optional.ofNullable(this.stretchedClusterConfig); + } + private PrivateCloudManagementClusterArgs() {} private PrivateCloudManagementClusterArgs(PrivateCloudManagementClusterArgs $) { this.clusterId = $.clusterId; this.nodeTypeConfigs = $.nodeTypeConfigs; + this.stretchedClusterConfig = $.stretchedClusterConfig; } public static Builder builder() { @@ -155,6 +174,29 @@ public Builder nodeTypeConfigs(PrivateCloudManagementClusterNodeTypeConfigArgs.. return nodeTypeConfigs(List.of(nodeTypeConfigs)); } + /** + * @param stretchedClusterConfig The stretched cluster configuration for the private cloud. + * Structure is documented below. + * + * @return builder + * + */ + public Builder stretchedClusterConfig(@Nullable Output stretchedClusterConfig) { + $.stretchedClusterConfig = stretchedClusterConfig; + return this; + } + + /** + * @param stretchedClusterConfig The stretched cluster configuration for the private cloud. + * Structure is documented below. + * + * @return builder + * + */ + public Builder stretchedClusterConfig(PrivateCloudManagementClusterStretchedClusterConfigArgs stretchedClusterConfig) { + return stretchedClusterConfig(Output.of(stretchedClusterConfig)); + } + public PrivateCloudManagementClusterArgs build() { if ($.clusterId == null) { throw new MissingRequiredPropertyException("PrivateCloudManagementClusterArgs", "clusterId"); diff --git a/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/inputs/PrivateCloudManagementClusterNodeTypeConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/inputs/PrivateCloudManagementClusterNodeTypeConfigArgs.java index df10f5f602..5fd9dce521 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/inputs/PrivateCloudManagementClusterNodeTypeConfigArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/inputs/PrivateCloudManagementClusterNodeTypeConfigArgs.java @@ -23,8 +23,6 @@ public final class PrivateCloudManagementClusterNodeTypeConfigArgs extends com.p * If zero is provided max value from `nodeType.availableCustomCoreCounts` will be used. * This cannot be changed once the PrivateCloud is created. * - * *** - * */ @Import(name="customCoreCount") private @Nullable Output customCoreCount; @@ -35,8 +33,6 @@ public final class PrivateCloudManagementClusterNodeTypeConfigArgs extends com.p * If zero is provided max value from `nodeType.availableCustomCoreCounts` will be used. * This cannot be changed once the PrivateCloud is created. * - * *** - * */ public Optional> customCoreCount() { return Optional.ofNullable(this.customCoreCount); @@ -104,8 +100,6 @@ public Builder(PrivateCloudManagementClusterNodeTypeConfigArgs defaults) { * If zero is provided max value from `nodeType.availableCustomCoreCounts` will be used. * This cannot be changed once the PrivateCloud is created. * - * *** - * * @return builder * */ @@ -120,8 +114,6 @@ public Builder customCoreCount(@Nullable Output customCoreCount) { * If zero is provided max value from `nodeType.availableCustomCoreCounts` will be used. * This cannot be changed once the PrivateCloud is created. * - * *** - * * @return builder * */ diff --git a/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/inputs/PrivateCloudManagementClusterStretchedClusterConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/inputs/PrivateCloudManagementClusterStretchedClusterConfigArgs.java new file mode 100644 index 0000000000..322126a6aa --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/inputs/PrivateCloudManagementClusterStretchedClusterConfigArgs.java @@ -0,0 +1,128 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.vmwareengine.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class PrivateCloudManagementClusterStretchedClusterConfigArgs extends com.pulumi.resources.ResourceArgs { + + public static final PrivateCloudManagementClusterStretchedClusterConfigArgs Empty = new PrivateCloudManagementClusterStretchedClusterConfigArgs(); + + /** + * Zone that will remain operational when connection between the two zones is lost. + * + */ + @Import(name="preferredLocation") + private @Nullable Output preferredLocation; + + /** + * @return Zone that will remain operational when connection between the two zones is lost. + * + */ + public Optional> preferredLocation() { + return Optional.ofNullable(this.preferredLocation); + } + + /** + * Additional zone for a higher level of availability and load balancing. + * + * *** + * + */ + @Import(name="secondaryLocation") + private @Nullable Output secondaryLocation; + + /** + * @return Additional zone for a higher level of availability and load balancing. + * + * *** + * + */ + public Optional> secondaryLocation() { + return Optional.ofNullable(this.secondaryLocation); + } + + private PrivateCloudManagementClusterStretchedClusterConfigArgs() {} + + private PrivateCloudManagementClusterStretchedClusterConfigArgs(PrivateCloudManagementClusterStretchedClusterConfigArgs $) { + this.preferredLocation = $.preferredLocation; + this.secondaryLocation = $.secondaryLocation; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(PrivateCloudManagementClusterStretchedClusterConfigArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private PrivateCloudManagementClusterStretchedClusterConfigArgs $; + + public Builder() { + $ = new PrivateCloudManagementClusterStretchedClusterConfigArgs(); + } + + public Builder(PrivateCloudManagementClusterStretchedClusterConfigArgs defaults) { + $ = new PrivateCloudManagementClusterStretchedClusterConfigArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param preferredLocation Zone that will remain operational when connection between the two zones is lost. + * + * @return builder + * + */ + public Builder preferredLocation(@Nullable Output preferredLocation) { + $.preferredLocation = preferredLocation; + return this; + } + + /** + * @param preferredLocation Zone that will remain operational when connection between the two zones is lost. + * + * @return builder + * + */ + public Builder preferredLocation(String preferredLocation) { + return preferredLocation(Output.of(preferredLocation)); + } + + /** + * @param secondaryLocation Additional zone for a higher level of availability and load balancing. + * + * *** + * + * @return builder + * + */ + public Builder secondaryLocation(@Nullable Output secondaryLocation) { + $.secondaryLocation = secondaryLocation; + return this; + } + + /** + * @param secondaryLocation Additional zone for a higher level of availability and load balancing. + * + * *** + * + * @return builder + * + */ + public Builder secondaryLocation(String secondaryLocation) { + return secondaryLocation(Output.of(secondaryLocation)); + } + + public PrivateCloudManagementClusterStretchedClusterConfigArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/inputs/PrivateCloudState.java b/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/inputs/PrivateCloudState.java index 28243298d7..d01936becf 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/inputs/PrivateCloudState.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/inputs/PrivateCloudState.java @@ -134,21 +134,6 @@ public Optional>> nsxes() { return Optional.ofNullable(this.nsxes); } - /** - * The preferred single failure domain within a region. - * - */ - @Import(name="preferredZone") - private @Nullable Output preferredZone; - - /** - * @return The preferred single failure domain within a region. - * - */ - public Optional> preferredZone() { - return Optional.ofNullable(this.preferredZone); - } - @Import(name="project") private @Nullable Output project; @@ -156,21 +141,6 @@ public Optional> project() { return Optional.ofNullable(this.project); } - /** - * The secondary single failure domain within a region. - * - */ - @Import(name="secondaryZone") - private @Nullable Output secondaryZone; - - /** - * @return The secondary single failure domain within a region. - * - */ - public Optional> secondaryZone() { - return Optional.ofNullable(this.secondaryZone); - } - /** * State of the appliance. * Possible values are: `ACTIVE`, `CREATING`. @@ -245,9 +215,7 @@ private PrivateCloudState(PrivateCloudState $) { this.name = $.name; this.networkConfig = $.networkConfig; this.nsxes = $.nsxes; - this.preferredZone = $.preferredZone; this.project = $.project; - this.secondaryZone = $.secondaryZone; this.state = $.state; this.type = $.type; this.uid = $.uid; @@ -449,27 +417,6 @@ public Builder nsxes(PrivateCloudNsxArgs... nsxes) { return nsxes(List.of(nsxes)); } - /** - * @param preferredZone The preferred single failure domain within a region. - * - * @return builder - * - */ - public Builder preferredZone(@Nullable Output preferredZone) { - $.preferredZone = preferredZone; - return this; - } - - /** - * @param preferredZone The preferred single failure domain within a region. - * - * @return builder - * - */ - public Builder preferredZone(String preferredZone) { - return preferredZone(Output.of(preferredZone)); - } - public Builder project(@Nullable Output project) { $.project = project; return this; @@ -479,27 +426,6 @@ public Builder project(String project) { return project(Output.of(project)); } - /** - * @param secondaryZone The secondary single failure domain within a region. - * - * @return builder - * - */ - public Builder secondaryZone(@Nullable Output secondaryZone) { - $.secondaryZone = secondaryZone; - return this; - } - - /** - * @param secondaryZone The secondary single failure domain within a region. - * - * @return builder - * - */ - public Builder secondaryZone(String secondaryZone) { - return secondaryZone(Output.of(secondaryZone)); - } - /** * @param state State of the appliance. * Possible values are: `ACTIVE`, `CREATING`. diff --git a/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/outputs/GetPrivateCloudManagementCluster.java b/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/outputs/GetPrivateCloudManagementCluster.java index 27df2c8d83..2003c6b617 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/outputs/GetPrivateCloudManagementCluster.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/outputs/GetPrivateCloudManagementCluster.java @@ -6,6 +6,7 @@ import com.pulumi.core.annotations.CustomType; import com.pulumi.exceptions.MissingRequiredPropertyException; import com.pulumi.gcp.vmwareengine.outputs.GetPrivateCloudManagementClusterNodeTypeConfig; +import com.pulumi.gcp.vmwareengine.outputs.GetPrivateCloudManagementClusterStretchedClusterConfig; import java.lang.String; import java.util.List; import java.util.Objects; @@ -28,6 +29,11 @@ public final class GetPrivateCloudManagementCluster { * */ private List nodeTypeConfigs; + /** + * @return The stretched cluster configuration for the private cloud. + * + */ + private List stretchedClusterConfigs; private GetPrivateCloudManagementCluster() {} /** @@ -50,6 +56,13 @@ public String clusterId() { public List nodeTypeConfigs() { return this.nodeTypeConfigs; } + /** + * @return The stretched cluster configuration for the private cloud. + * + */ + public List stretchedClusterConfigs() { + return this.stretchedClusterConfigs; + } public static Builder builder() { return new Builder(); @@ -62,11 +75,13 @@ public static Builder builder(GetPrivateCloudManagementCluster defaults) { public static final class Builder { private String clusterId; private List nodeTypeConfigs; + private List stretchedClusterConfigs; public Builder() {} public Builder(GetPrivateCloudManagementCluster defaults) { Objects.requireNonNull(defaults); this.clusterId = defaults.clusterId; this.nodeTypeConfigs = defaults.nodeTypeConfigs; + this.stretchedClusterConfigs = defaults.stretchedClusterConfigs; } @CustomType.Setter @@ -88,10 +103,22 @@ public Builder nodeTypeConfigs(List stretchedClusterConfigs) { + if (stretchedClusterConfigs == null) { + throw new MissingRequiredPropertyException("GetPrivateCloudManagementCluster", "stretchedClusterConfigs"); + } + this.stretchedClusterConfigs = stretchedClusterConfigs; + return this; + } + public Builder stretchedClusterConfigs(GetPrivateCloudManagementClusterStretchedClusterConfig... stretchedClusterConfigs) { + return stretchedClusterConfigs(List.of(stretchedClusterConfigs)); + } public GetPrivateCloudManagementCluster build() { final var _resultValue = new GetPrivateCloudManagementCluster(); _resultValue.clusterId = clusterId; _resultValue.nodeTypeConfigs = nodeTypeConfigs; + _resultValue.stretchedClusterConfigs = stretchedClusterConfigs; return _resultValue; } } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/outputs/GetPrivateCloudManagementClusterStretchedClusterConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/outputs/GetPrivateCloudManagementClusterStretchedClusterConfig.java new file mode 100644 index 0000000000..0d27cfaf48 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/outputs/GetPrivateCloudManagementClusterStretchedClusterConfig.java @@ -0,0 +1,81 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.vmwareengine.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class GetPrivateCloudManagementClusterStretchedClusterConfig { + /** + * @return Zone that will remain operational when connection between the two zones is lost. + * + */ + private String preferredLocation; + /** + * @return Additional zone for a higher level of availability and load balancing. + * + */ + private String secondaryLocation; + + private GetPrivateCloudManagementClusterStretchedClusterConfig() {} + /** + * @return Zone that will remain operational when connection between the two zones is lost. + * + */ + public String preferredLocation() { + return this.preferredLocation; + } + /** + * @return Additional zone for a higher level of availability and load balancing. + * + */ + public String secondaryLocation() { + return this.secondaryLocation; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetPrivateCloudManagementClusterStretchedClusterConfig defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String preferredLocation; + private String secondaryLocation; + public Builder() {} + public Builder(GetPrivateCloudManagementClusterStretchedClusterConfig defaults) { + Objects.requireNonNull(defaults); + this.preferredLocation = defaults.preferredLocation; + this.secondaryLocation = defaults.secondaryLocation; + } + + @CustomType.Setter + public Builder preferredLocation(String preferredLocation) { + if (preferredLocation == null) { + throw new MissingRequiredPropertyException("GetPrivateCloudManagementClusterStretchedClusterConfig", "preferredLocation"); + } + this.preferredLocation = preferredLocation; + return this; + } + @CustomType.Setter + public Builder secondaryLocation(String secondaryLocation) { + if (secondaryLocation == null) { + throw new MissingRequiredPropertyException("GetPrivateCloudManagementClusterStretchedClusterConfig", "secondaryLocation"); + } + this.secondaryLocation = secondaryLocation; + return this; + } + public GetPrivateCloudManagementClusterStretchedClusterConfig build() { + final var _resultValue = new GetPrivateCloudManagementClusterStretchedClusterConfig(); + _resultValue.preferredLocation = preferredLocation; + _resultValue.secondaryLocation = secondaryLocation; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/outputs/GetPrivateCloudResult.java b/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/outputs/GetPrivateCloudResult.java index dd1c18aa7a..f5924eb291 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/outputs/GetPrivateCloudResult.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/outputs/GetPrivateCloudResult.java @@ -30,9 +30,7 @@ public final class GetPrivateCloudResult { private String name; private List networkConfigs; private List nsxes; - private String preferredZone; private @Nullable String project; - private String secondaryZone; private String state; private String type; private String uid; @@ -67,15 +65,9 @@ public List networkConfigs() { public List nsxes() { return this.nsxes; } - public String preferredZone() { - return this.preferredZone; - } public Optional project() { return Optional.ofNullable(this.project); } - public String secondaryZone() { - return this.secondaryZone; - } public String state() { return this.state; } @@ -106,9 +98,7 @@ public static final class Builder { private String name; private List networkConfigs; private List nsxes; - private String preferredZone; private @Nullable String project; - private String secondaryZone; private String state; private String type; private String uid; @@ -124,9 +114,7 @@ public Builder(GetPrivateCloudResult defaults) { this.name = defaults.name; this.networkConfigs = defaults.networkConfigs; this.nsxes = defaults.nsxes; - this.preferredZone = defaults.preferredZone; this.project = defaults.project; - this.secondaryZone = defaults.secondaryZone; this.state = defaults.state; this.type = defaults.type; this.uid = defaults.uid; @@ -210,28 +198,12 @@ public Builder nsxes(GetPrivateCloudNsx... nsxes) { return nsxes(List.of(nsxes)); } @CustomType.Setter - public Builder preferredZone(String preferredZone) { - if (preferredZone == null) { - throw new MissingRequiredPropertyException("GetPrivateCloudResult", "preferredZone"); - } - this.preferredZone = preferredZone; - return this; - } - @CustomType.Setter public Builder project(@Nullable String project) { this.project = project; return this; } @CustomType.Setter - public Builder secondaryZone(String secondaryZone) { - if (secondaryZone == null) { - throw new MissingRequiredPropertyException("GetPrivateCloudResult", "secondaryZone"); - } - this.secondaryZone = secondaryZone; - return this; - } - @CustomType.Setter public Builder state(String state) { if (state == null) { throw new MissingRequiredPropertyException("GetPrivateCloudResult", "state"); @@ -276,9 +248,7 @@ public GetPrivateCloudResult build() { _resultValue.name = name; _resultValue.networkConfigs = networkConfigs; _resultValue.nsxes = nsxes; - _resultValue.preferredZone = preferredZone; _resultValue.project = project; - _resultValue.secondaryZone = secondaryZone; _resultValue.state = state; _resultValue.type = type; _resultValue.uid = uid; diff --git a/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/outputs/PrivateCloudManagementCluster.java b/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/outputs/PrivateCloudManagementCluster.java index e0c2d97a41..1219803ead 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/outputs/PrivateCloudManagementCluster.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/outputs/PrivateCloudManagementCluster.java @@ -6,9 +6,11 @@ import com.pulumi.core.annotations.CustomType; import com.pulumi.exceptions.MissingRequiredPropertyException; import com.pulumi.gcp.vmwareengine.outputs.PrivateCloudManagementClusterNodeTypeConfig; +import com.pulumi.gcp.vmwareengine.outputs.PrivateCloudManagementClusterStretchedClusterConfig; import java.lang.String; import java.util.List; import java.util.Objects; +import java.util.Optional; import javax.annotation.Nullable; @CustomType @@ -30,6 +32,12 @@ public final class PrivateCloudManagementCluster { * */ private @Nullable List nodeTypeConfigs; + /** + * @return The stretched cluster configuration for the private cloud. + * Structure is documented below. + * + */ + private @Nullable PrivateCloudManagementClusterStretchedClusterConfig stretchedClusterConfig; private PrivateCloudManagementCluster() {} /** @@ -53,6 +61,14 @@ public String clusterId() { public List nodeTypeConfigs() { return this.nodeTypeConfigs == null ? List.of() : this.nodeTypeConfigs; } + /** + * @return The stretched cluster configuration for the private cloud. + * Structure is documented below. + * + */ + public Optional stretchedClusterConfig() { + return Optional.ofNullable(this.stretchedClusterConfig); + } public static Builder builder() { return new Builder(); @@ -65,11 +81,13 @@ public static Builder builder(PrivateCloudManagementCluster defaults) { public static final class Builder { private String clusterId; private @Nullable List nodeTypeConfigs; + private @Nullable PrivateCloudManagementClusterStretchedClusterConfig stretchedClusterConfig; public Builder() {} public Builder(PrivateCloudManagementCluster defaults) { Objects.requireNonNull(defaults); this.clusterId = defaults.clusterId; this.nodeTypeConfigs = defaults.nodeTypeConfigs; + this.stretchedClusterConfig = defaults.stretchedClusterConfig; } @CustomType.Setter @@ -89,10 +107,17 @@ public Builder nodeTypeConfigs(@Nullable List customCoreCount() { return Optional.ofNullable(this.customCoreCount); diff --git a/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/outputs/PrivateCloudManagementClusterStretchedClusterConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/outputs/PrivateCloudManagementClusterStretchedClusterConfig.java new file mode 100644 index 0000000000..a34cc8692c --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/vmwareengine/outputs/PrivateCloudManagementClusterStretchedClusterConfig.java @@ -0,0 +1,82 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.vmwareengine.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class PrivateCloudManagementClusterStretchedClusterConfig { + /** + * @return Zone that will remain operational when connection between the two zones is lost. + * + */ + private @Nullable String preferredLocation; + /** + * @return Additional zone for a higher level of availability and load balancing. + * + * *** + * + */ + private @Nullable String secondaryLocation; + + private PrivateCloudManagementClusterStretchedClusterConfig() {} + /** + * @return Zone that will remain operational when connection between the two zones is lost. + * + */ + public Optional preferredLocation() { + return Optional.ofNullable(this.preferredLocation); + } + /** + * @return Additional zone for a higher level of availability and load balancing. + * + * *** + * + */ + public Optional secondaryLocation() { + return Optional.ofNullable(this.secondaryLocation); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(PrivateCloudManagementClusterStretchedClusterConfig defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String preferredLocation; + private @Nullable String secondaryLocation; + public Builder() {} + public Builder(PrivateCloudManagementClusterStretchedClusterConfig defaults) { + Objects.requireNonNull(defaults); + this.preferredLocation = defaults.preferredLocation; + this.secondaryLocation = defaults.secondaryLocation; + } + + @CustomType.Setter + public Builder preferredLocation(@Nullable String preferredLocation) { + + this.preferredLocation = preferredLocation; + return this; + } + @CustomType.Setter + public Builder secondaryLocation(@Nullable String secondaryLocation) { + + this.secondaryLocation = secondaryLocation; + return this; + } + public PrivateCloudManagementClusterStretchedClusterConfig build() { + final var _resultValue = new PrivateCloudManagementClusterStretchedClusterConfig(); + _resultValue.preferredLocation = preferredLocation; + _resultValue.secondaryLocation = secondaryLocation; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/workbench/Instance.java b/sdk/java/src/main/java/com/pulumi/gcp/workbench/Instance.java index 4c3280e6ec..04512ff054 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/workbench/Instance.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/workbench/Instance.java @@ -135,8 +135,8 @@ * .coreCount(1) * .build()) * .vmImage(InstanceGceSetupVmImageArgs.builder() - * .project("deeplearning-platform-release") - * .family("tf-latest-gpu") + * .project("cloud-notebooks-managed") + * .family("workbench-instances") * .build()) * .build()) * .build()); diff --git a/sdk/java/src/main/java/com/pulumi/gcp/workstations/WorkstationCluster.java b/sdk/java/src/main/java/com/pulumi/gcp/workstations/WorkstationCluster.java index db1d9abf2f..ee3503c220 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/workstations/WorkstationCluster.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/workstations/WorkstationCluster.java @@ -268,6 +268,22 @@ public Output>> annotations() { public Output> conditions() { return this.conditions; } + /** + * The private IP address of the control plane for this workstation cluster. + * Workstation VMs need access to this IP address to work with the service, so make sure that your firewall rules allow egress from the workstation VMs to this address. + * + */ + @Export(name="controlPlaneIp", refs={String.class}, tree="[0]") + private Output controlPlaneIp; + + /** + * @return The private IP address of the control plane for this workstation cluster. + * Workstation VMs need access to this IP address to work with the service, so make sure that your firewall rules allow egress from the workstation VMs to this address. + * + */ + public Output controlPlaneIp() { + return this.controlPlaneIp; + } /** * Time when this resource was created. * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/workstations/inputs/WorkstationClusterState.java b/sdk/java/src/main/java/com/pulumi/gcp/workstations/inputs/WorkstationClusterState.java index 2fbfea86e5..28583b1546 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/workstations/inputs/WorkstationClusterState.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/workstations/inputs/WorkstationClusterState.java @@ -57,6 +57,23 @@ public Optional>> conditions() { return Optional.ofNullable(this.conditions); } + /** + * The private IP address of the control plane for this workstation cluster. + * Workstation VMs need access to this IP address to work with the service, so make sure that your firewall rules allow egress from the workstation VMs to this address. + * + */ + @Import(name="controlPlaneIp") + private @Nullable Output controlPlaneIp; + + /** + * @return The private IP address of the control plane for this workstation cluster. + * Workstation VMs need access to this IP address to work with the service, so make sure that your firewall rules allow egress from the workstation VMs to this address. + * + */ + public Optional> controlPlaneIp() { + return Optional.ofNullable(this.controlPlaneIp); + } + /** * Time when this resource was created. * @@ -343,6 +360,7 @@ private WorkstationClusterState() {} private WorkstationClusterState(WorkstationClusterState $) { this.annotations = $.annotations; this.conditions = $.conditions; + this.controlPlaneIp = $.controlPlaneIp; this.createTime = $.createTime; this.degraded = $.degraded; this.displayName = $.displayName; @@ -439,6 +457,29 @@ public Builder conditions(WorkstationClusterConditionArgs... conditions) { return conditions(List.of(conditions)); } + /** + * @param controlPlaneIp The private IP address of the control plane for this workstation cluster. + * Workstation VMs need access to this IP address to work with the service, so make sure that your firewall rules allow egress from the workstation VMs to this address. + * + * @return builder + * + */ + public Builder controlPlaneIp(@Nullable Output controlPlaneIp) { + $.controlPlaneIp = controlPlaneIp; + return this; + } + + /** + * @param controlPlaneIp The private IP address of the control plane for this workstation cluster. + * Workstation VMs need access to this IP address to work with the service, so make sure that your firewall rules allow egress from the workstation VMs to this address. + * + * @return builder + * + */ + public Builder controlPlaneIp(String controlPlaneIp) { + return controlPlaneIp(Output.of(controlPlaneIp)); + } + /** * @param createTime Time when this resource was created. * diff --git a/sdk/nodejs/apigee/organization.ts b/sdk/nodejs/apigee/organization.ts index d09e4d6127..f0312e2851 100644 --- a/sdk/nodejs/apigee/organization.ts +++ b/sdk/nodejs/apigee/organization.ts @@ -187,6 +187,16 @@ export class Organization extends pulumi.CustomResource { * Primary GCP region for analytics data storage. For valid values, see [Create an Apigee organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org). */ public readonly analyticsRegion!: pulumi.Output; + /** + * Cloud KMS key name used for encrypting API consumer data. + */ + public readonly apiConsumerDataEncryptionKeyName!: pulumi.Output; + /** + * This field is needed only for customers using non-default data residency regions. + * Apigee stores some control plane data only in single region. + * This field determines which single region Apigee should use. + */ + public readonly apiConsumerDataLocation!: pulumi.Output; /** * Output only. Project ID of the Apigee Tenant Project. */ @@ -206,6 +216,11 @@ export class Organization extends pulumi.CustomResource { * Valid only when `RuntimeType` is CLOUD. A base64-encoded string. */ public /*out*/ readonly caCertificate!: pulumi.Output; + /** + * Cloud KMS key name used for encrypting control plane data that is stored in a multi region. + * Only used for the data residency region "US" or "EU". + */ + public readonly controlPlaneEncryptionKeyName!: pulumi.Output; /** * Description of the Apigee organization. */ @@ -280,10 +295,13 @@ export class Organization extends pulumi.CustomResource { if (opts.id) { const state = argsOrState as OrganizationState | undefined; resourceInputs["analyticsRegion"] = state ? state.analyticsRegion : undefined; + resourceInputs["apiConsumerDataEncryptionKeyName"] = state ? state.apiConsumerDataEncryptionKeyName : undefined; + resourceInputs["apiConsumerDataLocation"] = state ? state.apiConsumerDataLocation : undefined; resourceInputs["apigeeProjectId"] = state ? state.apigeeProjectId : undefined; resourceInputs["authorizedNetwork"] = state ? state.authorizedNetwork : undefined; resourceInputs["billingType"] = state ? state.billingType : undefined; resourceInputs["caCertificate"] = state ? state.caCertificate : undefined; + resourceInputs["controlPlaneEncryptionKeyName"] = state ? state.controlPlaneEncryptionKeyName : undefined; resourceInputs["description"] = state ? state.description : undefined; resourceInputs["disableVpcPeering"] = state ? state.disableVpcPeering : undefined; resourceInputs["displayName"] = state ? state.displayName : undefined; @@ -300,8 +318,11 @@ export class Organization extends pulumi.CustomResource { throw new Error("Missing required property 'projectId'"); } resourceInputs["analyticsRegion"] = args ? args.analyticsRegion : undefined; + resourceInputs["apiConsumerDataEncryptionKeyName"] = args ? args.apiConsumerDataEncryptionKeyName : undefined; + resourceInputs["apiConsumerDataLocation"] = args ? args.apiConsumerDataLocation : undefined; resourceInputs["authorizedNetwork"] = args ? args.authorizedNetwork : undefined; resourceInputs["billingType"] = args ? args.billingType : undefined; + resourceInputs["controlPlaneEncryptionKeyName"] = args ? args.controlPlaneEncryptionKeyName : undefined; resourceInputs["description"] = args ? args.description : undefined; resourceInputs["disableVpcPeering"] = args ? args.disableVpcPeering : undefined; resourceInputs["displayName"] = args ? args.displayName : undefined; @@ -328,6 +349,16 @@ export interface OrganizationState { * Primary GCP region for analytics data storage. For valid values, see [Create an Apigee organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org). */ analyticsRegion?: pulumi.Input; + /** + * Cloud KMS key name used for encrypting API consumer data. + */ + apiConsumerDataEncryptionKeyName?: pulumi.Input; + /** + * This field is needed only for customers using non-default data residency regions. + * Apigee stores some control plane data only in single region. + * This field determines which single region Apigee should use. + */ + apiConsumerDataLocation?: pulumi.Input; /** * Output only. Project ID of the Apigee Tenant Project. */ @@ -347,6 +378,11 @@ export interface OrganizationState { * Valid only when `RuntimeType` is CLOUD. A base64-encoded string. */ caCertificate?: pulumi.Input; + /** + * Cloud KMS key name used for encrypting control plane data that is stored in a multi region. + * Only used for the data residency region "US" or "EU". + */ + controlPlaneEncryptionKeyName?: pulumi.Input; /** * Description of the Apigee organization. */ @@ -416,6 +452,16 @@ export interface OrganizationArgs { * Primary GCP region for analytics data storage. For valid values, see [Create an Apigee organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org). */ analyticsRegion?: pulumi.Input; + /** + * Cloud KMS key name used for encrypting API consumer data. + */ + apiConsumerDataEncryptionKeyName?: pulumi.Input; + /** + * This field is needed only for customers using non-default data residency regions. + * Apigee stores some control plane data only in single region. + * This field determines which single region Apigee should use. + */ + apiConsumerDataLocation?: pulumi.Input; /** * Compute Engine network used for Service Networking to be peered with Apigee runtime instances. * See [Getting started with the Service Networking API](https://cloud.google.com/service-infrastructure/docs/service-networking/getting-started). @@ -426,6 +472,11 @@ export interface OrganizationArgs { * Billing type of the Apigee organization. See [Apigee pricing](https://cloud.google.com/apigee/pricing). */ billingType?: pulumi.Input; + /** + * Cloud KMS key name used for encrypting control plane data that is stored in a multi region. + * Only used for the data residency region "US" or "EU". + */ + controlPlaneEncryptionKeyName?: pulumi.Input; /** * Description of the Apigee organization. */ diff --git a/sdk/nodejs/artifactregistry/repository.ts b/sdk/nodejs/artifactregistry/repository.ts index 53c591f18d..efbccaab71 100644 --- a/sdk/nodejs/artifactregistry/repository.ts +++ b/sdk/nodejs/artifactregistry/repository.ts @@ -224,43 +224,224 @@ import * as utilities from "../utilities"; * ], * }); * ``` - * ### Artifact Registry Repository Remote Custom + * ### Artifact Registry Repository Remote Dockerhub Auth * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * * const project = gcp.organizations.getProject({}); - * const example_custom_remote_secret = new gcp.secretmanager.Secret("example-custom-remote-secret", { + * const example_remote_secret = new gcp.secretmanager.Secret("example-remote-secret", { * secretId: "example-secret", * replication: { * auto: {}, * }, * }); - * const example_custom_remote_secretVersion = new gcp.secretmanager.SecretVersion("example-custom-remote-secret_version", { - * secret: example_custom_remote_secret.id, + * const example_remote_secretVersion = new gcp.secretmanager.SecretVersion("example-remote-secret_version", { + * secret: example_remote_secret.id, * secretData: "remote-password", * }); * const secret_access = new gcp.secretmanager.SecretIamMember("secret-access", { - * secretId: example_custom_remote_secret.id, + * secretId: example_remote_secret.id, * role: "roles/secretmanager.secretAccessor", * member: project.then(project => `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`), * }); * const my_repo = new gcp.artifactregistry.Repository("my-repo", { * location: "us-central1", - * repositoryId: "example-custom-remote", - * description: "example remote docker repository with credentials", + * repositoryId: "example-dockerhub-remote", + * description: "example remote dockerhub repository with credentials", * format: "DOCKER", * mode: "REMOTE_REPOSITORY", * remoteRepositoryConfig: { * description: "docker hub with custom credentials", + * disableUpstreamValidation: true, * dockerRepository: { * publicRepository: "DOCKER_HUB", * }, * upstreamCredentials: { * usernamePasswordCredentials: { * username: "remote-username", - * passwordSecretVersion: example_custom_remote_secretVersion.name, + * passwordSecretVersion: example_remote_secretVersion.name, + * }, + * }, + * }, + * }); + * ``` + * ### Artifact Registry Repository Remote Docker Custom With Auth + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const project = gcp.organizations.getProject({}); + * const example_remote_secret = new gcp.secretmanager.Secret("example-remote-secret", { + * secretId: "example-secret", + * replication: { + * auto: {}, + * }, + * }); + * const example_remote_secretVersion = new gcp.secretmanager.SecretVersion("example-remote-secret_version", { + * secret: example_remote_secret.id, + * secretData: "remote-password", + * }); + * const secret_access = new gcp.secretmanager.SecretIamMember("secret-access", { + * secretId: example_remote_secret.id, + * role: "roles/secretmanager.secretAccessor", + * member: project.then(project => `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`), + * }); + * const my_repo = new gcp.artifactregistry.Repository("my-repo", { + * location: "us-central1", + * repositoryId: "example-docker-custom-remote", + * description: "example remote custom docker repository with credentials", + * format: "DOCKER", + * mode: "REMOTE_REPOSITORY", + * remoteRepositoryConfig: { + * description: "custom docker remote with credentials", + * disableUpstreamValidation: true, + * dockerRepository: { + * customRepository: { + * uri: "https://registry-1.docker.io", + * }, + * }, + * upstreamCredentials: { + * usernamePasswordCredentials: { + * username: "remote-username", + * passwordSecretVersion: example_remote_secretVersion.name, + * }, + * }, + * }, + * }); + * ``` + * ### Artifact Registry Repository Remote Maven Custom With Auth + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const project = gcp.organizations.getProject({}); + * const example_remote_secret = new gcp.secretmanager.Secret("example-remote-secret", { + * secretId: "example-secret", + * replication: { + * auto: {}, + * }, + * }); + * const example_remote_secretVersion = new gcp.secretmanager.SecretVersion("example-remote-secret_version", { + * secret: example_remote_secret.id, + * secretData: "remote-password", + * }); + * const secret_access = new gcp.secretmanager.SecretIamMember("secret-access", { + * secretId: example_remote_secret.id, + * role: "roles/secretmanager.secretAccessor", + * member: project.then(project => `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`), + * }); + * const my_repo = new gcp.artifactregistry.Repository("my-repo", { + * location: "us-central1", + * repositoryId: "example-maven-custom-remote", + * description: "example remote custom maven repository with credentials", + * format: "MAVEN", + * mode: "REMOTE_REPOSITORY", + * remoteRepositoryConfig: { + * description: "custom maven remote with credentials", + * disableUpstreamValidation: true, + * mavenRepository: { + * customRepository: { + * uri: "https://my.maven.registry", + * }, + * }, + * upstreamCredentials: { + * usernamePasswordCredentials: { + * username: "remote-username", + * passwordSecretVersion: example_remote_secretVersion.name, + * }, + * }, + * }, + * }); + * ``` + * ### Artifact Registry Repository Remote Npm Custom With Auth + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const project = gcp.organizations.getProject({}); + * const example_remote_secret = new gcp.secretmanager.Secret("example-remote-secret", { + * secretId: "example-secret", + * replication: { + * auto: {}, + * }, + * }); + * const example_remote_secretVersion = new gcp.secretmanager.SecretVersion("example-remote-secret_version", { + * secret: example_remote_secret.id, + * secretData: "remote-password", + * }); + * const secret_access = new gcp.secretmanager.SecretIamMember("secret-access", { + * secretId: example_remote_secret.id, + * role: "roles/secretmanager.secretAccessor", + * member: project.then(project => `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`), + * }); + * const my_repo = new gcp.artifactregistry.Repository("my-repo", { + * location: "us-central1", + * repositoryId: "example-npm-custom-remote", + * description: "example remote custom npm repository with credentials", + * format: "NPM", + * mode: "REMOTE_REPOSITORY", + * remoteRepositoryConfig: { + * description: "custom npm with credentials", + * disableUpstreamValidation: true, + * npmRepository: { + * customRepository: { + * uri: "https://my.npm.registry", + * }, + * }, + * upstreamCredentials: { + * usernamePasswordCredentials: { + * username: "remote-username", + * passwordSecretVersion: example_remote_secretVersion.name, + * }, + * }, + * }, + * }); + * ``` + * ### Artifact Registry Repository Remote Python Custom With Auth + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const project = gcp.organizations.getProject({}); + * const example_remote_secret = new gcp.secretmanager.Secret("example-remote-secret", { + * secretId: "example-secret", + * replication: { + * auto: {}, + * }, + * }); + * const example_remote_secretVersion = new gcp.secretmanager.SecretVersion("example-remote-secret_version", { + * secret: example_remote_secret.id, + * secretData: "remote-password", + * }); + * const secret_access = new gcp.secretmanager.SecretIamMember("secret-access", { + * secretId: example_remote_secret.id, + * role: "roles/secretmanager.secretAccessor", + * member: project.then(project => `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`), + * }); + * const my_repo = new gcp.artifactregistry.Repository("my-repo", { + * location: "us-central1", + * repositoryId: "example-python-custom-remote", + * description: "example remote custom python repository with credentials", + * format: "PYTHON", + * mode: "REMOTE_REPOSITORY", + * remoteRepositoryConfig: { + * description: "custom npm with credentials", + * disableUpstreamValidation: true, + * pythonRepository: { + * customRepository: { + * uri: "https://my.python.registry", + * }, + * }, + * upstreamCredentials: { + * usernamePasswordCredentials: { + * username: "remote-username", + * passwordSecretVersion: example_remote_secretVersion.name, * }, * }, * }, diff --git a/sdk/nodejs/bigquery/table.ts b/sdk/nodejs/bigquery/table.ts index 754bebf288..919b58f145 100644 --- a/sdk/nodejs/bigquery/table.ts +++ b/sdk/nodejs/bigquery/table.ts @@ -252,6 +252,12 @@ export class Table extends pulumi.CustomResource { * specified. */ public readonly requirePartitionFilter!: pulumi.Output; + /** + * The tags attached to this table. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for + * example "123456789012/environment" where 123456789012 is the ID of the parent organization or project resource for this + * tag key. Tag value is expected to be the short name, for example "Production". + */ + public readonly resourceTags!: pulumi.Output<{[key: string]: string} | undefined>; /** * A JSON schema for the table. */ @@ -325,6 +331,7 @@ export class Table extends pulumi.CustomResource { resourceInputs["pulumiLabels"] = state ? state.pulumiLabels : undefined; resourceInputs["rangePartitioning"] = state ? state.rangePartitioning : undefined; resourceInputs["requirePartitionFilter"] = state ? state.requirePartitionFilter : undefined; + resourceInputs["resourceTags"] = state ? state.resourceTags : undefined; resourceInputs["schema"] = state ? state.schema : undefined; resourceInputs["selfLink"] = state ? state.selfLink : undefined; resourceInputs["tableConstraints"] = state ? state.tableConstraints : undefined; @@ -355,6 +362,7 @@ export class Table extends pulumi.CustomResource { resourceInputs["project"] = args ? args.project : undefined; resourceInputs["rangePartitioning"] = args ? args.rangePartitioning : undefined; resourceInputs["requirePartitionFilter"] = args ? args.requirePartitionFilter : undefined; + resourceInputs["resourceTags"] = args ? args.resourceTags : undefined; resourceInputs["schema"] = args ? args.schema : undefined; resourceInputs["tableConstraints"] = args ? args.tableConstraints : undefined; resourceInputs["tableId"] = args ? args.tableId : undefined; @@ -514,6 +522,12 @@ export interface TableState { * specified. */ requirePartitionFilter?: pulumi.Input; + /** + * The tags attached to this table. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for + * example "123456789012/environment" where 123456789012 is the ID of the parent organization or project resource for this + * tag key. Tag value is expected to be the short name, for example "Production". + */ + resourceTags?: pulumi.Input<{[key: string]: pulumi.Input}>; /** * A JSON schema for the table. */ @@ -635,6 +649,12 @@ export interface TableArgs { * specified. */ requirePartitionFilter?: pulumi.Input; + /** + * The tags attached to this table. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for + * example "123456789012/environment" where 123456789012 is the ID of the parent organization or project resource for this + * tag key. Tag value is expected to be the short name, for example "Production". + */ + resourceTags?: pulumi.Input<{[key: string]: pulumi.Input}>; /** * A JSON schema for the table. */ diff --git a/sdk/nodejs/billing/budget.ts b/sdk/nodejs/billing/budget.ts index ae7a67d3b0..5bab1a05b3 100644 --- a/sdk/nodejs/billing/budget.ts +++ b/sdk/nodejs/billing/budget.ts @@ -281,6 +281,11 @@ export class Budget extends pulumi.CustomResource { * billingAccounts/{billingAccountId}/budgets/{budgetId}. */ public /*out*/ readonly name!: pulumi.Output; + /** + * The ownership scope of the budget. The ownership scope and users' IAM permissions determine who has full access to the + * budget's data. Possible values: ["OWNERSHIP_SCOPE_UNSPECIFIED", "ALL_USERS", "BILLING_ACCOUNT"] + */ + public readonly ownershipScope!: pulumi.Output; /** * Rules that trigger alerts (notifications of thresholds being crossed) when spend exceeds the specified percentages of * the budget. @@ -306,6 +311,7 @@ export class Budget extends pulumi.CustomResource { resourceInputs["budgetFilter"] = state ? state.budgetFilter : undefined; resourceInputs["displayName"] = state ? state.displayName : undefined; resourceInputs["name"] = state ? state.name : undefined; + resourceInputs["ownershipScope"] = state ? state.ownershipScope : undefined; resourceInputs["thresholdRules"] = state ? state.thresholdRules : undefined; } else { const args = argsOrState as BudgetArgs | undefined; @@ -320,6 +326,7 @@ export class Budget extends pulumi.CustomResource { resourceInputs["billingAccount"] = args ? args.billingAccount : undefined; resourceInputs["budgetFilter"] = args ? args.budgetFilter : undefined; resourceInputs["displayName"] = args ? args.displayName : undefined; + resourceInputs["ownershipScope"] = args ? args.ownershipScope : undefined; resourceInputs["thresholdRules"] = args ? args.thresholdRules : undefined; resourceInputs["name"] = undefined /*out*/; } @@ -360,6 +367,11 @@ export interface BudgetState { * billingAccounts/{billingAccountId}/budgets/{budgetId}. */ name?: pulumi.Input; + /** + * The ownership scope of the budget. The ownership scope and users' IAM permissions determine who has full access to the + * budget's data. Possible values: ["OWNERSHIP_SCOPE_UNSPECIFIED", "ALL_USERS", "BILLING_ACCOUNT"] + */ + ownershipScope?: pulumi.Input; /** * Rules that trigger alerts (notifications of thresholds being crossed) when spend exceeds the specified percentages of * the budget. @@ -393,6 +405,11 @@ export interface BudgetArgs { * User data for display name in UI. Must be <= 60 chars. */ displayName?: pulumi.Input; + /** + * The ownership scope of the budget. The ownership scope and users' IAM permissions determine who has full access to the + * budget's data. Possible values: ["OWNERSHIP_SCOPE_UNSPECIFIED", "ALL_USERS", "BILLING_ACCOUNT"] + */ + ownershipScope?: pulumi.Input; /** * Rules that trigger alerts (notifications of thresholds being crossed) when spend exceeds the specified percentages of * the budget. diff --git a/sdk/nodejs/cloudfunctionsv2/function.ts b/sdk/nodejs/cloudfunctionsv2/function.ts index d84d8affeb..449741e869 100644 --- a/sdk/nodejs/cloudfunctionsv2/function.ts +++ b/sdk/nodejs/cloudfunctionsv2/function.ts @@ -376,6 +376,68 @@ import * as utilities from "../utilities"; * }, * }); * ``` + * ### Cloudfunctions2 Basic Builder + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * import * as time from "@pulumi/time"; + * + * const project = "my-project-name"; + * const account = new gcp.serviceaccount.Account("account", { + * accountId: "gcf-sa", + * displayName: "Test Service Account", + * }); + * const logWriter = new gcp.projects.IAMMember("log_writer", { + * project: account.project, + * role: "roles/logging.logWriter", + * member: pulumi.interpolate`serviceAccount:${account.email}`, + * }); + * const artifactRegistryWriter = new gcp.projects.IAMMember("artifact_registry_writer", { + * project: account.project, + * role: "roles/artifactregistry.writer", + * member: pulumi.interpolate`serviceAccount:${account.email}`, + * }); + * const storageObjectAdmin = new gcp.projects.IAMMember("storage_object_admin", { + * project: account.project, + * role: "roles/storage.objectAdmin", + * member: pulumi.interpolate`serviceAccount:${account.email}`, + * }); + * const bucket = new gcp.storage.Bucket("bucket", { + * name: `${project}-gcf-source`, + * location: "US", + * uniformBucketLevelAccess: true, + * }); + * const object = new gcp.storage.BucketObject("object", { + * name: "function-source.zip", + * bucket: bucket.name, + * source: new pulumi.asset.FileAsset("function-source.zip"), + * }); + * // builder permissions need to stablize before it can pull the source zip + * const wait60s = new time.index.Sleep("wait_60s", {createDuration: "60s"}); + * const _function = new gcp.cloudfunctionsv2.Function("function", { + * name: "function-v2", + * location: "us-central1", + * description: "a new function", + * buildConfig: { + * runtime: "nodejs16", + * entryPoint: "helloHttp", + * source: { + * storageSource: { + * bucket: bucket.name, + * object: object.name, + * }, + * }, + * serviceAccount: account.id, + * }, + * serviceConfig: { + * maxInstanceCount: 1, + * availableMemory: "256M", + * timeoutSeconds: 60, + * }, + * }); + * export const functionUri = _function.serviceConfig.apply(serviceConfig => serviceConfig?.uri); + * ``` * ### Cloudfunctions2 Secret Env * * ```typescript diff --git a/sdk/nodejs/compute/getInstanceGroupManager.ts b/sdk/nodejs/compute/getInstanceGroupManager.ts index dc42395461..ed5f8744c1 100644 --- a/sdk/nodejs/compute/getInstanceGroupManager.ts +++ b/sdk/nodejs/compute/getInstanceGroupManager.ts @@ -80,6 +80,7 @@ export interface GetInstanceGroupManagerResult { readonly name?: string; readonly namedPorts: outputs.compute.GetInstanceGroupManagerNamedPort[]; readonly operation: string; + readonly params: outputs.compute.GetInstanceGroupManagerParam[]; readonly project?: string; readonly selfLink?: string; readonly statefulDisks: outputs.compute.GetInstanceGroupManagerStatefulDisk[]; diff --git a/sdk/nodejs/compute/instanceGroupManager.ts b/sdk/nodejs/compute/instanceGroupManager.ts index a52d982789..fa20ef9a20 100644 --- a/sdk/nodejs/compute/instanceGroupManager.ts +++ b/sdk/nodejs/compute/instanceGroupManager.ts @@ -208,6 +208,12 @@ export class InstanceGroupManager extends pulumi.CustomResource { */ public readonly namedPorts!: pulumi.Output; public /*out*/ readonly operation!: pulumi.Output; + /** + * Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + * + * - - - + */ + public readonly params!: pulumi.Output; /** * The ID of the project in which the resource belongs. If it * is not provided, the provider project is used. @@ -245,9 +251,7 @@ export class InstanceGroupManager extends pulumi.CustomResource { */ public readonly targetSize!: pulumi.Output; /** - * The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch) - * - * - - - + * The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch). */ public readonly updatePolicy!: pulumi.Output; /** @@ -302,6 +306,7 @@ export class InstanceGroupManager extends pulumi.CustomResource { resourceInputs["name"] = state ? state.name : undefined; resourceInputs["namedPorts"] = state ? state.namedPorts : undefined; resourceInputs["operation"] = state ? state.operation : undefined; + resourceInputs["params"] = state ? state.params : undefined; resourceInputs["project"] = state ? state.project : undefined; resourceInputs["selfLink"] = state ? state.selfLink : undefined; resourceInputs["statefulDisks"] = state ? state.statefulDisks : undefined; @@ -331,6 +336,7 @@ export class InstanceGroupManager extends pulumi.CustomResource { resourceInputs["listManagedInstancesResults"] = args ? args.listManagedInstancesResults : undefined; resourceInputs["name"] = args ? args.name : undefined; resourceInputs["namedPorts"] = args ? args.namedPorts : undefined; + resourceInputs["params"] = args ? args.params : undefined; resourceInputs["project"] = args ? args.project : undefined; resourceInputs["statefulDisks"] = args ? args.statefulDisks : undefined; resourceInputs["statefulExternalIps"] = args ? args.statefulExternalIps : undefined; @@ -421,6 +427,12 @@ export interface InstanceGroupManagerState { */ namedPorts?: pulumi.Input[]>; operation?: pulumi.Input; + /** + * Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + * + * - - - + */ + params?: pulumi.Input; /** * The ID of the project in which the resource belongs. If it * is not provided, the provider project is used. @@ -458,9 +470,7 @@ export interface InstanceGroupManagerState { */ targetSize?: pulumi.Input; /** - * The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch) - * - * - - - + * The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch). */ updatePolicy?: pulumi.Input; /** @@ -545,6 +555,12 @@ export interface InstanceGroupManagerArgs { * for details on configuration. */ namedPorts?: pulumi.Input[]>; + /** + * Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + * + * - - - + */ + params?: pulumi.Input; /** * The ID of the project in which the resource belongs. If it * is not provided, the provider project is used. @@ -574,9 +590,7 @@ export interface InstanceGroupManagerArgs { */ targetSize?: pulumi.Input; /** - * The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch) - * - * - - - + * The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch). */ updatePolicy?: pulumi.Input; /** diff --git a/sdk/nodejs/compute/regionInstanceGroupManager.ts b/sdk/nodejs/compute/regionInstanceGroupManager.ts index bd8fb6bed6..eeb5afa137 100644 --- a/sdk/nodejs/compute/regionInstanceGroupManager.ts +++ b/sdk/nodejs/compute/regionInstanceGroupManager.ts @@ -205,6 +205,12 @@ export class RegionInstanceGroupManager extends pulumi.CustomResource { * for details on configuration. */ public readonly namedPorts!: pulumi.Output; + /** + * Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + * + * - - - + */ + public readonly params!: pulumi.Output; /** * The ID of the project in which the resource belongs. If it * is not provided, the provider project is used. @@ -226,8 +232,6 @@ export class RegionInstanceGroupManager extends pulumi.CustomResource { public readonly statefulDisks!: pulumi.Output; /** * External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. - * - * - - - */ public readonly statefulExternalIps!: pulumi.Output; /** @@ -299,6 +303,7 @@ export class RegionInstanceGroupManager extends pulumi.CustomResource { resourceInputs["listManagedInstancesResults"] = state ? state.listManagedInstancesResults : undefined; resourceInputs["name"] = state ? state.name : undefined; resourceInputs["namedPorts"] = state ? state.namedPorts : undefined; + resourceInputs["params"] = state ? state.params : undefined; resourceInputs["project"] = state ? state.project : undefined; resourceInputs["region"] = state ? state.region : undefined; resourceInputs["selfLink"] = state ? state.selfLink : undefined; @@ -330,6 +335,7 @@ export class RegionInstanceGroupManager extends pulumi.CustomResource { resourceInputs["listManagedInstancesResults"] = args ? args.listManagedInstancesResults : undefined; resourceInputs["name"] = args ? args.name : undefined; resourceInputs["namedPorts"] = args ? args.namedPorts : undefined; + resourceInputs["params"] = args ? args.params : undefined; resourceInputs["project"] = args ? args.project : undefined; resourceInputs["region"] = args ? args.region : undefined; resourceInputs["statefulDisks"] = args ? args.statefulDisks : undefined; @@ -427,6 +433,12 @@ export interface RegionInstanceGroupManagerState { * for details on configuration. */ namedPorts?: pulumi.Input[]>; + /** + * Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + * + * - - - + */ + params?: pulumi.Input; /** * The ID of the project in which the resource belongs. If it * is not provided, the provider project is used. @@ -448,8 +460,6 @@ export interface RegionInstanceGroupManagerState { statefulDisks?: pulumi.Input[]>; /** * External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. - * - * - - - */ statefulExternalIps?: pulumi.Input[]>; /** @@ -559,6 +569,12 @@ export interface RegionInstanceGroupManagerArgs { * for details on configuration. */ namedPorts?: pulumi.Input[]>; + /** + * Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + * + * - - - + */ + params?: pulumi.Input; /** * The ID of the project in which the resource belongs. If it * is not provided, the provider project is used. @@ -576,8 +592,6 @@ export interface RegionInstanceGroupManagerArgs { statefulDisks?: pulumi.Input[]>; /** * External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. - * - * - - - */ statefulExternalIps?: pulumi.Input[]>; /** diff --git a/sdk/nodejs/dns/getKeys.ts b/sdk/nodejs/dns/getKeys.ts index 10574f2255..62c8c7d438 100644 --- a/sdk/nodejs/dns/getKeys.ts +++ b/sdk/nodejs/dns/getKeys.ts @@ -66,7 +66,7 @@ export interface GetKeysArgs { */ export interface GetKeysResult { /** - * Unique identifier for the resource; defined by the server. + * The provider-assigned unique ID for this managed resource. */ readonly id: string; /** diff --git a/sdk/nodejs/dns/getManagedZones.ts b/sdk/nodejs/dns/getManagedZones.ts index ba80e38000..f9326092c7 100644 --- a/sdk/nodejs/dns/getManagedZones.ts +++ b/sdk/nodejs/dns/getManagedZones.ts @@ -27,7 +27,6 @@ export function getManagedZones(args?: GetManagedZonesArgs, opts?: pulumi.Invoke opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); return pulumi.runtime.invoke("gcp:dns/getManagedZones:getManagedZones", { - "managedZones": args.managedZones, "project": args.project, }, opts); } @@ -36,10 +35,6 @@ export function getManagedZones(args?: GetManagedZonesArgs, opts?: pulumi.Invoke * A collection of arguments for invoking getManagedZones. */ export interface GetManagedZonesArgs { - /** - * A list of managed zones. - */ - managedZones?: inputs.dns.GetManagedZonesManagedZone[]; /** * The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. */ @@ -54,7 +49,7 @@ export interface GetManagedZonesResult { /** * A list of managed zones. */ - readonly managedZones?: outputs.dns.GetManagedZonesManagedZone[]; + readonly managedZones: outputs.dns.GetManagedZonesManagedZone[]; readonly project?: string; } /** @@ -81,10 +76,6 @@ export function getManagedZonesOutput(args?: GetManagedZonesOutputArgs, opts?: p * A collection of arguments for invoking getManagedZones. */ export interface GetManagedZonesOutputArgs { - /** - * A list of managed zones. - */ - managedZones?: pulumi.Input[]>; /** * The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. */ diff --git a/sdk/nodejs/dns/getRecordSet.ts b/sdk/nodejs/dns/getRecordSet.ts index f4f0a1ebf7..0e6821bd35 100644 --- a/sdk/nodejs/dns/getRecordSet.ts +++ b/sdk/nodejs/dns/getRecordSet.ts @@ -50,6 +50,9 @@ export interface GetRecordSetArgs { * A collection of values returned by getRecordSet. */ export interface GetRecordSetResult { + /** + * The provider-assigned unique ID for this managed resource. + */ readonly id: string; readonly managedZone: string; readonly name: string; diff --git a/sdk/nodejs/firestore/document.ts b/sdk/nodejs/firestore/document.ts index fd77875189..a6dad47765 100644 --- a/sdk/nodejs/firestore/document.ts +++ b/sdk/nodejs/firestore/document.ts @@ -166,7 +166,7 @@ export class Document extends pulumi.CustomResource { */ public readonly fields!: pulumi.Output; /** - * A server defined name for this index. Format: + * A server defined name for this document. Format: * `projects/{{project_id}}/databases/{{database_id}}/documents/{{path}}/{{document_id}}` */ public /*out*/ readonly name!: pulumi.Output; @@ -260,7 +260,7 @@ export interface DocumentState { */ fields?: pulumi.Input; /** - * A server defined name for this index. Format: + * A server defined name for this document. Format: * `projects/{{project_id}}/databases/{{database_id}}/documents/{{path}}/{{document_id}}` */ name?: pulumi.Input; diff --git a/sdk/nodejs/organizations/getActiveFolder.ts b/sdk/nodejs/organizations/getActiveFolder.ts index 68c3a5ede0..670c410b3a 100644 --- a/sdk/nodejs/organizations/getActiveFolder.ts +++ b/sdk/nodejs/organizations/getActiveFolder.ts @@ -13,6 +13,7 @@ export function getActiveFolder(args: GetActiveFolderArgs, opts?: pulumi.InvokeO opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); return pulumi.runtime.invoke("gcp:organizations/getActiveFolder:getActiveFolder", { + "apiMethod": args.apiMethod, "displayName": args.displayName, "parent": args.parent, }, opts); @@ -22,6 +23,10 @@ export function getActiveFolder(args: GetActiveFolderArgs, opts?: pulumi.InvokeO * A collection of arguments for invoking getActiveFolder. */ export interface GetActiveFolderArgs { + /** + * The API method to use to search for the folder. Valid values are `LIST` and `SEARCH`. Default Value is `LIST`. `LIST` is [strongly consistent](https://cloud.google.com/resource-manager/reference/rest/v3/folders/list#:~:text=list()%20provides%20a-,strongly%20consistent,-view%20of%20the) and requires `resourcemanager.folders.list` on the parent folder, while `SEARCH` is [eventually consistent](https://cloud.google.com/resource-manager/reference/rest/v3/folders/search#:~:text=eventually%20consistent) and only returns folders that the user has `resourcemanager.folders.get` permission on. + */ + apiMethod?: string; /** * The folder's display name. */ @@ -36,6 +41,7 @@ export interface GetActiveFolderArgs { * A collection of values returned by getActiveFolder. */ export interface GetActiveFolderResult { + readonly apiMethod?: string; readonly displayName: string; /** * The provider-assigned unique ID for this managed resource. @@ -60,6 +66,10 @@ export function getActiveFolderOutput(args: GetActiveFolderOutputArgs, opts?: pu * A collection of arguments for invoking getActiveFolder. */ export interface GetActiveFolderOutputArgs { + /** + * The API method to use to search for the folder. Valid values are `LIST` and `SEARCH`. Default Value is `LIST`. `LIST` is [strongly consistent](https://cloud.google.com/resource-manager/reference/rest/v3/folders/list#:~:text=list()%20provides%20a-,strongly%20consistent,-view%20of%20the) and requires `resourcemanager.folders.list` on the parent folder, while `SEARCH` is [eventually consistent](https://cloud.google.com/resource-manager/reference/rest/v3/folders/search#:~:text=eventually%20consistent) and only returns folders that the user has `resourcemanager.folders.get` permission on. + */ + apiMethod?: pulumi.Input; /** * The folder's display name. */ diff --git a/sdk/nodejs/projects/iamMemberRemove.ts b/sdk/nodejs/projects/iamMemberRemove.ts new file mode 100644 index 0000000000..e3429699a9 --- /dev/null +++ b/sdk/nodejs/projects/iamMemberRemove.ts @@ -0,0 +1,154 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as utilities from "../utilities"; + +/** + * Ensures that a member:role pairing does not exist in a project's IAM policy. + * + * On create, this resource will modify the policy to remove the `member` from the + * `role`. If the membership is ever re-added, the next refresh will clear this + * resource from state, proposing re-adding it to correct the membership. Import is + * not supported- this resource will acquire the current policy and modify it as + * part of creating the resource. + * + * This resource will conflict with `gcp.projects.IAMPolicy` and + * `gcp.projects.IAMBinding` resources that share a role, as well as + * `gcp.projects.IAMMember` resources that target the same membership. When + * multiple resources conflict the final state is not guaranteed to include or omit + * the membership. Subsequent `pulumi up` calls will always show a diff + * until the configuration is corrected. + * + * For more information see + * [the official documentation](https://cloud.google.com/iam/docs/granting-changing-revoking-access) + * and + * [API reference](https://cloud.google.com/resource-manager/reference/rest/v1/projects/setIamPolicy). + */ +export class IamMemberRemove extends pulumi.CustomResource { + /** + * Get an existing IamMemberRemove resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: IamMemberRemoveState, opts?: pulumi.CustomResourceOptions): IamMemberRemove { + return new IamMemberRemove(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'gcp:projects/iamMemberRemove:IamMemberRemove'; + + /** + * Returns true if the given object is an instance of IamMemberRemove. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is IamMemberRemove { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === IamMemberRemove.__pulumiType; + } + + /** + * The IAM principal that should not have the target role. + * Each entry can have one of the following values: + * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. + * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. + * * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com. + */ + public readonly member!: pulumi.Output; + /** + * The project id of the target project. + */ + public readonly project!: pulumi.Output; + /** + * The target role that should be removed. + */ + public readonly role!: pulumi.Output; + + /** + * Create a IamMemberRemove resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: IamMemberRemoveArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: IamMemberRemoveArgs | IamMemberRemoveState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as IamMemberRemoveState | undefined; + resourceInputs["member"] = state ? state.member : undefined; + resourceInputs["project"] = state ? state.project : undefined; + resourceInputs["role"] = state ? state.role : undefined; + } else { + const args = argsOrState as IamMemberRemoveArgs | undefined; + if ((!args || args.member === undefined) && !opts.urn) { + throw new Error("Missing required property 'member'"); + } + if ((!args || args.project === undefined) && !opts.urn) { + throw new Error("Missing required property 'project'"); + } + if ((!args || args.role === undefined) && !opts.urn) { + throw new Error("Missing required property 'role'"); + } + resourceInputs["member"] = args ? args.member : undefined; + resourceInputs["project"] = args ? args.project : undefined; + resourceInputs["role"] = args ? args.role : undefined; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + super(IamMemberRemove.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering IamMemberRemove resources. + */ +export interface IamMemberRemoveState { + /** + * The IAM principal that should not have the target role. + * Each entry can have one of the following values: + * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. + * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. + * * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com. + */ + member?: pulumi.Input; + /** + * The project id of the target project. + */ + project?: pulumi.Input; + /** + * The target role that should be removed. + */ + role?: pulumi.Input; +} + +/** + * The set of arguments for constructing a IamMemberRemove resource. + */ +export interface IamMemberRemoveArgs { + /** + * The IAM principal that should not have the target role. + * Each entry can have one of the following values: + * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. + * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. + * * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com. + */ + member: pulumi.Input; + /** + * The project id of the target project. + */ + project: pulumi.Input; + /** + * The target role that should be removed. + */ + role: pulumi.Input; +} diff --git a/sdk/nodejs/projects/index.ts b/sdk/nodejs/projects/index.ts index 5dc409c516..c044677597 100644 --- a/sdk/nodejs/projects/index.ts +++ b/sdk/nodejs/projects/index.ts @@ -40,6 +40,11 @@ export const getProjectService: typeof import("./getProjectService").getProjectS export const getProjectServiceOutput: typeof import("./getProjectService").getProjectServiceOutput = null as any; utilities.lazyLoad(exports, ["getProjectService","getProjectServiceOutput"], () => require("./getProjectService")); +export { IamMemberRemoveArgs, IamMemberRemoveState } from "./iamMemberRemove"; +export type IamMemberRemove = import("./iamMemberRemove").IamMemberRemove; +export const IamMemberRemove: typeof import("./iamMemberRemove").IamMemberRemove = null as any; +utilities.lazyLoad(exports, ["IamMemberRemove"], () => require("./iamMemberRemove")); + export { IAMAuditConfigArgs, IAMAuditConfigState } from "./iamauditConfig"; export type IAMAuditConfig = import("./iamauditConfig").IAMAuditConfig; export const IAMAuditConfig: typeof import("./iamauditConfig").IAMAuditConfig = null as any; @@ -106,6 +111,8 @@ const _module = { return new IAMMember(name, undefined, { urn }) case "gcp:projects/iAMPolicy:IAMPolicy": return new IAMPolicy(name, undefined, { urn }) + case "gcp:projects/iamMemberRemove:IamMemberRemove": + return new IamMemberRemove(name, undefined, { urn }) case "gcp:projects/organizationPolicy:OrganizationPolicy": return new OrganizationPolicy(name, undefined, { urn }) case "gcp:projects/service:Service": @@ -127,6 +134,7 @@ pulumi.runtime.registerResourceModule("gcp", "projects/iAMBinding", _module) pulumi.runtime.registerResourceModule("gcp", "projects/iAMCustomRole", _module) pulumi.runtime.registerResourceModule("gcp", "projects/iAMMember", _module) pulumi.runtime.registerResourceModule("gcp", "projects/iAMPolicy", _module) +pulumi.runtime.registerResourceModule("gcp", "projects/iamMemberRemove", _module) pulumi.runtime.registerResourceModule("gcp", "projects/organizationPolicy", _module) pulumi.runtime.registerResourceModule("gcp", "projects/service", _module) pulumi.runtime.registerResourceModule("gcp", "projects/serviceIdentity", _module) diff --git a/sdk/nodejs/tsconfig.json b/sdk/nodejs/tsconfig.json index 067513d35d..5e5eb9e48c 100644 --- a/sdk/nodejs/tsconfig.json +++ b/sdk/nodejs/tsconfig.json @@ -1065,6 +1065,7 @@ "projects/getOrganizationPolicy.ts", "projects/getProject.ts", "projects/getProjectService.ts", + "projects/iamMemberRemove.ts", "projects/iamauditConfig.ts", "projects/iambinding.ts", "projects/iamcustomRole.ts", diff --git a/sdk/nodejs/types/input.ts b/sdk/nodejs/types/input.ts index f1e124ba75..3fa8b282cb 100644 --- a/sdk/nodejs/types/input.ts +++ b/sdk/nodejs/types/input.ts @@ -3962,6 +3962,11 @@ export namespace artifactregistry { * The description of the remote source. */ description?: pulumi.Input; + /** + * If true, the remote repository upstream and upstream credentials will + * not be validated. + */ + disableUpstreamValidation?: pulumi.Input; /** * Specific settings for a Docker remote repository. * Structure is documented below. @@ -4015,6 +4020,11 @@ export namespace artifactregistry { } export interface RepositoryRemoteRepositoryConfigDockerRepository { + /** + * Settings for a remote repository with a custom uri. + * Structure is documented below. + */ + customRepository?: pulumi.Input; /** * Address of the remote repository. * Default value is `DOCKER_HUB`. @@ -4023,7 +4033,19 @@ export namespace artifactregistry { publicRepository?: pulumi.Input; } + export interface RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository { + /** + * Specific uri to the registry, e.g. `"https://pypi.io"` + */ + uri?: pulumi.Input; + } + export interface RepositoryRemoteRepositoryConfigMavenRepository { + /** + * Settings for a remote repository with a custom uri. + * Structure is documented below. + */ + customRepository?: pulumi.Input; /** * Address of the remote repository. * Default value is `MAVEN_CENTRAL`. @@ -4032,7 +4054,19 @@ export namespace artifactregistry { publicRepository?: pulumi.Input; } + export interface RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository { + /** + * Specific uri to the registry, e.g. `"https://pypi.io"` + */ + uri?: pulumi.Input; + } + export interface RepositoryRemoteRepositoryConfigNpmRepository { + /** + * Settings for a remote repository with a custom uri. + * Structure is documented below. + */ + customRepository?: pulumi.Input; /** * Address of the remote repository. * Default value is `NPMJS`. @@ -4041,7 +4075,19 @@ export namespace artifactregistry { publicRepository?: pulumi.Input; } + export interface RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository { + /** + * Specific uri to the registry, e.g. `"https://pypi.io"` + */ + uri?: pulumi.Input; + } + export interface RepositoryRemoteRepositoryConfigPythonRepository { + /** + * Settings for a remote repository with a custom uri. + * Structure is documented below. + */ + customRepository?: pulumi.Input; /** * Address of the remote repository. * Default value is `PYPI`. @@ -4050,6 +4096,13 @@ export namespace artifactregistry { publicRepository?: pulumi.Input; } + export interface RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository { + /** + * Specific uri to the registry, e.g. `"https://pypi.io"` + */ + uri?: pulumi.Input; + } + export interface RepositoryRemoteRepositoryConfigUpstreamCredentials { /** * Use username and password to access the remote repository. @@ -10867,6 +10920,10 @@ export namespace cloudfunctionsv2 { * function, optional when updating an existing function. */ runtime?: pulumi.Input; + /** + * The fully-qualified name of the service account to be used for building the container. + */ + serviceAccount?: pulumi.Input; /** * The location of the function source code. * Structure is documented below. @@ -16887,6 +16944,13 @@ export namespace compute { port: pulumi.Input; } + export interface InstanceGroupManagerParams { + /** + * Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) + */ + resourceManagerTags?: pulumi.Input<{[key: string]: any}>; + } + export interface InstanceGroupManagerStatefulDisk { /** * , A value that prescribes what should happen to the stateful disk when the VM instance is deleted. The available options are `NEVER` and `ON_PERMANENT_INSTANCE_DELETION`. `NEVER` - detach the disk when the VM is deleted, but do not delete the disk. `ON_PERMANENT_INSTANCE_DELETION` will delete the stateful disk when the VM is permanently deleted from the instance group. The default is `NEVER`. @@ -19698,6 +19762,13 @@ export namespace compute { port: pulumi.Input; } + export interface RegionInstanceGroupManagerParams { + /** + * Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) + */ + resourceManagerTags?: pulumi.Input<{[key: string]: any}>; + } + export interface RegionInstanceGroupManagerStatefulDisk { /** * , A value that prescribes what should happen to the stateful disk when the VM instance is deleted. The available options are `NEVER` and `ON_PERMANENT_INSTANCE_DELETION`. `NEVER` - detach the disk when the VM is deleted, but do not delete the disk. `ON_PERMANENT_INSTANCE_DELETION` will delete the stateful disk when the VM is permanently deleted from the instance group. The default is `NEVER`. @@ -42303,76 +42374,6 @@ export namespace dns { title: pulumi.Input; } - export interface GetManagedZonesManagedZone { - /** - * A textual description field. - */ - description?: string; - /** - * The fully qualified DNS name of this zone. - */ - dnsName?: string; - /** - * DNS managed zone identifier - */ - id?: string; - /** - * Unique identifier for the resource; defined by the server. - */ - managedZoneId?: number; - /** - * A unique name for the resource. - */ - name?: string; - /** - * The list of nameservers that will be authoritative for this domain. Use NS records to redirect from your DNS provider to these names, thus making Google Cloud DNS authoritative for this zone. - */ - nameServers?: string[]; - /** - * The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. - */ - project?: string; - /** - * The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources. - */ - visibility?: string; - } - - export interface GetManagedZonesManagedZoneArgs { - /** - * A textual description field. - */ - description?: pulumi.Input; - /** - * The fully qualified DNS name of this zone. - */ - dnsName?: pulumi.Input; - /** - * DNS managed zone identifier - */ - id?: pulumi.Input; - /** - * Unique identifier for the resource; defined by the server. - */ - managedZoneId?: pulumi.Input; - /** - * A unique name for the resource. - */ - name?: pulumi.Input; - /** - * The list of nameservers that will be authoritative for this domain. Use NS records to redirect from your DNS provider to these names, thus making Google Cloud DNS authoritative for this zone. - */ - nameServers?: pulumi.Input[]>; - /** - * The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. - */ - project?: pulumi.Input; - /** - * The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources. - */ - visibility?: pulumi.Input; - } - export interface ManagedZoneCloudLoggingConfig { /** * If set, enable query logging for this ManagedZone. False by default, making logging opt-in. @@ -61762,6 +61763,11 @@ export namespace vmwareengine { * Structure is documented below. */ nodeTypeConfigs?: pulumi.Input[]>; + /** + * The stretched cluster configuration for the private cloud. + * Structure is documented below. + */ + stretchedClusterConfig?: pulumi.Input; } export interface PrivateCloudManagementClusterNodeTypeConfig { @@ -61770,8 +61776,6 @@ export namespace vmwareengine { * This number must always be one of `nodeType.availableCustomCoreCounts`. * If zero is provided max value from `nodeType.availableCustomCoreCounts` will be used. * This cannot be changed once the PrivateCloud is created. - * - * - - - */ customCoreCount?: pulumi.Input; /** @@ -61784,6 +61788,19 @@ export namespace vmwareengine { nodeTypeId: pulumi.Input; } + export interface PrivateCloudManagementClusterStretchedClusterConfig { + /** + * Zone that will remain operational when connection between the two zones is lost. + */ + preferredLocation?: pulumi.Input; + /** + * Additional zone for a higher level of availability and load balancing. + * + * - - - + */ + secondaryLocation?: pulumi.Input; + } + export interface PrivateCloudNetworkConfig { /** * (Output) diff --git a/sdk/nodejs/types/output.ts b/sdk/nodejs/types/output.ts index a783be12d4..ed85eeb74d 100644 --- a/sdk/nodejs/types/output.ts +++ b/sdk/nodejs/types/output.ts @@ -4145,6 +4145,11 @@ export namespace artifactregistry { * The description of the remote source. */ description: string; + /** + * If true, the remote repository upstream and upstream credentials will + * not be validated. + */ + disableUpstreamValidation: boolean; /** * Specific settings for a Docker remote repository. */ @@ -4190,33 +4195,77 @@ export namespace artifactregistry { } export interface GetRepositoryRemoteRepositoryConfigDockerRepository { + /** + * Settings for a remote repository with a custom uri. + */ + customRepositories: outputs.artifactregistry.GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository[]; /** * Address of the remote repository. Default value: "DOCKER_HUB" Possible values: ["DOCKER_HUB"] */ publicRepository: string; } + export interface GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository { + /** + * Specific uri to the registry, e.g. '"https://registry-1.docker.io"' + */ + uri: string; + } + export interface GetRepositoryRemoteRepositoryConfigMavenRepository { + /** + * Settings for a remote repository with a custom uri. + */ + customRepositories: outputs.artifactregistry.GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository[]; /** * Address of the remote repository. Default value: "MAVEN_CENTRAL" Possible values: ["MAVEN_CENTRAL"] */ publicRepository: string; } + export interface GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository { + /** + * Specific uri to the registry, e.g. '"https://repo.maven.apache.org/maven2"' + */ + uri: string; + } + export interface GetRepositoryRemoteRepositoryConfigNpmRepository { + /** + * Settings for a remote repository with a custom uri. + */ + customRepositories: outputs.artifactregistry.GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository[]; /** * Address of the remote repository. Default value: "NPMJS" Possible values: ["NPMJS"] */ publicRepository: string; } + export interface GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository { + /** + * Specific uri to the registry, e.g. '"https://registry.npmjs.org"' + */ + uri: string; + } + export interface GetRepositoryRemoteRepositoryConfigPythonRepository { + /** + * Settings for a remote repository with a custom uri. + */ + customRepositories: outputs.artifactregistry.GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository[]; /** * Address of the remote repository. Default value: "PYPI" Possible values: ["PYPI"] */ publicRepository: string; } + export interface GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository { + /** + * Specific uri to the registry, e.g. '"https://pypi.io"' + */ + uri: string; + } + export interface GetRepositoryRemoteRepositoryConfigUpstreamCredential { /** * Use username and password to access the remote repository. @@ -4385,6 +4434,11 @@ export namespace artifactregistry { * The description of the remote source. */ description?: string; + /** + * If true, the remote repository upstream and upstream credentials will + * not be validated. + */ + disableUpstreamValidation?: boolean; /** * Specific settings for a Docker remote repository. * Structure is documented below. @@ -4438,6 +4492,11 @@ export namespace artifactregistry { } export interface RepositoryRemoteRepositoryConfigDockerRepository { + /** + * Settings for a remote repository with a custom uri. + * Structure is documented below. + */ + customRepository?: outputs.artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository; /** * Address of the remote repository. * Default value is `DOCKER_HUB`. @@ -4446,7 +4505,19 @@ export namespace artifactregistry { publicRepository?: string; } + export interface RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository { + /** + * Specific uri to the registry, e.g. `"https://pypi.io"` + */ + uri?: string; + } + export interface RepositoryRemoteRepositoryConfigMavenRepository { + /** + * Settings for a remote repository with a custom uri. + * Structure is documented below. + */ + customRepository?: outputs.artifactregistry.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository; /** * Address of the remote repository. * Default value is `MAVEN_CENTRAL`. @@ -4455,7 +4526,19 @@ export namespace artifactregistry { publicRepository?: string; } + export interface RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository { + /** + * Specific uri to the registry, e.g. `"https://pypi.io"` + */ + uri?: string; + } + export interface RepositoryRemoteRepositoryConfigNpmRepository { + /** + * Settings for a remote repository with a custom uri. + * Structure is documented below. + */ + customRepository?: outputs.artifactregistry.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository; /** * Address of the remote repository. * Default value is `NPMJS`. @@ -4464,7 +4547,19 @@ export namespace artifactregistry { publicRepository?: string; } + export interface RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository { + /** + * Specific uri to the registry, e.g. `"https://pypi.io"` + */ + uri?: string; + } + export interface RepositoryRemoteRepositoryConfigPythonRepository { + /** + * Settings for a remote repository with a custom uri. + * Structure is documented below. + */ + customRepository?: outputs.artifactregistry.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository; /** * Address of the remote repository. * Default value is `PYPI`. @@ -4473,6 +4568,13 @@ export namespace artifactregistry { publicRepository?: string; } + export interface RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository { + /** + * Specific uri to the registry, e.g. `"https://pypi.io"` + */ + uri?: string; + } + export interface RepositoryRemoteRepositoryConfigUpstreamCredentials { /** * Use username and password to access the remote repository. @@ -12886,6 +12988,10 @@ export namespace cloudfunctionsv2 { * function, optional when updating an existing function. */ runtime?: string; + /** + * The fully-qualified name of the service account to be used for building the container. + */ + serviceAccount: string; /** * The location of the function source code. * Structure is documented below. @@ -13195,6 +13301,10 @@ export namespace cloudfunctionsv2 { * function, optional when updating an existing function. */ runtime: string; + /** + * The fully-qualified name of the service account to be used for building the container. + */ + serviceAccount: string; /** * The location of the function source code. */ @@ -21915,6 +22025,13 @@ export namespace compute { port: number; } + export interface GetInstanceGroupManagerParam { + /** + * Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. + */ + resourceManagerTags: {[key: string]: any}; + } + export interface GetInstanceGroupManagerStatefulDisk { /** * A value that prescribes what should happen to the stateful disk when the VM instance is deleted. The available options are NEVER and ON_PERMANENT_INSTANCE_DELETION. NEVER - detach the disk when the VM is deleted, but do not delete the disk. ON_PERMANENT_INSTANCE_DELETION will delete the stateful disk when the VM is permanently deleted from the instance group. The default is NEVER. @@ -25684,6 +25801,13 @@ export namespace compute { port: number; } + export interface InstanceGroupManagerParams { + /** + * Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) + */ + resourceManagerTags?: {[key: string]: any}; + } + export interface InstanceGroupManagerStatefulDisk { /** * , A value that prescribes what should happen to the stateful disk when the VM instance is deleted. The available options are `NEVER` and `ON_PERMANENT_INSTANCE_DELETION`. `NEVER` - detach the disk when the VM is deleted, but do not delete the disk. `ON_PERMANENT_INSTANCE_DELETION` will delete the stateful disk when the VM is permanently deleted from the instance group. The default is `NEVER`. @@ -28495,6 +28619,13 @@ export namespace compute { port: number; } + export interface RegionInstanceGroupManagerParams { + /** + * Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) + */ + resourceManagerTags?: {[key: string]: any}; + } + export interface RegionInstanceGroupManagerStatefulDisk { /** * , A value that prescribes what should happen to the stateful disk when the VM instance is deleted. The available options are `NEVER` and `ON_PERMANENT_INSTANCE_DELETION`. `NEVER` - detach the disk when the VM is deleted, but do not delete the disk. `ON_PERMANENT_INSTANCE_DELETION` will delete the stateful disk when the VM is permanently deleted from the instance group. The default is `NEVER`. @@ -37962,7 +38093,7 @@ export namespace container { */ cidrBlocks: outputs.container.GetClusterMasterAuthorizedNetworksConfigCidrBlock[]; /** - * Whether master is accessbile via Google Compute Engine Public IP addresses. + * Whether Kubernetes master is accessible via Google Compute Engine Public IPs. */ gcpPublicCidrsAccessEnabled: boolean; } @@ -39217,7 +39348,7 @@ export namespace container { export interface GetClusterServiceExternalIpsConfig { /** - * When enabled, services with exterenal ips specified will be allowed. + * When enabled, services with external ips specified will be allowed. */ enabled: boolean; } @@ -53335,11 +53466,11 @@ export namespace dns { /** * The base-16 encoded bytes of this digest. Suitable for use in a DS resource record. */ - digest: string; + digest?: string; /** * Specifies the algorithm used to calculate this digest. Possible values are `sha1`, `sha256` and `sha384` */ - type: string; + type?: string; } export interface GetKeysZoneSigningKey { @@ -53385,45 +53516,24 @@ export namespace dns { /** * The base-16 encoded bytes of this digest. Suitable for use in a DS resource record. */ - digest: string; + digest?: string; /** * Specifies the algorithm used to calculate this digest. Possible values are `sha1`, `sha256` and `sha384` */ - type: string; + type?: string; } export interface GetManagedZonesManagedZone { - /** - * A textual description field. - */ description: string; - /** - * The fully qualified DNS name of this zone. - */ dnsName: string; - /** - * DNS managed zone identifier - */ id: string; - /** - * Unique identifier for the resource; defined by the server. - */ managedZoneId: number; - /** - * A unique name for the resource. - */ - name: string; - /** - * The list of nameservers that will be authoritative for this domain. Use NS records to redirect from your DNS provider to these names, thus making Google Cloud DNS authoritative for this zone. - */ + name?: string; nameServers: string[]; /** * The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. */ - project: string; - /** - * The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources. - */ + project?: string; visibility: string; } @@ -75458,6 +75568,10 @@ export namespace vmwareengine { * where the key is canonical identifier of the node type (corresponds to the NodeType). */ nodeTypeConfigs: outputs.vmwareengine.GetPrivateCloudManagementClusterNodeTypeConfig[]; + /** + * The stretched cluster configuration for the private cloud. + */ + stretchedClusterConfigs: outputs.vmwareengine.GetPrivateCloudManagementClusterStretchedClusterConfig[]; } export interface GetPrivateCloudManagementClusterNodeTypeConfig { @@ -75475,6 +75589,17 @@ export namespace vmwareengine { nodeTypeId: string; } + export interface GetPrivateCloudManagementClusterStretchedClusterConfig { + /** + * Zone that will remain operational when connection between the two zones is lost. + */ + preferredLocation: string; + /** + * Additional zone for a higher level of availability and load balancing. + */ + secondaryLocation: string; + } + export interface GetPrivateCloudNetworkConfig { /** * DNS Server IP of the Private Cloud. @@ -75629,6 +75754,11 @@ export namespace vmwareengine { * Structure is documented below. */ nodeTypeConfigs?: outputs.vmwareengine.PrivateCloudManagementClusterNodeTypeConfig[]; + /** + * The stretched cluster configuration for the private cloud. + * Structure is documented below. + */ + stretchedClusterConfig?: outputs.vmwareengine.PrivateCloudManagementClusterStretchedClusterConfig; } export interface PrivateCloudManagementClusterNodeTypeConfig { @@ -75637,8 +75767,6 @@ export namespace vmwareengine { * This number must always be one of `nodeType.availableCustomCoreCounts`. * If zero is provided max value from `nodeType.availableCustomCoreCounts` will be used. * This cannot be changed once the PrivateCloud is created. - * - * - - - */ customCoreCount?: number; /** @@ -75651,6 +75779,19 @@ export namespace vmwareengine { nodeTypeId: string; } + export interface PrivateCloudManagementClusterStretchedClusterConfig { + /** + * Zone that will remain operational when connection between the two zones is lost. + */ + preferredLocation?: string; + /** + * Additional zone for a higher level of availability and load balancing. + * + * - - - + */ + secondaryLocation?: string; + } + export interface PrivateCloudNetworkConfig { /** * (Output) diff --git a/sdk/nodejs/vmwareengine/getPrivateCloud.ts b/sdk/nodejs/vmwareengine/getPrivateCloud.ts index 738801a438..df412832a9 100644 --- a/sdk/nodejs/vmwareengine/getPrivateCloud.ts +++ b/sdk/nodejs/vmwareengine/getPrivateCloud.ts @@ -70,9 +70,7 @@ export interface GetPrivateCloudResult { readonly name: string; readonly networkConfigs: outputs.vmwareengine.GetPrivateCloudNetworkConfig[]; readonly nsxes: outputs.vmwareengine.GetPrivateCloudNsx[]; - readonly preferredZone: string; readonly project?: string; - readonly secondaryZone: string; readonly state: string; readonly type: string; readonly uid: string; diff --git a/sdk/nodejs/vmwareengine/privateCloud.ts b/sdk/nodejs/vmwareengine/privateCloud.ts index 56fcb5ab54..bd9f436e32 100644 --- a/sdk/nodejs/vmwareengine/privateCloud.ts +++ b/sdk/nodejs/vmwareengine/privateCloud.ts @@ -160,15 +160,7 @@ export class PrivateCloud extends pulumi.CustomResource { * Structure is documented below. */ public /*out*/ readonly nsxes!: pulumi.Output; - /** - * The preferred single failure domain within a region. - */ - public readonly preferredZone!: pulumi.Output; public readonly project!: pulumi.Output; - /** - * The secondary single failure domain within a region. - */ - public readonly secondaryZone!: pulumi.Output; /** * State of the appliance. * Possible values are: `ACTIVE`, `CREATING`. @@ -208,9 +200,7 @@ export class PrivateCloud extends pulumi.CustomResource { resourceInputs["name"] = state ? state.name : undefined; resourceInputs["networkConfig"] = state ? state.networkConfig : undefined; resourceInputs["nsxes"] = state ? state.nsxes : undefined; - resourceInputs["preferredZone"] = state ? state.preferredZone : undefined; resourceInputs["project"] = state ? state.project : undefined; - resourceInputs["secondaryZone"] = state ? state.secondaryZone : undefined; resourceInputs["state"] = state ? state.state : undefined; resourceInputs["type"] = state ? state.type : undefined; resourceInputs["uid"] = state ? state.uid : undefined; @@ -231,9 +221,7 @@ export class PrivateCloud extends pulumi.CustomResource { resourceInputs["managementCluster"] = args ? args.managementCluster : undefined; resourceInputs["name"] = args ? args.name : undefined; resourceInputs["networkConfig"] = args ? args.networkConfig : undefined; - resourceInputs["preferredZone"] = args ? args.preferredZone : undefined; resourceInputs["project"] = args ? args.project : undefined; - resourceInputs["secondaryZone"] = args ? args.secondaryZone : undefined; resourceInputs["type"] = args ? args.type : undefined; resourceInputs["hcxes"] = undefined /*out*/; resourceInputs["nsxes"] = undefined /*out*/; @@ -282,15 +270,7 @@ export interface PrivateCloudState { * Structure is documented below. */ nsxes?: pulumi.Input[]>; - /** - * The preferred single failure domain within a region. - */ - preferredZone?: pulumi.Input; project?: pulumi.Input; - /** - * The secondary single failure domain within a region. - */ - secondaryZone?: pulumi.Input; /** * State of the appliance. * Possible values are: `ACTIVE`, `CREATING`. @@ -337,15 +317,7 @@ export interface PrivateCloudArgs { * Structure is documented below. */ networkConfig: pulumi.Input; - /** - * The preferred single failure domain within a region. - */ - preferredZone?: pulumi.Input; project?: pulumi.Input; - /** - * The secondary single failure domain within a region. - */ - secondaryZone?: pulumi.Input; /** * Initial type of the private cloud. Possible values: ["STANDARD", "TIME_LIMITED", "STRETCHED"] */ diff --git a/sdk/nodejs/workbench/instance.ts b/sdk/nodejs/workbench/instance.ts index d07a587c2b..94386b6cf8 100644 --- a/sdk/nodejs/workbench/instance.ts +++ b/sdk/nodejs/workbench/instance.ts @@ -55,8 +55,8 @@ import * as utilities from "../utilities"; * coreCount: "1", * }], * vmImage: { - * project: "deeplearning-platform-release", - * family: "tf-latest-gpu", + * project: "cloud-notebooks-managed", + * family: "workbench-instances", * }, * }, * }); diff --git a/sdk/nodejs/workstations/workstationCluster.ts b/sdk/nodejs/workstations/workstationCluster.ts index a513c680b6..61c7723431 100644 --- a/sdk/nodejs/workstations/workstationCluster.ts +++ b/sdk/nodejs/workstations/workstationCluster.ts @@ -172,6 +172,11 @@ export class WorkstationCluster extends pulumi.CustomResource { * Structure is documented below. */ public /*out*/ readonly conditions!: pulumi.Output; + /** + * The private IP address of the control plane for this workstation cluster. + * Workstation VMs need access to this IP address to work with the service, so make sure that your firewall rules allow egress from the workstation VMs to this address. + */ + public /*out*/ readonly controlPlaneIp!: pulumi.Output; /** * Time when this resource was created. */ @@ -270,6 +275,7 @@ export class WorkstationCluster extends pulumi.CustomResource { const state = argsOrState as WorkstationClusterState | undefined; resourceInputs["annotations"] = state ? state.annotations : undefined; resourceInputs["conditions"] = state ? state.conditions : undefined; + resourceInputs["controlPlaneIp"] = state ? state.controlPlaneIp : undefined; resourceInputs["createTime"] = state ? state.createTime : undefined; resourceInputs["degraded"] = state ? state.degraded : undefined; resourceInputs["displayName"] = state ? state.displayName : undefined; @@ -309,6 +315,7 @@ export class WorkstationCluster extends pulumi.CustomResource { resourceInputs["subnetwork"] = args ? args.subnetwork : undefined; resourceInputs["workstationClusterId"] = args ? args.workstationClusterId : undefined; resourceInputs["conditions"] = undefined /*out*/; + resourceInputs["controlPlaneIp"] = undefined /*out*/; resourceInputs["createTime"] = undefined /*out*/; resourceInputs["degraded"] = undefined /*out*/; resourceInputs["effectiveAnnotations"] = undefined /*out*/; @@ -340,6 +347,11 @@ export interface WorkstationClusterState { * Structure is documented below. */ conditions?: pulumi.Input[]>; + /** + * The private IP address of the control plane for this workstation cluster. + * Workstation VMs need access to this IP address to work with the service, so make sure that your firewall rules allow egress from the workstation VMs to this address. + */ + controlPlaneIp?: pulumi.Input; /** * Time when this resource was created. */ diff --git a/sdk/python/pulumi_gcp/__init__.py b/sdk/python/pulumi_gcp/__init__.py index 1ff5633e79..fc3b75bf27 100644 --- a/sdk/python/pulumi_gcp/__init__.py +++ b/sdk/python/pulumi_gcp/__init__.py @@ -6305,6 +6305,14 @@ "gcp:projects/iAMPolicy:IAMPolicy": "IAMPolicy" } }, + { + "pkg": "gcp", + "mod": "projects/iamMemberRemove", + "fqn": "pulumi_gcp.projects", + "classes": { + "gcp:projects/iamMemberRemove:IamMemberRemove": "IamMemberRemove" + } + }, { "pkg": "gcp", "mod": "projects/organizationPolicy", diff --git a/sdk/python/pulumi_gcp/apigee/organization.py b/sdk/python/pulumi_gcp/apigee/organization.py index 4ef012033e..768fcf2fe2 100644 --- a/sdk/python/pulumi_gcp/apigee/organization.py +++ b/sdk/python/pulumi_gcp/apigee/organization.py @@ -18,8 +18,11 @@ class OrganizationArgs: def __init__(__self__, *, project_id: pulumi.Input[str], analytics_region: Optional[pulumi.Input[str]] = None, + api_consumer_data_encryption_key_name: Optional[pulumi.Input[str]] = None, + api_consumer_data_location: Optional[pulumi.Input[str]] = None, authorized_network: Optional[pulumi.Input[str]] = None, billing_type: Optional[pulumi.Input[str]] = None, + control_plane_encryption_key_name: Optional[pulumi.Input[str]] = None, description: Optional[pulumi.Input[str]] = None, disable_vpc_peering: Optional[pulumi.Input[bool]] = None, display_name: Optional[pulumi.Input[str]] = None, @@ -34,10 +37,16 @@ def __init__(__self__, *, - - - :param pulumi.Input[str] analytics_region: Primary GCP region for analytics data storage. For valid values, see [Create an Apigee organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org). + :param pulumi.Input[str] api_consumer_data_encryption_key_name: Cloud KMS key name used for encrypting API consumer data. + :param pulumi.Input[str] api_consumer_data_location: This field is needed only for customers using non-default data residency regions. + Apigee stores some control plane data only in single region. + This field determines which single region Apigee should use. :param pulumi.Input[str] authorized_network: Compute Engine network used for Service Networking to be peered with Apigee runtime instances. See [Getting started with the Service Networking API](https://cloud.google.com/service-infrastructure/docs/service-networking/getting-started). Valid only when `RuntimeType` is set to CLOUD. The value can be updated only when there are no runtime instances. For example: "default". :param pulumi.Input[str] billing_type: Billing type of the Apigee organization. See [Apigee pricing](https://cloud.google.com/apigee/pricing). + :param pulumi.Input[str] control_plane_encryption_key_name: Cloud KMS key name used for encrypting control plane data that is stored in a multi region. + Only used for the data residency region "US" or "EU". :param pulumi.Input[str] description: Description of the Apigee organization. :param pulumi.Input[bool] disable_vpc_peering: Flag that specifies whether the VPC Peering through Private Google Access should be disabled between the consumer network and Apigee. Required if an `authorizedNetwork` @@ -64,10 +73,16 @@ def __init__(__self__, *, pulumi.set(__self__, "project_id", project_id) if analytics_region is not None: pulumi.set(__self__, "analytics_region", analytics_region) + if api_consumer_data_encryption_key_name is not None: + pulumi.set(__self__, "api_consumer_data_encryption_key_name", api_consumer_data_encryption_key_name) + if api_consumer_data_location is not None: + pulumi.set(__self__, "api_consumer_data_location", api_consumer_data_location) if authorized_network is not None: pulumi.set(__self__, "authorized_network", authorized_network) if billing_type is not None: pulumi.set(__self__, "billing_type", billing_type) + if control_plane_encryption_key_name is not None: + pulumi.set(__self__, "control_plane_encryption_key_name", control_plane_encryption_key_name) if description is not None: pulumi.set(__self__, "description", description) if disable_vpc_peering is not None: @@ -110,6 +125,32 @@ def analytics_region(self) -> Optional[pulumi.Input[str]]: def analytics_region(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "analytics_region", value) + @property + @pulumi.getter(name="apiConsumerDataEncryptionKeyName") + def api_consumer_data_encryption_key_name(self) -> Optional[pulumi.Input[str]]: + """ + Cloud KMS key name used for encrypting API consumer data. + """ + return pulumi.get(self, "api_consumer_data_encryption_key_name") + + @api_consumer_data_encryption_key_name.setter + def api_consumer_data_encryption_key_name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "api_consumer_data_encryption_key_name", value) + + @property + @pulumi.getter(name="apiConsumerDataLocation") + def api_consumer_data_location(self) -> Optional[pulumi.Input[str]]: + """ + This field is needed only for customers using non-default data residency regions. + Apigee stores some control plane data only in single region. + This field determines which single region Apigee should use. + """ + return pulumi.get(self, "api_consumer_data_location") + + @api_consumer_data_location.setter + def api_consumer_data_location(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "api_consumer_data_location", value) + @property @pulumi.getter(name="authorizedNetwork") def authorized_network(self) -> Optional[pulumi.Input[str]]: @@ -136,6 +177,19 @@ def billing_type(self) -> Optional[pulumi.Input[str]]: def billing_type(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "billing_type", value) + @property + @pulumi.getter(name="controlPlaneEncryptionKeyName") + def control_plane_encryption_key_name(self) -> Optional[pulumi.Input[str]]: + """ + Cloud KMS key name used for encrypting control plane data that is stored in a multi region. + Only used for the data residency region "US" or "EU". + """ + return pulumi.get(self, "control_plane_encryption_key_name") + + @control_plane_encryption_key_name.setter + def control_plane_encryption_key_name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "control_plane_encryption_key_name", value) + @property @pulumi.getter def description(self) -> Optional[pulumi.Input[str]]: @@ -240,10 +294,13 @@ def runtime_type(self, value: Optional[pulumi.Input[str]]): class _OrganizationState: def __init__(__self__, *, analytics_region: Optional[pulumi.Input[str]] = None, + api_consumer_data_encryption_key_name: Optional[pulumi.Input[str]] = None, + api_consumer_data_location: Optional[pulumi.Input[str]] = None, apigee_project_id: Optional[pulumi.Input[str]] = None, authorized_network: Optional[pulumi.Input[str]] = None, billing_type: Optional[pulumi.Input[str]] = None, ca_certificate: Optional[pulumi.Input[str]] = None, + control_plane_encryption_key_name: Optional[pulumi.Input[str]] = None, description: Optional[pulumi.Input[str]] = None, disable_vpc_peering: Optional[pulumi.Input[bool]] = None, display_name: Optional[pulumi.Input[str]] = None, @@ -257,6 +314,10 @@ def __init__(__self__, *, """ Input properties used for looking up and filtering Organization resources. :param pulumi.Input[str] analytics_region: Primary GCP region for analytics data storage. For valid values, see [Create an Apigee organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org). + :param pulumi.Input[str] api_consumer_data_encryption_key_name: Cloud KMS key name used for encrypting API consumer data. + :param pulumi.Input[str] api_consumer_data_location: This field is needed only for customers using non-default data residency regions. + Apigee stores some control plane data only in single region. + This field determines which single region Apigee should use. :param pulumi.Input[str] apigee_project_id: Output only. Project ID of the Apigee Tenant Project. :param pulumi.Input[str] authorized_network: Compute Engine network used for Service Networking to be peered with Apigee runtime instances. See [Getting started with the Service Networking API](https://cloud.google.com/service-infrastructure/docs/service-networking/getting-started). @@ -264,6 +325,8 @@ def __init__(__self__, *, :param pulumi.Input[str] billing_type: Billing type of the Apigee organization. See [Apigee pricing](https://cloud.google.com/apigee/pricing). :param pulumi.Input[str] ca_certificate: Output only. Base64-encoded public certificate for the root CA of the Apigee organization. Valid only when `RuntimeType` is CLOUD. A base64-encoded string. + :param pulumi.Input[str] control_plane_encryption_key_name: Cloud KMS key name used for encrypting control plane data that is stored in a multi region. + Only used for the data residency region "US" or "EU". :param pulumi.Input[str] description: Description of the Apigee organization. :param pulumi.Input[bool] disable_vpc_peering: Flag that specifies whether the VPC Peering through Private Google Access should be disabled between the consumer network and Apigee. Required if an `authorizedNetwork` @@ -296,6 +359,10 @@ def __init__(__self__, *, """ if analytics_region is not None: pulumi.set(__self__, "analytics_region", analytics_region) + if api_consumer_data_encryption_key_name is not None: + pulumi.set(__self__, "api_consumer_data_encryption_key_name", api_consumer_data_encryption_key_name) + if api_consumer_data_location is not None: + pulumi.set(__self__, "api_consumer_data_location", api_consumer_data_location) if apigee_project_id is not None: pulumi.set(__self__, "apigee_project_id", apigee_project_id) if authorized_network is not None: @@ -304,6 +371,8 @@ def __init__(__self__, *, pulumi.set(__self__, "billing_type", billing_type) if ca_certificate is not None: pulumi.set(__self__, "ca_certificate", ca_certificate) + if control_plane_encryption_key_name is not None: + pulumi.set(__self__, "control_plane_encryption_key_name", control_plane_encryption_key_name) if description is not None: pulumi.set(__self__, "description", description) if disable_vpc_peering is not None: @@ -337,6 +406,32 @@ def analytics_region(self) -> Optional[pulumi.Input[str]]: def analytics_region(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "analytics_region", value) + @property + @pulumi.getter(name="apiConsumerDataEncryptionKeyName") + def api_consumer_data_encryption_key_name(self) -> Optional[pulumi.Input[str]]: + """ + Cloud KMS key name used for encrypting API consumer data. + """ + return pulumi.get(self, "api_consumer_data_encryption_key_name") + + @api_consumer_data_encryption_key_name.setter + def api_consumer_data_encryption_key_name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "api_consumer_data_encryption_key_name", value) + + @property + @pulumi.getter(name="apiConsumerDataLocation") + def api_consumer_data_location(self) -> Optional[pulumi.Input[str]]: + """ + This field is needed only for customers using non-default data residency regions. + Apigee stores some control plane data only in single region. + This field determines which single region Apigee should use. + """ + return pulumi.get(self, "api_consumer_data_location") + + @api_consumer_data_location.setter + def api_consumer_data_location(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "api_consumer_data_location", value) + @property @pulumi.getter(name="apigeeProjectId") def apigee_project_id(self) -> Optional[pulumi.Input[str]]: @@ -388,6 +483,19 @@ def ca_certificate(self) -> Optional[pulumi.Input[str]]: def ca_certificate(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "ca_certificate", value) + @property + @pulumi.getter(name="controlPlaneEncryptionKeyName") + def control_plane_encryption_key_name(self) -> Optional[pulumi.Input[str]]: + """ + Cloud KMS key name used for encrypting control plane data that is stored in a multi region. + Only used for the data residency region "US" or "EU". + """ + return pulumi.get(self, "control_plane_encryption_key_name") + + @control_plane_encryption_key_name.setter + def control_plane_encryption_key_name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "control_plane_encryption_key_name", value) + @property @pulumi.getter def description(self) -> Optional[pulumi.Input[str]]: @@ -534,8 +642,11 @@ def __init__(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, analytics_region: Optional[pulumi.Input[str]] = None, + api_consumer_data_encryption_key_name: Optional[pulumi.Input[str]] = None, + api_consumer_data_location: Optional[pulumi.Input[str]] = None, authorized_network: Optional[pulumi.Input[str]] = None, billing_type: Optional[pulumi.Input[str]] = None, + control_plane_encryption_key_name: Optional[pulumi.Input[str]] = None, description: Optional[pulumi.Input[str]] = None, disable_vpc_peering: Optional[pulumi.Input[bool]] = None, display_name: Optional[pulumi.Input[str]] = None, @@ -681,10 +792,16 @@ def __init__(__self__, :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[str] analytics_region: Primary GCP region for analytics data storage. For valid values, see [Create an Apigee organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org). + :param pulumi.Input[str] api_consumer_data_encryption_key_name: Cloud KMS key name used for encrypting API consumer data. + :param pulumi.Input[str] api_consumer_data_location: This field is needed only for customers using non-default data residency regions. + Apigee stores some control plane data only in single region. + This field determines which single region Apigee should use. :param pulumi.Input[str] authorized_network: Compute Engine network used for Service Networking to be peered with Apigee runtime instances. See [Getting started with the Service Networking API](https://cloud.google.com/service-infrastructure/docs/service-networking/getting-started). Valid only when `RuntimeType` is set to CLOUD. The value can be updated only when there are no runtime instances. For example: "default". :param pulumi.Input[str] billing_type: Billing type of the Apigee organization. See [Apigee pricing](https://cloud.google.com/apigee/pricing). + :param pulumi.Input[str] control_plane_encryption_key_name: Cloud KMS key name used for encrypting control plane data that is stored in a multi region. + Only used for the data residency region "US" or "EU". :param pulumi.Input[str] description: Description of the Apigee organization. :param pulumi.Input[bool] disable_vpc_peering: Flag that specifies whether the VPC Peering through Private Google Access should be disabled between the consumer network and Apigee. Required if an `authorizedNetwork` @@ -867,8 +984,11 @@ def _internal_init(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, analytics_region: Optional[pulumi.Input[str]] = None, + api_consumer_data_encryption_key_name: Optional[pulumi.Input[str]] = None, + api_consumer_data_location: Optional[pulumi.Input[str]] = None, authorized_network: Optional[pulumi.Input[str]] = None, billing_type: Optional[pulumi.Input[str]] = None, + control_plane_encryption_key_name: Optional[pulumi.Input[str]] = None, description: Optional[pulumi.Input[str]] = None, disable_vpc_peering: Optional[pulumi.Input[bool]] = None, display_name: Optional[pulumi.Input[str]] = None, @@ -887,8 +1007,11 @@ def _internal_init(__self__, __props__ = OrganizationArgs.__new__(OrganizationArgs) __props__.__dict__["analytics_region"] = analytics_region + __props__.__dict__["api_consumer_data_encryption_key_name"] = api_consumer_data_encryption_key_name + __props__.__dict__["api_consumer_data_location"] = api_consumer_data_location __props__.__dict__["authorized_network"] = authorized_network __props__.__dict__["billing_type"] = billing_type + __props__.__dict__["control_plane_encryption_key_name"] = control_plane_encryption_key_name __props__.__dict__["description"] = description __props__.__dict__["disable_vpc_peering"] = disable_vpc_peering __props__.__dict__["display_name"] = display_name @@ -914,10 +1037,13 @@ def get(resource_name: str, id: pulumi.Input[str], opts: Optional[pulumi.ResourceOptions] = None, analytics_region: Optional[pulumi.Input[str]] = None, + api_consumer_data_encryption_key_name: Optional[pulumi.Input[str]] = None, + api_consumer_data_location: Optional[pulumi.Input[str]] = None, apigee_project_id: Optional[pulumi.Input[str]] = None, authorized_network: Optional[pulumi.Input[str]] = None, billing_type: Optional[pulumi.Input[str]] = None, ca_certificate: Optional[pulumi.Input[str]] = None, + control_plane_encryption_key_name: Optional[pulumi.Input[str]] = None, description: Optional[pulumi.Input[str]] = None, disable_vpc_peering: Optional[pulumi.Input[bool]] = None, display_name: Optional[pulumi.Input[str]] = None, @@ -936,6 +1062,10 @@ def get(resource_name: str, :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[str] analytics_region: Primary GCP region for analytics data storage. For valid values, see [Create an Apigee organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org). + :param pulumi.Input[str] api_consumer_data_encryption_key_name: Cloud KMS key name used for encrypting API consumer data. + :param pulumi.Input[str] api_consumer_data_location: This field is needed only for customers using non-default data residency regions. + Apigee stores some control plane data only in single region. + This field determines which single region Apigee should use. :param pulumi.Input[str] apigee_project_id: Output only. Project ID of the Apigee Tenant Project. :param pulumi.Input[str] authorized_network: Compute Engine network used for Service Networking to be peered with Apigee runtime instances. See [Getting started with the Service Networking API](https://cloud.google.com/service-infrastructure/docs/service-networking/getting-started). @@ -943,6 +1073,8 @@ def get(resource_name: str, :param pulumi.Input[str] billing_type: Billing type of the Apigee organization. See [Apigee pricing](https://cloud.google.com/apigee/pricing). :param pulumi.Input[str] ca_certificate: Output only. Base64-encoded public certificate for the root CA of the Apigee organization. Valid only when `RuntimeType` is CLOUD. A base64-encoded string. + :param pulumi.Input[str] control_plane_encryption_key_name: Cloud KMS key name used for encrypting control plane data that is stored in a multi region. + Only used for the data residency region "US" or "EU". :param pulumi.Input[str] description: Description of the Apigee organization. :param pulumi.Input[bool] disable_vpc_peering: Flag that specifies whether the VPC Peering through Private Google Access should be disabled between the consumer network and Apigee. Required if an `authorizedNetwork` @@ -978,10 +1110,13 @@ def get(resource_name: str, __props__ = _OrganizationState.__new__(_OrganizationState) __props__.__dict__["analytics_region"] = analytics_region + __props__.__dict__["api_consumer_data_encryption_key_name"] = api_consumer_data_encryption_key_name + __props__.__dict__["api_consumer_data_location"] = api_consumer_data_location __props__.__dict__["apigee_project_id"] = apigee_project_id __props__.__dict__["authorized_network"] = authorized_network __props__.__dict__["billing_type"] = billing_type __props__.__dict__["ca_certificate"] = ca_certificate + __props__.__dict__["control_plane_encryption_key_name"] = control_plane_encryption_key_name __props__.__dict__["description"] = description __props__.__dict__["disable_vpc_peering"] = disable_vpc_peering __props__.__dict__["display_name"] = display_name @@ -1002,6 +1137,24 @@ def analytics_region(self) -> pulumi.Output[Optional[str]]: """ return pulumi.get(self, "analytics_region") + @property + @pulumi.getter(name="apiConsumerDataEncryptionKeyName") + def api_consumer_data_encryption_key_name(self) -> pulumi.Output[Optional[str]]: + """ + Cloud KMS key name used for encrypting API consumer data. + """ + return pulumi.get(self, "api_consumer_data_encryption_key_name") + + @property + @pulumi.getter(name="apiConsumerDataLocation") + def api_consumer_data_location(self) -> pulumi.Output[Optional[str]]: + """ + This field is needed only for customers using non-default data residency regions. + Apigee stores some control plane data only in single region. + This field determines which single region Apigee should use. + """ + return pulumi.get(self, "api_consumer_data_location") + @property @pulumi.getter(name="apigeeProjectId") def apigee_project_id(self) -> pulumi.Output[str]: @@ -1037,6 +1190,15 @@ def ca_certificate(self) -> pulumi.Output[str]: """ return pulumi.get(self, "ca_certificate") + @property + @pulumi.getter(name="controlPlaneEncryptionKeyName") + def control_plane_encryption_key_name(self) -> pulumi.Output[Optional[str]]: + """ + Cloud KMS key name used for encrypting control plane data that is stored in a multi region. + Only used for the data residency region "US" or "EU". + """ + return pulumi.get(self, "control_plane_encryption_key_name") + @property @pulumi.getter def description(self) -> pulumi.Output[Optional[str]]: diff --git a/sdk/python/pulumi_gcp/artifactregistry/_inputs.py b/sdk/python/pulumi_gcp/artifactregistry/_inputs.py index 1912a96a9a..bdff807818 100644 --- a/sdk/python/pulumi_gcp/artifactregistry/_inputs.py +++ b/sdk/python/pulumi_gcp/artifactregistry/_inputs.py @@ -21,9 +21,13 @@ 'RepositoryRemoteRepositoryConfigAptRepositoryArgs', 'RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs', 'RepositoryRemoteRepositoryConfigDockerRepositoryArgs', + 'RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs', 'RepositoryRemoteRepositoryConfigMavenRepositoryArgs', + 'RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs', 'RepositoryRemoteRepositoryConfigNpmRepositoryArgs', + 'RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs', 'RepositoryRemoteRepositoryConfigPythonRepositoryArgs', + 'RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs', 'RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs', 'RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs', 'RepositoryRemoteRepositoryConfigYumRepositoryArgs', @@ -407,6 +411,7 @@ class RepositoryRemoteRepositoryConfigArgs: def __init__(__self__, *, apt_repository: Optional[pulumi.Input['RepositoryRemoteRepositoryConfigAptRepositoryArgs']] = None, description: Optional[pulumi.Input[str]] = None, + disable_upstream_validation: Optional[pulumi.Input[bool]] = None, docker_repository: Optional[pulumi.Input['RepositoryRemoteRepositoryConfigDockerRepositoryArgs']] = None, maven_repository: Optional[pulumi.Input['RepositoryRemoteRepositoryConfigMavenRepositoryArgs']] = None, npm_repository: Optional[pulumi.Input['RepositoryRemoteRepositoryConfigNpmRepositoryArgs']] = None, @@ -417,6 +422,8 @@ def __init__(__self__, *, :param pulumi.Input['RepositoryRemoteRepositoryConfigAptRepositoryArgs'] apt_repository: Specific settings for an Apt remote repository. Structure is documented below. :param pulumi.Input[str] description: The description of the remote source. + :param pulumi.Input[bool] disable_upstream_validation: If true, the remote repository upstream and upstream credentials will + not be validated. :param pulumi.Input['RepositoryRemoteRepositoryConfigDockerRepositoryArgs'] docker_repository: Specific settings for a Docker remote repository. Structure is documented below. :param pulumi.Input['RepositoryRemoteRepositoryConfigMavenRepositoryArgs'] maven_repository: Specific settings for a Maven remote repository. @@ -434,6 +441,8 @@ def __init__(__self__, *, pulumi.set(__self__, "apt_repository", apt_repository) if description is not None: pulumi.set(__self__, "description", description) + if disable_upstream_validation is not None: + pulumi.set(__self__, "disable_upstream_validation", disable_upstream_validation) if docker_repository is not None: pulumi.set(__self__, "docker_repository", docker_repository) if maven_repository is not None: @@ -472,6 +481,19 @@ def description(self) -> Optional[pulumi.Input[str]]: def description(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "description", value) + @property + @pulumi.getter(name="disableUpstreamValidation") + def disable_upstream_validation(self) -> Optional[pulumi.Input[bool]]: + """ + If true, the remote repository upstream and upstream credentials will + not be validated. + """ + return pulumi.get(self, "disable_upstream_validation") + + @disable_upstream_validation.setter + def disable_upstream_validation(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "disable_upstream_validation", value) + @property @pulumi.getter(name="dockerRepository") def docker_repository(self) -> Optional[pulumi.Input['RepositoryRemoteRepositoryConfigDockerRepositoryArgs']]: @@ -618,15 +640,33 @@ def repository_path(self, value: pulumi.Input[str]): @pulumi.input_type class RepositoryRemoteRepositoryConfigDockerRepositoryArgs: def __init__(__self__, *, + custom_repository: Optional[pulumi.Input['RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs']] = None, public_repository: Optional[pulumi.Input[str]] = None): """ + :param pulumi.Input['RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs'] custom_repository: Settings for a remote repository with a custom uri. + Structure is documented below. :param pulumi.Input[str] public_repository: Address of the remote repository. Default value is `DOCKER_HUB`. Possible values are: `DOCKER_HUB`. """ + if custom_repository is not None: + pulumi.set(__self__, "custom_repository", custom_repository) if public_repository is not None: pulumi.set(__self__, "public_repository", public_repository) + @property + @pulumi.getter(name="customRepository") + def custom_repository(self) -> Optional[pulumi.Input['RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs']]: + """ + Settings for a remote repository with a custom uri. + Structure is documented below. + """ + return pulumi.get(self, "custom_repository") + + @custom_repository.setter + def custom_repository(self, value: Optional[pulumi.Input['RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs']]): + pulumi.set(self, "custom_repository", value) + @property @pulumi.getter(name="publicRepository") def public_repository(self) -> Optional[pulumi.Input[str]]: @@ -642,18 +682,59 @@ def public_repository(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "public_repository", value) +@pulumi.input_type +class RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs: + def __init__(__self__, *, + uri: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] uri: Specific uri to the registry, e.g. `"https://pypi.io"` + """ + if uri is not None: + pulumi.set(__self__, "uri", uri) + + @property + @pulumi.getter + def uri(self) -> Optional[pulumi.Input[str]]: + """ + Specific uri to the registry, e.g. `"https://pypi.io"` + """ + return pulumi.get(self, "uri") + + @uri.setter + def uri(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "uri", value) + + @pulumi.input_type class RepositoryRemoteRepositoryConfigMavenRepositoryArgs: def __init__(__self__, *, + custom_repository: Optional[pulumi.Input['RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs']] = None, public_repository: Optional[pulumi.Input[str]] = None): """ + :param pulumi.Input['RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs'] custom_repository: Settings for a remote repository with a custom uri. + Structure is documented below. :param pulumi.Input[str] public_repository: Address of the remote repository. Default value is `MAVEN_CENTRAL`. Possible values are: `MAVEN_CENTRAL`. """ + if custom_repository is not None: + pulumi.set(__self__, "custom_repository", custom_repository) if public_repository is not None: pulumi.set(__self__, "public_repository", public_repository) + @property + @pulumi.getter(name="customRepository") + def custom_repository(self) -> Optional[pulumi.Input['RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs']]: + """ + Settings for a remote repository with a custom uri. + Structure is documented below. + """ + return pulumi.get(self, "custom_repository") + + @custom_repository.setter + def custom_repository(self, value: Optional[pulumi.Input['RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs']]): + pulumi.set(self, "custom_repository", value) + @property @pulumi.getter(name="publicRepository") def public_repository(self) -> Optional[pulumi.Input[str]]: @@ -669,18 +750,59 @@ def public_repository(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "public_repository", value) +@pulumi.input_type +class RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs: + def __init__(__self__, *, + uri: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] uri: Specific uri to the registry, e.g. `"https://pypi.io"` + """ + if uri is not None: + pulumi.set(__self__, "uri", uri) + + @property + @pulumi.getter + def uri(self) -> Optional[pulumi.Input[str]]: + """ + Specific uri to the registry, e.g. `"https://pypi.io"` + """ + return pulumi.get(self, "uri") + + @uri.setter + def uri(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "uri", value) + + @pulumi.input_type class RepositoryRemoteRepositoryConfigNpmRepositoryArgs: def __init__(__self__, *, + custom_repository: Optional[pulumi.Input['RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs']] = None, public_repository: Optional[pulumi.Input[str]] = None): """ + :param pulumi.Input['RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs'] custom_repository: Settings for a remote repository with a custom uri. + Structure is documented below. :param pulumi.Input[str] public_repository: Address of the remote repository. Default value is `NPMJS`. Possible values are: `NPMJS`. """ + if custom_repository is not None: + pulumi.set(__self__, "custom_repository", custom_repository) if public_repository is not None: pulumi.set(__self__, "public_repository", public_repository) + @property + @pulumi.getter(name="customRepository") + def custom_repository(self) -> Optional[pulumi.Input['RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs']]: + """ + Settings for a remote repository with a custom uri. + Structure is documented below. + """ + return pulumi.get(self, "custom_repository") + + @custom_repository.setter + def custom_repository(self, value: Optional[pulumi.Input['RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs']]): + pulumi.set(self, "custom_repository", value) + @property @pulumi.getter(name="publicRepository") def public_repository(self) -> Optional[pulumi.Input[str]]: @@ -696,18 +818,59 @@ def public_repository(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "public_repository", value) +@pulumi.input_type +class RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs: + def __init__(__self__, *, + uri: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] uri: Specific uri to the registry, e.g. `"https://pypi.io"` + """ + if uri is not None: + pulumi.set(__self__, "uri", uri) + + @property + @pulumi.getter + def uri(self) -> Optional[pulumi.Input[str]]: + """ + Specific uri to the registry, e.g. `"https://pypi.io"` + """ + return pulumi.get(self, "uri") + + @uri.setter + def uri(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "uri", value) + + @pulumi.input_type class RepositoryRemoteRepositoryConfigPythonRepositoryArgs: def __init__(__self__, *, + custom_repository: Optional[pulumi.Input['RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs']] = None, public_repository: Optional[pulumi.Input[str]] = None): """ + :param pulumi.Input['RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs'] custom_repository: Settings for a remote repository with a custom uri. + Structure is documented below. :param pulumi.Input[str] public_repository: Address of the remote repository. Default value is `PYPI`. Possible values are: `PYPI`. """ + if custom_repository is not None: + pulumi.set(__self__, "custom_repository", custom_repository) if public_repository is not None: pulumi.set(__self__, "public_repository", public_repository) + @property + @pulumi.getter(name="customRepository") + def custom_repository(self) -> Optional[pulumi.Input['RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs']]: + """ + Settings for a remote repository with a custom uri. + Structure is documented below. + """ + return pulumi.get(self, "custom_repository") + + @custom_repository.setter + def custom_repository(self, value: Optional[pulumi.Input['RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs']]): + pulumi.set(self, "custom_repository", value) + @property @pulumi.getter(name="publicRepository") def public_repository(self) -> Optional[pulumi.Input[str]]: @@ -723,6 +886,29 @@ def public_repository(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "public_repository", value) +@pulumi.input_type +class RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs: + def __init__(__self__, *, + uri: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] uri: Specific uri to the registry, e.g. `"https://pypi.io"` + """ + if uri is not None: + pulumi.set(__self__, "uri", uri) + + @property + @pulumi.getter + def uri(self) -> Optional[pulumi.Input[str]]: + """ + Specific uri to the registry, e.g. `"https://pypi.io"` + """ + return pulumi.get(self, "uri") + + @uri.setter + def uri(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "uri", value) + + @pulumi.input_type class RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs: def __init__(__self__, *, diff --git a/sdk/python/pulumi_gcp/artifactregistry/outputs.py b/sdk/python/pulumi_gcp/artifactregistry/outputs.py index 6f8264aab7..5389dbcdf5 100644 --- a/sdk/python/pulumi_gcp/artifactregistry/outputs.py +++ b/sdk/python/pulumi_gcp/artifactregistry/outputs.py @@ -22,9 +22,13 @@ 'RepositoryRemoteRepositoryConfigAptRepository', 'RepositoryRemoteRepositoryConfigAptRepositoryPublicRepository', 'RepositoryRemoteRepositoryConfigDockerRepository', + 'RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository', 'RepositoryRemoteRepositoryConfigMavenRepository', + 'RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository', 'RepositoryRemoteRepositoryConfigNpmRepository', + 'RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository', 'RepositoryRemoteRepositoryConfigPythonRepository', + 'RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository', 'RepositoryRemoteRepositoryConfigUpstreamCredentials', 'RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentials', 'RepositoryRemoteRepositoryConfigYumRepository', @@ -40,9 +44,13 @@ 'GetRepositoryRemoteRepositoryConfigAptRepositoryResult', 'GetRepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryResult', 'GetRepositoryRemoteRepositoryConfigDockerRepositoryResult', + 'GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryResult', 'GetRepositoryRemoteRepositoryConfigMavenRepositoryResult', + 'GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryResult', 'GetRepositoryRemoteRepositoryConfigNpmRepositoryResult', + 'GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryResult', 'GetRepositoryRemoteRepositoryConfigPythonRepositoryResult', + 'GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryResult', 'GetRepositoryRemoteRepositoryConfigUpstreamCredentialResult', 'GetRepositoryRemoteRepositoryConfigUpstreamCredentialUsernamePasswordCredentialResult', 'GetRepositoryRemoteRepositoryConfigYumRepositoryResult', @@ -443,6 +451,8 @@ def __key_warning(key: str): suggest = None if key == "aptRepository": suggest = "apt_repository" + elif key == "disableUpstreamValidation": + suggest = "disable_upstream_validation" elif key == "dockerRepository": suggest = "docker_repository" elif key == "mavenRepository": @@ -470,6 +480,7 @@ def get(self, key: str, default = None) -> Any: def __init__(__self__, *, apt_repository: Optional['outputs.RepositoryRemoteRepositoryConfigAptRepository'] = None, description: Optional[str] = None, + disable_upstream_validation: Optional[bool] = None, docker_repository: Optional['outputs.RepositoryRemoteRepositoryConfigDockerRepository'] = None, maven_repository: Optional['outputs.RepositoryRemoteRepositoryConfigMavenRepository'] = None, npm_repository: Optional['outputs.RepositoryRemoteRepositoryConfigNpmRepository'] = None, @@ -480,6 +491,8 @@ def __init__(__self__, *, :param 'RepositoryRemoteRepositoryConfigAptRepositoryArgs' apt_repository: Specific settings for an Apt remote repository. Structure is documented below. :param str description: The description of the remote source. + :param bool disable_upstream_validation: If true, the remote repository upstream and upstream credentials will + not be validated. :param 'RepositoryRemoteRepositoryConfigDockerRepositoryArgs' docker_repository: Specific settings for a Docker remote repository. Structure is documented below. :param 'RepositoryRemoteRepositoryConfigMavenRepositoryArgs' maven_repository: Specific settings for a Maven remote repository. @@ -497,6 +510,8 @@ def __init__(__self__, *, pulumi.set(__self__, "apt_repository", apt_repository) if description is not None: pulumi.set(__self__, "description", description) + if disable_upstream_validation is not None: + pulumi.set(__self__, "disable_upstream_validation", disable_upstream_validation) if docker_repository is not None: pulumi.set(__self__, "docker_repository", docker_repository) if maven_repository is not None: @@ -527,6 +542,15 @@ def description(self) -> Optional[str]: """ return pulumi.get(self, "description") + @property + @pulumi.getter(name="disableUpstreamValidation") + def disable_upstream_validation(self) -> Optional[bool]: + """ + If true, the remote repository upstream and upstream credentials will + not be validated. + """ + return pulumi.get(self, "disable_upstream_validation") + @property @pulumi.getter(name="dockerRepository") def docker_repository(self) -> Optional['outputs.RepositoryRemoteRepositoryConfigDockerRepository']: @@ -675,7 +699,9 @@ class RepositoryRemoteRepositoryConfigDockerRepository(dict): @staticmethod def __key_warning(key: str): suggest = None - if key == "publicRepository": + if key == "customRepository": + suggest = "custom_repository" + elif key == "publicRepository": suggest = "public_repository" if suggest: @@ -690,15 +716,29 @@ def get(self, key: str, default = None) -> Any: return super().get(key, default) def __init__(__self__, *, + custom_repository: Optional['outputs.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository'] = None, public_repository: Optional[str] = None): """ + :param 'RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs' custom_repository: Settings for a remote repository with a custom uri. + Structure is documented below. :param str public_repository: Address of the remote repository. Default value is `DOCKER_HUB`. Possible values are: `DOCKER_HUB`. """ + if custom_repository is not None: + pulumi.set(__self__, "custom_repository", custom_repository) if public_repository is not None: pulumi.set(__self__, "public_repository", public_repository) + @property + @pulumi.getter(name="customRepository") + def custom_repository(self) -> Optional['outputs.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository']: + """ + Settings for a remote repository with a custom uri. + Structure is documented below. + """ + return pulumi.get(self, "custom_repository") + @property @pulumi.getter(name="publicRepository") def public_repository(self) -> Optional[str]: @@ -710,12 +750,33 @@ def public_repository(self) -> Optional[str]: return pulumi.get(self, "public_repository") +@pulumi.output_type +class RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository(dict): + def __init__(__self__, *, + uri: Optional[str] = None): + """ + :param str uri: Specific uri to the registry, e.g. `"https://pypi.io"` + """ + if uri is not None: + pulumi.set(__self__, "uri", uri) + + @property + @pulumi.getter + def uri(self) -> Optional[str]: + """ + Specific uri to the registry, e.g. `"https://pypi.io"` + """ + return pulumi.get(self, "uri") + + @pulumi.output_type class RepositoryRemoteRepositoryConfigMavenRepository(dict): @staticmethod def __key_warning(key: str): suggest = None - if key == "publicRepository": + if key == "customRepository": + suggest = "custom_repository" + elif key == "publicRepository": suggest = "public_repository" if suggest: @@ -730,15 +791,29 @@ def get(self, key: str, default = None) -> Any: return super().get(key, default) def __init__(__self__, *, + custom_repository: Optional['outputs.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository'] = None, public_repository: Optional[str] = None): """ + :param 'RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs' custom_repository: Settings for a remote repository with a custom uri. + Structure is documented below. :param str public_repository: Address of the remote repository. Default value is `MAVEN_CENTRAL`. Possible values are: `MAVEN_CENTRAL`. """ + if custom_repository is not None: + pulumi.set(__self__, "custom_repository", custom_repository) if public_repository is not None: pulumi.set(__self__, "public_repository", public_repository) + @property + @pulumi.getter(name="customRepository") + def custom_repository(self) -> Optional['outputs.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository']: + """ + Settings for a remote repository with a custom uri. + Structure is documented below. + """ + return pulumi.get(self, "custom_repository") + @property @pulumi.getter(name="publicRepository") def public_repository(self) -> Optional[str]: @@ -750,12 +825,33 @@ def public_repository(self) -> Optional[str]: return pulumi.get(self, "public_repository") +@pulumi.output_type +class RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository(dict): + def __init__(__self__, *, + uri: Optional[str] = None): + """ + :param str uri: Specific uri to the registry, e.g. `"https://pypi.io"` + """ + if uri is not None: + pulumi.set(__self__, "uri", uri) + + @property + @pulumi.getter + def uri(self) -> Optional[str]: + """ + Specific uri to the registry, e.g. `"https://pypi.io"` + """ + return pulumi.get(self, "uri") + + @pulumi.output_type class RepositoryRemoteRepositoryConfigNpmRepository(dict): @staticmethod def __key_warning(key: str): suggest = None - if key == "publicRepository": + if key == "customRepository": + suggest = "custom_repository" + elif key == "publicRepository": suggest = "public_repository" if suggest: @@ -770,15 +866,29 @@ def get(self, key: str, default = None) -> Any: return super().get(key, default) def __init__(__self__, *, + custom_repository: Optional['outputs.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository'] = None, public_repository: Optional[str] = None): """ + :param 'RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs' custom_repository: Settings for a remote repository with a custom uri. + Structure is documented below. :param str public_repository: Address of the remote repository. Default value is `NPMJS`. Possible values are: `NPMJS`. """ + if custom_repository is not None: + pulumi.set(__self__, "custom_repository", custom_repository) if public_repository is not None: pulumi.set(__self__, "public_repository", public_repository) + @property + @pulumi.getter(name="customRepository") + def custom_repository(self) -> Optional['outputs.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository']: + """ + Settings for a remote repository with a custom uri. + Structure is documented below. + """ + return pulumi.get(self, "custom_repository") + @property @pulumi.getter(name="publicRepository") def public_repository(self) -> Optional[str]: @@ -790,12 +900,33 @@ def public_repository(self) -> Optional[str]: return pulumi.get(self, "public_repository") +@pulumi.output_type +class RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository(dict): + def __init__(__self__, *, + uri: Optional[str] = None): + """ + :param str uri: Specific uri to the registry, e.g. `"https://pypi.io"` + """ + if uri is not None: + pulumi.set(__self__, "uri", uri) + + @property + @pulumi.getter + def uri(self) -> Optional[str]: + """ + Specific uri to the registry, e.g. `"https://pypi.io"` + """ + return pulumi.get(self, "uri") + + @pulumi.output_type class RepositoryRemoteRepositoryConfigPythonRepository(dict): @staticmethod def __key_warning(key: str): suggest = None - if key == "publicRepository": + if key == "customRepository": + suggest = "custom_repository" + elif key == "publicRepository": suggest = "public_repository" if suggest: @@ -810,15 +941,29 @@ def get(self, key: str, default = None) -> Any: return super().get(key, default) def __init__(__self__, *, + custom_repository: Optional['outputs.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository'] = None, public_repository: Optional[str] = None): """ + :param 'RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs' custom_repository: Settings for a remote repository with a custom uri. + Structure is documented below. :param str public_repository: Address of the remote repository. Default value is `PYPI`. Possible values are: `PYPI`. """ + if custom_repository is not None: + pulumi.set(__self__, "custom_repository", custom_repository) if public_repository is not None: pulumi.set(__self__, "public_repository", public_repository) + @property + @pulumi.getter(name="customRepository") + def custom_repository(self) -> Optional['outputs.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository']: + """ + Settings for a remote repository with a custom uri. + Structure is documented below. + """ + return pulumi.get(self, "custom_repository") + @property @pulumi.getter(name="publicRepository") def public_repository(self) -> Optional[str]: @@ -830,6 +975,25 @@ def public_repository(self) -> Optional[str]: return pulumi.get(self, "public_repository") +@pulumi.output_type +class RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository(dict): + def __init__(__self__, *, + uri: Optional[str] = None): + """ + :param str uri: Specific uri to the registry, e.g. `"https://pypi.io"` + """ + if uri is not None: + pulumi.set(__self__, "uri", uri) + + @property + @pulumi.getter + def uri(self) -> Optional[str]: + """ + Specific uri to the registry, e.g. `"https://pypi.io"` + """ + return pulumi.get(self, "uri") + + @pulumi.output_type class RepositoryRemoteRepositoryConfigUpstreamCredentials(dict): @staticmethod @@ -1298,6 +1462,7 @@ class GetRepositoryRemoteRepositoryConfigResult(dict): def __init__(__self__, *, apt_repositories: Sequence['outputs.GetRepositoryRemoteRepositoryConfigAptRepositoryResult'], description: str, + disable_upstream_validation: bool, docker_repositories: Sequence['outputs.GetRepositoryRemoteRepositoryConfigDockerRepositoryResult'], maven_repositories: Sequence['outputs.GetRepositoryRemoteRepositoryConfigMavenRepositoryResult'], npm_repositories: Sequence['outputs.GetRepositoryRemoteRepositoryConfigNpmRepositoryResult'], @@ -1307,6 +1472,8 @@ def __init__(__self__, *, """ :param Sequence['GetRepositoryRemoteRepositoryConfigAptRepositoryArgs'] apt_repositories: Specific settings for an Apt remote repository. :param str description: The description of the remote source. + :param bool disable_upstream_validation: If true, the remote repository upstream and upstream credentials will + not be validated. :param Sequence['GetRepositoryRemoteRepositoryConfigDockerRepositoryArgs'] docker_repositories: Specific settings for a Docker remote repository. :param Sequence['GetRepositoryRemoteRepositoryConfigMavenRepositoryArgs'] maven_repositories: Specific settings for a Maven remote repository. :param Sequence['GetRepositoryRemoteRepositoryConfigNpmRepositoryArgs'] npm_repositories: Specific settings for an Npm remote repository. @@ -1316,6 +1483,7 @@ def __init__(__self__, *, """ pulumi.set(__self__, "apt_repositories", apt_repositories) pulumi.set(__self__, "description", description) + pulumi.set(__self__, "disable_upstream_validation", disable_upstream_validation) pulumi.set(__self__, "docker_repositories", docker_repositories) pulumi.set(__self__, "maven_repositories", maven_repositories) pulumi.set(__self__, "npm_repositories", npm_repositories) @@ -1339,6 +1507,15 @@ def description(self) -> str: """ return pulumi.get(self, "description") + @property + @pulumi.getter(name="disableUpstreamValidation") + def disable_upstream_validation(self) -> bool: + """ + If true, the remote repository upstream and upstream credentials will + not be validated. + """ + return pulumi.get(self, "disable_upstream_validation") + @property @pulumi.getter(name="dockerRepositories") def docker_repositories(self) -> Sequence['outputs.GetRepositoryRemoteRepositoryConfigDockerRepositoryResult']: @@ -1438,12 +1615,23 @@ def repository_path(self) -> str: @pulumi.output_type class GetRepositoryRemoteRepositoryConfigDockerRepositoryResult(dict): def __init__(__self__, *, + custom_repositories: Sequence['outputs.GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryResult'], public_repository: str): """ + :param Sequence['GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs'] custom_repositories: Settings for a remote repository with a custom uri. :param str public_repository: Address of the remote repository. Default value: "DOCKER_HUB" Possible values: ["DOCKER_HUB"] """ + pulumi.set(__self__, "custom_repositories", custom_repositories) pulumi.set(__self__, "public_repository", public_repository) + @property + @pulumi.getter(name="customRepositories") + def custom_repositories(self) -> Sequence['outputs.GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryResult']: + """ + Settings for a remote repository with a custom uri. + """ + return pulumi.get(self, "custom_repositories") + @property @pulumi.getter(name="publicRepository") def public_repository(self) -> str: @@ -1453,15 +1641,44 @@ def public_repository(self) -> str: return pulumi.get(self, "public_repository") +@pulumi.output_type +class GetRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryResult(dict): + def __init__(__self__, *, + uri: str): + """ + :param str uri: Specific uri to the registry, e.g. '"https://registry-1.docker.io"' + """ + pulumi.set(__self__, "uri", uri) + + @property + @pulumi.getter + def uri(self) -> str: + """ + Specific uri to the registry, e.g. '"https://registry-1.docker.io"' + """ + return pulumi.get(self, "uri") + + @pulumi.output_type class GetRepositoryRemoteRepositoryConfigMavenRepositoryResult(dict): def __init__(__self__, *, + custom_repositories: Sequence['outputs.GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryResult'], public_repository: str): """ + :param Sequence['GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs'] custom_repositories: Settings for a remote repository with a custom uri. :param str public_repository: Address of the remote repository. Default value: "MAVEN_CENTRAL" Possible values: ["MAVEN_CENTRAL"] """ + pulumi.set(__self__, "custom_repositories", custom_repositories) pulumi.set(__self__, "public_repository", public_repository) + @property + @pulumi.getter(name="customRepositories") + def custom_repositories(self) -> Sequence['outputs.GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryResult']: + """ + Settings for a remote repository with a custom uri. + """ + return pulumi.get(self, "custom_repositories") + @property @pulumi.getter(name="publicRepository") def public_repository(self) -> str: @@ -1471,15 +1688,44 @@ def public_repository(self) -> str: return pulumi.get(self, "public_repository") +@pulumi.output_type +class GetRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryResult(dict): + def __init__(__self__, *, + uri: str): + """ + :param str uri: Specific uri to the registry, e.g. '"https://repo.maven.apache.org/maven2"' + """ + pulumi.set(__self__, "uri", uri) + + @property + @pulumi.getter + def uri(self) -> str: + """ + Specific uri to the registry, e.g. '"https://repo.maven.apache.org/maven2"' + """ + return pulumi.get(self, "uri") + + @pulumi.output_type class GetRepositoryRemoteRepositoryConfigNpmRepositoryResult(dict): def __init__(__self__, *, + custom_repositories: Sequence['outputs.GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryResult'], public_repository: str): """ + :param Sequence['GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs'] custom_repositories: Settings for a remote repository with a custom uri. :param str public_repository: Address of the remote repository. Default value: "NPMJS" Possible values: ["NPMJS"] """ + pulumi.set(__self__, "custom_repositories", custom_repositories) pulumi.set(__self__, "public_repository", public_repository) + @property + @pulumi.getter(name="customRepositories") + def custom_repositories(self) -> Sequence['outputs.GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryResult']: + """ + Settings for a remote repository with a custom uri. + """ + return pulumi.get(self, "custom_repositories") + @property @pulumi.getter(name="publicRepository") def public_repository(self) -> str: @@ -1489,15 +1735,44 @@ def public_repository(self) -> str: return pulumi.get(self, "public_repository") +@pulumi.output_type +class GetRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryResult(dict): + def __init__(__self__, *, + uri: str): + """ + :param str uri: Specific uri to the registry, e.g. '"https://registry.npmjs.org"' + """ + pulumi.set(__self__, "uri", uri) + + @property + @pulumi.getter + def uri(self) -> str: + """ + Specific uri to the registry, e.g. '"https://registry.npmjs.org"' + """ + return pulumi.get(self, "uri") + + @pulumi.output_type class GetRepositoryRemoteRepositoryConfigPythonRepositoryResult(dict): def __init__(__self__, *, + custom_repositories: Sequence['outputs.GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryResult'], public_repository: str): """ + :param Sequence['GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs'] custom_repositories: Settings for a remote repository with a custom uri. :param str public_repository: Address of the remote repository. Default value: "PYPI" Possible values: ["PYPI"] """ + pulumi.set(__self__, "custom_repositories", custom_repositories) pulumi.set(__self__, "public_repository", public_repository) + @property + @pulumi.getter(name="customRepositories") + def custom_repositories(self) -> Sequence['outputs.GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryResult']: + """ + Settings for a remote repository with a custom uri. + """ + return pulumi.get(self, "custom_repositories") + @property @pulumi.getter(name="publicRepository") def public_repository(self) -> str: @@ -1507,6 +1782,24 @@ def public_repository(self) -> str: return pulumi.get(self, "public_repository") +@pulumi.output_type +class GetRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryResult(dict): + def __init__(__self__, *, + uri: str): + """ + :param str uri: Specific uri to the registry, e.g. '"https://pypi.io"' + """ + pulumi.set(__self__, "uri", uri) + + @property + @pulumi.getter + def uri(self) -> str: + """ + Specific uri to the registry, e.g. '"https://pypi.io"' + """ + return pulumi.get(self, "uri") + + @pulumi.output_type class GetRepositoryRemoteRepositoryConfigUpstreamCredentialResult(dict): def __init__(__self__, *, diff --git a/sdk/python/pulumi_gcp/artifactregistry/repository.py b/sdk/python/pulumi_gcp/artifactregistry/repository.py index 9d682837dd..5dda0ede8d 100644 --- a/sdk/python/pulumi_gcp/artifactregistry/repository.py +++ b/sdk/python/pulumi_gcp/artifactregistry/repository.py @@ -910,40 +910,205 @@ def __init__(__self__, ), ]) ``` - ### Artifact Registry Repository Remote Custom + ### Artifact Registry Repository Remote Dockerhub Auth ```python import pulumi import pulumi_gcp as gcp project = gcp.organizations.get_project() - example_custom_remote_secret = gcp.secretmanager.Secret("example-custom-remote-secret", + example_remote_secret = gcp.secretmanager.Secret("example-remote-secret", secret_id="example-secret", replication=gcp.secretmanager.SecretReplicationArgs( auto=gcp.secretmanager.SecretReplicationAutoArgs(), )) - example_custom_remote_secret_version = gcp.secretmanager.SecretVersion("example-custom-remote-secret_version", - secret=example_custom_remote_secret.id, + example_remote_secret_version = gcp.secretmanager.SecretVersion("example-remote-secret_version", + secret=example_remote_secret.id, secret_data="remote-password") secret_access = gcp.secretmanager.SecretIamMember("secret-access", - secret_id=example_custom_remote_secret.id, + secret_id=example_remote_secret.id, role="roles/secretmanager.secretAccessor", member=f"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com") my_repo = gcp.artifactregistry.Repository("my-repo", location="us-central1", - repository_id="example-custom-remote", - description="example remote docker repository with credentials", + repository_id="example-dockerhub-remote", + description="example remote dockerhub repository with credentials", format="DOCKER", mode="REMOTE_REPOSITORY", remote_repository_config=gcp.artifactregistry.RepositoryRemoteRepositoryConfigArgs( description="docker hub with custom credentials", + disable_upstream_validation=True, docker_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs( public_repository="DOCKER_HUB", ), upstream_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs( username_password_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs( username="remote-username", - password_secret_version=example_custom_remote_secret_version.name, + password_secret_version=example_remote_secret_version.name, + ), + ), + )) + ``` + ### Artifact Registry Repository Remote Docker Custom With Auth + + ```python + import pulumi + import pulumi_gcp as gcp + + project = gcp.organizations.get_project() + example_remote_secret = gcp.secretmanager.Secret("example-remote-secret", + secret_id="example-secret", + replication=gcp.secretmanager.SecretReplicationArgs( + auto=gcp.secretmanager.SecretReplicationAutoArgs(), + )) + example_remote_secret_version = gcp.secretmanager.SecretVersion("example-remote-secret_version", + secret=example_remote_secret.id, + secret_data="remote-password") + secret_access = gcp.secretmanager.SecretIamMember("secret-access", + secret_id=example_remote_secret.id, + role="roles/secretmanager.secretAccessor", + member=f"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com") + my_repo = gcp.artifactregistry.Repository("my-repo", + location="us-central1", + repository_id="example-docker-custom-remote", + description="example remote custom docker repository with credentials", + format="DOCKER", + mode="REMOTE_REPOSITORY", + remote_repository_config=gcp.artifactregistry.RepositoryRemoteRepositoryConfigArgs( + description="custom docker remote with credentials", + disable_upstream_validation=True, + docker_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs( + custom_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs( + uri="https://registry-1.docker.io", + ), + ), + upstream_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs( + username_password_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs( + username="remote-username", + password_secret_version=example_remote_secret_version.name, + ), + ), + )) + ``` + ### Artifact Registry Repository Remote Maven Custom With Auth + + ```python + import pulumi + import pulumi_gcp as gcp + + project = gcp.organizations.get_project() + example_remote_secret = gcp.secretmanager.Secret("example-remote-secret", + secret_id="example-secret", + replication=gcp.secretmanager.SecretReplicationArgs( + auto=gcp.secretmanager.SecretReplicationAutoArgs(), + )) + example_remote_secret_version = gcp.secretmanager.SecretVersion("example-remote-secret_version", + secret=example_remote_secret.id, + secret_data="remote-password") + secret_access = gcp.secretmanager.SecretIamMember("secret-access", + secret_id=example_remote_secret.id, + role="roles/secretmanager.secretAccessor", + member=f"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com") + my_repo = gcp.artifactregistry.Repository("my-repo", + location="us-central1", + repository_id="example-maven-custom-remote", + description="example remote custom maven repository with credentials", + format="MAVEN", + mode="REMOTE_REPOSITORY", + remote_repository_config=gcp.artifactregistry.RepositoryRemoteRepositoryConfigArgs( + description="custom maven remote with credentials", + disable_upstream_validation=True, + maven_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigMavenRepositoryArgs( + custom_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs( + uri="https://my.maven.registry", + ), + ), + upstream_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs( + username_password_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs( + username="remote-username", + password_secret_version=example_remote_secret_version.name, + ), + ), + )) + ``` + ### Artifact Registry Repository Remote Npm Custom With Auth + + ```python + import pulumi + import pulumi_gcp as gcp + + project = gcp.organizations.get_project() + example_remote_secret = gcp.secretmanager.Secret("example-remote-secret", + secret_id="example-secret", + replication=gcp.secretmanager.SecretReplicationArgs( + auto=gcp.secretmanager.SecretReplicationAutoArgs(), + )) + example_remote_secret_version = gcp.secretmanager.SecretVersion("example-remote-secret_version", + secret=example_remote_secret.id, + secret_data="remote-password") + secret_access = gcp.secretmanager.SecretIamMember("secret-access", + secret_id=example_remote_secret.id, + role="roles/secretmanager.secretAccessor", + member=f"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com") + my_repo = gcp.artifactregistry.Repository("my-repo", + location="us-central1", + repository_id="example-npm-custom-remote", + description="example remote custom npm repository with credentials", + format="NPM", + mode="REMOTE_REPOSITORY", + remote_repository_config=gcp.artifactregistry.RepositoryRemoteRepositoryConfigArgs( + description="custom npm with credentials", + disable_upstream_validation=True, + npm_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigNpmRepositoryArgs( + custom_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs( + uri="https://my.npm.registry", + ), + ), + upstream_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs( + username_password_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs( + username="remote-username", + password_secret_version=example_remote_secret_version.name, + ), + ), + )) + ``` + ### Artifact Registry Repository Remote Python Custom With Auth + + ```python + import pulumi + import pulumi_gcp as gcp + + project = gcp.organizations.get_project() + example_remote_secret = gcp.secretmanager.Secret("example-remote-secret", + secret_id="example-secret", + replication=gcp.secretmanager.SecretReplicationArgs( + auto=gcp.secretmanager.SecretReplicationAutoArgs(), + )) + example_remote_secret_version = gcp.secretmanager.SecretVersion("example-remote-secret_version", + secret=example_remote_secret.id, + secret_data="remote-password") + secret_access = gcp.secretmanager.SecretIamMember("secret-access", + secret_id=example_remote_secret.id, + role="roles/secretmanager.secretAccessor", + member=f"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com") + my_repo = gcp.artifactregistry.Repository("my-repo", + location="us-central1", + repository_id="example-python-custom-remote", + description="example remote custom python repository with credentials", + format="PYTHON", + mode="REMOTE_REPOSITORY", + remote_repository_config=gcp.artifactregistry.RepositoryRemoteRepositoryConfigArgs( + description="custom npm with credentials", + disable_upstream_validation=True, + python_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigPythonRepositoryArgs( + custom_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs( + uri="https://my.python.registry", + ), + ), + upstream_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs( + username_password_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs( + username="remote-username", + password_secret_version=example_remote_secret_version.name, ), ), )) @@ -1240,40 +1405,205 @@ def __init__(__self__, ), ]) ``` - ### Artifact Registry Repository Remote Custom + ### Artifact Registry Repository Remote Dockerhub Auth ```python import pulumi import pulumi_gcp as gcp project = gcp.organizations.get_project() - example_custom_remote_secret = gcp.secretmanager.Secret("example-custom-remote-secret", + example_remote_secret = gcp.secretmanager.Secret("example-remote-secret", secret_id="example-secret", replication=gcp.secretmanager.SecretReplicationArgs( auto=gcp.secretmanager.SecretReplicationAutoArgs(), )) - example_custom_remote_secret_version = gcp.secretmanager.SecretVersion("example-custom-remote-secret_version", - secret=example_custom_remote_secret.id, + example_remote_secret_version = gcp.secretmanager.SecretVersion("example-remote-secret_version", + secret=example_remote_secret.id, secret_data="remote-password") secret_access = gcp.secretmanager.SecretIamMember("secret-access", - secret_id=example_custom_remote_secret.id, + secret_id=example_remote_secret.id, role="roles/secretmanager.secretAccessor", member=f"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com") my_repo = gcp.artifactregistry.Repository("my-repo", location="us-central1", - repository_id="example-custom-remote", - description="example remote docker repository with credentials", + repository_id="example-dockerhub-remote", + description="example remote dockerhub repository with credentials", format="DOCKER", mode="REMOTE_REPOSITORY", remote_repository_config=gcp.artifactregistry.RepositoryRemoteRepositoryConfigArgs( description="docker hub with custom credentials", + disable_upstream_validation=True, docker_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs( public_repository="DOCKER_HUB", ), upstream_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs( username_password_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs( username="remote-username", - password_secret_version=example_custom_remote_secret_version.name, + password_secret_version=example_remote_secret_version.name, + ), + ), + )) + ``` + ### Artifact Registry Repository Remote Docker Custom With Auth + + ```python + import pulumi + import pulumi_gcp as gcp + + project = gcp.organizations.get_project() + example_remote_secret = gcp.secretmanager.Secret("example-remote-secret", + secret_id="example-secret", + replication=gcp.secretmanager.SecretReplicationArgs( + auto=gcp.secretmanager.SecretReplicationAutoArgs(), + )) + example_remote_secret_version = gcp.secretmanager.SecretVersion("example-remote-secret_version", + secret=example_remote_secret.id, + secret_data="remote-password") + secret_access = gcp.secretmanager.SecretIamMember("secret-access", + secret_id=example_remote_secret.id, + role="roles/secretmanager.secretAccessor", + member=f"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com") + my_repo = gcp.artifactregistry.Repository("my-repo", + location="us-central1", + repository_id="example-docker-custom-remote", + description="example remote custom docker repository with credentials", + format="DOCKER", + mode="REMOTE_REPOSITORY", + remote_repository_config=gcp.artifactregistry.RepositoryRemoteRepositoryConfigArgs( + description="custom docker remote with credentials", + disable_upstream_validation=True, + docker_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs( + custom_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs( + uri="https://registry-1.docker.io", + ), + ), + upstream_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs( + username_password_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs( + username="remote-username", + password_secret_version=example_remote_secret_version.name, + ), + ), + )) + ``` + ### Artifact Registry Repository Remote Maven Custom With Auth + + ```python + import pulumi + import pulumi_gcp as gcp + + project = gcp.organizations.get_project() + example_remote_secret = gcp.secretmanager.Secret("example-remote-secret", + secret_id="example-secret", + replication=gcp.secretmanager.SecretReplicationArgs( + auto=gcp.secretmanager.SecretReplicationAutoArgs(), + )) + example_remote_secret_version = gcp.secretmanager.SecretVersion("example-remote-secret_version", + secret=example_remote_secret.id, + secret_data="remote-password") + secret_access = gcp.secretmanager.SecretIamMember("secret-access", + secret_id=example_remote_secret.id, + role="roles/secretmanager.secretAccessor", + member=f"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com") + my_repo = gcp.artifactregistry.Repository("my-repo", + location="us-central1", + repository_id="example-maven-custom-remote", + description="example remote custom maven repository with credentials", + format="MAVEN", + mode="REMOTE_REPOSITORY", + remote_repository_config=gcp.artifactregistry.RepositoryRemoteRepositoryConfigArgs( + description="custom maven remote with credentials", + disable_upstream_validation=True, + maven_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigMavenRepositoryArgs( + custom_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs( + uri="https://my.maven.registry", + ), + ), + upstream_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs( + username_password_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs( + username="remote-username", + password_secret_version=example_remote_secret_version.name, + ), + ), + )) + ``` + ### Artifact Registry Repository Remote Npm Custom With Auth + + ```python + import pulumi + import pulumi_gcp as gcp + + project = gcp.organizations.get_project() + example_remote_secret = gcp.secretmanager.Secret("example-remote-secret", + secret_id="example-secret", + replication=gcp.secretmanager.SecretReplicationArgs( + auto=gcp.secretmanager.SecretReplicationAutoArgs(), + )) + example_remote_secret_version = gcp.secretmanager.SecretVersion("example-remote-secret_version", + secret=example_remote_secret.id, + secret_data="remote-password") + secret_access = gcp.secretmanager.SecretIamMember("secret-access", + secret_id=example_remote_secret.id, + role="roles/secretmanager.secretAccessor", + member=f"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com") + my_repo = gcp.artifactregistry.Repository("my-repo", + location="us-central1", + repository_id="example-npm-custom-remote", + description="example remote custom npm repository with credentials", + format="NPM", + mode="REMOTE_REPOSITORY", + remote_repository_config=gcp.artifactregistry.RepositoryRemoteRepositoryConfigArgs( + description="custom npm with credentials", + disable_upstream_validation=True, + npm_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigNpmRepositoryArgs( + custom_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs( + uri="https://my.npm.registry", + ), + ), + upstream_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs( + username_password_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs( + username="remote-username", + password_secret_version=example_remote_secret_version.name, + ), + ), + )) + ``` + ### Artifact Registry Repository Remote Python Custom With Auth + + ```python + import pulumi + import pulumi_gcp as gcp + + project = gcp.organizations.get_project() + example_remote_secret = gcp.secretmanager.Secret("example-remote-secret", + secret_id="example-secret", + replication=gcp.secretmanager.SecretReplicationArgs( + auto=gcp.secretmanager.SecretReplicationAutoArgs(), + )) + example_remote_secret_version = gcp.secretmanager.SecretVersion("example-remote-secret_version", + secret=example_remote_secret.id, + secret_data="remote-password") + secret_access = gcp.secretmanager.SecretIamMember("secret-access", + secret_id=example_remote_secret.id, + role="roles/secretmanager.secretAccessor", + member=f"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com") + my_repo = gcp.artifactregistry.Repository("my-repo", + location="us-central1", + repository_id="example-python-custom-remote", + description="example remote custom python repository with credentials", + format="PYTHON", + mode="REMOTE_REPOSITORY", + remote_repository_config=gcp.artifactregistry.RepositoryRemoteRepositoryConfigArgs( + description="custom npm with credentials", + disable_upstream_validation=True, + python_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigPythonRepositoryArgs( + custom_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs( + uri="https://my.python.registry", + ), + ), + upstream_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs( + username_password_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs( + username="remote-username", + password_secret_version=example_remote_secret_version.name, ), ), )) diff --git a/sdk/python/pulumi_gcp/bigquery/table.py b/sdk/python/pulumi_gcp/bigquery/table.py index 519cf191cb..792ba38598 100644 --- a/sdk/python/pulumi_gcp/bigquery/table.py +++ b/sdk/python/pulumi_gcp/bigquery/table.py @@ -31,6 +31,7 @@ def __init__(__self__, *, project: Optional[pulumi.Input[str]] = None, range_partitioning: Optional[pulumi.Input['TableRangePartitioningArgs']] = None, require_partition_filter: Optional[pulumi.Input[bool]] = None, + resource_tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, schema: Optional[pulumi.Input[str]] = None, table_constraints: Optional[pulumi.Input['TableTableConstraintsArgs']] = None, table_replication_info: Optional[pulumi.Input['TableTableReplicationInfoArgs']] = None, @@ -77,6 +78,9 @@ def __init__(__self__, *, :param pulumi.Input[bool] require_partition_filter: If set to true, queries over this table require a partition filter that can be used for partition elimination to be specified. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] resource_tags: The tags attached to this table. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for + example "123456789012/environment" where 123456789012 is the ID of the parent organization or project resource for this + tag key. Tag value is expected to be the short name, for example "Production". :param pulumi.Input[str] schema: A JSON schema for the table. :param pulumi.Input['TableTableConstraintsArgs'] table_constraints: Defines the primary key and foreign keys. Structure is documented below. @@ -114,6 +118,8 @@ def __init__(__self__, *, pulumi.set(__self__, "range_partitioning", range_partitioning) if require_partition_filter is not None: pulumi.set(__self__, "require_partition_filter", require_partition_filter) + if resource_tags is not None: + pulumi.set(__self__, "resource_tags", resource_tags) if schema is not None: pulumi.set(__self__, "schema", schema) if table_constraints is not None: @@ -329,6 +335,20 @@ def require_partition_filter(self) -> Optional[pulumi.Input[bool]]: def require_partition_filter(self, value: Optional[pulumi.Input[bool]]): pulumi.set(self, "require_partition_filter", value) + @property + @pulumi.getter(name="resourceTags") + def resource_tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + The tags attached to this table. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for + example "123456789012/environment" where 123456789012 is the ID of the parent organization or project resource for this + tag key. Tag value is expected to be the short name, for example "Production". + """ + return pulumi.get(self, "resource_tags") + + @resource_tags.setter + def resource_tags(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "resource_tags", value) + @property @pulumi.getter def schema(self) -> Optional[pulumi.Input[str]]: @@ -419,6 +439,7 @@ def __init__(__self__, *, pulumi_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, range_partitioning: Optional[pulumi.Input['TableRangePartitioningArgs']] = None, require_partition_filter: Optional[pulumi.Input[bool]] = None, + resource_tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, schema: Optional[pulumi.Input[str]] = None, self_link: Optional[pulumi.Input[str]] = None, table_constraints: Optional[pulumi.Input['TableTableConstraintsArgs']] = None, @@ -490,6 +511,9 @@ def __init__(__self__, *, :param pulumi.Input[bool] require_partition_filter: If set to true, queries over this table require a partition filter that can be used for partition elimination to be specified. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] resource_tags: The tags attached to this table. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for + example "123456789012/environment" where 123456789012 is the ID of the parent organization or project resource for this + tag key. Tag value is expected to be the short name, for example "Production". :param pulumi.Input[str] schema: A JSON schema for the table. :param pulumi.Input[str] self_link: The URI of the created resource. :param pulumi.Input['TableTableConstraintsArgs'] table_constraints: Defines the primary key and foreign keys. @@ -549,6 +573,8 @@ def __init__(__self__, *, pulumi.set(__self__, "range_partitioning", range_partitioning) if require_partition_filter is not None: pulumi.set(__self__, "require_partition_filter", require_partition_filter) + if resource_tags is not None: + pulumi.set(__self__, "resource_tags", resource_tags) if schema is not None: pulumi.set(__self__, "schema", schema) if self_link is not None: @@ -880,6 +906,20 @@ def require_partition_filter(self) -> Optional[pulumi.Input[bool]]: def require_partition_filter(self, value: Optional[pulumi.Input[bool]]): pulumi.set(self, "require_partition_filter", value) + @property + @pulumi.getter(name="resourceTags") + def resource_tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + The tags attached to this table. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for + example "123456789012/environment" where 123456789012 is the ID of the parent organization or project resource for this + tag key. Tag value is expected to be the short name, for example "Production". + """ + return pulumi.get(self, "resource_tags") + + @resource_tags.setter + def resource_tags(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "resource_tags", value) + @property @pulumi.getter def schema(self) -> Optional[pulumi.Input[str]]: @@ -1000,6 +1040,7 @@ def __init__(__self__, project: Optional[pulumi.Input[str]] = None, range_partitioning: Optional[pulumi.Input[pulumi.InputType['TableRangePartitioningArgs']]] = None, require_partition_filter: Optional[pulumi.Input[bool]] = None, + resource_tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, schema: Optional[pulumi.Input[str]] = None, table_constraints: Optional[pulumi.Input[pulumi.InputType['TableTableConstraintsArgs']]] = None, table_id: Optional[pulumi.Input[str]] = None, @@ -1131,6 +1172,9 @@ def __init__(__self__, :param pulumi.Input[bool] require_partition_filter: If set to true, queries over this table require a partition filter that can be used for partition elimination to be specified. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] resource_tags: The tags attached to this table. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for + example "123456789012/environment" where 123456789012 is the ID of the parent organization or project resource for this + tag key. Tag value is expected to be the short name, for example "Production". :param pulumi.Input[str] schema: A JSON schema for the table. :param pulumi.Input[pulumi.InputType['TableTableConstraintsArgs']] table_constraints: Defines the primary key and foreign keys. Structure is documented below. @@ -1262,6 +1306,7 @@ def _internal_init(__self__, project: Optional[pulumi.Input[str]] = None, range_partitioning: Optional[pulumi.Input[pulumi.InputType['TableRangePartitioningArgs']]] = None, require_partition_filter: Optional[pulumi.Input[bool]] = None, + resource_tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, schema: Optional[pulumi.Input[str]] = None, table_constraints: Optional[pulumi.Input[pulumi.InputType['TableTableConstraintsArgs']]] = None, table_id: Optional[pulumi.Input[str]] = None, @@ -1293,6 +1338,7 @@ def _internal_init(__self__, __props__.__dict__["project"] = project __props__.__dict__["range_partitioning"] = range_partitioning __props__.__dict__["require_partition_filter"] = require_partition_filter + __props__.__dict__["resource_tags"] = resource_tags __props__.__dict__["schema"] = schema __props__.__dict__["table_constraints"] = table_constraints if table_id is None and not opts.urn: @@ -1347,6 +1393,7 @@ def get(resource_name: str, pulumi_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, range_partitioning: Optional[pulumi.Input[pulumi.InputType['TableRangePartitioningArgs']]] = None, require_partition_filter: Optional[pulumi.Input[bool]] = None, + resource_tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, schema: Optional[pulumi.Input[str]] = None, self_link: Optional[pulumi.Input[str]] = None, table_constraints: Optional[pulumi.Input[pulumi.InputType['TableTableConstraintsArgs']]] = None, @@ -1423,6 +1470,9 @@ def get(resource_name: str, :param pulumi.Input[bool] require_partition_filter: If set to true, queries over this table require a partition filter that can be used for partition elimination to be specified. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] resource_tags: The tags attached to this table. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for + example "123456789012/environment" where 123456789012 is the ID of the parent organization or project resource for this + tag key. Tag value is expected to be the short name, for example "Production". :param pulumi.Input[str] schema: A JSON schema for the table. :param pulumi.Input[str] self_link: The URI of the created resource. :param pulumi.Input[pulumi.InputType['TableTableConstraintsArgs']] table_constraints: Defines the primary key and foreign keys. @@ -1463,6 +1513,7 @@ def get(resource_name: str, __props__.__dict__["pulumi_labels"] = pulumi_labels __props__.__dict__["range_partitioning"] = range_partitioning __props__.__dict__["require_partition_filter"] = require_partition_filter + __props__.__dict__["resource_tags"] = resource_tags __props__.__dict__["schema"] = schema __props__.__dict__["self_link"] = self_link __props__.__dict__["table_constraints"] = table_constraints @@ -1695,6 +1746,16 @@ def require_partition_filter(self) -> pulumi.Output[Optional[bool]]: """ return pulumi.get(self, "require_partition_filter") + @property + @pulumi.getter(name="resourceTags") + def resource_tags(self) -> pulumi.Output[Optional[Mapping[str, str]]]: + """ + The tags attached to this table. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for + example "123456789012/environment" where 123456789012 is the ID of the parent organization or project resource for this + tag key. Tag value is expected to be the short name, for example "Production". + """ + return pulumi.get(self, "resource_tags") + @property @pulumi.getter def schema(self) -> pulumi.Output[str]: diff --git a/sdk/python/pulumi_gcp/billing/budget.py b/sdk/python/pulumi_gcp/billing/budget.py index 3de08f2cf7..5fecf1245b 100644 --- a/sdk/python/pulumi_gcp/billing/budget.py +++ b/sdk/python/pulumi_gcp/billing/budget.py @@ -21,6 +21,7 @@ def __init__(__self__, *, all_updates_rule: Optional[pulumi.Input['BudgetAllUpdatesRuleArgs']] = None, budget_filter: Optional[pulumi.Input['BudgetBudgetFilterArgs']] = None, display_name: Optional[pulumi.Input[str]] = None, + ownership_scope: Optional[pulumi.Input[str]] = None, threshold_rules: Optional[pulumi.Input[Sequence[pulumi.Input['BudgetThresholdRuleArgs']]]] = None): """ The set of arguments for constructing a Budget resource. @@ -31,6 +32,8 @@ def __init__(__self__, *, using threshold rules. :param pulumi.Input['BudgetBudgetFilterArgs'] budget_filter: Filters that define which resources are used to compute the actual spend against the budget. :param pulumi.Input[str] display_name: User data for display name in UI. Must be <= 60 chars. + :param pulumi.Input[str] ownership_scope: The ownership scope of the budget. The ownership scope and users' IAM permissions determine who has full access to the + budget's data. Possible values: ["OWNERSHIP_SCOPE_UNSPECIFIED", "ALL_USERS", "BILLING_ACCOUNT"] :param pulumi.Input[Sequence[pulumi.Input['BudgetThresholdRuleArgs']]] threshold_rules: Rules that trigger alerts (notifications of thresholds being crossed) when spend exceeds the specified percentages of the budget. """ @@ -42,6 +45,8 @@ def __init__(__self__, *, pulumi.set(__self__, "budget_filter", budget_filter) if display_name is not None: pulumi.set(__self__, "display_name", display_name) + if ownership_scope is not None: + pulumi.set(__self__, "ownership_scope", ownership_scope) if threshold_rules is not None: pulumi.set(__self__, "threshold_rules", threshold_rules) @@ -107,6 +112,19 @@ def display_name(self) -> Optional[pulumi.Input[str]]: def display_name(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "display_name", value) + @property + @pulumi.getter(name="ownershipScope") + def ownership_scope(self) -> Optional[pulumi.Input[str]]: + """ + The ownership scope of the budget. The ownership scope and users' IAM permissions determine who has full access to the + budget's data. Possible values: ["OWNERSHIP_SCOPE_UNSPECIFIED", "ALL_USERS", "BILLING_ACCOUNT"] + """ + return pulumi.get(self, "ownership_scope") + + @ownership_scope.setter + def ownership_scope(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "ownership_scope", value) + @property @pulumi.getter(name="thresholdRules") def threshold_rules(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['BudgetThresholdRuleArgs']]]]: @@ -130,6 +148,7 @@ def __init__(__self__, *, budget_filter: Optional[pulumi.Input['BudgetBudgetFilterArgs']] = None, display_name: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, + ownership_scope: Optional[pulumi.Input[str]] = None, threshold_rules: Optional[pulumi.Input[Sequence[pulumi.Input['BudgetThresholdRuleArgs']]]] = None): """ Input properties used for looking up and filtering Budget resources. @@ -143,6 +162,8 @@ def __init__(__self__, *, :param pulumi.Input[str] name: Resource name of the budget. The resource name implies the scope of a budget. Values are of the form billingAccounts/{billingAccountId}/budgets/{budgetId}. + :param pulumi.Input[str] ownership_scope: The ownership scope of the budget. The ownership scope and users' IAM permissions determine who has full access to the + budget's data. Possible values: ["OWNERSHIP_SCOPE_UNSPECIFIED", "ALL_USERS", "BILLING_ACCOUNT"] :param pulumi.Input[Sequence[pulumi.Input['BudgetThresholdRuleArgs']]] threshold_rules: Rules that trigger alerts (notifications of thresholds being crossed) when spend exceeds the specified percentages of the budget. """ @@ -158,6 +179,8 @@ def __init__(__self__, *, pulumi.set(__self__, "display_name", display_name) if name is not None: pulumi.set(__self__, "name", name) + if ownership_scope is not None: + pulumi.set(__self__, "ownership_scope", ownership_scope) if threshold_rules is not None: pulumi.set(__self__, "threshold_rules", threshold_rules) @@ -237,6 +260,19 @@ def name(self) -> Optional[pulumi.Input[str]]: def name(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "name", value) + @property + @pulumi.getter(name="ownershipScope") + def ownership_scope(self) -> Optional[pulumi.Input[str]]: + """ + The ownership scope of the budget. The ownership scope and users' IAM permissions determine who has full access to the + budget's data. Possible values: ["OWNERSHIP_SCOPE_UNSPECIFIED", "ALL_USERS", "BILLING_ACCOUNT"] + """ + return pulumi.get(self, "ownership_scope") + + @ownership_scope.setter + def ownership_scope(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "ownership_scope", value) + @property @pulumi.getter(name="thresholdRules") def threshold_rules(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['BudgetThresholdRuleArgs']]]]: @@ -261,6 +297,7 @@ def __init__(__self__, billing_account: Optional[pulumi.Input[str]] = None, budget_filter: Optional[pulumi.Input[pulumi.InputType['BudgetBudgetFilterArgs']]] = None, display_name: Optional[pulumi.Input[str]] = None, + ownership_scope: Optional[pulumi.Input[str]] = None, threshold_rules: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BudgetThresholdRuleArgs']]]]] = None, __props__=None): """ @@ -475,6 +512,8 @@ def __init__(__self__, :param pulumi.Input[str] billing_account: ID of the billing account to set a budget on. :param pulumi.Input[pulumi.InputType['BudgetBudgetFilterArgs']] budget_filter: Filters that define which resources are used to compute the actual spend against the budget. :param pulumi.Input[str] display_name: User data for display name in UI. Must be <= 60 chars. + :param pulumi.Input[str] ownership_scope: The ownership scope of the budget. The ownership scope and users' IAM permissions determine who has full access to the + budget's data. Possible values: ["OWNERSHIP_SCOPE_UNSPECIFIED", "ALL_USERS", "BILLING_ACCOUNT"] :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BudgetThresholdRuleArgs']]]] threshold_rules: Rules that trigger alerts (notifications of thresholds being crossed) when spend exceeds the specified percentages of the budget. """ @@ -707,6 +746,7 @@ def _internal_init(__self__, billing_account: Optional[pulumi.Input[str]] = None, budget_filter: Optional[pulumi.Input[pulumi.InputType['BudgetBudgetFilterArgs']]] = None, display_name: Optional[pulumi.Input[str]] = None, + ownership_scope: Optional[pulumi.Input[str]] = None, threshold_rules: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BudgetThresholdRuleArgs']]]]] = None, __props__=None): opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) @@ -726,6 +766,7 @@ def _internal_init(__self__, __props__.__dict__["billing_account"] = billing_account __props__.__dict__["budget_filter"] = budget_filter __props__.__dict__["display_name"] = display_name + __props__.__dict__["ownership_scope"] = ownership_scope __props__.__dict__["threshold_rules"] = threshold_rules __props__.__dict__["name"] = None super(Budget, __self__).__init__( @@ -744,6 +785,7 @@ def get(resource_name: str, budget_filter: Optional[pulumi.Input[pulumi.InputType['BudgetBudgetFilterArgs']]] = None, display_name: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, + ownership_scope: Optional[pulumi.Input[str]] = None, threshold_rules: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BudgetThresholdRuleArgs']]]]] = None) -> 'Budget': """ Get an existing Budget resource's state with the given name, id, and optional extra @@ -762,6 +804,8 @@ def get(resource_name: str, :param pulumi.Input[str] name: Resource name of the budget. The resource name implies the scope of a budget. Values are of the form billingAccounts/{billingAccountId}/budgets/{budgetId}. + :param pulumi.Input[str] ownership_scope: The ownership scope of the budget. The ownership scope and users' IAM permissions determine who has full access to the + budget's data. Possible values: ["OWNERSHIP_SCOPE_UNSPECIFIED", "ALL_USERS", "BILLING_ACCOUNT"] :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BudgetThresholdRuleArgs']]]] threshold_rules: Rules that trigger alerts (notifications of thresholds being crossed) when spend exceeds the specified percentages of the budget. """ @@ -775,6 +819,7 @@ def get(resource_name: str, __props__.__dict__["budget_filter"] = budget_filter __props__.__dict__["display_name"] = display_name __props__.__dict__["name"] = name + __props__.__dict__["ownership_scope"] = ownership_scope __props__.__dict__["threshold_rules"] = threshold_rules return Budget(resource_name, opts=opts, __props__=__props__) @@ -830,6 +875,15 @@ def name(self) -> pulumi.Output[str]: """ return pulumi.get(self, "name") + @property + @pulumi.getter(name="ownershipScope") + def ownership_scope(self) -> pulumi.Output[Optional[str]]: + """ + The ownership scope of the budget. The ownership scope and users' IAM permissions determine who has full access to the + budget's data. Possible values: ["OWNERSHIP_SCOPE_UNSPECIFIED", "ALL_USERS", "BILLING_ACCOUNT"] + """ + return pulumi.get(self, "ownership_scope") + @property @pulumi.getter(name="thresholdRules") def threshold_rules(self) -> pulumi.Output[Optional[Sequence['outputs.BudgetThresholdRule']]]: diff --git a/sdk/python/pulumi_gcp/cloudfunctionsv2/_inputs.py b/sdk/python/pulumi_gcp/cloudfunctionsv2/_inputs.py index 955d4f71e5..0b281007f2 100644 --- a/sdk/python/pulumi_gcp/cloudfunctionsv2/_inputs.py +++ b/sdk/python/pulumi_gcp/cloudfunctionsv2/_inputs.py @@ -32,6 +32,7 @@ def __init__(__self__, *, entry_point: Optional[pulumi.Input[str]] = None, environment_variables: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, runtime: Optional[pulumi.Input[str]] = None, + service_account: Optional[pulumi.Input[str]] = None, source: Optional[pulumi.Input['FunctionBuildConfigSourceArgs']] = None, worker_pool: Optional[pulumi.Input[str]] = None): """ @@ -47,6 +48,7 @@ def __init__(__self__, *, :param pulumi.Input[Mapping[str, pulumi.Input[str]]] environment_variables: User-provided build-time environment variables for the function. :param pulumi.Input[str] runtime: The runtime in which to run the function. Required when deploying a new function, optional when updating an existing function. + :param pulumi.Input[str] service_account: The fully-qualified name of the service account to be used for building the container. :param pulumi.Input['FunctionBuildConfigSourceArgs'] source: The location of the function source code. Structure is documented below. :param pulumi.Input[str] worker_pool: Name of the Cloud Build Custom Worker Pool that should be used to build the function. @@ -61,6 +63,8 @@ def __init__(__self__, *, pulumi.set(__self__, "environment_variables", environment_variables) if runtime is not None: pulumi.set(__self__, "runtime", runtime) + if service_account is not None: + pulumi.set(__self__, "service_account", service_account) if source is not None: pulumi.set(__self__, "source", source) if worker_pool is not None: @@ -133,6 +137,18 @@ def runtime(self) -> Optional[pulumi.Input[str]]: def runtime(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "runtime", value) + @property + @pulumi.getter(name="serviceAccount") + def service_account(self) -> Optional[pulumi.Input[str]]: + """ + The fully-qualified name of the service account to be used for building the container. + """ + return pulumi.get(self, "service_account") + + @service_account.setter + def service_account(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "service_account", value) + @property @pulumi.getter def source(self) -> Optional[pulumi.Input['FunctionBuildConfigSourceArgs']]: diff --git a/sdk/python/pulumi_gcp/cloudfunctionsv2/function.py b/sdk/python/pulumi_gcp/cloudfunctionsv2/function.py index 6e1b529884..ada71893fe 100644 --- a/sdk/python/pulumi_gcp/cloudfunctionsv2/function.py +++ b/sdk/python/pulumi_gcp/cloudfunctionsv2/function.py @@ -824,6 +824,61 @@ def __init__(__self__, ], )) ``` + ### Cloudfunctions2 Basic Builder + + ```python + import pulumi + import pulumi_gcp as gcp + import pulumi_time as time + + project = "my-project-name" + account = gcp.serviceaccount.Account("account", + account_id="gcf-sa", + display_name="Test Service Account") + log_writer = gcp.projects.IAMMember("log_writer", + project=account.project, + role="roles/logging.logWriter", + member=account.email.apply(lambda email: f"serviceAccount:{email}")) + artifact_registry_writer = gcp.projects.IAMMember("artifact_registry_writer", + project=account.project, + role="roles/artifactregistry.writer", + member=account.email.apply(lambda email: f"serviceAccount:{email}")) + storage_object_admin = gcp.projects.IAMMember("storage_object_admin", + project=account.project, + role="roles/storage.objectAdmin", + member=account.email.apply(lambda email: f"serviceAccount:{email}")) + bucket = gcp.storage.Bucket("bucket", + name=f"{project}-gcf-source", + location="US", + uniform_bucket_level_access=True) + object = gcp.storage.BucketObject("object", + name="function-source.zip", + bucket=bucket.name, + source=pulumi.FileAsset("function-source.zip")) + # builder permissions need to stablize before it can pull the source zip + wait60s = time.index.Sleep("wait_60s", create_duration=60s) + function = gcp.cloudfunctionsv2.Function("function", + name="function-v2", + location="us-central1", + description="a new function", + build_config=gcp.cloudfunctionsv2.FunctionBuildConfigArgs( + runtime="nodejs16", + entry_point="helloHttp", + source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceArgs( + storage_source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs( + bucket=bucket.name, + object=object.name, + ), + ), + service_account=account.id, + ), + service_config=gcp.cloudfunctionsv2.FunctionServiceConfigArgs( + max_instance_count=1, + available_memory="256M", + timeout_seconds=60, + )) + pulumi.export("functionUri", function.service_config.uri) + ``` ### Cloudfunctions2 Secret Env ```python @@ -1436,6 +1491,61 @@ def __init__(__self__, ], )) ``` + ### Cloudfunctions2 Basic Builder + + ```python + import pulumi + import pulumi_gcp as gcp + import pulumi_time as time + + project = "my-project-name" + account = gcp.serviceaccount.Account("account", + account_id="gcf-sa", + display_name="Test Service Account") + log_writer = gcp.projects.IAMMember("log_writer", + project=account.project, + role="roles/logging.logWriter", + member=account.email.apply(lambda email: f"serviceAccount:{email}")) + artifact_registry_writer = gcp.projects.IAMMember("artifact_registry_writer", + project=account.project, + role="roles/artifactregistry.writer", + member=account.email.apply(lambda email: f"serviceAccount:{email}")) + storage_object_admin = gcp.projects.IAMMember("storage_object_admin", + project=account.project, + role="roles/storage.objectAdmin", + member=account.email.apply(lambda email: f"serviceAccount:{email}")) + bucket = gcp.storage.Bucket("bucket", + name=f"{project}-gcf-source", + location="US", + uniform_bucket_level_access=True) + object = gcp.storage.BucketObject("object", + name="function-source.zip", + bucket=bucket.name, + source=pulumi.FileAsset("function-source.zip")) + # builder permissions need to stablize before it can pull the source zip + wait60s = time.index.Sleep("wait_60s", create_duration=60s) + function = gcp.cloudfunctionsv2.Function("function", + name="function-v2", + location="us-central1", + description="a new function", + build_config=gcp.cloudfunctionsv2.FunctionBuildConfigArgs( + runtime="nodejs16", + entry_point="helloHttp", + source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceArgs( + storage_source=gcp.cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs( + bucket=bucket.name, + object=object.name, + ), + ), + service_account=account.id, + ), + service_config=gcp.cloudfunctionsv2.FunctionServiceConfigArgs( + max_instance_count=1, + available_memory="256M", + timeout_seconds=60, + )) + pulumi.export("functionUri", function.service_config.uri) + ``` ### Cloudfunctions2 Secret Env ```python diff --git a/sdk/python/pulumi_gcp/cloudfunctionsv2/outputs.py b/sdk/python/pulumi_gcp/cloudfunctionsv2/outputs.py index 1aa5e37bcc..5a5c13405d 100644 --- a/sdk/python/pulumi_gcp/cloudfunctionsv2/outputs.py +++ b/sdk/python/pulumi_gcp/cloudfunctionsv2/outputs.py @@ -46,6 +46,8 @@ def __key_warning(key: str): suggest = "entry_point" elif key == "environmentVariables": suggest = "environment_variables" + elif key == "serviceAccount": + suggest = "service_account" elif key == "workerPool": suggest = "worker_pool" @@ -66,6 +68,7 @@ def __init__(__self__, *, entry_point: Optional[str] = None, environment_variables: Optional[Mapping[str, str]] = None, runtime: Optional[str] = None, + service_account: Optional[str] = None, source: Optional['outputs.FunctionBuildConfigSource'] = None, worker_pool: Optional[str] = None): """ @@ -81,6 +84,7 @@ def __init__(__self__, *, :param Mapping[str, str] environment_variables: User-provided build-time environment variables for the function. :param str runtime: The runtime in which to run the function. Required when deploying a new function, optional when updating an existing function. + :param str service_account: The fully-qualified name of the service account to be used for building the container. :param 'FunctionBuildConfigSourceArgs' source: The location of the function source code. Structure is documented below. :param str worker_pool: Name of the Cloud Build Custom Worker Pool that should be used to build the function. @@ -95,6 +99,8 @@ def __init__(__self__, *, pulumi.set(__self__, "environment_variables", environment_variables) if runtime is not None: pulumi.set(__self__, "runtime", runtime) + if service_account is not None: + pulumi.set(__self__, "service_account", service_account) if source is not None: pulumi.set(__self__, "source", source) if worker_pool is not None: @@ -147,6 +153,14 @@ def runtime(self) -> Optional[str]: """ return pulumi.get(self, "runtime") + @property + @pulumi.getter(name="serviceAccount") + def service_account(self) -> Optional[str]: + """ + The fully-qualified name of the service account to be used for building the container. + """ + return pulumi.get(self, "service_account") + @property @pulumi.getter def source(self) -> Optional['outputs.FunctionBuildConfigSource']: @@ -1093,6 +1107,7 @@ def __init__(__self__, *, entry_point: str, environment_variables: Mapping[str, str], runtime: str, + service_account: str, sources: Sequence['outputs.GetFunctionBuildConfigSourceResult'], worker_pool: str): """ @@ -1107,6 +1122,7 @@ def __init__(__self__, *, :param Mapping[str, str] environment_variables: User-provided build-time environment variables for the function. :param str runtime: The runtime in which to run the function. Required when deploying a new function, optional when updating an existing function. + :param str service_account: The fully-qualified name of the service account to be used for building the container. :param Sequence['GetFunctionBuildConfigSourceArgs'] sources: The location of the function source code. :param str worker_pool: Name of the Cloud Build Custom Worker Pool that should be used to build the function. """ @@ -1115,6 +1131,7 @@ def __init__(__self__, *, pulumi.set(__self__, "entry_point", entry_point) pulumi.set(__self__, "environment_variables", environment_variables) pulumi.set(__self__, "runtime", runtime) + pulumi.set(__self__, "service_account", service_account) pulumi.set(__self__, "sources", sources) pulumi.set(__self__, "worker_pool", worker_pool) @@ -1164,6 +1181,14 @@ def runtime(self) -> str: """ return pulumi.get(self, "runtime") + @property + @pulumi.getter(name="serviceAccount") + def service_account(self) -> str: + """ + The fully-qualified name of the service account to be used for building the container. + """ + return pulumi.get(self, "service_account") + @property @pulumi.getter def sources(self) -> Sequence['outputs.GetFunctionBuildConfigSourceResult']: diff --git a/sdk/python/pulumi_gcp/compute/_inputs.py b/sdk/python/pulumi_gcp/compute/_inputs.py index 0d3b769d98..1cf77c050b 100644 --- a/sdk/python/pulumi_gcp/compute/_inputs.py +++ b/sdk/python/pulumi_gcp/compute/_inputs.py @@ -128,6 +128,7 @@ 'InstanceGroupManagerAutoHealingPoliciesArgs', 'InstanceGroupManagerInstanceLifecyclePolicyArgs', 'InstanceGroupManagerNamedPortArgs', + 'InstanceGroupManagerParamsArgs', 'InstanceGroupManagerStatefulDiskArgs', 'InstanceGroupManagerStatefulExternalIpArgs', 'InstanceGroupManagerStatefulInternalIpArgs', @@ -259,6 +260,7 @@ 'RegionInstanceGroupManagerAutoHealingPoliciesArgs', 'RegionInstanceGroupManagerInstanceLifecyclePolicyArgs', 'RegionInstanceGroupManagerNamedPortArgs', + 'RegionInstanceGroupManagerParamsArgs', 'RegionInstanceGroupManagerStatefulDiskArgs', 'RegionInstanceGroupManagerStatefulExternalIpArgs', 'RegionInstanceGroupManagerStatefulInternalIpArgs', @@ -9445,6 +9447,29 @@ def port(self, value: pulumi.Input[int]): pulumi.set(self, "port", value) +@pulumi.input_type +class InstanceGroupManagerParamsArgs: + def __init__(__self__, *, + resource_manager_tags: Optional[pulumi.Input[Mapping[str, Any]]] = None): + """ + :param pulumi.Input[Mapping[str, Any]] resource_manager_tags: Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) + """ + if resource_manager_tags is not None: + pulumi.set(__self__, "resource_manager_tags", resource_manager_tags) + + @property + @pulumi.getter(name="resourceManagerTags") + def resource_manager_tags(self) -> Optional[pulumi.Input[Mapping[str, Any]]]: + """ + Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) + """ + return pulumi.get(self, "resource_manager_tags") + + @resource_manager_tags.setter + def resource_manager_tags(self, value: Optional[pulumi.Input[Mapping[str, Any]]]): + pulumi.set(self, "resource_manager_tags", value) + + @pulumi.input_type class InstanceGroupManagerStatefulDiskArgs: def __init__(__self__, *, @@ -18679,6 +18704,29 @@ def port(self, value: pulumi.Input[int]): pulumi.set(self, "port", value) +@pulumi.input_type +class RegionInstanceGroupManagerParamsArgs: + def __init__(__self__, *, + resource_manager_tags: Optional[pulumi.Input[Mapping[str, Any]]] = None): + """ + :param pulumi.Input[Mapping[str, Any]] resource_manager_tags: Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) + """ + if resource_manager_tags is not None: + pulumi.set(__self__, "resource_manager_tags", resource_manager_tags) + + @property + @pulumi.getter(name="resourceManagerTags") + def resource_manager_tags(self) -> Optional[pulumi.Input[Mapping[str, Any]]]: + """ + Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) + """ + return pulumi.get(self, "resource_manager_tags") + + @resource_manager_tags.setter + def resource_manager_tags(self, value: Optional[pulumi.Input[Mapping[str, Any]]]): + pulumi.set(self, "resource_manager_tags", value) + + @pulumi.input_type class RegionInstanceGroupManagerStatefulDiskArgs: def __init__(__self__, *, diff --git a/sdk/python/pulumi_gcp/compute/get_instance_group_manager.py b/sdk/python/pulumi_gcp/compute/get_instance_group_manager.py index 343260a492..2d73d89c0c 100644 --- a/sdk/python/pulumi_gcp/compute/get_instance_group_manager.py +++ b/sdk/python/pulumi_gcp/compute/get_instance_group_manager.py @@ -22,7 +22,7 @@ class GetInstanceGroupManagerResult: """ A collection of values returned by getInstanceGroupManager. """ - def __init__(__self__, all_instances_configs=None, auto_healing_policies=None, base_instance_name=None, creation_timestamp=None, description=None, fingerprint=None, id=None, instance_group=None, instance_lifecycle_policies=None, list_managed_instances_results=None, name=None, named_ports=None, operation=None, project=None, self_link=None, stateful_disks=None, stateful_external_ips=None, stateful_internal_ips=None, statuses=None, target_pools=None, target_size=None, update_policies=None, versions=None, wait_for_instances=None, wait_for_instances_status=None, zone=None): + def __init__(__self__, all_instances_configs=None, auto_healing_policies=None, base_instance_name=None, creation_timestamp=None, description=None, fingerprint=None, id=None, instance_group=None, instance_lifecycle_policies=None, list_managed_instances_results=None, name=None, named_ports=None, operation=None, params=None, project=None, self_link=None, stateful_disks=None, stateful_external_ips=None, stateful_internal_ips=None, statuses=None, target_pools=None, target_size=None, update_policies=None, versions=None, wait_for_instances=None, wait_for_instances_status=None, zone=None): if all_instances_configs and not isinstance(all_instances_configs, list): raise TypeError("Expected argument 'all_instances_configs' to be a list") pulumi.set(__self__, "all_instances_configs", all_instances_configs) @@ -62,6 +62,9 @@ def __init__(__self__, all_instances_configs=None, auto_healing_policies=None, b if operation and not isinstance(operation, str): raise TypeError("Expected argument 'operation' to be a str") pulumi.set(__self__, "operation", operation) + if params and not isinstance(params, list): + raise TypeError("Expected argument 'params' to be a list") + pulumi.set(__self__, "params", params) if project and not isinstance(project, str): raise TypeError("Expected argument 'project' to be a str") pulumi.set(__self__, "project", project) @@ -170,6 +173,11 @@ def named_ports(self) -> Sequence['outputs.GetInstanceGroupManagerNamedPortResul def operation(self) -> str: return pulumi.get(self, "operation") + @property + @pulumi.getter + def params(self) -> Sequence['outputs.GetInstanceGroupManagerParamResult']: + return pulumi.get(self, "params") + @property @pulumi.getter def project(self) -> Optional[str]: @@ -255,6 +263,7 @@ def __await__(self): name=self.name, named_ports=self.named_ports, operation=self.operation, + params=self.params, project=self.project, self_link=self.self_link, stateful_disks=self.stateful_disks, @@ -319,6 +328,7 @@ def get_instance_group_manager(name: Optional[str] = None, name=pulumi.get(__ret__, 'name'), named_ports=pulumi.get(__ret__, 'named_ports'), operation=pulumi.get(__ret__, 'operation'), + params=pulumi.get(__ret__, 'params'), project=pulumi.get(__ret__, 'project'), self_link=pulumi.get(__ret__, 'self_link'), stateful_disks=pulumi.get(__ret__, 'stateful_disks'), diff --git a/sdk/python/pulumi_gcp/compute/instance_group_manager.py b/sdk/python/pulumi_gcp/compute/instance_group_manager.py index 72f44f88c4..93f544e972 100644 --- a/sdk/python/pulumi_gcp/compute/instance_group_manager.py +++ b/sdk/python/pulumi_gcp/compute/instance_group_manager.py @@ -25,6 +25,7 @@ def __init__(__self__, *, list_managed_instances_results: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, named_ports: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceGroupManagerNamedPortArgs']]]] = None, + params: Optional[pulumi.Input['InstanceGroupManagerParamsArgs']] = None, project: Optional[pulumi.Input[str]] = None, stateful_disks: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceGroupManagerStatefulDiskArgs']]]] = None, stateful_external_ips: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceGroupManagerStatefulExternalIpArgs']]]] = None, @@ -66,6 +67,9 @@ def __init__(__self__, *, include lowercase letters, numbers, and hyphens. :param pulumi.Input[Sequence[pulumi.Input['InstanceGroupManagerNamedPortArgs']]] named_ports: The named port configuration. See the section below for details on configuration. + :param pulumi.Input['InstanceGroupManagerParamsArgs'] params: Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + + - - - :param pulumi.Input[str] project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. :param pulumi.Input[Sequence[pulumi.Input['InstanceGroupManagerStatefulDiskArgs']]] stateful_disks: Disks created on the instances that will be preserved on instance delete, update, etc. Structure is documented below. For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/configuring-stateful-disks-in-migs). @@ -76,9 +80,7 @@ def __init__(__self__, *, not affect existing instances. :param pulumi.Input[int] target_size: The target number of running instances for this managed instance group. This value should always be explicitly set unless this resource is attached to an autoscaler, in which case it should never be set. Defaults to 0. - :param pulumi.Input['InstanceGroupManagerUpdatePolicyArgs'] update_policy: The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch) - - - - - + :param pulumi.Input['InstanceGroupManagerUpdatePolicyArgs'] update_policy: The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch). :param pulumi.Input[bool] wait_for_instances: Whether to wait for all instances to be created/updated before returning. Note that if this is set to true and the operation does not succeed, this provider will continue trying until it times out. @@ -107,6 +109,8 @@ def __init__(__self__, *, pulumi.set(__self__, "name", name) if named_ports is not None: pulumi.set(__self__, "named_ports", named_ports) + if params is not None: + pulumi.set(__self__, "params", params) if project is not None: pulumi.set(__self__, "project", project) if stateful_disks is not None: @@ -256,6 +260,20 @@ def named_ports(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['InstanceGr def named_ports(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceGroupManagerNamedPortArgs']]]]): pulumi.set(self, "named_ports", value) + @property + @pulumi.getter + def params(self) -> Optional[pulumi.Input['InstanceGroupManagerParamsArgs']]: + """ + Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + + - - - + """ + return pulumi.get(self, "params") + + @params.setter + def params(self, value: Optional[pulumi.Input['InstanceGroupManagerParamsArgs']]): + pulumi.set(self, "params", value) + @property @pulumi.getter def project(self) -> Optional[pulumi.Input[str]]: @@ -336,9 +354,7 @@ def target_size(self, value: Optional[pulumi.Input[int]]): @pulumi.getter(name="updatePolicy") def update_policy(self) -> Optional[pulumi.Input['InstanceGroupManagerUpdatePolicyArgs']]: """ - The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch) - - - - - + The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch). """ return pulumi.get(self, "update_policy") @@ -406,6 +422,7 @@ def __init__(__self__, *, name: Optional[pulumi.Input[str]] = None, named_ports: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceGroupManagerNamedPortArgs']]]] = None, operation: Optional[pulumi.Input[str]] = None, + params: Optional[pulumi.Input['InstanceGroupManagerParamsArgs']] = None, project: Optional[pulumi.Input[str]] = None, self_link: Optional[pulumi.Input[str]] = None, stateful_disks: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceGroupManagerStatefulDiskArgs']]]] = None, @@ -450,6 +467,9 @@ def __init__(__self__, *, include lowercase letters, numbers, and hyphens. :param pulumi.Input[Sequence[pulumi.Input['InstanceGroupManagerNamedPortArgs']]] named_ports: The named port configuration. See the section below for details on configuration. + :param pulumi.Input['InstanceGroupManagerParamsArgs'] params: Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + + - - - :param pulumi.Input[str] project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. :param pulumi.Input[str] self_link: The URL of the created resource. @@ -462,9 +482,7 @@ def __init__(__self__, *, not affect existing instances. :param pulumi.Input[int] target_size: The target number of running instances for this managed instance group. This value should always be explicitly set unless this resource is attached to an autoscaler, in which case it should never be set. Defaults to 0. - :param pulumi.Input['InstanceGroupManagerUpdatePolicyArgs'] update_policy: The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch) - - - - - + :param pulumi.Input['InstanceGroupManagerUpdatePolicyArgs'] update_policy: The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch). :param pulumi.Input[Sequence[pulumi.Input['InstanceGroupManagerVersionArgs']]] versions: Application versions managed by this instance group. Each version deals with a specific instance template, allowing canary release scenarios. Structure is documented below. @@ -504,6 +522,8 @@ def __init__(__self__, *, pulumi.set(__self__, "named_ports", named_ports) if operation is not None: pulumi.set(__self__, "operation", operation) + if params is not None: + pulumi.set(__self__, "params", params) if project is not None: pulumi.set(__self__, "project", project) if self_link is not None: @@ -690,6 +710,20 @@ def operation(self) -> Optional[pulumi.Input[str]]: def operation(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "operation", value) + @property + @pulumi.getter + def params(self) -> Optional[pulumi.Input['InstanceGroupManagerParamsArgs']]: + """ + Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + + - - - + """ + return pulumi.get(self, "params") + + @params.setter + def params(self, value: Optional[pulumi.Input['InstanceGroupManagerParamsArgs']]): + pulumi.set(self, "params", value) + @property @pulumi.getter def project(self) -> Optional[pulumi.Input[str]]: @@ -794,9 +828,7 @@ def target_size(self, value: Optional[pulumi.Input[int]]): @pulumi.getter(name="updatePolicy") def update_policy(self) -> Optional[pulumi.Input['InstanceGroupManagerUpdatePolicyArgs']]: """ - The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch) - - - - - + The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch). """ return pulumi.get(self, "update_policy") @@ -876,6 +908,7 @@ def __init__(__self__, list_managed_instances_results: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, named_ports: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['InstanceGroupManagerNamedPortArgs']]]]] = None, + params: Optional[pulumi.Input[pulumi.InputType['InstanceGroupManagerParamsArgs']]] = None, project: Optional[pulumi.Input[str]] = None, stateful_disks: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['InstanceGroupManagerStatefulDiskArgs']]]]] = None, stateful_external_ips: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['InstanceGroupManagerStatefulExternalIpArgs']]]]] = None, @@ -1024,6 +1057,9 @@ def __init__(__self__, include lowercase letters, numbers, and hyphens. :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['InstanceGroupManagerNamedPortArgs']]]] named_ports: The named port configuration. See the section below for details on configuration. + :param pulumi.Input[pulumi.InputType['InstanceGroupManagerParamsArgs']] params: Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + + - - - :param pulumi.Input[str] project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['InstanceGroupManagerStatefulDiskArgs']]]] stateful_disks: Disks created on the instances that will be preserved on instance delete, update, etc. Structure is documented below. For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/configuring-stateful-disks-in-migs). @@ -1034,9 +1070,7 @@ def __init__(__self__, not affect existing instances. :param pulumi.Input[int] target_size: The target number of running instances for this managed instance group. This value should always be explicitly set unless this resource is attached to an autoscaler, in which case it should never be set. Defaults to 0. - :param pulumi.Input[pulumi.InputType['InstanceGroupManagerUpdatePolicyArgs']] update_policy: The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch) - - - - - + :param pulumi.Input[pulumi.InputType['InstanceGroupManagerUpdatePolicyArgs']] update_policy: The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch). :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['InstanceGroupManagerVersionArgs']]]] versions: Application versions managed by this instance group. Each version deals with a specific instance template, allowing canary release scenarios. Structure is documented below. @@ -1189,6 +1223,7 @@ def _internal_init(__self__, list_managed_instances_results: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, named_ports: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['InstanceGroupManagerNamedPortArgs']]]]] = None, + params: Optional[pulumi.Input[pulumi.InputType['InstanceGroupManagerParamsArgs']]] = None, project: Optional[pulumi.Input[str]] = None, stateful_disks: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['InstanceGroupManagerStatefulDiskArgs']]]]] = None, stateful_external_ips: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['InstanceGroupManagerStatefulExternalIpArgs']]]]] = None, @@ -1219,6 +1254,7 @@ def _internal_init(__self__, __props__.__dict__["list_managed_instances_results"] = list_managed_instances_results __props__.__dict__["name"] = name __props__.__dict__["named_ports"] = named_ports + __props__.__dict__["params"] = params __props__.__dict__["project"] = project __props__.__dict__["stateful_disks"] = stateful_disks __props__.__dict__["stateful_external_ips"] = stateful_external_ips @@ -1260,6 +1296,7 @@ def get(resource_name: str, name: Optional[pulumi.Input[str]] = None, named_ports: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['InstanceGroupManagerNamedPortArgs']]]]] = None, operation: Optional[pulumi.Input[str]] = None, + params: Optional[pulumi.Input[pulumi.InputType['InstanceGroupManagerParamsArgs']]] = None, project: Optional[pulumi.Input[str]] = None, self_link: Optional[pulumi.Input[str]] = None, stateful_disks: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['InstanceGroupManagerStatefulDiskArgs']]]]] = None, @@ -1309,6 +1346,9 @@ def get(resource_name: str, include lowercase letters, numbers, and hyphens. :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['InstanceGroupManagerNamedPortArgs']]]] named_ports: The named port configuration. See the section below for details on configuration. + :param pulumi.Input[pulumi.InputType['InstanceGroupManagerParamsArgs']] params: Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + + - - - :param pulumi.Input[str] project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. :param pulumi.Input[str] self_link: The URL of the created resource. @@ -1321,9 +1361,7 @@ def get(resource_name: str, not affect existing instances. :param pulumi.Input[int] target_size: The target number of running instances for this managed instance group. This value should always be explicitly set unless this resource is attached to an autoscaler, in which case it should never be set. Defaults to 0. - :param pulumi.Input[pulumi.InputType['InstanceGroupManagerUpdatePolicyArgs']] update_policy: The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch) - - - - - + :param pulumi.Input[pulumi.InputType['InstanceGroupManagerUpdatePolicyArgs']] update_policy: The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch). :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['InstanceGroupManagerVersionArgs']]]] versions: Application versions managed by this instance group. Each version deals with a specific instance template, allowing canary release scenarios. Structure is documented below. @@ -1355,6 +1393,7 @@ def get(resource_name: str, __props__.__dict__["name"] = name __props__.__dict__["named_ports"] = named_ports __props__.__dict__["operation"] = operation + __props__.__dict__["params"] = params __props__.__dict__["project"] = project __props__.__dict__["self_link"] = self_link __props__.__dict__["stateful_disks"] = stateful_disks @@ -1481,6 +1520,16 @@ def named_ports(self) -> pulumi.Output[Optional[Sequence['outputs.InstanceGroupM def operation(self) -> pulumi.Output[str]: return pulumi.get(self, "operation") + @property + @pulumi.getter + def params(self) -> pulumi.Output[Optional['outputs.InstanceGroupManagerParams']]: + """ + Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + + - - - + """ + return pulumi.get(self, "params") + @property @pulumi.getter def project(self) -> pulumi.Output[str]: @@ -1553,9 +1602,7 @@ def target_size(self) -> pulumi.Output[int]: @pulumi.getter(name="updatePolicy") def update_policy(self) -> pulumi.Output['outputs.InstanceGroupManagerUpdatePolicy']: """ - The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch) - - - - - + The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/patch). """ return pulumi.get(self, "update_policy") diff --git a/sdk/python/pulumi_gcp/compute/outputs.py b/sdk/python/pulumi_gcp/compute/outputs.py index e97b9da1a6..de6109f7d0 100644 --- a/sdk/python/pulumi_gcp/compute/outputs.py +++ b/sdk/python/pulumi_gcp/compute/outputs.py @@ -129,6 +129,7 @@ 'InstanceGroupManagerAutoHealingPolicies', 'InstanceGroupManagerInstanceLifecyclePolicy', 'InstanceGroupManagerNamedPort', + 'InstanceGroupManagerParams', 'InstanceGroupManagerStatefulDisk', 'InstanceGroupManagerStatefulExternalIp', 'InstanceGroupManagerStatefulInternalIp', @@ -260,6 +261,7 @@ 'RegionInstanceGroupManagerAutoHealingPolicies', 'RegionInstanceGroupManagerInstanceLifecyclePolicy', 'RegionInstanceGroupManagerNamedPort', + 'RegionInstanceGroupManagerParams', 'RegionInstanceGroupManagerStatefulDisk', 'RegionInstanceGroupManagerStatefulExternalIp', 'RegionInstanceGroupManagerStatefulInternalIp', @@ -578,6 +580,7 @@ 'GetInstanceGroupManagerAutoHealingPolicyResult', 'GetInstanceGroupManagerInstanceLifecyclePolicyResult', 'GetInstanceGroupManagerNamedPortResult', + 'GetInstanceGroupManagerParamResult', 'GetInstanceGroupManagerStatefulDiskResult', 'GetInstanceGroupManagerStatefulExternalIpResult', 'GetInstanceGroupManagerStatefulInternalIpResult', @@ -9476,6 +9479,42 @@ def port(self) -> int: return pulumi.get(self, "port") +@pulumi.output_type +class InstanceGroupManagerParams(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "resourceManagerTags": + suggest = "resource_manager_tags" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in InstanceGroupManagerParams. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + InstanceGroupManagerParams.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + InstanceGroupManagerParams.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + resource_manager_tags: Optional[Mapping[str, Any]] = None): + """ + :param Mapping[str, Any] resource_manager_tags: Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) + """ + if resource_manager_tags is not None: + pulumi.set(__self__, "resource_manager_tags", resource_manager_tags) + + @property + @pulumi.getter(name="resourceManagerTags") + def resource_manager_tags(self) -> Optional[Mapping[str, Any]]: + """ + Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) + """ + return pulumi.get(self, "resource_manager_tags") + + @pulumi.output_type class InstanceGroupManagerStatefulDisk(dict): @staticmethod @@ -18662,6 +18701,42 @@ def port(self) -> int: return pulumi.get(self, "port") +@pulumi.output_type +class RegionInstanceGroupManagerParams(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "resourceManagerTags": + suggest = "resource_manager_tags" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in RegionInstanceGroupManagerParams. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + RegionInstanceGroupManagerParams.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + RegionInstanceGroupManagerParams.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + resource_manager_tags: Optional[Mapping[str, Any]] = None): + """ + :param Mapping[str, Any] resource_manager_tags: Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) + """ + if resource_manager_tags is not None: + pulumi.set(__self__, "resource_manager_tags", resource_manager_tags) + + @property + @pulumi.getter(name="resourceManagerTags") + def resource_manager_tags(self) -> Optional[Mapping[str, Any]]: + """ + Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources) + """ + return pulumi.get(self, "resource_manager_tags") + + @pulumi.output_type class RegionInstanceGroupManagerStatefulDisk(dict): @staticmethod @@ -42191,6 +42266,24 @@ def port(self) -> int: return pulumi.get(self, "port") +@pulumi.output_type +class GetInstanceGroupManagerParamResult(dict): + def __init__(__self__, *, + resource_manager_tags: Mapping[str, Any]): + """ + :param Mapping[str, Any] resource_manager_tags: Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. + """ + pulumi.set(__self__, "resource_manager_tags", resource_manager_tags) + + @property + @pulumi.getter(name="resourceManagerTags") + def resource_manager_tags(self) -> Mapping[str, Any]: + """ + Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. + """ + return pulumi.get(self, "resource_manager_tags") + + @pulumi.output_type class GetInstanceGroupManagerStatefulDiskResult(dict): def __init__(__self__, *, diff --git a/sdk/python/pulumi_gcp/compute/region_instance_group_manager.py b/sdk/python/pulumi_gcp/compute/region_instance_group_manager.py index bcf94bbdc2..3e1aa60927 100644 --- a/sdk/python/pulumi_gcp/compute/region_instance_group_manager.py +++ b/sdk/python/pulumi_gcp/compute/region_instance_group_manager.py @@ -27,6 +27,7 @@ def __init__(__self__, *, list_managed_instances_results: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, named_ports: Optional[pulumi.Input[Sequence[pulumi.Input['RegionInstanceGroupManagerNamedPortArgs']]]] = None, + params: Optional[pulumi.Input['RegionInstanceGroupManagerParamsArgs']] = None, project: Optional[pulumi.Input[str]] = None, region: Optional[pulumi.Input[str]] = None, stateful_disks: Optional[pulumi.Input[Sequence[pulumi.Input['RegionInstanceGroupManagerStatefulDiskArgs']]]] = None, @@ -71,6 +72,9 @@ def __init__(__self__, *, include lowercase letters, numbers, and hyphens. :param pulumi.Input[Sequence[pulumi.Input['RegionInstanceGroupManagerNamedPortArgs']]] named_ports: The named port configuration. See the section below for details on configuration. + :param pulumi.Input['RegionInstanceGroupManagerParamsArgs'] params: Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + + - - - :param pulumi.Input[str] project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. :param pulumi.Input[str] region: The region where the managed instance group resides. If not provided, the provider region is used. @@ -78,8 +82,6 @@ def __init__(__self__, *, - - - :param pulumi.Input[Sequence[pulumi.Input['RegionInstanceGroupManagerStatefulDiskArgs']]] stateful_disks: Disks created on the instances that will be preserved on instance delete, update, etc. Structure is documented below. For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/configuring-stateful-disks-in-migs). Proactive cross zone instance redistribution must be disabled before you can update stateful disks on existing instance group managers. This can be controlled via the `update_policy`. :param pulumi.Input[Sequence[pulumi.Input['RegionInstanceGroupManagerStatefulExternalIpArgs']]] stateful_external_ips: External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. - - - - - :param pulumi.Input[Sequence[pulumi.Input['RegionInstanceGroupManagerStatefulInternalIpArgs']]] stateful_internal_ips: Internal network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. :param pulumi.Input[Sequence[pulumi.Input[str]]] target_pools: The full URL of all target pools to which new instances in the group are added. Updating the target pools attribute does @@ -115,6 +117,8 @@ def __init__(__self__, *, pulumi.set(__self__, "name", name) if named_ports is not None: pulumi.set(__self__, "named_ports", named_ports) + if params is not None: + pulumi.set(__self__, "params", params) if project is not None: pulumi.set(__self__, "project", project) if region is not None: @@ -289,6 +293,20 @@ def named_ports(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['RegionInst def named_ports(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['RegionInstanceGroupManagerNamedPortArgs']]]]): pulumi.set(self, "named_ports", value) + @property + @pulumi.getter + def params(self) -> Optional[pulumi.Input['RegionInstanceGroupManagerParamsArgs']]: + """ + Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + + - - - + """ + return pulumi.get(self, "params") + + @params.setter + def params(self, value: Optional[pulumi.Input['RegionInstanceGroupManagerParamsArgs']]): + pulumi.set(self, "params", value) + @property @pulumi.getter def project(self) -> Optional[pulumi.Input[str]]: @@ -333,8 +351,6 @@ def stateful_disks(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['Reg def stateful_external_ips(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['RegionInstanceGroupManagerStatefulExternalIpArgs']]]]: """ External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. - - - - - """ return pulumi.get(self, "stateful_external_ips") @@ -439,6 +455,7 @@ def __init__(__self__, *, list_managed_instances_results: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, named_ports: Optional[pulumi.Input[Sequence[pulumi.Input['RegionInstanceGroupManagerNamedPortArgs']]]] = None, + params: Optional[pulumi.Input['RegionInstanceGroupManagerParamsArgs']] = None, project: Optional[pulumi.Input[str]] = None, region: Optional[pulumi.Input[str]] = None, self_link: Optional[pulumi.Input[str]] = None, @@ -486,6 +503,9 @@ def __init__(__self__, *, include lowercase letters, numbers, and hyphens. :param pulumi.Input[Sequence[pulumi.Input['RegionInstanceGroupManagerNamedPortArgs']]] named_ports: The named port configuration. See the section below for details on configuration. + :param pulumi.Input['RegionInstanceGroupManagerParamsArgs'] params: Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + + - - - :param pulumi.Input[str] project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. :param pulumi.Input[str] region: The region where the managed instance group resides. If not provided, the provider region is used. @@ -494,8 +514,6 @@ def __init__(__self__, *, :param pulumi.Input[str] self_link: The URL of the created resource. :param pulumi.Input[Sequence[pulumi.Input['RegionInstanceGroupManagerStatefulDiskArgs']]] stateful_disks: Disks created on the instances that will be preserved on instance delete, update, etc. Structure is documented below. For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/configuring-stateful-disks-in-migs). Proactive cross zone instance redistribution must be disabled before you can update stateful disks on existing instance group managers. This can be controlled via the `update_policy`. :param pulumi.Input[Sequence[pulumi.Input['RegionInstanceGroupManagerStatefulExternalIpArgs']]] stateful_external_ips: External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. - - - - - :param pulumi.Input[Sequence[pulumi.Input['RegionInstanceGroupManagerStatefulInternalIpArgs']]] stateful_internal_ips: Internal network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. :param pulumi.Input[Sequence[pulumi.Input['RegionInstanceGroupManagerStatusArgs']]] statuses: The status of this managed instance group. :param pulumi.Input[Sequence[pulumi.Input[str]]] target_pools: The full URL of all target pools to which new @@ -541,6 +559,8 @@ def __init__(__self__, *, pulumi.set(__self__, "name", name) if named_ports is not None: pulumi.set(__self__, "named_ports", named_ports) + if params is not None: + pulumi.set(__self__, "params", params) if project is not None: pulumi.set(__self__, "project", project) if region is not None: @@ -743,6 +763,20 @@ def named_ports(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['RegionInst def named_ports(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['RegionInstanceGroupManagerNamedPortArgs']]]]): pulumi.set(self, "named_ports", value) + @property + @pulumi.getter + def params(self) -> Optional[pulumi.Input['RegionInstanceGroupManagerParamsArgs']]: + """ + Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + + - - - + """ + return pulumi.get(self, "params") + + @params.setter + def params(self, value: Optional[pulumi.Input['RegionInstanceGroupManagerParamsArgs']]): + pulumi.set(self, "params", value) + @property @pulumi.getter def project(self) -> Optional[pulumi.Input[str]]: @@ -799,8 +833,6 @@ def stateful_disks(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['Reg def stateful_external_ips(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['RegionInstanceGroupManagerStatefulExternalIpArgs']]]]: """ External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. - - - - - """ return pulumi.get(self, "stateful_external_ips") @@ -930,6 +962,7 @@ def __init__(__self__, list_managed_instances_results: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, named_ports: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['RegionInstanceGroupManagerNamedPortArgs']]]]] = None, + params: Optional[pulumi.Input[pulumi.InputType['RegionInstanceGroupManagerParamsArgs']]] = None, project: Optional[pulumi.Input[str]] = None, region: Optional[pulumi.Input[str]] = None, stateful_disks: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['RegionInstanceGroupManagerStatefulDiskArgs']]]]] = None, @@ -1070,6 +1103,9 @@ def __init__(__self__, include lowercase letters, numbers, and hyphens. :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['RegionInstanceGroupManagerNamedPortArgs']]]] named_ports: The named port configuration. See the section below for details on configuration. + :param pulumi.Input[pulumi.InputType['RegionInstanceGroupManagerParamsArgs']] params: Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + + - - - :param pulumi.Input[str] project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. :param pulumi.Input[str] region: The region where the managed instance group resides. If not provided, the provider region is used. @@ -1077,8 +1113,6 @@ def __init__(__self__, - - - :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['RegionInstanceGroupManagerStatefulDiskArgs']]]] stateful_disks: Disks created on the instances that will be preserved on instance delete, update, etc. Structure is documented below. For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/configuring-stateful-disks-in-migs). Proactive cross zone instance redistribution must be disabled before you can update stateful disks on existing instance group managers. This can be controlled via the `update_policy`. :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['RegionInstanceGroupManagerStatefulExternalIpArgs']]]] stateful_external_ips: External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. - - - - - :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['RegionInstanceGroupManagerStatefulInternalIpArgs']]]] stateful_internal_ips: Internal network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. :param pulumi.Input[Sequence[pulumi.Input[str]]] target_pools: The full URL of all target pools to which new instances in the group are added. Updating the target pools attribute does @@ -1225,6 +1259,7 @@ def _internal_init(__self__, list_managed_instances_results: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, named_ports: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['RegionInstanceGroupManagerNamedPortArgs']]]]] = None, + params: Optional[pulumi.Input[pulumi.InputType['RegionInstanceGroupManagerParamsArgs']]] = None, project: Optional[pulumi.Input[str]] = None, region: Optional[pulumi.Input[str]] = None, stateful_disks: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['RegionInstanceGroupManagerStatefulDiskArgs']]]]] = None, @@ -1257,6 +1292,7 @@ def _internal_init(__self__, __props__.__dict__["list_managed_instances_results"] = list_managed_instances_results __props__.__dict__["name"] = name __props__.__dict__["named_ports"] = named_ports + __props__.__dict__["params"] = params __props__.__dict__["project"] = project __props__.__dict__["region"] = region __props__.__dict__["stateful_disks"] = stateful_disks @@ -1298,6 +1334,7 @@ def get(resource_name: str, list_managed_instances_results: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, named_ports: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['RegionInstanceGroupManagerNamedPortArgs']]]]] = None, + params: Optional[pulumi.Input[pulumi.InputType['RegionInstanceGroupManagerParamsArgs']]] = None, project: Optional[pulumi.Input[str]] = None, region: Optional[pulumi.Input[str]] = None, self_link: Optional[pulumi.Input[str]] = None, @@ -1350,6 +1387,9 @@ def get(resource_name: str, include lowercase letters, numbers, and hyphens. :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['RegionInstanceGroupManagerNamedPortArgs']]]] named_ports: The named port configuration. See the section below for details on configuration. + :param pulumi.Input[pulumi.InputType['RegionInstanceGroupManagerParamsArgs']] params: Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + + - - - :param pulumi.Input[str] project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. :param pulumi.Input[str] region: The region where the managed instance group resides. If not provided, the provider region is used. @@ -1358,8 +1398,6 @@ def get(resource_name: str, :param pulumi.Input[str] self_link: The URL of the created resource. :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['RegionInstanceGroupManagerStatefulDiskArgs']]]] stateful_disks: Disks created on the instances that will be preserved on instance delete, update, etc. Structure is documented below. For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/configuring-stateful-disks-in-migs). Proactive cross zone instance redistribution must be disabled before you can update stateful disks on existing instance group managers. This can be controlled via the `update_policy`. :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['RegionInstanceGroupManagerStatefulExternalIpArgs']]]] stateful_external_ips: External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. - - - - - :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['RegionInstanceGroupManagerStatefulInternalIpArgs']]]] stateful_internal_ips: Internal network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['RegionInstanceGroupManagerStatusArgs']]]] statuses: The status of this managed instance group. :param pulumi.Input[Sequence[pulumi.Input[str]]] target_pools: The full URL of all target pools to which new @@ -1396,6 +1434,7 @@ def get(resource_name: str, __props__.__dict__["list_managed_instances_results"] = list_managed_instances_results __props__.__dict__["name"] = name __props__.__dict__["named_ports"] = named_ports + __props__.__dict__["params"] = params __props__.__dict__["project"] = project __props__.__dict__["region"] = region __props__.__dict__["self_link"] = self_link @@ -1534,6 +1573,16 @@ def named_ports(self) -> pulumi.Output[Optional[Sequence['outputs.RegionInstance """ return pulumi.get(self, "named_ports") + @property + @pulumi.getter + def params(self) -> pulumi.Output[Optional['outputs.RegionInstanceGroupManagerParams']]: + """ + Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert). + + - - - + """ + return pulumi.get(self, "params") + @property @pulumi.getter def project(self) -> pulumi.Output[str]: @@ -1574,8 +1623,6 @@ def stateful_disks(self) -> pulumi.Output[Optional[Sequence['outputs.RegionInsta def stateful_external_ips(self) -> pulumi.Output[Optional[Sequence['outputs.RegionInstanceGroupManagerStatefulExternalIp']]]: """ External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. - - - - - """ return pulumi.get(self, "stateful_external_ips") diff --git a/sdk/python/pulumi_gcp/container/outputs.py b/sdk/python/pulumi_gcp/container/outputs.py index c2d2981b0f..8f88ef6c2e 100644 --- a/sdk/python/pulumi_gcp/container/outputs.py +++ b/sdk/python/pulumi_gcp/container/outputs.py @@ -15043,7 +15043,7 @@ def __init__(__self__, *, gcp_public_cidrs_access_enabled: bool): """ :param Sequence['GetClusterMasterAuthorizedNetworksConfigCidrBlockArgs'] cidr_blocks: External networks that can access the Kubernetes cluster master through HTTPS. - :param bool gcp_public_cidrs_access_enabled: Whether master is accessbile via Google Compute Engine Public IP addresses. + :param bool gcp_public_cidrs_access_enabled: Whether Kubernetes master is accessible via Google Compute Engine Public IPs. """ pulumi.set(__self__, "cidr_blocks", cidr_blocks) pulumi.set(__self__, "gcp_public_cidrs_access_enabled", gcp_public_cidrs_access_enabled) @@ -15060,7 +15060,7 @@ def cidr_blocks(self) -> Sequence['outputs.GetClusterMasterAuthorizedNetworksCon @pulumi.getter(name="gcpPublicCidrsAccessEnabled") def gcp_public_cidrs_access_enabled(self) -> bool: """ - Whether master is accessbile via Google Compute Engine Public IP addresses. + Whether Kubernetes master is accessible via Google Compute Engine Public IPs. """ return pulumi.get(self, "gcp_public_cidrs_access_enabled") @@ -18403,7 +18403,7 @@ class GetClusterServiceExternalIpsConfigResult(dict): def __init__(__self__, *, enabled: bool): """ - :param bool enabled: When enabled, services with exterenal ips specified will be allowed. + :param bool enabled: When enabled, services with external ips specified will be allowed. """ pulumi.set(__self__, "enabled", enabled) @@ -18411,7 +18411,7 @@ def __init__(__self__, *, @pulumi.getter def enabled(self) -> bool: """ - When enabled, services with exterenal ips specified will be allowed. + When enabled, services with external ips specified will be allowed. """ return pulumi.get(self, "enabled") diff --git a/sdk/python/pulumi_gcp/dns/_inputs.py b/sdk/python/pulumi_gcp/dns/_inputs.py index 3990d22da6..a73571c37a 100644 --- a/sdk/python/pulumi_gcp/dns/_inputs.py +++ b/sdk/python/pulumi_gcp/dns/_inputs.py @@ -44,7 +44,6 @@ 'ResponsePolicyNetworkArgs', 'ResponsePolicyRuleLocalDataArgs', 'ResponsePolicyRuleLocalDataLocalDataArgs', - 'GetManagedZonesManagedZoneArgs', ] @pulumi.input_type @@ -1687,130 +1686,3 @@ def ttl(self, value: Optional[pulumi.Input[int]]): pulumi.set(self, "ttl", value) -@pulumi.input_type -class GetManagedZonesManagedZoneArgs: - def __init__(__self__, *, - description: str, - dns_name: str, - id: str, - managed_zone_id: int, - name: str, - name_servers: Sequence[str], - project: str, - visibility: str): - """ - :param str description: A textual description field. - :param str dns_name: The fully qualified DNS name of this zone. - :param str id: DNS managed zone identifier - :param int managed_zone_id: Unique identifier for the resource; defined by the server. - :param str name: A unique name for the resource. - :param Sequence[str] name_servers: The list of nameservers that will be authoritative for this domain. Use NS records to redirect from your DNS provider to these names, thus making Google Cloud DNS authoritative for this zone. - :param str project: The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. - :param str visibility: The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources. - """ - pulumi.set(__self__, "description", description) - pulumi.set(__self__, "dns_name", dns_name) - pulumi.set(__self__, "id", id) - pulumi.set(__self__, "managed_zone_id", managed_zone_id) - pulumi.set(__self__, "name", name) - pulumi.set(__self__, "name_servers", name_servers) - pulumi.set(__self__, "project", project) - pulumi.set(__self__, "visibility", visibility) - - @property - @pulumi.getter - def description(self) -> str: - """ - A textual description field. - """ - return pulumi.get(self, "description") - - @description.setter - def description(self, value: str): - pulumi.set(self, "description", value) - - @property - @pulumi.getter(name="dnsName") - def dns_name(self) -> str: - """ - The fully qualified DNS name of this zone. - """ - return pulumi.get(self, "dns_name") - - @dns_name.setter - def dns_name(self, value: str): - pulumi.set(self, "dns_name", value) - - @property - @pulumi.getter - def id(self) -> str: - """ - DNS managed zone identifier - """ - return pulumi.get(self, "id") - - @id.setter - def id(self, value: str): - pulumi.set(self, "id", value) - - @property - @pulumi.getter(name="managedZoneId") - def managed_zone_id(self) -> int: - """ - Unique identifier for the resource; defined by the server. - """ - return pulumi.get(self, "managed_zone_id") - - @managed_zone_id.setter - def managed_zone_id(self, value: int): - pulumi.set(self, "managed_zone_id", value) - - @property - @pulumi.getter - def name(self) -> str: - """ - A unique name for the resource. - """ - return pulumi.get(self, "name") - - @name.setter - def name(self, value: str): - pulumi.set(self, "name", value) - - @property - @pulumi.getter(name="nameServers") - def name_servers(self) -> Sequence[str]: - """ - The list of nameservers that will be authoritative for this domain. Use NS records to redirect from your DNS provider to these names, thus making Google Cloud DNS authoritative for this zone. - """ - return pulumi.get(self, "name_servers") - - @name_servers.setter - def name_servers(self, value: Sequence[str]): - pulumi.set(self, "name_servers", value) - - @property - @pulumi.getter - def project(self) -> str: - """ - The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. - """ - return pulumi.get(self, "project") - - @project.setter - def project(self, value: str): - pulumi.set(self, "project", value) - - @property - @pulumi.getter - def visibility(self) -> str: - """ - The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources. - """ - return pulumi.get(self, "visibility") - - @visibility.setter - def visibility(self, value: str): - pulumi.set(self, "visibility", value) - - diff --git a/sdk/python/pulumi_gcp/dns/get_keys.py b/sdk/python/pulumi_gcp/dns/get_keys.py index 9d998a0586..78816608d1 100644 --- a/sdk/python/pulumi_gcp/dns/get_keys.py +++ b/sdk/python/pulumi_gcp/dns/get_keys.py @@ -43,7 +43,7 @@ def __init__(__self__, id=None, key_signing_keys=None, managed_zone=None, projec @pulumi.getter def id(self) -> str: """ - Unique identifier for the resource; defined by the server. + The provider-assigned unique ID for this managed resource. """ return pulumi.get(self, "id") diff --git a/sdk/python/pulumi_gcp/dns/get_managed_zones.py b/sdk/python/pulumi_gcp/dns/get_managed_zones.py index 448452a1ff..6e67d21253 100644 --- a/sdk/python/pulumi_gcp/dns/get_managed_zones.py +++ b/sdk/python/pulumi_gcp/dns/get_managed_zones.py @@ -9,7 +9,6 @@ from typing import Any, Mapping, Optional, Sequence, Union, overload from .. import _utilities from . import outputs -from ._inputs import * __all__ = [ 'GetManagedZonesResult', @@ -41,7 +40,7 @@ def id(self) -> str: @property @pulumi.getter(name="managedZones") - def managed_zones(self) -> Optional[Sequence['outputs.GetManagedZonesManagedZoneResult']]: + def managed_zones(self) -> Sequence['outputs.GetManagedZonesManagedZoneResult']: """ A list of managed zones. """ @@ -64,8 +63,7 @@ def __await__(self): project=self.project) -def get_managed_zones(managed_zones: Optional[Sequence[pulumi.InputType['GetManagedZonesManagedZoneArgs']]] = None, - project: Optional[str] = None, +def get_managed_zones(project: Optional[str] = None, opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetManagedZonesResult: """ Provides access to a list of zones within Google Cloud DNS. @@ -82,11 +80,9 @@ def get_managed_zones(managed_zones: Optional[Sequence[pulumi.InputType['GetMana ``` - :param Sequence[pulumi.InputType['GetManagedZonesManagedZoneArgs']] managed_zones: A list of managed zones. :param str project: The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. """ __args__ = dict() - __args__['managedZones'] = managed_zones __args__['project'] = project opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) __ret__ = pulumi.runtime.invoke('gcp:dns/getManagedZones:getManagedZones', __args__, opts=opts, typ=GetManagedZonesResult).value @@ -98,8 +94,7 @@ def get_managed_zones(managed_zones: Optional[Sequence[pulumi.InputType['GetMana @_utilities.lift_output_func(get_managed_zones) -def get_managed_zones_output(managed_zones: Optional[pulumi.Input[Optional[Sequence[pulumi.InputType['GetManagedZonesManagedZoneArgs']]]]] = None, - project: Optional[pulumi.Input[Optional[str]]] = None, +def get_managed_zones_output(project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetManagedZonesResult]: """ Provides access to a list of zones within Google Cloud DNS. @@ -116,7 +111,6 @@ def get_managed_zones_output(managed_zones: Optional[pulumi.Input[Optional[Seque ``` - :param Sequence[pulumi.InputType['GetManagedZonesManagedZoneArgs']] managed_zones: A list of managed zones. :param str project: The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. """ ... diff --git a/sdk/python/pulumi_gcp/dns/get_record_set.py b/sdk/python/pulumi_gcp/dns/get_record_set.py index 811d5501c4..7d12d61d51 100644 --- a/sdk/python/pulumi_gcp/dns/get_record_set.py +++ b/sdk/python/pulumi_gcp/dns/get_record_set.py @@ -47,6 +47,9 @@ def __init__(__self__, id=None, managed_zone=None, name=None, project=None, rrda @property @pulumi.getter def id(self) -> str: + """ + The provider-assigned unique ID for this managed resource. + """ return pulumi.get(self, "id") @property diff --git a/sdk/python/pulumi_gcp/dns/outputs.py b/sdk/python/pulumi_gcp/dns/outputs.py index f2b425e4c9..ea2ba94498 100644 --- a/sdk/python/pulumi_gcp/dns/outputs.py +++ b/sdk/python/pulumi_gcp/dns/outputs.py @@ -2016,18 +2016,20 @@ def public_key(self) -> str: @pulumi.output_type class GetKeysKeySigningKeyDigestResult(dict): def __init__(__self__, *, - digest: str, - type: str): + digest: Optional[str] = None, + type: Optional[str] = None): """ :param str digest: The base-16 encoded bytes of this digest. Suitable for use in a DS resource record. :param str type: Specifies the algorithm used to calculate this digest. Possible values are `sha1`, `sha256` and `sha384` """ - pulumi.set(__self__, "digest", digest) - pulumi.set(__self__, "type", type) + if digest is not None: + pulumi.set(__self__, "digest", digest) + if type is not None: + pulumi.set(__self__, "type", type) @property @pulumi.getter - def digest(self) -> str: + def digest(self) -> Optional[str]: """ The base-16 encoded bytes of this digest. Suitable for use in a DS resource record. """ @@ -2035,7 +2037,7 @@ def digest(self) -> str: @property @pulumi.getter - def type(self) -> str: + def type(self) -> Optional[str]: """ Specifies the algorithm used to calculate this digest. Possible values are `sha1`, `sha256` and `sha384` """ @@ -2151,18 +2153,20 @@ def public_key(self) -> str: @pulumi.output_type class GetKeysZoneSigningKeyDigestResult(dict): def __init__(__self__, *, - digest: str, - type: str): + digest: Optional[str] = None, + type: Optional[str] = None): """ :param str digest: The base-16 encoded bytes of this digest. Suitable for use in a DS resource record. :param str type: Specifies the algorithm used to calculate this digest. Possible values are `sha1`, `sha256` and `sha384` """ - pulumi.set(__self__, "digest", digest) - pulumi.set(__self__, "type", type) + if digest is not None: + pulumi.set(__self__, "digest", digest) + if type is not None: + pulumi.set(__self__, "type", type) @property @pulumi.getter - def digest(self) -> str: + def digest(self) -> Optional[str]: """ The base-16 encoded bytes of this digest. Suitable for use in a DS resource record. """ @@ -2170,7 +2174,7 @@ def digest(self) -> str: @property @pulumi.getter - def type(self) -> str: + def type(self) -> Optional[str]: """ Specifies the algorithm used to calculate this digest. Possible values are `sha1`, `sha256` and `sha384` """ @@ -2184,91 +2188,65 @@ def __init__(__self__, *, dns_name: str, id: str, managed_zone_id: int, - name: str, name_servers: Sequence[str], - project: str, - visibility: str): - """ - :param str description: A textual description field. - :param str dns_name: The fully qualified DNS name of this zone. - :param str id: DNS managed zone identifier - :param int managed_zone_id: Unique identifier for the resource; defined by the server. - :param str name: A unique name for the resource. - :param Sequence[str] name_servers: The list of nameservers that will be authoritative for this domain. Use NS records to redirect from your DNS provider to these names, thus making Google Cloud DNS authoritative for this zone. + visibility: str, + name: Optional[str] = None, + project: Optional[str] = None): + """ :param str project: The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. - :param str visibility: The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources. """ pulumi.set(__self__, "description", description) pulumi.set(__self__, "dns_name", dns_name) pulumi.set(__self__, "id", id) pulumi.set(__self__, "managed_zone_id", managed_zone_id) - pulumi.set(__self__, "name", name) pulumi.set(__self__, "name_servers", name_servers) - pulumi.set(__self__, "project", project) pulumi.set(__self__, "visibility", visibility) + if name is not None: + pulumi.set(__self__, "name", name) + if project is not None: + pulumi.set(__self__, "project", project) @property @pulumi.getter def description(self) -> str: - """ - A textual description field. - """ return pulumi.get(self, "description") @property @pulumi.getter(name="dnsName") def dns_name(self) -> str: - """ - The fully qualified DNS name of this zone. - """ return pulumi.get(self, "dns_name") @property @pulumi.getter def id(self) -> str: - """ - DNS managed zone identifier - """ return pulumi.get(self, "id") @property @pulumi.getter(name="managedZoneId") def managed_zone_id(self) -> int: - """ - Unique identifier for the resource; defined by the server. - """ return pulumi.get(self, "managed_zone_id") - @property - @pulumi.getter - def name(self) -> str: - """ - A unique name for the resource. - """ - return pulumi.get(self, "name") - @property @pulumi.getter(name="nameServers") def name_servers(self) -> Sequence[str]: - """ - The list of nameservers that will be authoritative for this domain. Use NS records to redirect from your DNS provider to these names, thus making Google Cloud DNS authoritative for this zone. - """ return pulumi.get(self, "name_servers") @property @pulumi.getter - def project(self) -> str: - """ - The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. - """ - return pulumi.get(self, "project") + def visibility(self) -> str: + return pulumi.get(self, "visibility") @property @pulumi.getter - def visibility(self) -> str: + def name(self) -> Optional[str]: + return pulumi.get(self, "name") + + @property + @pulumi.getter + def project(self) -> Optional[str]: """ - The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources. + The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. """ - return pulumi.get(self, "visibility") + return pulumi.get(self, "project") diff --git a/sdk/python/pulumi_gcp/firestore/document.py b/sdk/python/pulumi_gcp/firestore/document.py index c8f477b6f3..6fb4818aef 100644 --- a/sdk/python/pulumi_gcp/firestore/document.py +++ b/sdk/python/pulumi_gcp/firestore/document.py @@ -126,7 +126,7 @@ def __init__(__self__, *, - - - :param pulumi.Input[str] fields: The document's [fields](https://cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.documents) formated as a json string. - :param pulumi.Input[str] name: A server defined name for this index. Format: + :param pulumi.Input[str] name: A server defined name for this document. Format: `projects/{{project_id}}/databases/{{database_id}}/documents/{{path}}/{{document_id}}` :param pulumi.Input[str] path: A relative path to the collection this document exists within :param pulumi.Input[str] project: The ID of the project in which the resource belongs. @@ -219,7 +219,7 @@ def fields(self, value: Optional[pulumi.Input[str]]): @pulumi.getter def name(self) -> Optional[pulumi.Input[str]]: """ - A server defined name for this index. Format: + A server defined name for this document. Format: `projects/{{project_id}}/databases/{{database_id}}/documents/{{path}}/{{document_id}}` """ return pulumi.get(self, "name") @@ -573,7 +573,7 @@ def get(resource_name: str, - - - :param pulumi.Input[str] fields: The document's [fields](https://cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.documents) formated as a json string. - :param pulumi.Input[str] name: A server defined name for this index. Format: + :param pulumi.Input[str] name: A server defined name for this document. Format: `projects/{{project_id}}/databases/{{database_id}}/documents/{{path}}/{{document_id}}` :param pulumi.Input[str] path: A relative path to the collection this document exists within :param pulumi.Input[str] project: The ID of the project in which the resource belongs. @@ -642,7 +642,7 @@ def fields(self) -> pulumi.Output[str]: @pulumi.getter def name(self) -> pulumi.Output[str]: """ - A server defined name for this index. Format: + A server defined name for this document. Format: `projects/{{project_id}}/databases/{{database_id}}/documents/{{path}}/{{document_id}}` """ return pulumi.get(self, "name") diff --git a/sdk/python/pulumi_gcp/organizations/get_active_folder.py b/sdk/python/pulumi_gcp/organizations/get_active_folder.py index bcb6ab50bc..b4562b0b17 100644 --- a/sdk/python/pulumi_gcp/organizations/get_active_folder.py +++ b/sdk/python/pulumi_gcp/organizations/get_active_folder.py @@ -21,7 +21,10 @@ class GetActiveFolderResult: """ A collection of values returned by getActiveFolder. """ - def __init__(__self__, display_name=None, id=None, name=None, parent=None): + def __init__(__self__, api_method=None, display_name=None, id=None, name=None, parent=None): + if api_method and not isinstance(api_method, str): + raise TypeError("Expected argument 'api_method' to be a str") + pulumi.set(__self__, "api_method", api_method) if display_name and not isinstance(display_name, str): raise TypeError("Expected argument 'display_name' to be a str") pulumi.set(__self__, "display_name", display_name) @@ -35,6 +38,11 @@ def __init__(__self__, display_name=None, id=None, name=None, parent=None): raise TypeError("Expected argument 'parent' to be a str") pulumi.set(__self__, "parent", parent) + @property + @pulumi.getter(name="apiMethod") + def api_method(self) -> Optional[str]: + return pulumi.get(self, "api_method") + @property @pulumi.getter(name="displayName") def display_name(self) -> str: @@ -68,13 +76,15 @@ def __await__(self): if False: yield self return GetActiveFolderResult( + api_method=self.api_method, display_name=self.display_name, id=self.id, name=self.name, parent=self.parent) -def get_active_folder(display_name: Optional[str] = None, +def get_active_folder(api_method: Optional[str] = None, + display_name: Optional[str] = None, parent: Optional[str] = None, opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetActiveFolderResult: """ @@ -83,16 +93,19 @@ def get_active_folder(display_name: Optional[str] = None, ## Example Usage + :param str api_method: The API method to use to search for the folder. Valid values are `LIST` and `SEARCH`. Default Value is `LIST`. `LIST` is [strongly consistent](https://cloud.google.com/resource-manager/reference/rest/v3/folders/list#:~:text=list()%20provides%20a-,strongly%20consistent,-view%20of%20the) and requires `resourcemanager.folders.list` on the parent folder, while `SEARCH` is [eventually consistent](https://cloud.google.com/resource-manager/reference/rest/v3/folders/search#:~:text=eventually%20consistent) and only returns folders that the user has `resourcemanager.folders.get` permission on. :param str display_name: The folder's display name. :param str parent: The resource name of the parent Folder or Organization. """ __args__ = dict() + __args__['apiMethod'] = api_method __args__['displayName'] = display_name __args__['parent'] = parent opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) __ret__ = pulumi.runtime.invoke('gcp:organizations/getActiveFolder:getActiveFolder', __args__, opts=opts, typ=GetActiveFolderResult).value return AwaitableGetActiveFolderResult( + api_method=pulumi.get(__ret__, 'api_method'), display_name=pulumi.get(__ret__, 'display_name'), id=pulumi.get(__ret__, 'id'), name=pulumi.get(__ret__, 'name'), @@ -100,7 +113,8 @@ def get_active_folder(display_name: Optional[str] = None, @_utilities.lift_output_func(get_active_folder) -def get_active_folder_output(display_name: Optional[pulumi.Input[str]] = None, +def get_active_folder_output(api_method: Optional[pulumi.Input[Optional[str]]] = None, + display_name: Optional[pulumi.Input[str]] = None, parent: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetActiveFolderResult]: """ @@ -109,6 +123,7 @@ def get_active_folder_output(display_name: Optional[pulumi.Input[str]] = None, ## Example Usage + :param str api_method: The API method to use to search for the folder. Valid values are `LIST` and `SEARCH`. Default Value is `LIST`. `LIST` is [strongly consistent](https://cloud.google.com/resource-manager/reference/rest/v3/folders/list#:~:text=list()%20provides%20a-,strongly%20consistent,-view%20of%20the) and requires `resourcemanager.folders.list` on the parent folder, while `SEARCH` is [eventually consistent](https://cloud.google.com/resource-manager/reference/rest/v3/folders/search#:~:text=eventually%20consistent) and only returns folders that the user has `resourcemanager.folders.get` permission on. :param str display_name: The folder's display name. :param str parent: The resource name of the parent Folder or Organization. """ diff --git a/sdk/python/pulumi_gcp/projects/__init__.py b/sdk/python/pulumi_gcp/projects/__init__.py index 579802adae..4fc966bf7a 100644 --- a/sdk/python/pulumi_gcp/projects/__init__.py +++ b/sdk/python/pulumi_gcp/projects/__init__.py @@ -16,6 +16,7 @@ from .iam_binding import * from .iam_custom_role import * from .iam_member import * +from .iam_member_remove import * from .iam_policy import * from .organization_policy import * from .service import * diff --git a/sdk/python/pulumi_gcp/projects/iam_member_remove.py b/sdk/python/pulumi_gcp/projects/iam_member_remove.py new file mode 100644 index 0000000000..1054fe09fe --- /dev/null +++ b/sdk/python/pulumi_gcp/projects/iam_member_remove.py @@ -0,0 +1,313 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +from .. import _utilities + +__all__ = ['IamMemberRemoveArgs', 'IamMemberRemove'] + +@pulumi.input_type +class IamMemberRemoveArgs: + def __init__(__self__, *, + member: pulumi.Input[str], + project: pulumi.Input[str], + role: pulumi.Input[str]): + """ + The set of arguments for constructing a IamMemberRemove resource. + :param pulumi.Input[str] member: The IAM principal that should not have the target role. + Each entry can have one of the following values: + * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. + * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. + * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com. + :param pulumi.Input[str] project: The project id of the target project. + :param pulumi.Input[str] role: The target role that should be removed. + """ + pulumi.set(__self__, "member", member) + pulumi.set(__self__, "project", project) + pulumi.set(__self__, "role", role) + + @property + @pulumi.getter + def member(self) -> pulumi.Input[str]: + """ + The IAM principal that should not have the target role. + Each entry can have one of the following values: + * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. + * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. + * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com. + """ + return pulumi.get(self, "member") + + @member.setter + def member(self, value: pulumi.Input[str]): + pulumi.set(self, "member", value) + + @property + @pulumi.getter + def project(self) -> pulumi.Input[str]: + """ + The project id of the target project. + """ + return pulumi.get(self, "project") + + @project.setter + def project(self, value: pulumi.Input[str]): + pulumi.set(self, "project", value) + + @property + @pulumi.getter + def role(self) -> pulumi.Input[str]: + """ + The target role that should be removed. + """ + return pulumi.get(self, "role") + + @role.setter + def role(self, value: pulumi.Input[str]): + pulumi.set(self, "role", value) + + +@pulumi.input_type +class _IamMemberRemoveState: + def __init__(__self__, *, + member: Optional[pulumi.Input[str]] = None, + project: Optional[pulumi.Input[str]] = None, + role: Optional[pulumi.Input[str]] = None): + """ + Input properties used for looking up and filtering IamMemberRemove resources. + :param pulumi.Input[str] member: The IAM principal that should not have the target role. + Each entry can have one of the following values: + * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. + * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. + * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com. + :param pulumi.Input[str] project: The project id of the target project. + :param pulumi.Input[str] role: The target role that should be removed. + """ + if member is not None: + pulumi.set(__self__, "member", member) + if project is not None: + pulumi.set(__self__, "project", project) + if role is not None: + pulumi.set(__self__, "role", role) + + @property + @pulumi.getter + def member(self) -> Optional[pulumi.Input[str]]: + """ + The IAM principal that should not have the target role. + Each entry can have one of the following values: + * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. + * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. + * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com. + """ + return pulumi.get(self, "member") + + @member.setter + def member(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "member", value) + + @property + @pulumi.getter + def project(self) -> Optional[pulumi.Input[str]]: + """ + The project id of the target project. + """ + return pulumi.get(self, "project") + + @project.setter + def project(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "project", value) + + @property + @pulumi.getter + def role(self) -> Optional[pulumi.Input[str]]: + """ + The target role that should be removed. + """ + return pulumi.get(self, "role") + + @role.setter + def role(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "role", value) + + +class IamMemberRemove(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + member: Optional[pulumi.Input[str]] = None, + project: Optional[pulumi.Input[str]] = None, + role: Optional[pulumi.Input[str]] = None, + __props__=None): + """ + Ensures that a member:role pairing does not exist in a project's IAM policy. + + On create, this resource will modify the policy to remove the `member` from the + `role`. If the membership is ever re-added, the next refresh will clear this + resource from state, proposing re-adding it to correct the membership. Import is + not supported- this resource will acquire the current policy and modify it as + part of creating the resource. + + This resource will conflict with `projects.IAMPolicy` and + `projects.IAMBinding` resources that share a role, as well as + `projects.IAMMember` resources that target the same membership. When + multiple resources conflict the final state is not guaranteed to include or omit + the membership. Subsequent `pulumi up` calls will always show a diff + until the configuration is corrected. + + For more information see + [the official documentation](https://cloud.google.com/iam/docs/granting-changing-revoking-access) + and + [API reference](https://cloud.google.com/resource-manager/reference/rest/v1/projects/setIamPolicy). + + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[str] member: The IAM principal that should not have the target role. + Each entry can have one of the following values: + * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. + * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. + * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com. + :param pulumi.Input[str] project: The project id of the target project. + :param pulumi.Input[str] role: The target role that should be removed. + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: IamMemberRemoveArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + Ensures that a member:role pairing does not exist in a project's IAM policy. + + On create, this resource will modify the policy to remove the `member` from the + `role`. If the membership is ever re-added, the next refresh will clear this + resource from state, proposing re-adding it to correct the membership. Import is + not supported- this resource will acquire the current policy and modify it as + part of creating the resource. + + This resource will conflict with `projects.IAMPolicy` and + `projects.IAMBinding` resources that share a role, as well as + `projects.IAMMember` resources that target the same membership. When + multiple resources conflict the final state is not guaranteed to include or omit + the membership. Subsequent `pulumi up` calls will always show a diff + until the configuration is corrected. + + For more information see + [the official documentation](https://cloud.google.com/iam/docs/granting-changing-revoking-access) + and + [API reference](https://cloud.google.com/resource-manager/reference/rest/v1/projects/setIamPolicy). + + :param str resource_name: The name of the resource. + :param IamMemberRemoveArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(IamMemberRemoveArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + member: Optional[pulumi.Input[str]] = None, + project: Optional[pulumi.Input[str]] = None, + role: Optional[pulumi.Input[str]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = IamMemberRemoveArgs.__new__(IamMemberRemoveArgs) + + if member is None and not opts.urn: + raise TypeError("Missing required property 'member'") + __props__.__dict__["member"] = member + if project is None and not opts.urn: + raise TypeError("Missing required property 'project'") + __props__.__dict__["project"] = project + if role is None and not opts.urn: + raise TypeError("Missing required property 'role'") + __props__.__dict__["role"] = role + super(IamMemberRemove, __self__).__init__( + 'gcp:projects/iamMemberRemove:IamMemberRemove', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + member: Optional[pulumi.Input[str]] = None, + project: Optional[pulumi.Input[str]] = None, + role: Optional[pulumi.Input[str]] = None) -> 'IamMemberRemove': + """ + Get an existing IamMemberRemove resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[str] member: The IAM principal that should not have the target role. + Each entry can have one of the following values: + * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. + * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. + * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com. + :param pulumi.Input[str] project: The project id of the target project. + :param pulumi.Input[str] role: The target role that should be removed. + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _IamMemberRemoveState.__new__(_IamMemberRemoveState) + + __props__.__dict__["member"] = member + __props__.__dict__["project"] = project + __props__.__dict__["role"] = role + return IamMemberRemove(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter + def member(self) -> pulumi.Output[str]: + """ + The IAM principal that should not have the target role. + Each entry can have one of the following values: + * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. + * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. + * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com. + """ + return pulumi.get(self, "member") + + @property + @pulumi.getter + def project(self) -> pulumi.Output[str]: + """ + The project id of the target project. + """ + return pulumi.get(self, "project") + + @property + @pulumi.getter + def role(self) -> pulumi.Output[str]: + """ + The target role that should be removed. + """ + return pulumi.get(self, "role") + diff --git a/sdk/python/pulumi_gcp/vmwareengine/_inputs.py b/sdk/python/pulumi_gcp/vmwareengine/_inputs.py index 9b7ad39946..3a7fa762ff 100644 --- a/sdk/python/pulumi_gcp/vmwareengine/_inputs.py +++ b/sdk/python/pulumi_gcp/vmwareengine/_inputs.py @@ -19,6 +19,7 @@ 'PrivateCloudHcxArgs', 'PrivateCloudManagementClusterArgs', 'PrivateCloudManagementClusterNodeTypeConfigArgs', + 'PrivateCloudManagementClusterStretchedClusterConfigArgs', 'PrivateCloudNetworkConfigArgs', 'PrivateCloudNsxArgs', 'PrivateCloudVcenterArgs', @@ -370,7 +371,8 @@ def version(self, value: Optional[pulumi.Input[str]]): class PrivateCloudManagementClusterArgs: def __init__(__self__, *, cluster_id: pulumi.Input[str], - node_type_configs: Optional[pulumi.Input[Sequence[pulumi.Input['PrivateCloudManagementClusterNodeTypeConfigArgs']]]] = None): + node_type_configs: Optional[pulumi.Input[Sequence[pulumi.Input['PrivateCloudManagementClusterNodeTypeConfigArgs']]]] = None, + stretched_cluster_config: Optional[pulumi.Input['PrivateCloudManagementClusterStretchedClusterConfigArgs']] = None): """ :param pulumi.Input[str] cluster_id: The user-provided identifier of the new Cluster. The identifier must meet the following requirements: * Only contains 1-63 alphanumeric characters and hyphens @@ -381,10 +383,14 @@ def __init__(__self__, *, :param pulumi.Input[Sequence[pulumi.Input['PrivateCloudManagementClusterNodeTypeConfigArgs']]] node_type_configs: The map of cluster node types in this cluster, where the key is canonical identifier of the node type (corresponds to the NodeType). Structure is documented below. + :param pulumi.Input['PrivateCloudManagementClusterStretchedClusterConfigArgs'] stretched_cluster_config: The stretched cluster configuration for the private cloud. + Structure is documented below. """ pulumi.set(__self__, "cluster_id", cluster_id) if node_type_configs is not None: pulumi.set(__self__, "node_type_configs", node_type_configs) + if stretched_cluster_config is not None: + pulumi.set(__self__, "stretched_cluster_config", stretched_cluster_config) @property @pulumi.getter(name="clusterId") @@ -417,6 +423,19 @@ def node_type_configs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['Priv def node_type_configs(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['PrivateCloudManagementClusterNodeTypeConfigArgs']]]]): pulumi.set(self, "node_type_configs", value) + @property + @pulumi.getter(name="stretchedClusterConfig") + def stretched_cluster_config(self) -> Optional[pulumi.Input['PrivateCloudManagementClusterStretchedClusterConfigArgs']]: + """ + The stretched cluster configuration for the private cloud. + Structure is documented below. + """ + return pulumi.get(self, "stretched_cluster_config") + + @stretched_cluster_config.setter + def stretched_cluster_config(self, value: Optional[pulumi.Input['PrivateCloudManagementClusterStretchedClusterConfigArgs']]): + pulumi.set(self, "stretched_cluster_config", value) + @pulumi.input_type class PrivateCloudManagementClusterNodeTypeConfigArgs: @@ -431,8 +450,6 @@ def __init__(__self__, *, This number must always be one of `nodeType.availableCustomCoreCounts`. If zero is provided max value from `nodeType.availableCustomCoreCounts` will be used. This cannot be changed once the PrivateCloud is created. - - - - - """ pulumi.set(__self__, "node_count", node_count) pulumi.set(__self__, "node_type_id", node_type_id) @@ -471,8 +488,6 @@ def custom_core_count(self) -> Optional[pulumi.Input[int]]: This number must always be one of `nodeType.availableCustomCoreCounts`. If zero is provided max value from `nodeType.availableCustomCoreCounts` will be used. This cannot be changed once the PrivateCloud is created. - - - - - """ return pulumi.get(self, "custom_core_count") @@ -481,6 +496,49 @@ def custom_core_count(self, value: Optional[pulumi.Input[int]]): pulumi.set(self, "custom_core_count", value) +@pulumi.input_type +class PrivateCloudManagementClusterStretchedClusterConfigArgs: + def __init__(__self__, *, + preferred_location: Optional[pulumi.Input[str]] = None, + secondary_location: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] preferred_location: Zone that will remain operational when connection between the two zones is lost. + :param pulumi.Input[str] secondary_location: Additional zone for a higher level of availability and load balancing. + + - - - + """ + if preferred_location is not None: + pulumi.set(__self__, "preferred_location", preferred_location) + if secondary_location is not None: + pulumi.set(__self__, "secondary_location", secondary_location) + + @property + @pulumi.getter(name="preferredLocation") + def preferred_location(self) -> Optional[pulumi.Input[str]]: + """ + Zone that will remain operational when connection between the two zones is lost. + """ + return pulumi.get(self, "preferred_location") + + @preferred_location.setter + def preferred_location(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "preferred_location", value) + + @property + @pulumi.getter(name="secondaryLocation") + def secondary_location(self) -> Optional[pulumi.Input[str]]: + """ + Additional zone for a higher level of availability and load balancing. + + - - - + """ + return pulumi.get(self, "secondary_location") + + @secondary_location.setter + def secondary_location(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "secondary_location", value) + + @pulumi.input_type class PrivateCloudNetworkConfigArgs: def __init__(__self__, *, diff --git a/sdk/python/pulumi_gcp/vmwareengine/get_private_cloud.py b/sdk/python/pulumi_gcp/vmwareengine/get_private_cloud.py index 09e68827b5..9ffb75671f 100644 --- a/sdk/python/pulumi_gcp/vmwareengine/get_private_cloud.py +++ b/sdk/python/pulumi_gcp/vmwareengine/get_private_cloud.py @@ -22,7 +22,7 @@ class GetPrivateCloudResult: """ A collection of values returned by getPrivateCloud. """ - def __init__(__self__, description=None, hcxes=None, id=None, location=None, management_clusters=None, name=None, network_configs=None, nsxes=None, preferred_zone=None, project=None, secondary_zone=None, state=None, type=None, uid=None, vcenters=None): + def __init__(__self__, description=None, hcxes=None, id=None, location=None, management_clusters=None, name=None, network_configs=None, nsxes=None, project=None, state=None, type=None, uid=None, vcenters=None): if description and not isinstance(description, str): raise TypeError("Expected argument 'description' to be a str") pulumi.set(__self__, "description", description) @@ -47,15 +47,9 @@ def __init__(__self__, description=None, hcxes=None, id=None, location=None, man if nsxes and not isinstance(nsxes, list): raise TypeError("Expected argument 'nsxes' to be a list") pulumi.set(__self__, "nsxes", nsxes) - if preferred_zone and not isinstance(preferred_zone, str): - raise TypeError("Expected argument 'preferred_zone' to be a str") - pulumi.set(__self__, "preferred_zone", preferred_zone) if project and not isinstance(project, str): raise TypeError("Expected argument 'project' to be a str") pulumi.set(__self__, "project", project) - if secondary_zone and not isinstance(secondary_zone, str): - raise TypeError("Expected argument 'secondary_zone' to be a str") - pulumi.set(__self__, "secondary_zone", secondary_zone) if state and not isinstance(state, str): raise TypeError("Expected argument 'state' to be a str") pulumi.set(__self__, "state", state) @@ -112,21 +106,11 @@ def network_configs(self) -> Sequence['outputs.GetPrivateCloudNetworkConfigResul def nsxes(self) -> Sequence['outputs.GetPrivateCloudNsxResult']: return pulumi.get(self, "nsxes") - @property - @pulumi.getter(name="preferredZone") - def preferred_zone(self) -> str: - return pulumi.get(self, "preferred_zone") - @property @pulumi.getter def project(self) -> Optional[str]: return pulumi.get(self, "project") - @property - @pulumi.getter(name="secondaryZone") - def secondary_zone(self) -> str: - return pulumi.get(self, "secondary_zone") - @property @pulumi.getter def state(self) -> str: @@ -162,9 +146,7 @@ def __await__(self): name=self.name, network_configs=self.network_configs, nsxes=self.nsxes, - preferred_zone=self.preferred_zone, project=self.project, - secondary_zone=self.secondary_zone, state=self.state, type=self.type, uid=self.uid, @@ -215,9 +197,7 @@ def get_private_cloud(location: Optional[str] = None, name=pulumi.get(__ret__, 'name'), network_configs=pulumi.get(__ret__, 'network_configs'), nsxes=pulumi.get(__ret__, 'nsxes'), - preferred_zone=pulumi.get(__ret__, 'preferred_zone'), project=pulumi.get(__ret__, 'project'), - secondary_zone=pulumi.get(__ret__, 'secondary_zone'), state=pulumi.get(__ret__, 'state'), type=pulumi.get(__ret__, 'type'), uid=pulumi.get(__ret__, 'uid'), diff --git a/sdk/python/pulumi_gcp/vmwareengine/outputs.py b/sdk/python/pulumi_gcp/vmwareengine/outputs.py index cf967f6959..68b72afc25 100644 --- a/sdk/python/pulumi_gcp/vmwareengine/outputs.py +++ b/sdk/python/pulumi_gcp/vmwareengine/outputs.py @@ -20,6 +20,7 @@ 'PrivateCloudHcx', 'PrivateCloudManagementCluster', 'PrivateCloudManagementClusterNodeTypeConfig', + 'PrivateCloudManagementClusterStretchedClusterConfig', 'PrivateCloudNetworkConfig', 'PrivateCloudNsx', 'PrivateCloudVcenter', @@ -33,6 +34,7 @@ 'GetPrivateCloudHcxResult', 'GetPrivateCloudManagementClusterResult', 'GetPrivateCloudManagementClusterNodeTypeConfigResult', + 'GetPrivateCloudManagementClusterStretchedClusterConfigResult', 'GetPrivateCloudNetworkConfigResult', 'GetPrivateCloudNsxResult', 'GetPrivateCloudVcenterResult', @@ -397,6 +399,8 @@ def __key_warning(key: str): suggest = "cluster_id" elif key == "nodeTypeConfigs": suggest = "node_type_configs" + elif key == "stretchedClusterConfig": + suggest = "stretched_cluster_config" if suggest: pulumi.log.warn(f"Key '{key}' not found in PrivateCloudManagementCluster. Access the value via the '{suggest}' property getter instead.") @@ -411,7 +415,8 @@ def get(self, key: str, default = None) -> Any: def __init__(__self__, *, cluster_id: str, - node_type_configs: Optional[Sequence['outputs.PrivateCloudManagementClusterNodeTypeConfig']] = None): + node_type_configs: Optional[Sequence['outputs.PrivateCloudManagementClusterNodeTypeConfig']] = None, + stretched_cluster_config: Optional['outputs.PrivateCloudManagementClusterStretchedClusterConfig'] = None): """ :param str cluster_id: The user-provided identifier of the new Cluster. The identifier must meet the following requirements: * Only contains 1-63 alphanumeric characters and hyphens @@ -422,10 +427,14 @@ def __init__(__self__, *, :param Sequence['PrivateCloudManagementClusterNodeTypeConfigArgs'] node_type_configs: The map of cluster node types in this cluster, where the key is canonical identifier of the node type (corresponds to the NodeType). Structure is documented below. + :param 'PrivateCloudManagementClusterStretchedClusterConfigArgs' stretched_cluster_config: The stretched cluster configuration for the private cloud. + Structure is documented below. """ pulumi.set(__self__, "cluster_id", cluster_id) if node_type_configs is not None: pulumi.set(__self__, "node_type_configs", node_type_configs) + if stretched_cluster_config is not None: + pulumi.set(__self__, "stretched_cluster_config", stretched_cluster_config) @property @pulumi.getter(name="clusterId") @@ -450,6 +459,15 @@ def node_type_configs(self) -> Optional[Sequence['outputs.PrivateCloudManagement """ return pulumi.get(self, "node_type_configs") + @property + @pulumi.getter(name="stretchedClusterConfig") + def stretched_cluster_config(self) -> Optional['outputs.PrivateCloudManagementClusterStretchedClusterConfig']: + """ + The stretched cluster configuration for the private cloud. + Structure is documented below. + """ + return pulumi.get(self, "stretched_cluster_config") + @pulumi.output_type class PrivateCloudManagementClusterNodeTypeConfig(dict): @@ -485,8 +503,6 @@ def __init__(__self__, *, This number must always be one of `nodeType.availableCustomCoreCounts`. If zero is provided max value from `nodeType.availableCustomCoreCounts` will be used. This cannot be changed once the PrivateCloud is created. - - - - - """ pulumi.set(__self__, "node_count", node_count) pulumi.set(__self__, "node_type_id", node_type_id) @@ -517,10 +533,62 @@ def custom_core_count(self) -> Optional[int]: This number must always be one of `nodeType.availableCustomCoreCounts`. If zero is provided max value from `nodeType.availableCustomCoreCounts` will be used. This cannot be changed once the PrivateCloud is created. + """ + return pulumi.get(self, "custom_core_count") + + +@pulumi.output_type +class PrivateCloudManagementClusterStretchedClusterConfig(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "preferredLocation": + suggest = "preferred_location" + elif key == "secondaryLocation": + suggest = "secondary_location" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in PrivateCloudManagementClusterStretchedClusterConfig. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + PrivateCloudManagementClusterStretchedClusterConfig.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + PrivateCloudManagementClusterStretchedClusterConfig.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + preferred_location: Optional[str] = None, + secondary_location: Optional[str] = None): + """ + :param str preferred_location: Zone that will remain operational when connection between the two zones is lost. + :param str secondary_location: Additional zone for a higher level of availability and load balancing. + + - - - + """ + if preferred_location is not None: + pulumi.set(__self__, "preferred_location", preferred_location) + if secondary_location is not None: + pulumi.set(__self__, "secondary_location", secondary_location) + + @property + @pulumi.getter(name="preferredLocation") + def preferred_location(self) -> Optional[str]: + """ + Zone that will remain operational when connection between the two zones is lost. + """ + return pulumi.get(self, "preferred_location") + + @property + @pulumi.getter(name="secondaryLocation") + def secondary_location(self) -> Optional[str]: + """ + Additional zone for a higher level of availability and load balancing. - - - """ - return pulumi.get(self, "custom_core_count") + return pulumi.get(self, "secondary_location") @pulumi.output_type @@ -1082,7 +1150,8 @@ def version(self) -> str: class GetPrivateCloudManagementClusterResult(dict): def __init__(__self__, *, cluster_id: str, - node_type_configs: Sequence['outputs.GetPrivateCloudManagementClusterNodeTypeConfigResult']): + node_type_configs: Sequence['outputs.GetPrivateCloudManagementClusterNodeTypeConfigResult'], + stretched_cluster_configs: Sequence['outputs.GetPrivateCloudManagementClusterStretchedClusterConfigResult']): """ :param str cluster_id: The user-provided identifier of the new Cluster. The identifier must meet the following requirements: * Only contains 1-63 alphanumeric characters and hyphens @@ -1092,9 +1161,11 @@ def __init__(__self__, *, * Complies with RFC 1034 (https://datatracker.ietf.org/doc/html/rfc1034) (section 3.5) :param Sequence['GetPrivateCloudManagementClusterNodeTypeConfigArgs'] node_type_configs: The map of cluster node types in this cluster, where the key is canonical identifier of the node type (corresponds to the NodeType). + :param Sequence['GetPrivateCloudManagementClusterStretchedClusterConfigArgs'] stretched_cluster_configs: The stretched cluster configuration for the private cloud. """ pulumi.set(__self__, "cluster_id", cluster_id) pulumi.set(__self__, "node_type_configs", node_type_configs) + pulumi.set(__self__, "stretched_cluster_configs", stretched_cluster_configs) @property @pulumi.getter(name="clusterId") @@ -1118,6 +1189,14 @@ def node_type_configs(self) -> Sequence['outputs.GetPrivateCloudManagementCluste """ return pulumi.get(self, "node_type_configs") + @property + @pulumi.getter(name="stretchedClusterConfigs") + def stretched_cluster_configs(self) -> Sequence['outputs.GetPrivateCloudManagementClusterStretchedClusterConfigResult']: + """ + The stretched cluster configuration for the private cloud. + """ + return pulumi.get(self, "stretched_cluster_configs") + @pulumi.output_type class GetPrivateCloudManagementClusterNodeTypeConfigResult(dict): @@ -1161,6 +1240,35 @@ def node_type_id(self) -> str: return pulumi.get(self, "node_type_id") +@pulumi.output_type +class GetPrivateCloudManagementClusterStretchedClusterConfigResult(dict): + def __init__(__self__, *, + preferred_location: str, + secondary_location: str): + """ + :param str preferred_location: Zone that will remain operational when connection between the two zones is lost. + :param str secondary_location: Additional zone for a higher level of availability and load balancing. + """ + pulumi.set(__self__, "preferred_location", preferred_location) + pulumi.set(__self__, "secondary_location", secondary_location) + + @property + @pulumi.getter(name="preferredLocation") + def preferred_location(self) -> str: + """ + Zone that will remain operational when connection between the two zones is lost. + """ + return pulumi.get(self, "preferred_location") + + @property + @pulumi.getter(name="secondaryLocation") + def secondary_location(self) -> str: + """ + Additional zone for a higher level of availability and load balancing. + """ + return pulumi.get(self, "secondary_location") + + @pulumi.output_type class GetPrivateCloudNetworkConfigResult(dict): def __init__(__self__, *, diff --git a/sdk/python/pulumi_gcp/vmwareengine/private_cloud.py b/sdk/python/pulumi_gcp/vmwareengine/private_cloud.py index 8306bf9d74..943775a9c7 100644 --- a/sdk/python/pulumi_gcp/vmwareengine/private_cloud.py +++ b/sdk/python/pulumi_gcp/vmwareengine/private_cloud.py @@ -21,9 +21,7 @@ def __init__(__self__, *, network_config: pulumi.Input['PrivateCloudNetworkConfigArgs'], description: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, - preferred_zone: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, - secondary_zone: Optional[pulumi.Input[str]] = None, type: Optional[pulumi.Input[str]] = None): """ The set of arguments for constructing a PrivateCloud resource. @@ -34,8 +32,6 @@ def __init__(__self__, *, Structure is documented below. :param pulumi.Input[str] description: User-provided description for this private cloud. :param pulumi.Input[str] name: The ID of the PrivateCloud. - :param pulumi.Input[str] preferred_zone: The preferred single failure domain within a region. - :param pulumi.Input[str] secondary_zone: The secondary single failure domain within a region. :param pulumi.Input[str] type: Initial type of the private cloud. Possible values: ["STANDARD", "TIME_LIMITED", "STRETCHED"] """ pulumi.set(__self__, "location", location) @@ -45,12 +41,8 @@ def __init__(__self__, *, pulumi.set(__self__, "description", description) if name is not None: pulumi.set(__self__, "name", name) - if preferred_zone is not None: - pulumi.set(__self__, "preferred_zone", preferred_zone) if project is not None: pulumi.set(__self__, "project", project) - if secondary_zone is not None: - pulumi.set(__self__, "secondary_zone", secondary_zone) if type is not None: pulumi.set(__self__, "type", type) @@ -116,18 +108,6 @@ def name(self) -> Optional[pulumi.Input[str]]: def name(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "name", value) - @property - @pulumi.getter(name="preferredZone") - def preferred_zone(self) -> Optional[pulumi.Input[str]]: - """ - The preferred single failure domain within a region. - """ - return pulumi.get(self, "preferred_zone") - - @preferred_zone.setter - def preferred_zone(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "preferred_zone", value) - @property @pulumi.getter def project(self) -> Optional[pulumi.Input[str]]: @@ -137,18 +117,6 @@ def project(self) -> Optional[pulumi.Input[str]]: def project(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "project", value) - @property - @pulumi.getter(name="secondaryZone") - def secondary_zone(self) -> Optional[pulumi.Input[str]]: - """ - The secondary single failure domain within a region. - """ - return pulumi.get(self, "secondary_zone") - - @secondary_zone.setter - def secondary_zone(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "secondary_zone", value) - @property @pulumi.getter def type(self) -> Optional[pulumi.Input[str]]: @@ -172,9 +140,7 @@ def __init__(__self__, *, name: Optional[pulumi.Input[str]] = None, network_config: Optional[pulumi.Input['PrivateCloudNetworkConfigArgs']] = None, nsxes: Optional[pulumi.Input[Sequence[pulumi.Input['PrivateCloudNsxArgs']]]] = None, - preferred_zone: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, - secondary_zone: Optional[pulumi.Input[str]] = None, state: Optional[pulumi.Input[str]] = None, type: Optional[pulumi.Input[str]] = None, uid: Optional[pulumi.Input[str]] = None, @@ -192,8 +158,6 @@ def __init__(__self__, *, Structure is documented below. :param pulumi.Input[Sequence[pulumi.Input['PrivateCloudNsxArgs']]] nsxes: Details about a NSX Manager appliance. Structure is documented below. - :param pulumi.Input[str] preferred_zone: The preferred single failure domain within a region. - :param pulumi.Input[str] secondary_zone: The secondary single failure domain within a region. :param pulumi.Input[str] state: State of the appliance. Possible values are: `ACTIVE`, `CREATING`. :param pulumi.Input[str] type: Initial type of the private cloud. Possible values: ["STANDARD", "TIME_LIMITED", "STRETCHED"] @@ -215,12 +179,8 @@ def __init__(__self__, *, pulumi.set(__self__, "network_config", network_config) if nsxes is not None: pulumi.set(__self__, "nsxes", nsxes) - if preferred_zone is not None: - pulumi.set(__self__, "preferred_zone", preferred_zone) if project is not None: pulumi.set(__self__, "project", project) - if secondary_zone is not None: - pulumi.set(__self__, "secondary_zone", secondary_zone) if state is not None: pulumi.set(__self__, "state", state) if type is not None: @@ -318,18 +278,6 @@ def nsxes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['PrivateCloudNsxA def nsxes(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['PrivateCloudNsxArgs']]]]): pulumi.set(self, "nsxes", value) - @property - @pulumi.getter(name="preferredZone") - def preferred_zone(self) -> Optional[pulumi.Input[str]]: - """ - The preferred single failure domain within a region. - """ - return pulumi.get(self, "preferred_zone") - - @preferred_zone.setter - def preferred_zone(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "preferred_zone", value) - @property @pulumi.getter def project(self) -> Optional[pulumi.Input[str]]: @@ -339,18 +287,6 @@ def project(self) -> Optional[pulumi.Input[str]]: def project(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "project", value) - @property - @pulumi.getter(name="secondaryZone") - def secondary_zone(self) -> Optional[pulumi.Input[str]]: - """ - The secondary single failure domain within a region. - """ - return pulumi.get(self, "secondary_zone") - - @secondary_zone.setter - def secondary_zone(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "secondary_zone", value) - @property @pulumi.getter def state(self) -> Optional[pulumi.Input[str]]: @@ -412,9 +348,7 @@ def __init__(__self__, management_cluster: Optional[pulumi.Input[pulumi.InputType['PrivateCloudManagementClusterArgs']]] = None, name: Optional[pulumi.Input[str]] = None, network_config: Optional[pulumi.Input[pulumi.InputType['PrivateCloudNetworkConfigArgs']]] = None, - preferred_zone: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, - secondary_zone: Optional[pulumi.Input[str]] = None, type: Optional[pulumi.Input[str]] = None, __props__=None): """ @@ -516,8 +450,6 @@ def __init__(__self__, :param pulumi.Input[str] name: The ID of the PrivateCloud. :param pulumi.Input[pulumi.InputType['PrivateCloudNetworkConfigArgs']] network_config: Network configuration in the consumer project with which the peering has to be done. Structure is documented below. - :param pulumi.Input[str] preferred_zone: The preferred single failure domain within a region. - :param pulumi.Input[str] secondary_zone: The secondary single failure domain within a region. :param pulumi.Input[str] type: Initial type of the private cloud. Possible values: ["STANDARD", "TIME_LIMITED", "STRETCHED"] """ ... @@ -636,9 +568,7 @@ def _internal_init(__self__, management_cluster: Optional[pulumi.Input[pulumi.InputType['PrivateCloudManagementClusterArgs']]] = None, name: Optional[pulumi.Input[str]] = None, network_config: Optional[pulumi.Input[pulumi.InputType['PrivateCloudNetworkConfigArgs']]] = None, - preferred_zone: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, - secondary_zone: Optional[pulumi.Input[str]] = None, type: Optional[pulumi.Input[str]] = None, __props__=None): opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) @@ -660,9 +590,7 @@ def _internal_init(__self__, if network_config is None and not opts.urn: raise TypeError("Missing required property 'network_config'") __props__.__dict__["network_config"] = network_config - __props__.__dict__["preferred_zone"] = preferred_zone __props__.__dict__["project"] = project - __props__.__dict__["secondary_zone"] = secondary_zone __props__.__dict__["type"] = type __props__.__dict__["hcxes"] = None __props__.__dict__["nsxes"] = None @@ -686,9 +614,7 @@ def get(resource_name: str, name: Optional[pulumi.Input[str]] = None, network_config: Optional[pulumi.Input[pulumi.InputType['PrivateCloudNetworkConfigArgs']]] = None, nsxes: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['PrivateCloudNsxArgs']]]]] = None, - preferred_zone: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, - secondary_zone: Optional[pulumi.Input[str]] = None, state: Optional[pulumi.Input[str]] = None, type: Optional[pulumi.Input[str]] = None, uid: Optional[pulumi.Input[str]] = None, @@ -711,8 +637,6 @@ def get(resource_name: str, Structure is documented below. :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['PrivateCloudNsxArgs']]]] nsxes: Details about a NSX Manager appliance. Structure is documented below. - :param pulumi.Input[str] preferred_zone: The preferred single failure domain within a region. - :param pulumi.Input[str] secondary_zone: The secondary single failure domain within a region. :param pulumi.Input[str] state: State of the appliance. Possible values are: `ACTIVE`, `CREATING`. :param pulumi.Input[str] type: Initial type of the private cloud. Possible values: ["STANDARD", "TIME_LIMITED", "STRETCHED"] @@ -731,9 +655,7 @@ def get(resource_name: str, __props__.__dict__["name"] = name __props__.__dict__["network_config"] = network_config __props__.__dict__["nsxes"] = nsxes - __props__.__dict__["preferred_zone"] = preferred_zone __props__.__dict__["project"] = project - __props__.__dict__["secondary_zone"] = secondary_zone __props__.__dict__["state"] = state __props__.__dict__["type"] = type __props__.__dict__["uid"] = uid @@ -800,27 +722,11 @@ def nsxes(self) -> pulumi.Output[Sequence['outputs.PrivateCloudNsx']]: """ return pulumi.get(self, "nsxes") - @property - @pulumi.getter(name="preferredZone") - def preferred_zone(self) -> pulumi.Output[Optional[str]]: - """ - The preferred single failure domain within a region. - """ - return pulumi.get(self, "preferred_zone") - @property @pulumi.getter def project(self) -> pulumi.Output[str]: return pulumi.get(self, "project") - @property - @pulumi.getter(name="secondaryZone") - def secondary_zone(self) -> pulumi.Output[Optional[str]]: - """ - The secondary single failure domain within a region. - """ - return pulumi.get(self, "secondary_zone") - @property @pulumi.getter def state(self) -> pulumi.Output[str]: diff --git a/sdk/python/pulumi_gcp/workbench/instance.py b/sdk/python/pulumi_gcp/workbench/instance.py index b8cee5b8ed..88980f9201 100644 --- a/sdk/python/pulumi_gcp/workbench/instance.py +++ b/sdk/python/pulumi_gcp/workbench/instance.py @@ -596,8 +596,8 @@ def __init__(__self__, core_count="1", )], vm_image=gcp.workbench.InstanceGceSetupVmImageArgs( - project="deeplearning-platform-release", - family="tf-latest-gpu", + project="cloud-notebooks-managed", + family="workbench-instances", ), )) ``` @@ -796,8 +796,8 @@ def __init__(__self__, core_count="1", )], vm_image=gcp.workbench.InstanceGceSetupVmImageArgs( - project="deeplearning-platform-release", - family="tf-latest-gpu", + project="cloud-notebooks-managed", + family="workbench-instances", ), )) ``` diff --git a/sdk/python/pulumi_gcp/workstations/workstation_cluster.py b/sdk/python/pulumi_gcp/workstations/workstation_cluster.py index 4b9c1ffdc2..4f19d4f7fa 100644 --- a/sdk/python/pulumi_gcp/workstations/workstation_cluster.py +++ b/sdk/python/pulumi_gcp/workstations/workstation_cluster.py @@ -207,6 +207,7 @@ class _WorkstationClusterState: def __init__(__self__, *, annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, conditions: Optional[pulumi.Input[Sequence[pulumi.Input['WorkstationClusterConditionArgs']]]] = None, + control_plane_ip: Optional[pulumi.Input[str]] = None, create_time: Optional[pulumi.Input[str]] = None, degraded: Optional[pulumi.Input[bool]] = None, display_name: Optional[pulumi.Input[str]] = None, @@ -231,6 +232,8 @@ def __init__(__self__, *, Please refer to the field `effective_annotations` for all of the annotations present on the resource. :param pulumi.Input[Sequence[pulumi.Input['WorkstationClusterConditionArgs']]] conditions: Status conditions describing the current resource state. Structure is documented below. + :param pulumi.Input[str] control_plane_ip: The private IP address of the control plane for this workstation cluster. + Workstation VMs need access to this IP address to work with the service, so make sure that your firewall rules allow egress from the workstation VMs to this address. :param pulumi.Input[str] create_time: Time when this resource was created. :param pulumi.Input[bool] degraded: Whether this resource is in degraded mode, in which case it may require user action to restore full functionality. Details can be found in the conditions field. @@ -267,6 +270,8 @@ def __init__(__self__, *, pulumi.set(__self__, "annotations", annotations) if conditions is not None: pulumi.set(__self__, "conditions", conditions) + if control_plane_ip is not None: + pulumi.set(__self__, "control_plane_ip", control_plane_ip) if create_time is not None: pulumi.set(__self__, "create_time", create_time) if degraded is not None: @@ -329,6 +334,19 @@ def conditions(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['Workstation def conditions(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['WorkstationClusterConditionArgs']]]]): pulumi.set(self, "conditions", value) + @property + @pulumi.getter(name="controlPlaneIp") + def control_plane_ip(self) -> Optional[pulumi.Input[str]]: + """ + The private IP address of the control plane for this workstation cluster. + Workstation VMs need access to this IP address to work with the service, so make sure that your firewall rules allow egress from the workstation VMs to this address. + """ + return pulumi.get(self, "control_plane_ip") + + @control_plane_ip.setter + def control_plane_ip(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "control_plane_ip", value) + @property @pulumi.getter(name="createTime") def create_time(self) -> Optional[pulumi.Input[str]]: @@ -882,6 +900,7 @@ def _internal_init(__self__, raise TypeError("Missing required property 'workstation_cluster_id'") __props__.__dict__["workstation_cluster_id"] = workstation_cluster_id __props__.__dict__["conditions"] = None + __props__.__dict__["control_plane_ip"] = None __props__.__dict__["create_time"] = None __props__.__dict__["degraded"] = None __props__.__dict__["effective_annotations"] = None @@ -904,6 +923,7 @@ def get(resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, conditions: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['WorkstationClusterConditionArgs']]]]] = None, + control_plane_ip: Optional[pulumi.Input[str]] = None, create_time: Optional[pulumi.Input[str]] = None, degraded: Optional[pulumi.Input[bool]] = None, display_name: Optional[pulumi.Input[str]] = None, @@ -933,6 +953,8 @@ def get(resource_name: str, Please refer to the field `effective_annotations` for all of the annotations present on the resource. :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['WorkstationClusterConditionArgs']]]] conditions: Status conditions describing the current resource state. Structure is documented below. + :param pulumi.Input[str] control_plane_ip: The private IP address of the control plane for this workstation cluster. + Workstation VMs need access to this IP address to work with the service, so make sure that your firewall rules allow egress from the workstation VMs to this address. :param pulumi.Input[str] create_time: Time when this resource was created. :param pulumi.Input[bool] degraded: Whether this resource is in degraded mode, in which case it may require user action to restore full functionality. Details can be found in the conditions field. @@ -971,6 +993,7 @@ def get(resource_name: str, __props__.__dict__["annotations"] = annotations __props__.__dict__["conditions"] = conditions + __props__.__dict__["control_plane_ip"] = control_plane_ip __props__.__dict__["create_time"] = create_time __props__.__dict__["degraded"] = degraded __props__.__dict__["display_name"] = display_name @@ -1009,6 +1032,15 @@ def conditions(self) -> pulumi.Output[Sequence['outputs.WorkstationClusterCondit """ return pulumi.get(self, "conditions") + @property + @pulumi.getter(name="controlPlaneIp") + def control_plane_ip(self) -> pulumi.Output[str]: + """ + The private IP address of the control plane for this workstation cluster. + Workstation VMs need access to this IP address to work with the service, so make sure that your firewall rules allow egress from the workstation VMs to this address. + """ + return pulumi.get(self, "control_plane_ip") + @property @pulumi.getter(name="createTime") def create_time(self) -> pulumi.Output[str]: diff --git a/upstream b/upstream index 8dbb92190f..72fd37ddbd 160000 --- a/upstream +++ b/upstream @@ -1 +1 @@ -Subproject commit 8dbb92190f2e6627544acc0856d4512918c8a785 +Subproject commit 72fd37ddbdfd7d1766dfa2ad08c033e64cbd6155