From 5b24856a4ea3ce8cda9a5b5d7c4107707dffe8ac Mon Sep 17 00:00:00 2001 From: Paul Stack Date: Fri, 17 Jun 2022 12:10:46 +0300 Subject: [PATCH] Upgrade to v4.25.0 of the Google Beta Terraform Provider (#833) --- provider/cmd/pulumi-resource-gcp/schema.json | 412 ++++++++++++++++-- provider/go.mod | 23 +- provider/go.sum | 144 +----- .../TableExternalDataConfigurationArgs.cs | 9 + .../TableExternalDataConfigurationGetArgs.cs | 9 + .../Outputs/TableExternalDataConfiguration.cs | 10 + sdk/dotnet/CloudDeploy/DeliveryPipeline.cs | 2 +- sdk/dotnet/CloudDeploy/Target.cs | 2 +- sdk/dotnet/CloudFunctionsV2/Function.cs | 10 + .../Inputs/FunctionEventTriggerArgs.cs | 1 - .../Inputs/FunctionEventTriggerGetArgs.cs | 1 - .../Inputs/FunctionServiceConfigArgs.cs | 1 - .../Inputs/FunctionServiceConfigGetArgs.cs | 1 - .../Outputs/FunctionEventTrigger.cs | 1 - .../Outputs/FunctionServiceConfig.cs | 1 - sdk/dotnet/Compute/BackendService.cs | 36 ++ ...ckendServiceCdnPolicyCacheKeyPolicyArgs.cs | 12 + ...ndServiceCdnPolicyCacheKeyPolicyGetArgs.cs | 12 + ...ckendServiceCdnPolicyCacheKeyPolicyArgs.cs | 12 + ...ndServiceCdnPolicyCacheKeyPolicyGetArgs.cs | 12 + ...SecurityPolicyAdvancedOptionsConfigArgs.cs | 35 ++ ...urityPolicyAdvancedOptionsConfigGetArgs.cs | 35 ++ sdk/dotnet/Compute/InstanceGroup.cs | 15 +- sdk/dotnet/Compute/Network.cs | 51 +++ .../BackendServiceCdnPolicyCacheKeyPolicy.cs | 7 + ...endServiceCdnPolicyCacheKeyPolicyResult.cs | 4 + ...onBackendServiceCdnPolicyCacheKeyPolicy.cs | 7 + .../SecurityPolicyAdvancedOptionsConfig.cs | 39 ++ sdk/dotnet/Compute/SecurityPolicy.cs | 18 + sdk/dotnet/Compute/Subnetwork.cs | 33 +- .../Inputs/ClusterLoggingConfigArgs.cs | 2 +- .../Inputs/ClusterLoggingConfigGetArgs.cs | 2 +- .../Inputs/ClusterMonitoringConfigArgs.cs | 10 +- .../Inputs/ClusterMonitoringConfigGetArgs.cs | 10 +- ...erMonitoringConfigManagedPrometheusArgs.cs | 26 ++ ...onitoringConfigManagedPrometheusGetArgs.cs | 26 ++ .../Container/Inputs/ClusterNodeConfigArgs.cs | 8 +- .../Inputs/ClusterNodeConfigGetArgs.cs | 8 +- .../Inputs/ClusterNodePoolNodeConfigArgs.cs | 8 +- .../ClusterNodePoolNodeConfigGetArgs.cs | 8 +- .../Container/Outputs/ClusterLoggingConfig.cs | 2 +- .../Outputs/ClusterMonitoringConfig.cs | 12 +- ...lusterMonitoringConfigManagedPrometheus.cs | 28 ++ .../Container/Outputs/ClusterNodeConfig.cs | 8 +- .../Outputs/ClusterNodePoolNodeConfig.cs | 8 +- ...MonitoringConfigManagedPrometheusResult.cs | 24 + .../GetClusterMonitoringConfigResult.cs | 7 +- sdk/dotnet/Dns/ManagedZone.cs | 24 + sdk/dotnet/GkeHub/Feature.cs | 21 + ...embershipConfigmanagementConfigSyncArgs.cs | 6 + ...ershipConfigmanagementConfigSyncGetArgs.cs | 6 + ...ureMembershipConfigmanagementConfigSync.cs | 7 + sdk/dotnet/Monitoring/CustomService.cs | 50 +++ sdk/dotnet/Monitoring/GetAppEngineService.cs | 6 +- .../Monitoring/GetClusterIstioService.cs | 6 +- .../Monitoring/GetIstioCanonicalService.cs | 6 +- sdk/dotnet/Monitoring/GetMeshIstioService.cs | 6 +- .../UptimeCheckConfigContentMatcherArgs.cs | 9 +- .../UptimeCheckConfigContentMatcherGetArgs.cs | 9 +- ...ConfigContentMatcherJsonPathMatcherArgs.cs | 33 ++ ...figContentMatcherJsonPathMatcherGetArgs.cs | 33 ++ .../UptimeCheckConfigContentMatcher.cs | 10 +- ...heckConfigContentMatcherJsonPathMatcher.cs | 37 ++ sdk/dotnet/Monitoring/Slo.cs | 47 ++ sdk/dotnet/Monitoring/UptimeCheckConfig.cs | 20 +- .../Inputs/UserSqlServerUserDetailsArgs.cs | 30 ++ .../Inputs/UserSqlServerUserDetailsGetArgs.cs | 30 ++ .../Sql/Outputs/UserSqlServerUserDetails.cs | 29 ++ sdk/dotnet/Sql/User.cs | 9 + sdk/go/gcp/bigquery/pulumiTypes.go | 31 ++ sdk/go/gcp/clouddeploy/deliveryPipeline.go | 2 +- sdk/go/gcp/clouddeploy/target.go | 2 +- sdk/go/gcp/cloudfunctionsv2/function.go | 18 +- sdk/go/gcp/cloudfunctionsv2/pulumiTypes.go | 8 - sdk/go/gcp/compute/backendService.go | 37 ++ sdk/go/gcp/compute/instanceGroup.go | 30 +- sdk/go/gcp/compute/network.go | 60 +++ sdk/go/gcp/compute/pulumiTypes.go | 220 ++++++++++ sdk/go/gcp/compute/securityPolicy.go | 15 + sdk/go/gcp/compute/subnetwork.go | 45 +- sdk/go/gcp/container/pulumiTypes.go | 346 +++++++++++++-- sdk/go/gcp/dns/managedZone.go | 22 + sdk/go/gcp/gkehub/feature.go | 22 + sdk/go/gcp/gkehub/pulumiTypes.go | 19 + sdk/go/gcp/monitoring/customService.go | 49 +++ sdk/go/gcp/monitoring/getAppEngineService.go | 5 + .../gcp/monitoring/getClusterIstioService.go | 5 + .../monitoring/getIstioCanonicalService.go | 5 + sdk/go/gcp/monitoring/getMeshIstioService.go | 5 + sdk/go/gcp/monitoring/pulumiTypes.go | 188 +++++++- sdk/go/gcp/monitoring/slo.go | 43 ++ sdk/go/gcp/monitoring/uptimeCheckConfig.go | 28 +- sdk/go/gcp/sql/pulumiTypes.go | 152 +++++++ sdk/go/gcp/sql/user.go | 19 +- sdk/nodejs/clouddeploy/deliveryPipeline.ts | 2 +- sdk/nodejs/clouddeploy/target.ts | 2 +- sdk/nodejs/cloudfunctionsv2/function.ts | 8 + sdk/nodejs/compute/backendService.ts | 25 ++ sdk/nodejs/compute/instanceGroup.ts | 15 +- sdk/nodejs/compute/network.ts | 43 ++ sdk/nodejs/compute/securityPolicy.ts | 14 + sdk/nodejs/compute/subnetwork.ts | 24 +- sdk/nodejs/dns/managedZone.ts | 20 + sdk/nodejs/gkehub/feature.ts | 10 + sdk/nodejs/monitoring/customService.ts | 33 ++ sdk/nodejs/monitoring/getAppEngineService.ts | 1 + .../monitoring/getClusterIstioService.ts | 1 + .../monitoring/getIstioCanonicalService.ts | 1 + sdk/nodejs/monitoring/getMeshIstioService.ts | 1 + sdk/nodejs/monitoring/slo.ts | 30 ++ sdk/nodejs/monitoring/uptimeCheckConfig.ts | 18 +- sdk/nodejs/sql/user.ts | 6 + sdk/nodejs/types/input.ts | 95 +++- sdk/nodejs/types/output.ts | 102 ++++- sdk/python/pulumi_gcp/bigquery/_inputs.py | 22 + sdk/python/pulumi_gcp/bigquery/outputs.py | 20 + .../clouddeploy/delivery_pipeline.py | 4 +- sdk/python/pulumi_gcp/clouddeploy/target.py | 4 +- .../pulumi_gcp/cloudfunctionsv2/_inputs.py | 8 +- .../pulumi_gcp/cloudfunctionsv2/function.py | 12 + .../pulumi_gcp/cloudfunctionsv2/outputs.py | 8 +- sdk/python/pulumi_gcp/compute/_inputs.py | 80 ++++ .../pulumi_gcp/compute/backend_service.py | 48 ++ .../pulumi_gcp/compute/instance_group.py | 35 +- sdk/python/pulumi_gcp/compute/network.py | 129 ++++++ sdk/python/pulumi_gcp/compute/outputs.py | 94 ++++ .../pulumi_gcp/compute/security_policy.py | 47 ++ sdk/python/pulumi_gcp/compute/subnetwork.py | 46 +- sdk/python/pulumi_gcp/container/_inputs.py | 86 ++-- sdk/python/pulumi_gcp/container/outputs.py | 100 +++-- sdk/python/pulumi_gcp/dns/managed_zone.py | 56 +++ sdk/python/pulumi_gcp/gkehub/_inputs.py | 16 + sdk/python/pulumi_gcp/gkehub/feature.py | 18 + sdk/python/pulumi_gcp/gkehub/outputs.py | 16 +- sdk/python/pulumi_gcp/monitoring/_inputs.py | 65 ++- .../pulumi_gcp/monitoring/custom_service.py | 100 ++++- .../monitoring/get_app_engine_service.py | 16 +- .../monitoring/get_cluster_istio_service.py | 16 +- .../monitoring/get_istio_canonical_service.py | 16 +- .../monitoring/get_mesh_istio_service.py | 16 +- sdk/python/pulumi_gcp/monitoring/outputs.py | 89 +++- sdk/python/pulumi_gcp/monitoring/slo.py | 87 +++- .../monitoring/uptime_check_config.py | 38 +- sdk/python/pulumi_gcp/sql/_inputs.py | 30 ++ sdk/python/pulumi_gcp/sql/outputs.py | 39 ++ sdk/python/pulumi_gcp/sql/user.py | 36 ++ 146 files changed, 4282 insertions(+), 528 deletions(-) create mode 100644 sdk/dotnet/Compute/Inputs/SecurityPolicyAdvancedOptionsConfigArgs.cs create mode 100644 sdk/dotnet/Compute/Inputs/SecurityPolicyAdvancedOptionsConfigGetArgs.cs create mode 100644 sdk/dotnet/Compute/Outputs/SecurityPolicyAdvancedOptionsConfig.cs create mode 100644 sdk/dotnet/Container/Inputs/ClusterMonitoringConfigManagedPrometheusArgs.cs create mode 100644 sdk/dotnet/Container/Inputs/ClusterMonitoringConfigManagedPrometheusGetArgs.cs create mode 100644 sdk/dotnet/Container/Outputs/ClusterMonitoringConfigManagedPrometheus.cs create mode 100644 sdk/dotnet/Container/Outputs/GetClusterMonitoringConfigManagedPrometheusResult.cs create mode 100644 sdk/dotnet/Monitoring/Inputs/UptimeCheckConfigContentMatcherJsonPathMatcherArgs.cs create mode 100644 sdk/dotnet/Monitoring/Inputs/UptimeCheckConfigContentMatcherJsonPathMatcherGetArgs.cs create mode 100644 sdk/dotnet/Monitoring/Outputs/UptimeCheckConfigContentMatcherJsonPathMatcher.cs create mode 100644 sdk/dotnet/Sql/Inputs/UserSqlServerUserDetailsArgs.cs create mode 100644 sdk/dotnet/Sql/Inputs/UserSqlServerUserDetailsGetArgs.cs create mode 100644 sdk/dotnet/Sql/Outputs/UserSqlServerUserDetails.cs diff --git a/provider/cmd/pulumi-resource-gcp/schema.json b/provider/cmd/pulumi-resource-gcp/schema.json index c7b3c6ab2e..1956fa3f04 100644 --- a/provider/cmd/pulumi-resource-gcp/schema.json +++ b/provider/cmd/pulumi-resource-gcp/schema.json @@ -7049,6 +7049,15 @@ } } }, + "connectionId": { + "type": "string", + "description": "The connection specifying the credentials to be used to read\nexternal storage, such as Azure Blob, Cloud Storage, or S3. The `connection_id` can have\nthe form `{{project}}.{{location}}.{{connection_id}}`\nor `projects/{{project}}/locations/{{location}}/connections/{{connection_id}}`.\n", + "language": { + "python": { + "mapCase": false + } + } + }, "csvOptions": { "$ref": "#/types/gcp:bigquery/TableExternalDataConfigurationCsvOptions:TableExternalDataConfigurationCsvOptions", "description": "Additional properties to set if\n`source_format` is set to \"CSV\". Structure is documented below.\n", @@ -15500,7 +15509,7 @@ }, "serviceAccountEmail": { "type": "string", - "description": "-\nThe email of the service account for this function.\n", + "description": "The email of the service account for this function.\n", "language": { "python": { "mapCase": false @@ -15615,7 +15624,7 @@ }, "serviceAccountEmail": { "type": "string", - "description": "-\nThe email of the service account for this function.\n", + "description": "The email of the service account for this function.\n", "language": { "python": { "mapCase": false @@ -21783,6 +21792,18 @@ } } }, + "includeNamedCookies": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Names of cookies to include in cache keys.\n", + "language": { + "python": { + "mapCase": false + } + } + }, "includeProtocol": { "type": "boolean", "description": "If true, http and https requests will be cached separately.\n", @@ -28346,6 +28367,18 @@ } } }, + "includeNamedCookies": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Names of cookies to include in cache keys.\n", + "language": { + "python": { + "mapCase": false + } + } + }, "includeProtocol": { "type": "boolean", "description": "If true, http and https requests will be cached separately.\n", @@ -33295,6 +33328,37 @@ }, "type": "object" }, + "gcp:compute/SecurityPolicyAdvancedOptionsConfig:SecurityPolicyAdvancedOptionsConfig": { + "properties": { + "jsonParsing": { + "type": "string", + "description": "Whether or not to JSON parse the payload body. Defaults to `DISABLED`.\n* DISABLED - Don't parse JSON payloads in POST bodies.\n* STANDARD - Parse JSON payloads in POST bodies.\n", + "language": { + "python": { + "mapCase": false + } + } + }, + "logLevel": { + "type": "string", + "description": "Log level to use. Defaults to `NORMAL`.\n* NORMAL - Normal log level.\n* VERBOSE - Verbose log level.\n", + "language": { + "python": { + "mapCase": false + } + } + } + }, + "type": "object", + "language": { + "nodejs": { + "requiredOutputs": [ + "jsonParsing", + "logLevel" + ] + } + } + }, "gcp:compute/SecurityPolicyRule:SecurityPolicyRule": { "properties": { "action": { @@ -37793,6 +37857,17 @@ } } }, + "includeNamedCookies": { + "type": "array", + "items": { + "type": "string" + }, + "language": { + "python": { + "mapCase": false + } + } + }, "includeProtocol": { "type": "boolean", "language": { @@ -37835,6 +37910,7 @@ "type": "object", "required": [ "includeHost", + "includeNamedCookies", "includeProtocol", "includeQueryString", "queryStringBlacklists", @@ -44022,7 +44098,7 @@ "items": { "type": "string" }, - "description": "The GKE components exposing logs. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported.\n", + "description": "The GKE components exposing metrics. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. (`WORKLOADS` is deprecated and removed in GKE 1.24.)\n", "language": { "python": { "mapCase": false @@ -44315,7 +44391,38 @@ "items": { "type": "string" }, - "description": "The GKE components exposing logs. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported.\n", + "description": "The GKE components exposing metrics. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. (`WORKLOADS` is deprecated and removed in GKE 1.24.)\n", + "language": { + "python": { + "mapCase": false + } + } + }, + "managedPrometheus": { + "$ref": "#/types/gcp:container/ClusterMonitoringConfigManagedPrometheus:ClusterMonitoringConfigManagedPrometheus", + "description": "Configuration for Managed Service for Prometheus. Structure is documented below.\n", + "language": { + "python": { + "mapCase": false + } + } + } + }, + "type": "object", + "language": { + "nodejs": { + "requiredOutputs": [ + "enableComponents", + "managedPrometheus" + ] + } + } + }, + "gcp:container/ClusterMonitoringConfigManagedPrometheus:ClusterMonitoringConfigManagedPrometheus": { + "properties": { + "enabled": { + "type": "boolean", + "description": "Enable the PodSecurityPolicy controller for this cluster.\nIf enabled, pods must be valid under a PodSecurityPolicy to be created.\n", "language": { "python": { "mapCase": false @@ -44325,7 +44432,7 @@ }, "type": "object", "required": [ - "enableComponents" + "enabled" ] }, "gcp:container/ClusterNetworkPolicy:ClusterNetworkPolicy": { @@ -44547,7 +44654,6 @@ }, "sandboxConfig": { "$ref": "#/types/gcp:container/ClusterNodeConfigSandboxConfig:ClusterNodeConfigSandboxConfig", - "description": "[GKE Sandbox](https://cloud.google.com/kubernetes-engine/docs/how-to/sandbox-pods) configuration. When enabling this feature you must specify `image_type = \"COS_CONTAINERD\"` and `node_version = \"1.12.7-gke.17\"` or later to use it.\nStructure is documented below.\n", "language": { "python": { "mapCase": false @@ -44577,7 +44683,7 @@ }, "spot": { "type": "boolean", - "description": ") A boolean\nthat represents whether the underlying node VMs are spot. See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms)\nfor more information. Defaults to false.\n", + "description": "A boolean that represents whether the underlying node VMs are spot.\nSee the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms)\nfor more information. Defaults to false.\n", "language": { "python": { "mapCase": false @@ -45339,7 +45445,6 @@ }, "sandboxConfig": { "$ref": "#/types/gcp:container/ClusterNodePoolNodeConfigSandboxConfig:ClusterNodePoolNodeConfigSandboxConfig", - "description": "[GKE Sandbox](https://cloud.google.com/kubernetes-engine/docs/how-to/sandbox-pods) configuration. When enabling this feature you must specify `image_type = \"COS_CONTAINERD\"` and `node_version = \"1.12.7-gke.17\"` or later to use it.\nStructure is documented below.\n", "language": { "python": { "mapCase": false @@ -45369,7 +45474,7 @@ }, "spot": { "type": "boolean", - "description": ") A boolean\nthat represents whether the underlying node VMs are spot. See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms)\nfor more information. Defaults to false.\n", + "description": "A boolean that represents whether the underlying node VMs are spot.\nSee the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms)\nfor more information. Defaults to false.\n", "language": { "python": { "mapCase": false @@ -47726,11 +47831,44 @@ "mapCase": false } } + }, + "managedPrometheuses": { + "type": "array", + "items": { + "$ref": "#/types/gcp:container/getClusterMonitoringConfigManagedPrometheus:getClusterMonitoringConfigManagedPrometheus" + }, + "language": { + "python": { + "mapCase": false + } + } } }, "type": "object", "required": [ - "enableComponents" + "enableComponents", + "managedPrometheuses" + ], + "language": { + "nodejs": { + "requiredInputs": [] + } + } + }, + "gcp:container/getClusterMonitoringConfigManagedPrometheus:getClusterMonitoringConfigManagedPrometheus": { + "properties": { + "enabled": { + "type": "boolean", + "language": { + "python": { + "mapCase": false + } + } + } + }, + "type": "object", + "required": [ + "enabled" ], "language": { "nodejs": { @@ -61519,6 +61657,15 @@ } } }, + "preventDrift": { + "type": "boolean", + "description": "Supported from ACM versions 1.10.0 onwards. Set to true to enable the Config Sync admission webhook to prevent drifts. If set to \"false\", disables the Config Sync admission webhook and does not prevent drifts.\n", + "language": { + "python": { + "mapCase": false + } + } + }, "sourceFormat": { "type": "string", "description": "Specifies whether the Config Sync Repo is in \"hierarchical\" or \"unstructured\" mode.\n", @@ -61529,7 +61676,14 @@ } } }, - "type": "object" + "type": "object", + "language": { + "nodejs": { + "requiredOutputs": [ + "preventDrift" + ] + } + } }, "gcp:gkehub/FeatureMembershipConfigmanagementConfigSyncGit:FeatureMembershipConfigmanagementConfigSyncGit": { "properties": { @@ -66273,9 +66427,18 @@ } } }, + "jsonPathMatcher": { + "$ref": "#/types/gcp:monitoring/UptimeCheckConfigContentMatcherJsonPathMatcher:UptimeCheckConfigContentMatcherJsonPathMatcher", + "description": "Information needed to perform a JSONPath content match. Used for `ContentMatcherOption::MATCHES_JSON_PATH` and `ContentMatcherOption::NOT_MATCHES_JSON_PATH`.\nStructure is documented below.\n", + "language": { + "python": { + "mapCase": false + } + } + }, "matcher": { "type": "string", - "description": "The type of content matcher that will be applied to the server output, compared to the content string when the check is run.\nDefault value is `CONTAINS_STRING`.\nPossible values are `CONTAINS_STRING`, `NOT_CONTAINS_STRING`, `MATCHES_REGEX`, and `NOT_MATCHES_REGEX`.\n", + "description": "The type of content matcher that will be applied to the server output, compared to the content string when the check is run.\nDefault value is `CONTAINS_STRING`.\nPossible values are `CONTAINS_STRING`, `NOT_CONTAINS_STRING`, `MATCHES_REGEX`, `NOT_MATCHES_REGEX`, `MATCHES_JSON_PATH`, and `NOT_MATCHES_JSON_PATH`.\n", "language": { "python": { "mapCase": false @@ -66288,6 +66451,32 @@ "content" ] }, + "gcp:monitoring/UptimeCheckConfigContentMatcherJsonPathMatcher:UptimeCheckConfigContentMatcherJsonPathMatcher": { + "properties": { + "jsonMatcher": { + "type": "string", + "description": "Options to perform JSONPath content matching.\nDefault value is `EXACT_MATCH`.\nPossible values are `EXACT_MATCH` and `REGEX_MATCH`.\n", + "language": { + "python": { + "mapCase": false + } + } + }, + "jsonPath": { + "type": "string", + "description": "JSONPath within the response output pointing to the expected `ContentMatcher::content` to match against.\n", + "language": { + "python": { + "mapCase": false + } + } + } + }, + "type": "object", + "required": [ + "jsonPath" + ] + }, "gcp:monitoring/UptimeCheckConfigHttpCheck:UptimeCheckConfigHttpCheck": { "properties": { "authInfo": { @@ -77245,6 +77434,30 @@ }, "type": "object" }, + "gcp:sql/UserSqlServerUserDetails:UserSqlServerUserDetails": { + "properties": { + "disabled": { + "type": "boolean", + "language": { + "python": { + "mapCase": false + } + } + }, + "serverRoles": { + "type": "array", + "items": { + "type": "string" + }, + "language": { + "python": { + "mapCase": false + } + } + } + }, + "type": "object" + }, "gcp:sql/getCaCertsCert:getCaCertsCert": { "properties": { "cert": { @@ -93100,7 +93313,7 @@ } }, "gcp:clouddeploy/deliveryPipeline:DeliveryPipeline": { - "description": "The Clouddeploy DeliveryPipeline resource\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Delivery_pipeline\nCreates a basic Cloud Deploy delivery pipeline\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.DeliveryPipeline(\"primary\", {\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n description: \"basic description\",\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n location: \"us-west1\",\n project: \"my-project-name\",\n serialPipeline: {\n stages: [\n {\n profiles: [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n targetId: \"example-target-one\",\n },\n {\n profiles: [],\n targetId: \"example-target-two\",\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.DeliveryPipeline(\"primary\",\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n description=\"basic description\",\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-2\",\n },\n location=\"us-west1\",\n project=\"my-project-name\",\n serial_pipeline=gcp.clouddeploy.DeliveryPipelineSerialPipelineArgs(\n stages=[\n gcp.clouddeploy.DeliveryPipelineSerialPipelineStageArgs(\n profiles=[\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n target_id=\"example-target-one\",\n ),\n gcp.clouddeploy.DeliveryPipelineSerialPipelineStageArgs(\n profiles=[],\n target_id=\"example-target-two\",\n ),\n ],\n ))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var primary = new Gcp.CloudDeploy.DeliveryPipeline(\"primary\", new Gcp.CloudDeploy.DeliveryPipelineArgs\n {\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Description = \"basic description\",\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n Location = \"us-west1\",\n Project = \"my-project-name\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = \n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n Profiles = \n {\n \"example-profile-one\",\n \"example-profile-two\",\n },\n TargetId = \"example-target-one\",\n },\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n Profiles = {},\n TargetId = \"example-target-two\",\n },\n },\n },\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/clouddeploy\"\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 := clouddeploy.NewDeliveryPipeline(ctx, \"primary\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-2\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tProfiles: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-one\"),\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-one\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tProfiles: pulumi.StringArray{},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-two\"),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 primary = new DeliveryPipeline(\"primary\", DeliveryPipelineArgs.builder() \n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .description(\"basic description\")\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .location(\"us-west1\")\n .project(\"my-project-name\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages( \n DeliveryPipelineSerialPipelineStageArgs.builder()\n .profiles( \n \"example-profile-one\",\n \"example-profile-two\")\n .targetId(\"example-target-one\")\n .build(),\n DeliveryPipelineSerialPipelineStageArgs.builder()\n .profiles()\n .targetId(\"example-target-two\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n description: basic description\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n location: us-west1\n project: my-project-name\n serialPipeline:\n stages:\n - profiles:\n - example-profile-one\n - example-profile-two\n targetId: example-target-one\n - profiles: []\n targetId: example-target-two\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nDeliveryPipeline can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:clouddeploy/deliveryPipeline:DeliveryPipeline default projects/{{project}}/locations/{{location}}/deliveryPipelines/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:clouddeploy/deliveryPipeline:DeliveryPipeline default {{project}}/{{location}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:clouddeploy/deliveryPipeline:DeliveryPipeline default {{location}}/{{name}}\n```\n\n ", + "description": "The Cloud Deploy `DeliveryPipeline` resource\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Delivery_pipeline\nCreates a basic Cloud Deploy delivery pipeline\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.DeliveryPipeline(\"primary\", {\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n description: \"basic description\",\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n location: \"us-west1\",\n project: \"my-project-name\",\n serialPipeline: {\n stages: [\n {\n profiles: [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n targetId: \"example-target-one\",\n },\n {\n profiles: [],\n targetId: \"example-target-two\",\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.DeliveryPipeline(\"primary\",\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n description=\"basic description\",\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-2\",\n },\n location=\"us-west1\",\n project=\"my-project-name\",\n serial_pipeline=gcp.clouddeploy.DeliveryPipelineSerialPipelineArgs(\n stages=[\n gcp.clouddeploy.DeliveryPipelineSerialPipelineStageArgs(\n profiles=[\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n target_id=\"example-target-one\",\n ),\n gcp.clouddeploy.DeliveryPipelineSerialPipelineStageArgs(\n profiles=[],\n target_id=\"example-target-two\",\n ),\n ],\n ))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var primary = new Gcp.CloudDeploy.DeliveryPipeline(\"primary\", new Gcp.CloudDeploy.DeliveryPipelineArgs\n {\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Description = \"basic description\",\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n Location = \"us-west1\",\n Project = \"my-project-name\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = \n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n Profiles = \n {\n \"example-profile-one\",\n \"example-profile-two\",\n },\n TargetId = \"example-target-one\",\n },\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n Profiles = {},\n TargetId = \"example-target-two\",\n },\n },\n },\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/clouddeploy\"\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 := clouddeploy.NewDeliveryPipeline(ctx, \"primary\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-2\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tProfiles: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-one\"),\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-one\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tProfiles: pulumi.StringArray{},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-two\"),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 primary = new DeliveryPipeline(\"primary\", DeliveryPipelineArgs.builder() \n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .description(\"basic description\")\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .location(\"us-west1\")\n .project(\"my-project-name\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages( \n DeliveryPipelineSerialPipelineStageArgs.builder()\n .profiles( \n \"example-profile-one\",\n \"example-profile-two\")\n .targetId(\"example-target-one\")\n .build(),\n DeliveryPipelineSerialPipelineStageArgs.builder()\n .profiles()\n .targetId(\"example-target-two\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n description: basic description\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n location: us-west1\n project: my-project-name\n serialPipeline:\n stages:\n - profiles:\n - example-profile-one\n - example-profile-two\n targetId: example-target-one\n - profiles: []\n targetId: example-target-two\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nDeliveryPipeline can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:clouddeploy/deliveryPipeline:DeliveryPipeline default projects/{{project}}/locations/{{location}}/deliveryPipelines/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:clouddeploy/deliveryPipeline:DeliveryPipeline default {{project}}/{{location}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:clouddeploy/deliveryPipeline:DeliveryPipeline default {{location}}/{{name}}\n```\n\n ", "properties": { "annotations": { "type": "object", @@ -93280,7 +93493,7 @@ } }, "gcp:clouddeploy/target:Target": { - "description": "The Clouddeploy Target resource\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Target\nCreates a basic Cloud Deploy target\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.Target(\"primary\", {\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n description: \"basic description\",\n gke: {\n cluster: \"projects/my-project-name/locations/us-west1/clusters/example-cluster-name\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n location: \"us-west1\",\n project: \"my-project-name\",\n requireApproval: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.Target(\"primary\",\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n description=\"basic description\",\n gke=gcp.clouddeploy.TargetGkeArgs(\n cluster=\"projects/my-project-name/locations/us-west1/clusters/example-cluster-name\",\n ),\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-2\",\n },\n location=\"us-west1\",\n project=\"my-project-name\",\n require_approval=False)\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var primary = new Gcp.CloudDeploy.Target(\"primary\", new Gcp.CloudDeploy.TargetArgs\n {\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Description = \"basic description\",\n Gke = new Gcp.CloudDeploy.Inputs.TargetGkeArgs\n {\n Cluster = \"projects/my-project-name/locations/us-west1/clusters/example-cluster-name\",\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n Location = \"us-west1\",\n Project = \"my-project-name\",\n RequireApproval = false,\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/clouddeploy\"\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 := clouddeploy.NewTarget(ctx, \"primary\", \u0026clouddeploy.TargetArgs{\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tGke: \u0026clouddeploy.TargetGkeArgs{\n\t\t\t\tCluster: pulumi.String(\"projects/my-project-name/locations/us-west1/clusters/example-cluster-name\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-2\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRequireApproval: pulumi.Bool(false),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 primary = new Target(\"primary\", TargetArgs.builder() \n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .description(\"basic description\")\n .gke(TargetGkeArgs.builder()\n .cluster(\"projects/my-project-name/locations/us-west1/clusters/example-cluster-name\")\n .build())\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .location(\"us-west1\")\n .project(\"my-project-name\")\n .requireApproval(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:Target\n properties:\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n description: basic description\n gke:\n cluster: projects/my-project-name/locations/us-west1/clusters/example-cluster-name\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n location: us-west1\n project: my-project-name\n requireApproval: false\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nTarget can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:clouddeploy/target:Target default projects/{{project}}/locations/{{location}}/targets/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:clouddeploy/target:Target default {{project}}/{{location}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:clouddeploy/target:Target default {{location}}/{{name}}\n```\n\n ", + "description": "The Cloud Deploy `Target` resource\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Target\nCreates a basic Cloud Deploy target\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.Target(\"primary\", {\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n description: \"basic description\",\n gke: {\n cluster: \"projects/my-project-name/locations/us-west1/clusters/example-cluster-name\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n location: \"us-west1\",\n project: \"my-project-name\",\n requireApproval: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.Target(\"primary\",\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n description=\"basic description\",\n gke=gcp.clouddeploy.TargetGkeArgs(\n cluster=\"projects/my-project-name/locations/us-west1/clusters/example-cluster-name\",\n ),\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-2\",\n },\n location=\"us-west1\",\n project=\"my-project-name\",\n require_approval=False)\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var primary = new Gcp.CloudDeploy.Target(\"primary\", new Gcp.CloudDeploy.TargetArgs\n {\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Description = \"basic description\",\n Gke = new Gcp.CloudDeploy.Inputs.TargetGkeArgs\n {\n Cluster = \"projects/my-project-name/locations/us-west1/clusters/example-cluster-name\",\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n Location = \"us-west1\",\n Project = \"my-project-name\",\n RequireApproval = false,\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/clouddeploy\"\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 := clouddeploy.NewTarget(ctx, \"primary\", \u0026clouddeploy.TargetArgs{\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tGke: \u0026clouddeploy.TargetGkeArgs{\n\t\t\t\tCluster: pulumi.String(\"projects/my-project-name/locations/us-west1/clusters/example-cluster-name\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-2\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRequireApproval: pulumi.Bool(false),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 primary = new Target(\"primary\", TargetArgs.builder() \n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .description(\"basic description\")\n .gke(TargetGkeArgs.builder()\n .cluster(\"projects/my-project-name/locations/us-west1/clusters/example-cluster-name\")\n .build())\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .location(\"us-west1\")\n .project(\"my-project-name\")\n .requireApproval(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:Target\n properties:\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n description: basic description\n gke:\n cluster: projects/my-project-name/locations/us-west1/clusters/example-cluster-name\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n location: us-west1\n project: my-project-name\n requireApproval: false\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nTarget can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:clouddeploy/target:Target default projects/{{project}}/locations/{{location}}/targets/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:clouddeploy/target:Target default {{project}}/{{location}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:clouddeploy/target:Target default {{location}}/{{name}}\n```\n\n ", "properties": { "annotations": { "type": "object", @@ -94249,7 +94462,7 @@ } }, "gcp:cloudfunctionsv2/function:Function": { - "description": "{{% examples %}}\n## Example Usage\n{{% example %}}\n### Cloudfunctions2 Basic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n location: \"US\",\n uniformBucketLevelAccess: true,\n}, {\n provider: google_beta,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"path/to/index.zip\"),\n}, {\n provider: google_beta,\n});\nconst terraform_test2 = new gcp.cloudfunctionsv2.Function(\"terraform-test2\", {\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}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\",\n location=\"US\",\n uniform_bucket_level_access=True,\n opts=pulumi.ResourceOptions(provider=google_beta))\nobject = gcp.storage.BucketObject(\"object\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"path/to/index.zip\"),\n opts=pulumi.ResourceOptions(provider=google_beta))\nterraform_test2 = gcp.cloudfunctionsv2.Function(\"terraform-test2\",\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 ),\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new Gcp.Storage.BucketArgs\n {\n Location = \"US\",\n UniformBucketLevelAccess = true,\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n var @object = new Gcp.Storage.BucketObject(\"object\", new Gcp.Storage.BucketObjectArgs\n {\n Bucket = bucket.Name,\n Source = new FileAsset(\"path/to/index.zip\"),\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n var terraform_test2 = new Gcp.CloudFunctionsV2.Function(\"terraform-test2\", new Gcp.CloudFunctionsV2.FunctionArgs\n {\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 }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/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\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t}, pulumi.Provider(google_beta))\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\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"path/to/index.zip\"),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"terraform-test2\", \u0026cloudfunctionsv2.FunctionArgs{\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}, pulumi.Provider(google_beta))\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\nimport com.pulumi.resources.CustomResourceOptions;\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 bucket = new Bucket(\"bucket\", BucketArgs.builder() \n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .bucket(bucket.name())\n .source(new FileAsset(\"path/to/index.zip\"))\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var terraform_test2 = new Function(\"terraform-test2\", FunctionArgs.builder() \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(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n location: US\n uniformBucketLevelAccess: true\n options:\n provider: ${[\"google-beta\"]}\n object:\n type: gcp:storage:BucketObject\n properties:\n bucket: ${bucket.name}\n source:\n Fn::FileAsset: path/to/index.zip\n options:\n provider: ${[\"google-beta\"]}\n terraform-test2:\n type: gcp:cloudfunctionsv2:Function\n properties:\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 options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% example %}}\n### Cloudfunctions2 Full\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sub = new gcp.pubsub.Topic(\"sub\", {}, {\n provider: google_beta,\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n location: \"US\",\n uniformBucketLevelAccess: true,\n}, {\n provider: google_beta,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"path/to/index.zip\"),\n}, {\n provider: google_beta,\n});\nconst terraform_test = new gcp.cloudfunctionsv2.Function(\"terraform-test\", {\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\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: \"256M\",\n timeoutSeconds: 60,\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n },\n eventTrigger: {\n triggerRegion: \"us-central1\",\n eventType: \"google.cloud.pubsub.topic.v1.messagePublished\",\n pubsubTopic: sub.id,\n retryPolicy: \"RETRY_POLICY_RETRY\",\n },\n}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsub = gcp.pubsub.Topic(\"sub\", opts=pulumi.ResourceOptions(provider=google_beta))\nbucket = gcp.storage.Bucket(\"bucket\",\n location=\"US\",\n uniform_bucket_level_access=True,\n opts=pulumi.ResourceOptions(provider=google_beta))\nobject = gcp.storage.BucketObject(\"object\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"path/to/index.zip\"),\n opts=pulumi.ResourceOptions(provider=google_beta))\nterraform_test = gcp.cloudfunctionsv2.Function(\"terraform-test\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config=gcp.cloudfunctionsv2.FunctionBuildConfigArgs(\n runtime=\"nodejs16\",\n entry_point=\"helloHttp\",\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=\"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 ),\n event_trigger=gcp.cloudfunctionsv2.FunctionEventTriggerArgs(\n trigger_region=\"us-central1\",\n event_type=\"google.cloud.pubsub.topic.v1.messagePublished\",\n pubsub_topic=sub.id,\n retry_policy=\"RETRY_POLICY_RETRY\",\n ),\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var sub = new Gcp.PubSub.Topic(\"sub\", new Gcp.PubSub.TopicArgs\n {\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new Gcp.Storage.BucketArgs\n {\n Location = \"US\",\n UniformBucketLevelAccess = true,\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n var @object = new Gcp.Storage.BucketObject(\"object\", new Gcp.Storage.BucketObjectArgs\n {\n Bucket = bucket.Name,\n Source = new FileAsset(\"path/to/index.zip\"),\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n var terraform_test = new Gcp.CloudFunctionsV2.Function(\"terraform-test\", new Gcp.CloudFunctionsV2.FunctionArgs\n {\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\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 = \"256M\",\n TimeoutSeconds = 60,\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n TriggerRegion = \"us-central1\",\n EventType = \"google.cloud.pubsub.topic.v1.messagePublished\",\n PubsubTopic = sub.Id,\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n },\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/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\tsub, err := pubsub.NewTopic(ctx, \"sub\", nil, pulumi.Provider(google_beta))\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\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t}, pulumi.Provider(google_beta))\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\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"path/to/index.zip\"),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"terraform-test\", \u0026cloudfunctionsv2.FunctionArgs{\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\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(\"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},\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: sub.ID(),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\n\t\t\t},\n\t\t}, pulumi.Provider(google_beta))\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\nimport com.pulumi.resources.CustomResourceOptions;\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 sub = new Topic(\"sub\", TopicArgs.Empty, CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder() \n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .bucket(bucket.name())\n .source(new FileAsset(\"path/to/index.zip\"))\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var terraform_test = new Function(\"terraform-test\", FunctionArgs.builder() \n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\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(\"256M\")\n .timeoutSeconds(60)\n .environmentVariables(Map.of(\"SERVICE_CONFIG_TEST\", \"config_test\"))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .triggerRegion(\"us-central1\")\n .eventType(\"google.cloud.pubsub.topic.v1.messagePublished\")\n .pubsubTopic(sub.id())\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sub:\n type: gcp:pubsub:Topic\n options:\n provider: ${[\"google-beta\"]}\n bucket:\n type: gcp:storage:Bucket\n properties:\n location: US\n uniformBucketLevelAccess: true\n options:\n provider: ${[\"google-beta\"]}\n object:\n type: gcp:storage:BucketObject\n properties:\n bucket: ${bucket.name}\n source:\n Fn::FileAsset: path/to/index.zip\n options:\n provider: ${[\"google-beta\"]}\n terraform-test:\n type: gcp:cloudfunctionsv2:Function\n properties:\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\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: 256M\n timeoutSeconds: 60\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n eventTrigger:\n triggerRegion: us-central1\n eventType: google.cloud.pubsub.topic.v1.messagePublished\n pubsubTopic: ${sub.id}\n retryPolicy: RETRY_POLICY_RETRY\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nfunction can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:cloudfunctionsv2/function:Function default projects/{{project}}/locations/{{location}}/functions/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:cloudfunctionsv2/function:Function default {{project}}/{{location}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:cloudfunctionsv2/function:Function default {{location}}/{{name}}\n```\n\n ", + "description": "{{% examples %}}\n## Example Usage\n{{% example %}}\n### Cloudfunctions2 Basic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n location: \"US\",\n uniformBucketLevelAccess: true,\n}, {\n provider: google_beta,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"path/to/index.zip\"),\n}, {\n provider: google_beta,\n});\nconst terraform_test2 = new gcp.cloudfunctionsv2.Function(\"terraform-test2\", {\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}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\",\n location=\"US\",\n uniform_bucket_level_access=True,\n opts=pulumi.ResourceOptions(provider=google_beta))\nobject = gcp.storage.BucketObject(\"object\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"path/to/index.zip\"),\n opts=pulumi.ResourceOptions(provider=google_beta))\nterraform_test2 = gcp.cloudfunctionsv2.Function(\"terraform-test2\",\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 ),\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new Gcp.Storage.BucketArgs\n {\n Location = \"US\",\n UniformBucketLevelAccess = true,\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n var @object = new Gcp.Storage.BucketObject(\"object\", new Gcp.Storage.BucketObjectArgs\n {\n Bucket = bucket.Name,\n Source = new FileAsset(\"path/to/index.zip\"),\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n var terraform_test2 = new Gcp.CloudFunctionsV2.Function(\"terraform-test2\", new Gcp.CloudFunctionsV2.FunctionArgs\n {\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 }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/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\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t}, pulumi.Provider(google_beta))\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\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"path/to/index.zip\"),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"terraform-test2\", \u0026cloudfunctionsv2.FunctionArgs{\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}, pulumi.Provider(google_beta))\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\nimport com.pulumi.resources.CustomResourceOptions;\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 bucket = new Bucket(\"bucket\", BucketArgs.builder() \n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .bucket(bucket.name())\n .source(new FileAsset(\"path/to/index.zip\"))\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var terraform_test2 = new Function(\"terraform-test2\", FunctionArgs.builder() \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(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n location: US\n uniformBucketLevelAccess: true\n options:\n provider: ${[\"google-beta\"]}\n object:\n type: gcp:storage:BucketObject\n properties:\n bucket: ${bucket.name}\n source:\n Fn::FileAsset: path/to/index.zip\n options:\n provider: ${[\"google-beta\"]}\n terraform-test2:\n type: gcp:cloudfunctionsv2:Function\n properties:\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 options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% example %}}\n### Cloudfunctions2 Full\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"test-service-account\",\n displayName: \"Test Service Account\",\n}, {\n provider: google_beta,\n});\nconst sub = new gcp.pubsub.Topic(\"sub\", {}, {\n provider: google_beta,\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n location: \"US\",\n uniformBucketLevelAccess: true,\n}, {\n provider: google_beta,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"path/to/index.zip\"),\n}, {\n provider: google_beta,\n});\nconst terraform_test = new gcp.cloudfunctionsv2.Function(\"terraform-test\", {\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\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: \"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.pubsub.topic.v1.messagePublished\",\n pubsubTopic: sub.id,\n retryPolicy: \"RETRY_POLICY_RETRY\",\n serviceAccountEmail: account.email,\n },\n}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccount = gcp.service_account.Account(\"account\",\n account_id=\"test-service-account\",\n display_name=\"Test Service Account\",\n opts=pulumi.ResourceOptions(provider=google_beta))\nsub = gcp.pubsub.Topic(\"sub\", opts=pulumi.ResourceOptions(provider=google_beta))\nbucket = gcp.storage.Bucket(\"bucket\",\n location=\"US\",\n uniform_bucket_level_access=True,\n opts=pulumi.ResourceOptions(provider=google_beta))\nobject = gcp.storage.BucketObject(\"object\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"path/to/index.zip\"),\n opts=pulumi.ResourceOptions(provider=google_beta))\nterraform_test = gcp.cloudfunctionsv2.Function(\"terraform-test\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config=gcp.cloudfunctionsv2.FunctionBuildConfigArgs(\n runtime=\"nodejs16\",\n entry_point=\"helloHttp\",\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=\"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.pubsub.topic.v1.messagePublished\",\n pubsub_topic=sub.id,\n retry_policy=\"RETRY_POLICY_RETRY\",\n service_account_email=account.email,\n ),\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var account = new Gcp.ServiceAccount.Account(\"account\", new Gcp.ServiceAccount.AccountArgs\n {\n AccountId = \"test-service-account\",\n DisplayName = \"Test Service Account\",\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n var sub = new Gcp.PubSub.Topic(\"sub\", new Gcp.PubSub.TopicArgs\n {\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new Gcp.Storage.BucketArgs\n {\n Location = \"US\",\n UniformBucketLevelAccess = true,\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n var @object = new Gcp.Storage.BucketObject(\"object\", new Gcp.Storage.BucketObjectArgs\n {\n Bucket = bucket.Name,\n Source = new FileAsset(\"path/to/index.zip\"),\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n var terraform_test = new Gcp.CloudFunctionsV2.Function(\"terraform-test\", new Gcp.CloudFunctionsV2.FunctionArgs\n {\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\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 = \"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.pubsub.topic.v1.messagePublished\",\n PubsubTopic = sub.Id,\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n ServiceAccountEmail = account.Email,\n },\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/serviceAccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/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\taccount, err := serviceAccount.NewAccount(ctx, \"account\", \u0026serviceAccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"test-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account\"),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsub, err := pubsub.NewTopic(ctx, \"sub\", nil, pulumi.Provider(google_beta))\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\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t}, pulumi.Provider(google_beta))\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\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"path/to/index.zip\"),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"terraform-test\", \u0026cloudfunctionsv2.FunctionArgs{\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\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(\"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.pubsub.topic.v1.messagePublished\"),\n\t\t\t\tPubsubTopic: sub.ID(),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t}, pulumi.Provider(google_beta))\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\nimport com.pulumi.resources.CustomResourceOptions;\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 account = new Account(\"account\", AccountArgs.builder() \n .accountId(\"test-service-account\")\n .displayName(\"Test Service Account\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var sub = new Topic(\"sub\", TopicArgs.Empty, CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder() \n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .bucket(bucket.name())\n .source(new FileAsset(\"path/to/index.zip\"))\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var terraform_test = new Function(\"terraform-test\", FunctionArgs.builder() \n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\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(\"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.pubsub.topic.v1.messagePublished\")\n .pubsubTopic(sub.id())\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .serviceAccountEmail(account.email())\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceAccount:Account\n properties:\n accountId: test-service-account\n displayName: Test Service Account\n options:\n provider: ${[\"google-beta\"]}\n sub:\n type: gcp:pubsub:Topic\n options:\n provider: ${[\"google-beta\"]}\n bucket:\n type: gcp:storage:Bucket\n properties:\n location: US\n uniformBucketLevelAccess: true\n options:\n provider: ${[\"google-beta\"]}\n object:\n type: gcp:storage:BucketObject\n properties:\n bucket: ${bucket.name}\n source:\n Fn::FileAsset: path/to/index.zip\n options:\n provider: ${[\"google-beta\"]}\n terraform-test:\n type: gcp:cloudfunctionsv2:Function\n properties:\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\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: 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.pubsub.topic.v1.messagePublished\n pubsubTopic: ${sub.id}\n retryPolicy: RETRY_POLICY_RETRY\n serviceAccountEmail: ${account.email}\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nfunction can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:cloudfunctionsv2/function:Function default projects/{{project}}/locations/{{location}}/functions/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:cloudfunctionsv2/function:Function default {{project}}/{{location}}/{{name}}\n```\n\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", @@ -96426,7 +96639,7 @@ } }, "gcp:compute/backendService:BackendService": { - "description": "A Backend Service defines a group of virtual machines that will serve\ntraffic for load balancing. This resource is a global backend service,\nappropriate for external load balancing or self-managed internal load balancing.\nFor managed internal load balancing, use a regional backend service instead.\n\nCurrently self-managed internal load balancing is only available in beta.\n\n\nTo get more information about BackendService, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/v1/backendServices)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/load-balancing/http/backend-service)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Backend Service Basic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"defaultHttpHealthCheck\", {\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"defaultBackendService\", {healthChecks: [defaultHttpHealthCheck.id]});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"defaultHttpHealthCheck\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault_backend_service = gcp.compute.BackendService(\"defaultBackendService\", health_checks=[default_http_health_check.id])\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"defaultHttpHealthCheck\", new Gcp.Compute.HttpHealthCheckArgs\n {\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n var defaultBackendService = new Gcp.Compute.BackendService(\"defaultBackendService\", new Gcp.Compute.BackendServiceArgs\n {\n HealthChecks = \n {\n defaultHttpHealthCheck.Id,\n },\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"defaultHttpHealthCheck\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"defaultBackendService\", \u0026compute.BackendServiceArgs{\n\t\t\tHealthChecks: pulumi.String{\n\t\t\t\tdefaultHttpHealthCheck.ID(),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder() \n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder() \n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n defaultBackendService:\n type: gcp:compute:BackendService\n properties:\n healthChecks:\n - ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n properties:\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n{{% /example %}}\n{{% example %}}\n### Backend Service Cache Simple\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"defaultHttpHealthCheck\", {\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"defaultBackendService\", {\n healthChecks: [defaultHttpHealthCheck.id],\n enableCdn: true,\n cdnPolicy: {\n signedUrlCacheMaxAgeSec: 7200,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"defaultHttpHealthCheck\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault_backend_service = gcp.compute.BackendService(\"defaultBackendService\",\n health_checks=[default_http_health_check.id],\n enable_cdn=True,\n cdn_policy=gcp.compute.BackendServiceCdnPolicyArgs(\n signed_url_cache_max_age_sec=7200,\n ))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"defaultHttpHealthCheck\", new Gcp.Compute.HttpHealthCheckArgs\n {\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n var defaultBackendService = new Gcp.Compute.BackendService(\"defaultBackendService\", new Gcp.Compute.BackendServiceArgs\n {\n HealthChecks = \n {\n defaultHttpHealthCheck.Id,\n },\n EnableCdn = true,\n CdnPolicy = new Gcp.Compute.Inputs.BackendServiceCdnPolicyArgs\n {\n SignedUrlCacheMaxAgeSec = 7200,\n },\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"defaultHttpHealthCheck\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"defaultBackendService\", \u0026compute.BackendServiceArgs{\n\t\t\tHealthChecks: pulumi.String{\n\t\t\t\tdefaultHttpHealthCheck.ID(),\n\t\t\t},\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t\tCdnPolicy: \u0026compute.BackendServiceCdnPolicyArgs{\n\t\t\t\tSignedUrlCacheMaxAgeSec: pulumi.Int(7200),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder() \n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder() \n .healthChecks(defaultHttpHealthCheck.id())\n .enableCdn(true)\n .cdnPolicy(BackendServiceCdnPolicyArgs.builder()\n .signedUrlCacheMaxAgeSec(7200)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n defaultBackendService:\n type: gcp:compute:BackendService\n properties:\n healthChecks:\n - ${defaultHttpHealthCheck.id}\n enableCdn: true\n cdnPolicy:\n signedUrlCacheMaxAgeSec: 7200\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n properties:\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n{{% /example %}}\n{{% example %}}\n### Backend Service Cache\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"defaultHttpHealthCheck\", {\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"defaultBackendService\", {\n healthChecks: [defaultHttpHealthCheck.id],\n enableCdn: true,\n cdnPolicy: {\n cacheMode: \"CACHE_ALL_STATIC\",\n defaultTtl: 3600,\n clientTtl: 7200,\n maxTtl: 10800,\n negativeCaching: true,\n signedUrlCacheMaxAgeSec: 7200,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"defaultHttpHealthCheck\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault_backend_service = gcp.compute.BackendService(\"defaultBackendService\",\n health_checks=[default_http_health_check.id],\n enable_cdn=True,\n cdn_policy=gcp.compute.BackendServiceCdnPolicyArgs(\n cache_mode=\"CACHE_ALL_STATIC\",\n default_ttl=3600,\n client_ttl=7200,\n max_ttl=10800,\n negative_caching=True,\n signed_url_cache_max_age_sec=7200,\n ))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"defaultHttpHealthCheck\", new Gcp.Compute.HttpHealthCheckArgs\n {\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n var defaultBackendService = new Gcp.Compute.BackendService(\"defaultBackendService\", new Gcp.Compute.BackendServiceArgs\n {\n HealthChecks = \n {\n defaultHttpHealthCheck.Id,\n },\n EnableCdn = true,\n CdnPolicy = new Gcp.Compute.Inputs.BackendServiceCdnPolicyArgs\n {\n CacheMode = \"CACHE_ALL_STATIC\",\n DefaultTtl = 3600,\n ClientTtl = 7200,\n MaxTtl = 10800,\n NegativeCaching = true,\n SignedUrlCacheMaxAgeSec = 7200,\n },\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"defaultHttpHealthCheck\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"defaultBackendService\", \u0026compute.BackendServiceArgs{\n\t\t\tHealthChecks: pulumi.String{\n\t\t\t\tdefaultHttpHealthCheck.ID(),\n\t\t\t},\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t\tCdnPolicy: \u0026compute.BackendServiceCdnPolicyArgs{\n\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\tDefaultTtl: pulumi.Int(3600),\n\t\t\t\tClientTtl: pulumi.Int(7200),\n\t\t\t\tMaxTtl: pulumi.Int(10800),\n\t\t\t\tNegativeCaching: pulumi.Bool(true),\n\t\t\t\tSignedUrlCacheMaxAgeSec: pulumi.Int(7200),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder() \n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder() \n .healthChecks(defaultHttpHealthCheck.id())\n .enableCdn(true)\n .cdnPolicy(BackendServiceCdnPolicyArgs.builder()\n .cacheMode(\"CACHE_ALL_STATIC\")\n .defaultTtl(3600)\n .clientTtl(7200)\n .maxTtl(10800)\n .negativeCaching(true)\n .signedUrlCacheMaxAgeSec(7200)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n defaultBackendService:\n type: gcp:compute:BackendService\n properties:\n healthChecks:\n - ${defaultHttpHealthCheck.id}\n enableCdn: true\n cdnPolicy:\n cacheMode: CACHE_ALL_STATIC\n defaultTtl: 3600\n clientTtl: 7200\n maxTtl: 10800\n negativeCaching: true\n signedUrlCacheMaxAgeSec: 7200\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n properties:\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n{{% /example %}}\n{{% example %}}\n### Backend Service Traffic Director Round Robin\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst healthCheck = new gcp.compute.HealthCheck(\"healthCheck\", {httpHealthCheck: {\n port: 80,\n}}, {\n provider: google_beta,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n healthChecks: [healthCheck.id],\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n localityLbPolicy: \"ROUND_ROBIN\",\n}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhealth_check = gcp.compute.HealthCheck(\"healthCheck\", http_health_check=gcp.compute.HealthCheckHttpHealthCheckArgs(\n port=80,\n),\nopts=pulumi.ResourceOptions(provider=google_beta))\ndefault = gcp.compute.BackendService(\"default\",\n health_checks=[health_check.id],\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\",\n locality_lb_policy=\"ROUND_ROBIN\",\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var healthCheck = new Gcp.Compute.HealthCheck(\"healthCheck\", new Gcp.Compute.HealthCheckArgs\n {\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n var @default = new Gcp.Compute.BackendService(\"default\", new Gcp.Compute.BackendServiceArgs\n {\n HealthChecks = \n {\n healthCheck.Id,\n },\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n LocalityLbPolicy = \"ROUND_ROBIN\",\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\thealthCheck, err := compute.NewHealthCheck(ctx, \"healthCheck\", \u0026compute.HealthCheckArgs{\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tHealthChecks: pulumi.String{\n\t\t\t\thealthCheck.ID(),\n\t\t\t},\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t\tLocalityLbPolicy: pulumi.String(\"ROUND_ROBIN\"),\n\t\t}, pulumi.Provider(google_beta))\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\nimport com.pulumi.resources.CustomResourceOptions;\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 healthCheck = new HealthCheck(\"healthCheck\", HealthCheckArgs.builder() \n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder() \n .healthChecks(healthCheck.id())\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .localityLbPolicy(\"ROUND_ROBIN\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n healthChecks:\n - ${healthCheck.id}\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n localityLbPolicy: ROUND_ROBIN\n options:\n provider: ${[\"google-beta\"]}\n healthCheck:\n type: gcp:compute:HealthCheck\n properties:\n httpHealthCheck:\n port: 80\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% example %}}\n### Backend Service Traffic Director Ring Hash\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst healthCheck = new gcp.compute.HealthCheck(\"healthCheck\", {httpHealthCheck: {\n port: 80,\n}}, {\n provider: google_beta,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n healthChecks: [healthCheck.id],\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n localityLbPolicy: \"RING_HASH\",\n sessionAffinity: \"HTTP_COOKIE\",\n circuitBreakers: {\n maxConnections: 10,\n },\n consistentHash: {\n httpCookie: {\n ttl: {\n seconds: 11,\n nanos: 1111,\n },\n name: \"mycookie\",\n },\n },\n outlierDetection: {\n consecutiveErrors: 2,\n },\n}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhealth_check = gcp.compute.HealthCheck(\"healthCheck\", http_health_check=gcp.compute.HealthCheckHttpHealthCheckArgs(\n port=80,\n),\nopts=pulumi.ResourceOptions(provider=google_beta))\ndefault = gcp.compute.BackendService(\"default\",\n health_checks=[health_check.id],\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\",\n locality_lb_policy=\"RING_HASH\",\n session_affinity=\"HTTP_COOKIE\",\n circuit_breakers=gcp.compute.BackendServiceCircuitBreakersArgs(\n max_connections=10,\n ),\n consistent_hash=gcp.compute.BackendServiceConsistentHashArgs(\n http_cookie=gcp.compute.BackendServiceConsistentHashHttpCookieArgs(\n ttl=gcp.compute.BackendServiceConsistentHashHttpCookieTtlArgs(\n seconds=11,\n nanos=1111,\n ),\n name=\"mycookie\",\n ),\n ),\n outlier_detection=gcp.compute.BackendServiceOutlierDetectionArgs(\n consecutive_errors=2,\n ),\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var healthCheck = new Gcp.Compute.HealthCheck(\"healthCheck\", new Gcp.Compute.HealthCheckArgs\n {\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n var @default = new Gcp.Compute.BackendService(\"default\", new Gcp.Compute.BackendServiceArgs\n {\n HealthChecks = \n {\n healthCheck.Id,\n },\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n LocalityLbPolicy = \"RING_HASH\",\n SessionAffinity = \"HTTP_COOKIE\",\n CircuitBreakers = new Gcp.Compute.Inputs.BackendServiceCircuitBreakersArgs\n {\n MaxConnections = 10,\n },\n ConsistentHash = new Gcp.Compute.Inputs.BackendServiceConsistentHashArgs\n {\n HttpCookie = new Gcp.Compute.Inputs.BackendServiceConsistentHashHttpCookieArgs\n {\n Ttl = new Gcp.Compute.Inputs.BackendServiceConsistentHashHttpCookieTtlArgs\n {\n Seconds = 11,\n Nanos = 1111,\n },\n Name = \"mycookie\",\n },\n },\n OutlierDetection = new Gcp.Compute.Inputs.BackendServiceOutlierDetectionArgs\n {\n ConsecutiveErrors = 2,\n },\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\thealthCheck, err := compute.NewHealthCheck(ctx, \"healthCheck\", \u0026compute.HealthCheckArgs{\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tHealthChecks: pulumi.String{\n\t\t\t\thealthCheck.ID(),\n\t\t\t},\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t\tLocalityLbPolicy: pulumi.String(\"RING_HASH\"),\n\t\t\tSessionAffinity: pulumi.String(\"HTTP_COOKIE\"),\n\t\t\tCircuitBreakers: \u0026compute.BackendServiceCircuitBreakersArgs{\n\t\t\t\tMaxConnections: pulumi.Int(10),\n\t\t\t},\n\t\t\tConsistentHash: \u0026compute.BackendServiceConsistentHashArgs{\n\t\t\t\tHttpCookie: \u0026compute.BackendServiceConsistentHashHttpCookieArgs{\n\t\t\t\t\tTtl: \u0026compute.BackendServiceConsistentHashHttpCookieTtlArgs{\n\t\t\t\t\t\tSeconds: pulumi.Int(11),\n\t\t\t\t\t\tNanos: pulumi.Int(1111),\n\t\t\t\t\t},\n\t\t\t\t\tName: pulumi.String(\"mycookie\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tOutlierDetection: \u0026compute.BackendServiceOutlierDetectionArgs{\n\t\t\t\tConsecutiveErrors: pulumi.Int(2),\n\t\t\t},\n\t\t}, pulumi.Provider(google_beta))\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\nimport com.pulumi.resources.CustomResourceOptions;\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 healthCheck = new HealthCheck(\"healthCheck\", HealthCheckArgs.builder() \n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder() \n .healthChecks(healthCheck.id())\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .localityLbPolicy(\"RING_HASH\")\n .sessionAffinity(\"HTTP_COOKIE\")\n .circuitBreakers(BackendServiceCircuitBreakersArgs.builder()\n .maxConnections(10)\n .build())\n .consistentHash(BackendServiceConsistentHashArgs.builder()\n .httpCookie(BackendServiceConsistentHashHttpCookieArgs.builder()\n .ttl(BackendServiceConsistentHashHttpCookieTtlArgs.builder()\n .seconds(11)\n .nanos(1111)\n .build())\n .name(\"mycookie\")\n .build())\n .build())\n .outlierDetection(BackendServiceOutlierDetectionArgs.builder()\n .consecutiveErrors(2)\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n healthChecks:\n - ${healthCheck.id}\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n localityLbPolicy: RING_HASH\n sessionAffinity: HTTP_COOKIE\n circuitBreakers:\n maxConnections: 10\n consistentHash:\n httpCookie:\n ttl:\n seconds: 11\n nanos: 1111\n name: mycookie\n outlierDetection:\n consecutiveErrors: 2\n options:\n provider: ${[\"google-beta\"]}\n healthCheck:\n type: gcp:compute:HealthCheck\n properties:\n httpHealthCheck:\n port: 80\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% example %}}\n### Backend Service Network Endpoint\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst externalProxy = new gcp.compute.GlobalNetworkEndpointGroup(\"externalProxy\", {\n networkEndpointType: \"INTERNET_FQDN_PORT\",\n defaultPort: 443,\n}, {\n provider: google_beta,\n});\nconst proxy = new gcp.compute.GlobalNetworkEndpoint(\"proxy\", {\n globalNetworkEndpointGroup: externalProxy.id,\n fqdn: \"test.example.com\",\n port: externalProxy.defaultPort,\n}, {\n provider: google_beta,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n enableCdn: true,\n timeoutSec: 10,\n connectionDrainingTimeoutSec: 10,\n customRequestHeaders: [proxy.fqdn.apply(fqdn =\u003e `host: ${fqdn}`)],\n customResponseHeaders: [\"X-Cache-Hit: {cdn_cache_status}\"],\n backends: [{\n group: externalProxy.id,\n }],\n}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexternal_proxy = gcp.compute.GlobalNetworkEndpointGroup(\"externalProxy\",\n network_endpoint_type=\"INTERNET_FQDN_PORT\",\n default_port=443,\n opts=pulumi.ResourceOptions(provider=google_beta))\nproxy = gcp.compute.GlobalNetworkEndpoint(\"proxy\",\n global_network_endpoint_group=external_proxy.id,\n fqdn=\"test.example.com\",\n port=external_proxy.default_port,\n opts=pulumi.ResourceOptions(provider=google_beta))\ndefault = gcp.compute.BackendService(\"default\",\n enable_cdn=True,\n timeout_sec=10,\n connection_draining_timeout_sec=10,\n custom_request_headers=[proxy.fqdn.apply(lambda fqdn: f\"host: {fqdn}\")],\n custom_response_headers=[\"X-Cache-Hit: {cdn_cache_status}\"],\n backends=[gcp.compute.BackendServiceBackendArgs(\n group=external_proxy.id,\n )],\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var externalProxy = new Gcp.Compute.GlobalNetworkEndpointGroup(\"externalProxy\", new Gcp.Compute.GlobalNetworkEndpointGroupArgs\n {\n NetworkEndpointType = \"INTERNET_FQDN_PORT\",\n DefaultPort = 443,\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n var proxy = new Gcp.Compute.GlobalNetworkEndpoint(\"proxy\", new Gcp.Compute.GlobalNetworkEndpointArgs\n {\n GlobalNetworkEndpointGroup = externalProxy.Id,\n Fqdn = \"test.example.com\",\n Port = externalProxy.DefaultPort,\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n var @default = new Gcp.Compute.BackendService(\"default\", new Gcp.Compute.BackendServiceArgs\n {\n EnableCdn = true,\n TimeoutSec = 10,\n ConnectionDrainingTimeoutSec = 10,\n CustomRequestHeaders = \n {\n proxy.Fqdn.Apply(fqdn =\u003e $\"host: {fqdn}\"),\n },\n CustomResponseHeaders = \n {\n \"X-Cache-Hit: {cdn_cache_status}\",\n },\n Backends = \n {\n new Gcp.Compute.Inputs.BackendServiceBackendArgs\n {\n Group = externalProxy.Id,\n },\n },\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texternalProxy, err := compute.NewGlobalNetworkEndpointGroup(ctx, \"externalProxy\", \u0026compute.GlobalNetworkEndpointGroupArgs{\n\t\t\tNetworkEndpointType: pulumi.String(\"INTERNET_FQDN_PORT\"),\n\t\t\tDefaultPort: pulumi.Int(443),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproxy, err := compute.NewGlobalNetworkEndpoint(ctx, \"proxy\", \u0026compute.GlobalNetworkEndpointArgs{\n\t\t\tGlobalNetworkEndpointGroup: externalProxy.ID(),\n\t\t\tFqdn: pulumi.String(\"test.example.com\"),\n\t\t\tPort: externalProxy.DefaultPort,\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tConnectionDrainingTimeoutSec: pulumi.Int(10),\n\t\t\tCustomRequestHeaders: pulumi.StringArray{\n\t\t\t\tproxy.Fqdn.ApplyT(func(fqdn string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"%v%v\", \"host: \", fqdn), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t\tCustomResponseHeaders: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"X-Cache-Hit: {cdn_cache_status}\"),\n\t\t\t},\n\t\t\tBackends: compute.BackendServiceBackendArray{\n\t\t\t\t\u0026compute.BackendServiceBackendArgs{\n\t\t\t\t\tGroup: externalProxy.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.Provider(google_beta))\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\nimport com.pulumi.resources.CustomResourceOptions;\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 externalProxy = new GlobalNetworkEndpointGroup(\"externalProxy\", GlobalNetworkEndpointGroupArgs.builder() \n .networkEndpointType(\"INTERNET_FQDN_PORT\")\n .defaultPort(\"443\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var proxy = new GlobalNetworkEndpoint(\"proxy\", GlobalNetworkEndpointArgs.builder() \n .globalNetworkEndpointGroup(externalProxy.id())\n .fqdn(\"test.example.com\")\n .port(externalProxy.defaultPort())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder() \n .enableCdn(true)\n .timeoutSec(10)\n .connectionDrainingTimeoutSec(10)\n .customRequestHeaders(proxy.fqdn().apply(fqdn -\u003e String.format(\"host: %s\", fqdn)))\n .customResponseHeaders(\"X-Cache-Hit: {cdn_cache_status}\")\n .backends(BackendServiceBackendArgs.builder()\n .group(externalProxy.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n externalProxy:\n type: gcp:compute:GlobalNetworkEndpointGroup\n properties:\n networkEndpointType: INTERNET_FQDN_PORT\n defaultPort: 443\n options:\n provider: ${[\"google-beta\"]}\n proxy:\n type: gcp:compute:GlobalNetworkEndpoint\n properties:\n globalNetworkEndpointGroup: ${externalProxy.id}\n fqdn: test.example.com\n port: ${externalProxy.defaultPort}\n options:\n provider: ${[\"google-beta\"]}\n default:\n type: gcp:compute:BackendService\n properties:\n enableCdn: true\n timeoutSec: 10\n connectionDrainingTimeoutSec: 10\n customRequestHeaders:\n - 'host: ${proxy.fqdn}'\n customResponseHeaders:\n - 'X-Cache-Hit: {cdn_cache_status}'\n backends:\n - group: ${externalProxy.id}\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% example %}}\n### Backend Service External Managed\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHealthCheck = new gcp.compute.HealthCheck(\"defaultHealthCheck\", {httpHealthCheck: {\n port: 80,\n}});\nconst defaultBackendService = new gcp.compute.BackendService(\"defaultBackendService\", {\n healthChecks: [defaultHealthCheck.id],\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_health_check = gcp.compute.HealthCheck(\"defaultHealthCheck\", http_health_check=gcp.compute.HealthCheckHttpHealthCheckArgs(\n port=80,\n))\ndefault_backend_service = gcp.compute.BackendService(\"defaultBackendService\",\n health_checks=[default_health_check.id],\n load_balancing_scheme=\"EXTERNAL_MANAGED\")\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var defaultHealthCheck = new Gcp.Compute.HealthCheck(\"defaultHealthCheck\", new Gcp.Compute.HealthCheckArgs\n {\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n var defaultBackendService = new Gcp.Compute.BackendService(\"defaultBackendService\", new Gcp.Compute.BackendServiceArgs\n {\n HealthChecks = \n {\n defaultHealthCheck.Id,\n },\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultHealthCheck, err := compute.NewHealthCheck(ctx, \"defaultHealthCheck\", \u0026compute.HealthCheckArgs{\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"defaultBackendService\", \u0026compute.BackendServiceArgs{\n\t\t\tHealthChecks: pulumi.String{\n\t\t\t\tdefaultHealthCheck.ID(),\n\t\t\t},\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 defaultHealthCheck = new HealthCheck(\"defaultHealthCheck\", HealthCheckArgs.builder() \n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder() \n .healthChecks(defaultHealthCheck.id())\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n defaultBackendService:\n type: gcp:compute:BackendService\n properties:\n healthChecks:\n - ${defaultHealthCheck.id}\n loadBalancingScheme: EXTERNAL_MANAGED\n defaultHealthCheck:\n type: gcp:compute:HealthCheck\n properties:\n httpHealthCheck:\n port: 80\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nBackendService can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:compute/backendService:BackendService default projects/{{project}}/global/backendServices/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/backendService:BackendService default {{project}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/backendService:BackendService default {{name}}\n```\n\n ", + "description": "A Backend Service defines a group of virtual machines that will serve\ntraffic for load balancing. This resource is a global backend service,\nappropriate for external load balancing or self-managed internal load balancing.\nFor managed internal load balancing, use a regional backend service instead.\n\nCurrently self-managed internal load balancing is only available in beta.\n\n\nTo get more information about BackendService, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/v1/backendServices)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/load-balancing/http/backend-service)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Backend Service Basic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"defaultHttpHealthCheck\", {\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"defaultBackendService\", {healthChecks: [defaultHttpHealthCheck.id]});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"defaultHttpHealthCheck\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault_backend_service = gcp.compute.BackendService(\"defaultBackendService\", health_checks=[default_http_health_check.id])\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"defaultHttpHealthCheck\", new Gcp.Compute.HttpHealthCheckArgs\n {\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n var defaultBackendService = new Gcp.Compute.BackendService(\"defaultBackendService\", new Gcp.Compute.BackendServiceArgs\n {\n HealthChecks = \n {\n defaultHttpHealthCheck.Id,\n },\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"defaultHttpHealthCheck\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"defaultBackendService\", \u0026compute.BackendServiceArgs{\n\t\t\tHealthChecks: pulumi.String{\n\t\t\t\tdefaultHttpHealthCheck.ID(),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder() \n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder() \n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n defaultBackendService:\n type: gcp:compute:BackendService\n properties:\n healthChecks:\n - ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n properties:\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n{{% /example %}}\n{{% example %}}\n### Backend Service Cache Simple\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"defaultHttpHealthCheck\", {\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"defaultBackendService\", {\n healthChecks: [defaultHttpHealthCheck.id],\n enableCdn: true,\n cdnPolicy: {\n signedUrlCacheMaxAgeSec: 7200,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"defaultHttpHealthCheck\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault_backend_service = gcp.compute.BackendService(\"defaultBackendService\",\n health_checks=[default_http_health_check.id],\n enable_cdn=True,\n cdn_policy=gcp.compute.BackendServiceCdnPolicyArgs(\n signed_url_cache_max_age_sec=7200,\n ))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"defaultHttpHealthCheck\", new Gcp.Compute.HttpHealthCheckArgs\n {\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n var defaultBackendService = new Gcp.Compute.BackendService(\"defaultBackendService\", new Gcp.Compute.BackendServiceArgs\n {\n HealthChecks = \n {\n defaultHttpHealthCheck.Id,\n },\n EnableCdn = true,\n CdnPolicy = new Gcp.Compute.Inputs.BackendServiceCdnPolicyArgs\n {\n SignedUrlCacheMaxAgeSec = 7200,\n },\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"defaultHttpHealthCheck\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"defaultBackendService\", \u0026compute.BackendServiceArgs{\n\t\t\tHealthChecks: pulumi.String{\n\t\t\t\tdefaultHttpHealthCheck.ID(),\n\t\t\t},\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t\tCdnPolicy: \u0026compute.BackendServiceCdnPolicyArgs{\n\t\t\t\tSignedUrlCacheMaxAgeSec: pulumi.Int(7200),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder() \n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder() \n .healthChecks(defaultHttpHealthCheck.id())\n .enableCdn(true)\n .cdnPolicy(BackendServiceCdnPolicyArgs.builder()\n .signedUrlCacheMaxAgeSec(7200)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n defaultBackendService:\n type: gcp:compute:BackendService\n properties:\n healthChecks:\n - ${defaultHttpHealthCheck.id}\n enableCdn: true\n cdnPolicy:\n signedUrlCacheMaxAgeSec: 7200\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n properties:\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n{{% /example %}}\n{{% example %}}\n### Backend Service Cache Include Named Cookies\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n cdnPolicy: {\n cacheKeyPolicy: {\n includeHost: true,\n includeNamedCookies: [\n \"__next_preview_data\",\n \"__prerender_bypass\",\n ],\n includeProtocol: true,\n includeQueryString: true,\n },\n cacheMode: \"CACHE_ALL_STATIC\",\n clientTtl: 7200,\n defaultTtl: 3600,\n maxTtl: 10800,\n },\n enableCdn: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.BackendService(\"default\",\n cdn_policy=gcp.compute.BackendServiceCdnPolicyArgs(\n cache_key_policy=gcp.compute.BackendServiceCdnPolicyCacheKeyPolicyArgs(\n include_host=True,\n include_named_cookies=[\n \"__next_preview_data\",\n \"__prerender_bypass\",\n ],\n include_protocol=True,\n include_query_string=True,\n ),\n cache_mode=\"CACHE_ALL_STATIC\",\n client_ttl=7200,\n default_ttl=3600,\n max_ttl=10800,\n ),\n enable_cdn=True)\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var @default = new Gcp.Compute.BackendService(\"default\", new Gcp.Compute.BackendServiceArgs\n {\n CdnPolicy = new Gcp.Compute.Inputs.BackendServiceCdnPolicyArgs\n {\n CacheKeyPolicy = new Gcp.Compute.Inputs.BackendServiceCdnPolicyCacheKeyPolicyArgs\n {\n IncludeHost = true,\n IncludeNamedCookies = \n {\n \"__next_preview_data\",\n \"__prerender_bypass\",\n },\n IncludeProtocol = true,\n IncludeQueryString = true,\n },\n CacheMode = \"CACHE_ALL_STATIC\",\n ClientTtl = 7200,\n DefaultTtl = 3600,\n MaxTtl = 10800,\n },\n EnableCdn = true,\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\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 := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tCdnPolicy: \u0026compute.BackendServiceCdnPolicyArgs{\n\t\t\t\tCacheKeyPolicy: \u0026compute.BackendServiceCdnPolicyCacheKeyPolicyArgs{\n\t\t\t\t\tIncludeHost: pulumi.Bool(true),\n\t\t\t\t\tIncludeNamedCookies: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"__next_preview_data\"),\n\t\t\t\t\t\tpulumi.String(\"__prerender_bypass\"),\n\t\t\t\t\t},\n\t\t\t\t\tIncludeProtocol: pulumi.Bool(true),\n\t\t\t\t\tIncludeQueryString: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\tClientTtl: pulumi.Int(7200),\n\t\t\t\tDefaultTtl: pulumi.Int(3600),\n\t\t\t\tMaxTtl: pulumi.Int(10800),\n\t\t\t},\n\t\t\tEnableCdn: 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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 default_ = new BackendService(\"default\", BackendServiceArgs.builder() \n .cdnPolicy(BackendServiceCdnPolicyArgs.builder()\n .cacheKeyPolicy(BackendServiceCdnPolicyCacheKeyPolicyArgs.builder()\n .includeHost(true)\n .includeNamedCookies( \n \"__next_preview_data\",\n \"__prerender_bypass\")\n .includeProtocol(true)\n .includeQueryString(true)\n .build())\n .cacheMode(\"CACHE_ALL_STATIC\")\n .clientTtl(7200)\n .defaultTtl(3600)\n .maxTtl(10800)\n .build())\n .enableCdn(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n cdnPolicy:\n cacheKeyPolicy:\n includeHost: true\n includeNamedCookies:\n - __next_preview_data\n - __prerender_bypass\n includeProtocol: true\n includeQueryString: true\n cacheMode: CACHE_ALL_STATIC\n clientTtl: 7200\n defaultTtl: 3600\n maxTtl: 10800\n enableCdn: true\n```\n{{% /example %}}\n{{% example %}}\n### Backend Service Cache\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"defaultHttpHealthCheck\", {\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"defaultBackendService\", {\n healthChecks: [defaultHttpHealthCheck.id],\n enableCdn: true,\n cdnPolicy: {\n cacheMode: \"CACHE_ALL_STATIC\",\n defaultTtl: 3600,\n clientTtl: 7200,\n maxTtl: 10800,\n negativeCaching: true,\n signedUrlCacheMaxAgeSec: 7200,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"defaultHttpHealthCheck\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault_backend_service = gcp.compute.BackendService(\"defaultBackendService\",\n health_checks=[default_http_health_check.id],\n enable_cdn=True,\n cdn_policy=gcp.compute.BackendServiceCdnPolicyArgs(\n cache_mode=\"CACHE_ALL_STATIC\",\n default_ttl=3600,\n client_ttl=7200,\n max_ttl=10800,\n negative_caching=True,\n signed_url_cache_max_age_sec=7200,\n ))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"defaultHttpHealthCheck\", new Gcp.Compute.HttpHealthCheckArgs\n {\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n var defaultBackendService = new Gcp.Compute.BackendService(\"defaultBackendService\", new Gcp.Compute.BackendServiceArgs\n {\n HealthChecks = \n {\n defaultHttpHealthCheck.Id,\n },\n EnableCdn = true,\n CdnPolicy = new Gcp.Compute.Inputs.BackendServiceCdnPolicyArgs\n {\n CacheMode = \"CACHE_ALL_STATIC\",\n DefaultTtl = 3600,\n ClientTtl = 7200,\n MaxTtl = 10800,\n NegativeCaching = true,\n SignedUrlCacheMaxAgeSec = 7200,\n },\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"defaultHttpHealthCheck\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"defaultBackendService\", \u0026compute.BackendServiceArgs{\n\t\t\tHealthChecks: pulumi.String{\n\t\t\t\tdefaultHttpHealthCheck.ID(),\n\t\t\t},\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t\tCdnPolicy: \u0026compute.BackendServiceCdnPolicyArgs{\n\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\tDefaultTtl: pulumi.Int(3600),\n\t\t\t\tClientTtl: pulumi.Int(7200),\n\t\t\t\tMaxTtl: pulumi.Int(10800),\n\t\t\t\tNegativeCaching: pulumi.Bool(true),\n\t\t\t\tSignedUrlCacheMaxAgeSec: pulumi.Int(7200),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder() \n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder() \n .healthChecks(defaultHttpHealthCheck.id())\n .enableCdn(true)\n .cdnPolicy(BackendServiceCdnPolicyArgs.builder()\n .cacheMode(\"CACHE_ALL_STATIC\")\n .defaultTtl(3600)\n .clientTtl(7200)\n .maxTtl(10800)\n .negativeCaching(true)\n .signedUrlCacheMaxAgeSec(7200)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n defaultBackendService:\n type: gcp:compute:BackendService\n properties:\n healthChecks:\n - ${defaultHttpHealthCheck.id}\n enableCdn: true\n cdnPolicy:\n cacheMode: CACHE_ALL_STATIC\n defaultTtl: 3600\n clientTtl: 7200\n maxTtl: 10800\n negativeCaching: true\n signedUrlCacheMaxAgeSec: 7200\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n properties:\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n{{% /example %}}\n{{% example %}}\n### Backend Service Traffic Director Round Robin\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst healthCheck = new gcp.compute.HealthCheck(\"healthCheck\", {httpHealthCheck: {\n port: 80,\n}}, {\n provider: google_beta,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n healthChecks: [healthCheck.id],\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n localityLbPolicy: \"ROUND_ROBIN\",\n}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhealth_check = gcp.compute.HealthCheck(\"healthCheck\", http_health_check=gcp.compute.HealthCheckHttpHealthCheckArgs(\n port=80,\n),\nopts=pulumi.ResourceOptions(provider=google_beta))\ndefault = gcp.compute.BackendService(\"default\",\n health_checks=[health_check.id],\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\",\n locality_lb_policy=\"ROUND_ROBIN\",\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var healthCheck = new Gcp.Compute.HealthCheck(\"healthCheck\", new Gcp.Compute.HealthCheckArgs\n {\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n var @default = new Gcp.Compute.BackendService(\"default\", new Gcp.Compute.BackendServiceArgs\n {\n HealthChecks = \n {\n healthCheck.Id,\n },\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n LocalityLbPolicy = \"ROUND_ROBIN\",\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\thealthCheck, err := compute.NewHealthCheck(ctx, \"healthCheck\", \u0026compute.HealthCheckArgs{\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tHealthChecks: pulumi.String{\n\t\t\t\thealthCheck.ID(),\n\t\t\t},\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t\tLocalityLbPolicy: pulumi.String(\"ROUND_ROBIN\"),\n\t\t}, pulumi.Provider(google_beta))\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\nimport com.pulumi.resources.CustomResourceOptions;\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 healthCheck = new HealthCheck(\"healthCheck\", HealthCheckArgs.builder() \n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder() \n .healthChecks(healthCheck.id())\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .localityLbPolicy(\"ROUND_ROBIN\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n healthChecks:\n - ${healthCheck.id}\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n localityLbPolicy: ROUND_ROBIN\n options:\n provider: ${[\"google-beta\"]}\n healthCheck:\n type: gcp:compute:HealthCheck\n properties:\n httpHealthCheck:\n port: 80\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% example %}}\n### Backend Service Traffic Director Ring Hash\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst healthCheck = new gcp.compute.HealthCheck(\"healthCheck\", {httpHealthCheck: {\n port: 80,\n}}, {\n provider: google_beta,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n healthChecks: [healthCheck.id],\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n localityLbPolicy: \"RING_HASH\",\n sessionAffinity: \"HTTP_COOKIE\",\n circuitBreakers: {\n maxConnections: 10,\n },\n consistentHash: {\n httpCookie: {\n ttl: {\n seconds: 11,\n nanos: 1111,\n },\n name: \"mycookie\",\n },\n },\n outlierDetection: {\n consecutiveErrors: 2,\n },\n}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhealth_check = gcp.compute.HealthCheck(\"healthCheck\", http_health_check=gcp.compute.HealthCheckHttpHealthCheckArgs(\n port=80,\n),\nopts=pulumi.ResourceOptions(provider=google_beta))\ndefault = gcp.compute.BackendService(\"default\",\n health_checks=[health_check.id],\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\",\n locality_lb_policy=\"RING_HASH\",\n session_affinity=\"HTTP_COOKIE\",\n circuit_breakers=gcp.compute.BackendServiceCircuitBreakersArgs(\n max_connections=10,\n ),\n consistent_hash=gcp.compute.BackendServiceConsistentHashArgs(\n http_cookie=gcp.compute.BackendServiceConsistentHashHttpCookieArgs(\n ttl=gcp.compute.BackendServiceConsistentHashHttpCookieTtlArgs(\n seconds=11,\n nanos=1111,\n ),\n name=\"mycookie\",\n ),\n ),\n outlier_detection=gcp.compute.BackendServiceOutlierDetectionArgs(\n consecutive_errors=2,\n ),\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var healthCheck = new Gcp.Compute.HealthCheck(\"healthCheck\", new Gcp.Compute.HealthCheckArgs\n {\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n var @default = new Gcp.Compute.BackendService(\"default\", new Gcp.Compute.BackendServiceArgs\n {\n HealthChecks = \n {\n healthCheck.Id,\n },\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n LocalityLbPolicy = \"RING_HASH\",\n SessionAffinity = \"HTTP_COOKIE\",\n CircuitBreakers = new Gcp.Compute.Inputs.BackendServiceCircuitBreakersArgs\n {\n MaxConnections = 10,\n },\n ConsistentHash = new Gcp.Compute.Inputs.BackendServiceConsistentHashArgs\n {\n HttpCookie = new Gcp.Compute.Inputs.BackendServiceConsistentHashHttpCookieArgs\n {\n Ttl = new Gcp.Compute.Inputs.BackendServiceConsistentHashHttpCookieTtlArgs\n {\n Seconds = 11,\n Nanos = 1111,\n },\n Name = \"mycookie\",\n },\n },\n OutlierDetection = new Gcp.Compute.Inputs.BackendServiceOutlierDetectionArgs\n {\n ConsecutiveErrors = 2,\n },\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\thealthCheck, err := compute.NewHealthCheck(ctx, \"healthCheck\", \u0026compute.HealthCheckArgs{\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tHealthChecks: pulumi.String{\n\t\t\t\thealthCheck.ID(),\n\t\t\t},\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t\tLocalityLbPolicy: pulumi.String(\"RING_HASH\"),\n\t\t\tSessionAffinity: pulumi.String(\"HTTP_COOKIE\"),\n\t\t\tCircuitBreakers: \u0026compute.BackendServiceCircuitBreakersArgs{\n\t\t\t\tMaxConnections: pulumi.Int(10),\n\t\t\t},\n\t\t\tConsistentHash: \u0026compute.BackendServiceConsistentHashArgs{\n\t\t\t\tHttpCookie: \u0026compute.BackendServiceConsistentHashHttpCookieArgs{\n\t\t\t\t\tTtl: \u0026compute.BackendServiceConsistentHashHttpCookieTtlArgs{\n\t\t\t\t\t\tSeconds: pulumi.Int(11),\n\t\t\t\t\t\tNanos: pulumi.Int(1111),\n\t\t\t\t\t},\n\t\t\t\t\tName: pulumi.String(\"mycookie\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tOutlierDetection: \u0026compute.BackendServiceOutlierDetectionArgs{\n\t\t\t\tConsecutiveErrors: pulumi.Int(2),\n\t\t\t},\n\t\t}, pulumi.Provider(google_beta))\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\nimport com.pulumi.resources.CustomResourceOptions;\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 healthCheck = new HealthCheck(\"healthCheck\", HealthCheckArgs.builder() \n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder() \n .healthChecks(healthCheck.id())\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .localityLbPolicy(\"RING_HASH\")\n .sessionAffinity(\"HTTP_COOKIE\")\n .circuitBreakers(BackendServiceCircuitBreakersArgs.builder()\n .maxConnections(10)\n .build())\n .consistentHash(BackendServiceConsistentHashArgs.builder()\n .httpCookie(BackendServiceConsistentHashHttpCookieArgs.builder()\n .ttl(BackendServiceConsistentHashHttpCookieTtlArgs.builder()\n .seconds(11)\n .nanos(1111)\n .build())\n .name(\"mycookie\")\n .build())\n .build())\n .outlierDetection(BackendServiceOutlierDetectionArgs.builder()\n .consecutiveErrors(2)\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n healthChecks:\n - ${healthCheck.id}\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n localityLbPolicy: RING_HASH\n sessionAffinity: HTTP_COOKIE\n circuitBreakers:\n maxConnections: 10\n consistentHash:\n httpCookie:\n ttl:\n seconds: 11\n nanos: 1111\n name: mycookie\n outlierDetection:\n consecutiveErrors: 2\n options:\n provider: ${[\"google-beta\"]}\n healthCheck:\n type: gcp:compute:HealthCheck\n properties:\n httpHealthCheck:\n port: 80\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% example %}}\n### Backend Service Network Endpoint\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst externalProxy = new gcp.compute.GlobalNetworkEndpointGroup(\"externalProxy\", {\n networkEndpointType: \"INTERNET_FQDN_PORT\",\n defaultPort: 443,\n}, {\n provider: google_beta,\n});\nconst proxy = new gcp.compute.GlobalNetworkEndpoint(\"proxy\", {\n globalNetworkEndpointGroup: externalProxy.id,\n fqdn: \"test.example.com\",\n port: externalProxy.defaultPort,\n}, {\n provider: google_beta,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n enableCdn: true,\n timeoutSec: 10,\n connectionDrainingTimeoutSec: 10,\n customRequestHeaders: [proxy.fqdn.apply(fqdn =\u003e `host: ${fqdn}`)],\n customResponseHeaders: [\"X-Cache-Hit: {cdn_cache_status}\"],\n backends: [{\n group: externalProxy.id,\n }],\n}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexternal_proxy = gcp.compute.GlobalNetworkEndpointGroup(\"externalProxy\",\n network_endpoint_type=\"INTERNET_FQDN_PORT\",\n default_port=443,\n opts=pulumi.ResourceOptions(provider=google_beta))\nproxy = gcp.compute.GlobalNetworkEndpoint(\"proxy\",\n global_network_endpoint_group=external_proxy.id,\n fqdn=\"test.example.com\",\n port=external_proxy.default_port,\n opts=pulumi.ResourceOptions(provider=google_beta))\ndefault = gcp.compute.BackendService(\"default\",\n enable_cdn=True,\n timeout_sec=10,\n connection_draining_timeout_sec=10,\n custom_request_headers=[proxy.fqdn.apply(lambda fqdn: f\"host: {fqdn}\")],\n custom_response_headers=[\"X-Cache-Hit: {cdn_cache_status}\"],\n backends=[gcp.compute.BackendServiceBackendArgs(\n group=external_proxy.id,\n )],\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var externalProxy = new Gcp.Compute.GlobalNetworkEndpointGroup(\"externalProxy\", new Gcp.Compute.GlobalNetworkEndpointGroupArgs\n {\n NetworkEndpointType = \"INTERNET_FQDN_PORT\",\n DefaultPort = 443,\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n var proxy = new Gcp.Compute.GlobalNetworkEndpoint(\"proxy\", new Gcp.Compute.GlobalNetworkEndpointArgs\n {\n GlobalNetworkEndpointGroup = externalProxy.Id,\n Fqdn = \"test.example.com\",\n Port = externalProxy.DefaultPort,\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n var @default = new Gcp.Compute.BackendService(\"default\", new Gcp.Compute.BackendServiceArgs\n {\n EnableCdn = true,\n TimeoutSec = 10,\n ConnectionDrainingTimeoutSec = 10,\n CustomRequestHeaders = \n {\n proxy.Fqdn.Apply(fqdn =\u003e $\"host: {fqdn}\"),\n },\n CustomResponseHeaders = \n {\n \"X-Cache-Hit: {cdn_cache_status}\",\n },\n Backends = \n {\n new Gcp.Compute.Inputs.BackendServiceBackendArgs\n {\n Group = externalProxy.Id,\n },\n },\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texternalProxy, err := compute.NewGlobalNetworkEndpointGroup(ctx, \"externalProxy\", \u0026compute.GlobalNetworkEndpointGroupArgs{\n\t\t\tNetworkEndpointType: pulumi.String(\"INTERNET_FQDN_PORT\"),\n\t\t\tDefaultPort: pulumi.Int(443),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproxy, err := compute.NewGlobalNetworkEndpoint(ctx, \"proxy\", \u0026compute.GlobalNetworkEndpointArgs{\n\t\t\tGlobalNetworkEndpointGroup: externalProxy.ID(),\n\t\t\tFqdn: pulumi.String(\"test.example.com\"),\n\t\t\tPort: externalProxy.DefaultPort,\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tConnectionDrainingTimeoutSec: pulumi.Int(10),\n\t\t\tCustomRequestHeaders: pulumi.StringArray{\n\t\t\t\tproxy.Fqdn.ApplyT(func(fqdn string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"%v%v\", \"host: \", fqdn), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t\tCustomResponseHeaders: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"X-Cache-Hit: {cdn_cache_status}\"),\n\t\t\t},\n\t\t\tBackends: compute.BackendServiceBackendArray{\n\t\t\t\t\u0026compute.BackendServiceBackendArgs{\n\t\t\t\t\tGroup: externalProxy.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.Provider(google_beta))\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\nimport com.pulumi.resources.CustomResourceOptions;\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 externalProxy = new GlobalNetworkEndpointGroup(\"externalProxy\", GlobalNetworkEndpointGroupArgs.builder() \n .networkEndpointType(\"INTERNET_FQDN_PORT\")\n .defaultPort(\"443\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var proxy = new GlobalNetworkEndpoint(\"proxy\", GlobalNetworkEndpointArgs.builder() \n .globalNetworkEndpointGroup(externalProxy.id())\n .fqdn(\"test.example.com\")\n .port(externalProxy.defaultPort())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder() \n .enableCdn(true)\n .timeoutSec(10)\n .connectionDrainingTimeoutSec(10)\n .customRequestHeaders(proxy.fqdn().apply(fqdn -\u003e String.format(\"host: %s\", fqdn)))\n .customResponseHeaders(\"X-Cache-Hit: {cdn_cache_status}\")\n .backends(BackendServiceBackendArgs.builder()\n .group(externalProxy.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n externalProxy:\n type: gcp:compute:GlobalNetworkEndpointGroup\n properties:\n networkEndpointType: INTERNET_FQDN_PORT\n defaultPort: 443\n options:\n provider: ${[\"google-beta\"]}\n proxy:\n type: gcp:compute:GlobalNetworkEndpoint\n properties:\n globalNetworkEndpointGroup: ${externalProxy.id}\n fqdn: test.example.com\n port: ${externalProxy.defaultPort}\n options:\n provider: ${[\"google-beta\"]}\n default:\n type: gcp:compute:BackendService\n properties:\n enableCdn: true\n timeoutSec: 10\n connectionDrainingTimeoutSec: 10\n customRequestHeaders:\n - 'host: ${proxy.fqdn}'\n customResponseHeaders:\n - 'X-Cache-Hit: {cdn_cache_status}'\n backends:\n - group: ${externalProxy.id}\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% example %}}\n### Backend Service External Managed\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHealthCheck = new gcp.compute.HealthCheck(\"defaultHealthCheck\", {httpHealthCheck: {\n port: 80,\n}});\nconst defaultBackendService = new gcp.compute.BackendService(\"defaultBackendService\", {\n healthChecks: [defaultHealthCheck.id],\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_health_check = gcp.compute.HealthCheck(\"defaultHealthCheck\", http_health_check=gcp.compute.HealthCheckHttpHealthCheckArgs(\n port=80,\n))\ndefault_backend_service = gcp.compute.BackendService(\"defaultBackendService\",\n health_checks=[default_health_check.id],\n load_balancing_scheme=\"EXTERNAL_MANAGED\")\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var defaultHealthCheck = new Gcp.Compute.HealthCheck(\"defaultHealthCheck\", new Gcp.Compute.HealthCheckArgs\n {\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n var defaultBackendService = new Gcp.Compute.BackendService(\"defaultBackendService\", new Gcp.Compute.BackendServiceArgs\n {\n HealthChecks = \n {\n defaultHealthCheck.Id,\n },\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultHealthCheck, err := compute.NewHealthCheck(ctx, \"defaultHealthCheck\", \u0026compute.HealthCheckArgs{\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"defaultBackendService\", \u0026compute.BackendServiceArgs{\n\t\t\tHealthChecks: pulumi.String{\n\t\t\t\tdefaultHealthCheck.ID(),\n\t\t\t},\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 defaultHealthCheck = new HealthCheck(\"defaultHealthCheck\", HealthCheckArgs.builder() \n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder() \n .healthChecks(defaultHealthCheck.id())\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n defaultBackendService:\n type: gcp:compute:BackendService\n properties:\n healthChecks:\n - ${defaultHealthCheck.id}\n loadBalancingScheme: EXTERNAL_MANAGED\n defaultHealthCheck:\n type: gcp:compute:HealthCheck\n properties:\n httpHealthCheck:\n port: 80\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nBackendService can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:compute/backendService:BackendService default projects/{{project}}/global/backendServices/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/backendService:BackendService default {{project}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/backendService:BackendService default {{name}}\n```\n\n ", "properties": { "affinityCookieTtlSec": { "type": "integer", @@ -102522,7 +102735,7 @@ "items": { "type": "string" }, - "description": "List of instances in the group. They should be given\nas either self_link or id. When adding instances they must all be in the same\nnetwork and zone as the instance group.\n" + "description": "The list of instances in the group, in `self_link` format.\nWhen adding instances they must all be in the same network and zone as the instance group.\n" }, "name": { "type": "string", @@ -102576,7 +102789,7 @@ "items": { "type": "string" }, - "description": "List of instances in the group. They should be given\nas either self_link or id. When adding instances they must all be in the same\nnetwork and zone as the instance group.\n" + "description": "The list of instances in the group, in `self_link` format.\nWhen adding instances they must all be in the same network and zone as the instance group.\n" }, "name": { "type": "string", @@ -102619,7 +102832,7 @@ "items": { "type": "string" }, - "description": "List of instances in the group. They should be given\nas either self_link or id. When adding instances they must all be in the same\nnetwork and zone as the instance group.\n" + "description": "The list of instances in the group, in `self_link` format.\nWhen adding instances they must all be in the same network and zone as the instance group.\n" }, "name": { "type": "string", @@ -104853,10 +105066,18 @@ "type": "string", "description": "An optional description of this resource. The resource must be\nrecreated to modify this field.\n" }, + "enableUlaInternalIpv6": { + "type": "boolean", + "description": "Enable ULA internal ipv6 on this network. Enabling this feature will assign\na /48 from google defined ULA prefix fd20::/20.\n" + }, "gatewayIpv4": { "type": "string", "description": "The gateway address for default routing out of the network. This value is selected by GCP.\n" }, + "internalIpv6Range": { + "type": "string", + "description": "When enabling ula internal ipv6, caller optionally can specify the /48 range\nthey want from the google defined ULA prefix fd20::/20. The input must be a\nvalid /48 ULA IPv6 address and must be within the fd20::/20. Operation will\nfail if the speficied /48 is already in used by another resource.\nIf the field is not speficied, then a /48 range will be randomly allocated from fd20::/20 and returned via this field.\n" + }, "mtu": { "type": "integer", "description": "Maximum Transmission Unit in bytes. The minimum value for this field is 1460\nand the maximum value is 1500 bytes.\n" @@ -104880,6 +105101,7 @@ }, "required": [ "gatewayIpv4", + "internalIpv6Range", "mtu", "name", "project", @@ -104901,6 +105123,16 @@ "description": "An optional description of this resource. The resource must be\nrecreated to modify this field.\n", "willReplaceOnChanges": true }, + "enableUlaInternalIpv6": { + "type": "boolean", + "description": "Enable ULA internal ipv6 on this network. Enabling this feature will assign\na /48 from google defined ULA prefix fd20::/20.\n", + "willReplaceOnChanges": true + }, + "internalIpv6Range": { + "type": "string", + "description": "When enabling ula internal ipv6, caller optionally can specify the /48 range\nthey want from the google defined ULA prefix fd20::/20. The input must be a\nvalid /48 ULA IPv6 address and must be within the fd20::/20. Operation will\nfail if the speficied /48 is already in used by another resource.\nIf the field is not speficied, then a /48 range will be randomly allocated from fd20::/20 and returned via this field.\n", + "willReplaceOnChanges": true + }, "mtu": { "type": "integer", "description": "Maximum Transmission Unit in bytes. The minimum value for this field is 1460\nand the maximum value is 1500 bytes.\n", @@ -104938,10 +105170,20 @@ "description": "An optional description of this resource. The resource must be\nrecreated to modify this field.\n", "willReplaceOnChanges": true }, + "enableUlaInternalIpv6": { + "type": "boolean", + "description": "Enable ULA internal ipv6 on this network. Enabling this feature will assign\na /48 from google defined ULA prefix fd20::/20.\n", + "willReplaceOnChanges": true + }, "gatewayIpv4": { "type": "string", "description": "The gateway address for default routing out of the network. This value is selected by GCP.\n" }, + "internalIpv6Range": { + "type": "string", + "description": "When enabling ula internal ipv6, caller optionally can specify the /48 range\nthey want from the google defined ULA prefix fd20::/20. The input must be a\nvalid /48 ULA IPv6 address and must be within the fd20::/20. Operation will\nfail if the speficied /48 is already in used by another resource.\nIf the field is not speficied, then a /48 range will be randomly allocated from fd20::/20 and returned via this field.\n", + "willReplaceOnChanges": true + }, "mtu": { "type": "integer", "description": "Maximum Transmission Unit in bytes. The minimum value for this field is 1460\nand the maximum value is 1500 bytes.\n", @@ -111051,6 +111293,10 @@ "$ref": "#/types/gcp:compute/SecurityPolicyAdaptiveProtectionConfig:SecurityPolicyAdaptiveProtectionConfig", "description": "Configuration for [Google Cloud Armor Adaptive Protection](https://cloud.google.com/armor/docs/adaptive-protection-overview?hl=en). Structure is documented below.\n" }, + "advancedOptionsConfig": { + "$ref": "#/types/gcp:compute/SecurityPolicyAdvancedOptionsConfig:SecurityPolicyAdvancedOptionsConfig", + "description": "[Advanced Configuration Options](https://cloud.google.com/armor/docs/security-policy-overview#json-parsing).\n" + }, "description": { "type": "string", "description": "An optional description of this rule. Max size is 64.\n" @@ -111084,6 +111330,7 @@ } }, "required": [ + "advancedOptionsConfig", "fingerprint", "name", "project", @@ -111096,6 +111343,10 @@ "$ref": "#/types/gcp:compute/SecurityPolicyAdaptiveProtectionConfig:SecurityPolicyAdaptiveProtectionConfig", "description": "Configuration for [Google Cloud Armor Adaptive Protection](https://cloud.google.com/armor/docs/adaptive-protection-overview?hl=en). Structure is documented below.\n" }, + "advancedOptionsConfig": { + "$ref": "#/types/gcp:compute/SecurityPolicyAdvancedOptionsConfig:SecurityPolicyAdvancedOptionsConfig", + "description": "[Advanced Configuration Options](https://cloud.google.com/armor/docs/security-policy-overview#json-parsing).\n" + }, "description": { "type": "string", "description": "An optional description of this rule. Max size is 64.\n" @@ -111129,6 +111380,10 @@ "$ref": "#/types/gcp:compute/SecurityPolicyAdaptiveProtectionConfig:SecurityPolicyAdaptiveProtectionConfig", "description": "Configuration for [Google Cloud Armor Adaptive Protection](https://cloud.google.com/armor/docs/adaptive-protection-overview?hl=en). Structure is documented below.\n" }, + "advancedOptionsConfig": { + "$ref": "#/types/gcp:compute/SecurityPolicyAdvancedOptionsConfig:SecurityPolicyAdvancedOptionsConfig", + "description": "[Advanced Configuration Options](https://cloud.google.com/armor/docs/security-policy-overview#json-parsing).\n" + }, "description": { "type": "string", "description": "An optional description of this rule. Max size is 64.\n" @@ -111904,7 +112159,7 @@ } }, "gcp:compute/subnetwork:Subnetwork": { - "description": "A VPC network is a virtual version of the traditional physical networks\nthat exist within and between physical data centers. A VPC network\nprovides connectivity for your Compute Engine virtual machine (VM)\ninstances, Container Engine containers, App Engine Flex services, and\nother network-related resources.\n\nEach GCP project contains one or more VPC networks. Each VPC network is a\nglobal entity spanning all GCP regions. This global VPC network allows VM\ninstances and other resources to communicate with each other via internal,\nprivate IP addresses.\n\nEach VPC network is subdivided into subnets, and each subnet is contained\nwithin a single region. You can have more than one subnet in a region for\na given VPC network. Each subnet has a contiguous private RFC1918 IP\nspace. You create instances, containers, and the like in these subnets.\nWhen you create an instance, you must create it in a subnet, and the\ninstance draws its internal IP address from that subnet.\n\nVirtual machine (VM) instances in a VPC network can communicate with\ninstances in all other subnets of the same VPC network, regardless of\nregion, using their RFC1918 private IP addresses. You can isolate portions\nof the network, even entire subnets, using firewall rules.\n\n\nTo get more information about Subnetwork, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/subnetworks)\n* How-to Guides\n * [Private Google Access](https://cloud.google.com/vpc/docs/configure-private-google-access)\n * [Cloud Networking](https://cloud.google.com/vpc/docs/using-vpc)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Subnetwork Basic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_test = new gcp.compute.Network(\"custom-test\", {autoCreateSubnetworks: false});\nconst network_with_private_secondary_ip_ranges = new gcp.compute.Subnetwork(\"network-with-private-secondary-ip-ranges\", {\n ipCidrRange: \"10.2.0.0/16\",\n region: \"us-central1\",\n network: custom_test.id,\n secondaryIpRanges: [{\n rangeName: \"tf-test-secondary-range-update1\",\n ipCidrRange: \"192.168.10.0/24\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test = gcp.compute.Network(\"custom-test\", auto_create_subnetworks=False)\nnetwork_with_private_secondary_ip_ranges = gcp.compute.Subnetwork(\"network-with-private-secondary-ip-ranges\",\n ip_cidr_range=\"10.2.0.0/16\",\n region=\"us-central1\",\n network=custom_test.id,\n secondary_ip_ranges=[gcp.compute.SubnetworkSecondaryIpRangeArgs(\n range_name=\"tf-test-secondary-range-update1\",\n ip_cidr_range=\"192.168.10.0/24\",\n )])\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var custom_test = new Gcp.Compute.Network(\"custom-test\", new Gcp.Compute.NetworkArgs\n {\n AutoCreateSubnetworks = false,\n });\n var network_with_private_secondary_ip_ranges = new Gcp.Compute.Subnetwork(\"network-with-private-secondary-ip-ranges\", new Gcp.Compute.SubnetworkArgs\n {\n IpCidrRange = \"10.2.0.0/16\",\n Region = \"us-central1\",\n Network = custom_test.Id,\n SecondaryIpRanges = \n {\n new Gcp.Compute.Inputs.SubnetworkSecondaryIpRangeArgs\n {\n RangeName = \"tf-test-secondary-range-update1\",\n IpCidrRange = \"192.168.10.0/24\",\n },\n },\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\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 := compute.NewNetwork(ctx, \"custom-test\", \u0026compute.NetworkArgs{\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\t_, err = compute.NewSubnetwork(ctx, \"network-with-private-secondary-ip-ranges\", \u0026compute.SubnetworkArgs{\n\t\t\tIpCidrRange: pulumi.String(\"10.2.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: custom_test.ID(),\n\t\t\tSecondaryIpRanges: compute.SubnetworkSecondaryIpRangeArray{\n\t\t\t\t\u0026compute.SubnetworkSecondaryIpRangeArgs{\n\t\t\t\t\tRangeName: pulumi.String(\"tf-test-secondary-range-update1\"),\n\t\t\t\t\tIpCidrRange: pulumi.String(\"192.168.10.0/24\"),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 custom_test = new Network(\"custom-test\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var network_with_private_secondary_ip_ranges = new Subnetwork(\"network-with-private-secondary-ip-ranges\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.2.0.0/16\")\n .region(\"us-central1\")\n .network(custom_test.id())\n .secondaryIpRanges(SubnetworkSecondaryIpRangeArgs.builder()\n .rangeName(\"tf-test-secondary-range-update1\")\n .ipCidrRange(\"192.168.10.0/24\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network-with-private-secondary-ip-ranges:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.2.0.0/16\n region: us-central1\n network: ${[\"custom-test\"].id}\n secondaryIpRanges:\n - rangeName: tf-test-secondary-range-update1\n ipCidrRange: 192.168.10.0/24\n custom-test:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n```\n{{% /example %}}\n{{% example %}}\n### Subnetwork Logging Config\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_test = new gcp.compute.Network(\"custom-test\", {autoCreateSubnetworks: false});\nconst subnet_with_logging = new gcp.compute.Subnetwork(\"subnet-with-logging\", {\n ipCidrRange: \"10.2.0.0/16\",\n region: \"us-central1\",\n network: custom_test.id,\n logConfig: {\n aggregationInterval: \"INTERVAL_10_MIN\",\n flowSampling: 0.5,\n metadata: \"INCLUDE_ALL_METADATA\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test = gcp.compute.Network(\"custom-test\", auto_create_subnetworks=False)\nsubnet_with_logging = gcp.compute.Subnetwork(\"subnet-with-logging\",\n ip_cidr_range=\"10.2.0.0/16\",\n region=\"us-central1\",\n network=custom_test.id,\n log_config=gcp.compute.SubnetworkLogConfigArgs(\n aggregation_interval=\"INTERVAL_10_MIN\",\n flow_sampling=0.5,\n metadata=\"INCLUDE_ALL_METADATA\",\n ))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var custom_test = new Gcp.Compute.Network(\"custom-test\", new Gcp.Compute.NetworkArgs\n {\n AutoCreateSubnetworks = false,\n });\n var subnet_with_logging = new Gcp.Compute.Subnetwork(\"subnet-with-logging\", new Gcp.Compute.SubnetworkArgs\n {\n IpCidrRange = \"10.2.0.0/16\",\n Region = \"us-central1\",\n Network = custom_test.Id,\n LogConfig = new Gcp.Compute.Inputs.SubnetworkLogConfigArgs\n {\n AggregationInterval = \"INTERVAL_10_MIN\",\n FlowSampling = 0.5,\n Metadata = \"INCLUDE_ALL_METADATA\",\n },\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\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 := compute.NewNetwork(ctx, \"custom-test\", \u0026compute.NetworkArgs{\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\t_, err = compute.NewSubnetwork(ctx, \"subnet-with-logging\", \u0026compute.SubnetworkArgs{\n\t\t\tIpCidrRange: pulumi.String(\"10.2.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: custom_test.ID(),\n\t\t\tLogConfig: \u0026compute.SubnetworkLogConfigArgs{\n\t\t\t\tAggregationInterval: pulumi.String(\"INTERVAL_10_MIN\"),\n\t\t\t\tFlowSampling: pulumi.Float64(0.5),\n\t\t\t\tMetadata: pulumi.String(\"INCLUDE_ALL_METADATA\"),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 custom_test = new Network(\"custom-test\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var subnet_with_logging = new Subnetwork(\"subnet-with-logging\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.2.0.0/16\")\n .region(\"us-central1\")\n .network(custom_test.id())\n .logConfig(SubnetworkLogConfigArgs.builder()\n .aggregationInterval(\"INTERVAL_10_MIN\")\n .flowSampling(0.5)\n .metadata(\"INCLUDE_ALL_METADATA\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n subnet-with-logging:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.2.0.0/16\n region: us-central1\n network: ${[\"custom-test\"].id}\n logConfig:\n aggregationInterval: INTERVAL_10_MIN\n flowSampling: 0.5\n metadata: INCLUDE_ALL_METADATA\n custom-test:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n```\n{{% /example %}}\n{{% example %}}\n### Subnetwork Internal L7lb\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_test = new gcp.compute.Network(\"custom-test\", {autoCreateSubnetworks: false}, {\n provider: google_beta,\n});\nconst network_for_l7lb = new gcp.compute.Subnetwork(\"network-for-l7lb\", {\n ipCidrRange: \"10.0.0.0/22\",\n region: \"us-central1\",\n purpose: \"INTERNAL_HTTPS_LOAD_BALANCER\",\n role: \"ACTIVE\",\n network: custom_test.id,\n}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test = gcp.compute.Network(\"custom-test\", auto_create_subnetworks=False,\nopts=pulumi.ResourceOptions(provider=google_beta))\nnetwork_for_l7lb = gcp.compute.Subnetwork(\"network-for-l7lb\",\n ip_cidr_range=\"10.0.0.0/22\",\n region=\"us-central1\",\n purpose=\"INTERNAL_HTTPS_LOAD_BALANCER\",\n role=\"ACTIVE\",\n network=custom_test.id,\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var custom_test = new Gcp.Compute.Network(\"custom-test\", new Gcp.Compute.NetworkArgs\n {\n AutoCreateSubnetworks = false,\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n var network_for_l7lb = new Gcp.Compute.Subnetwork(\"network-for-l7lb\", new Gcp.Compute.SubnetworkArgs\n {\n IpCidrRange = \"10.0.0.0/22\",\n Region = \"us-central1\",\n Purpose = \"INTERNAL_HTTPS_LOAD_BALANCER\",\n Role = \"ACTIVE\",\n Network = custom_test.Id,\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\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 := compute.NewNetwork(ctx, \"custom-test\", \u0026compute.NetworkArgs{\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"network-for-l7lb\", \u0026compute.SubnetworkArgs{\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/22\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPurpose: pulumi.String(\"INTERNAL_HTTPS_LOAD_BALANCER\"),\n\t\t\tRole: pulumi.String(\"ACTIVE\"),\n\t\t\tNetwork: custom_test.ID(),\n\t\t}, pulumi.Provider(google_beta))\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\nimport com.pulumi.resources.CustomResourceOptions;\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 custom_test = new Network(\"custom-test\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var network_for_l7lb = new Subnetwork(\"network-for-l7lb\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.0.0.0/22\")\n .region(\"us-central1\")\n .purpose(\"INTERNAL_HTTPS_LOAD_BALANCER\")\n .role(\"ACTIVE\")\n .network(custom_test.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network-for-l7lb:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.0.0.0/22\n region: us-central1\n purpose: INTERNAL_HTTPS_LOAD_BALANCER\n role: ACTIVE\n network: ${[\"custom-test\"].id}\n options:\n provider: ${[\"google-beta\"]}\n custom-test:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% example %}}\n### Subnetwork Ipv6\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_test = new gcp.compute.Network(\"custom-test\", {autoCreateSubnetworks: false});\nconst subnetwork_ipv6 = new gcp.compute.Subnetwork(\"subnetwork-ipv6\", {\n ipCidrRange: \"10.0.0.0/22\",\n region: \"us-west2\",\n stackType: \"IPV4_IPV6\",\n ipv6AccessType: \"EXTERNAL\",\n network: custom_test.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test = gcp.compute.Network(\"custom-test\", auto_create_subnetworks=False)\nsubnetwork_ipv6 = gcp.compute.Subnetwork(\"subnetwork-ipv6\",\n ip_cidr_range=\"10.0.0.0/22\",\n region=\"us-west2\",\n stack_type=\"IPV4_IPV6\",\n ipv6_access_type=\"EXTERNAL\",\n network=custom_test.id)\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var custom_test = new Gcp.Compute.Network(\"custom-test\", new Gcp.Compute.NetworkArgs\n {\n AutoCreateSubnetworks = false,\n });\n var subnetwork_ipv6 = new Gcp.Compute.Subnetwork(\"subnetwork-ipv6\", new Gcp.Compute.SubnetworkArgs\n {\n IpCidrRange = \"10.0.0.0/22\",\n Region = \"us-west2\",\n StackType = \"IPV4_IPV6\",\n Ipv6AccessType = \"EXTERNAL\",\n Network = custom_test.Id,\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\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 := compute.NewNetwork(ctx, \"custom-test\", \u0026compute.NetworkArgs{\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\t_, err = compute.NewSubnetwork(ctx, \"subnetwork-ipv6\", \u0026compute.SubnetworkArgs{\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/22\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tStackType: pulumi.String(\"IPV4_IPV6\"),\n\t\t\tIpv6AccessType: pulumi.String(\"EXTERNAL\"),\n\t\t\tNetwork: custom_test.ID(),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 custom_test = new Network(\"custom-test\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork_ipv6 = new Subnetwork(\"subnetwork-ipv6\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.0.0.0/22\")\n .region(\"us-west2\")\n .stackType(\"IPV4_IPV6\")\n .ipv6AccessType(\"EXTERNAL\")\n .network(custom_test.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n subnetwork-ipv6:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.0.0.0/22\n region: us-west2\n stackType: IPV4_IPV6\n ipv6AccessType: EXTERNAL\n network: ${[\"custom-test\"].id}\n custom-test:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nSubnetwork can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:compute/subnetwork:Subnetwork default projects/{{project}}/regions/{{region}}/subnetworks/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/subnetwork:Subnetwork default {{project}}/{{region}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/subnetwork:Subnetwork default {{region}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/subnetwork:Subnetwork default {{name}}\n```\n\n ", + "description": "A VPC network is a virtual version of the traditional physical networks\nthat exist within and between physical data centers. A VPC network\nprovides connectivity for your Compute Engine virtual machine (VM)\ninstances, Container Engine containers, App Engine Flex services, and\nother network-related resources.\n\nEach GCP project contains one or more VPC networks. Each VPC network is a\nglobal entity spanning all GCP regions. This global VPC network allows VM\ninstances and other resources to communicate with each other via internal,\nprivate IP addresses.\n\nEach VPC network is subdivided into subnets, and each subnet is contained\nwithin a single region. You can have more than one subnet in a region for\na given VPC network. Each subnet has a contiguous private RFC1918 IP\nspace. You create instances, containers, and the like in these subnets.\nWhen you create an instance, you must create it in a subnet, and the\ninstance draws its internal IP address from that subnet.\n\nVirtual machine (VM) instances in a VPC network can communicate with\ninstances in all other subnets of the same VPC network, regardless of\nregion, using their RFC1918 private IP addresses. You can isolate portions\nof the network, even entire subnets, using firewall rules.\n\n\nTo get more information about Subnetwork, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/subnetworks)\n* How-to Guides\n * [Private Google Access](https://cloud.google.com/vpc/docs/configure-private-google-access)\n * [Cloud Networking](https://cloud.google.com/vpc/docs/using-vpc)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Subnetwork Basic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_test = new gcp.compute.Network(\"custom-test\", {autoCreateSubnetworks: false});\nconst network_with_private_secondary_ip_ranges = new gcp.compute.Subnetwork(\"network-with-private-secondary-ip-ranges\", {\n ipCidrRange: \"10.2.0.0/16\",\n region: \"us-central1\",\n network: custom_test.id,\n secondaryIpRanges: [{\n rangeName: \"tf-test-secondary-range-update1\",\n ipCidrRange: \"192.168.10.0/24\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test = gcp.compute.Network(\"custom-test\", auto_create_subnetworks=False)\nnetwork_with_private_secondary_ip_ranges = gcp.compute.Subnetwork(\"network-with-private-secondary-ip-ranges\",\n ip_cidr_range=\"10.2.0.0/16\",\n region=\"us-central1\",\n network=custom_test.id,\n secondary_ip_ranges=[gcp.compute.SubnetworkSecondaryIpRangeArgs(\n range_name=\"tf-test-secondary-range-update1\",\n ip_cidr_range=\"192.168.10.0/24\",\n )])\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var custom_test = new Gcp.Compute.Network(\"custom-test\", new Gcp.Compute.NetworkArgs\n {\n AutoCreateSubnetworks = false,\n });\n var network_with_private_secondary_ip_ranges = new Gcp.Compute.Subnetwork(\"network-with-private-secondary-ip-ranges\", new Gcp.Compute.SubnetworkArgs\n {\n IpCidrRange = \"10.2.0.0/16\",\n Region = \"us-central1\",\n Network = custom_test.Id,\n SecondaryIpRanges = \n {\n new Gcp.Compute.Inputs.SubnetworkSecondaryIpRangeArgs\n {\n RangeName = \"tf-test-secondary-range-update1\",\n IpCidrRange = \"192.168.10.0/24\",\n },\n },\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\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 := compute.NewNetwork(ctx, \"custom-test\", \u0026compute.NetworkArgs{\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\t_, err = compute.NewSubnetwork(ctx, \"network-with-private-secondary-ip-ranges\", \u0026compute.SubnetworkArgs{\n\t\t\tIpCidrRange: pulumi.String(\"10.2.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: custom_test.ID(),\n\t\t\tSecondaryIpRanges: compute.SubnetworkSecondaryIpRangeArray{\n\t\t\t\t\u0026compute.SubnetworkSecondaryIpRangeArgs{\n\t\t\t\t\tRangeName: pulumi.String(\"tf-test-secondary-range-update1\"),\n\t\t\t\t\tIpCidrRange: pulumi.String(\"192.168.10.0/24\"),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 custom_test = new Network(\"custom-test\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var network_with_private_secondary_ip_ranges = new Subnetwork(\"network-with-private-secondary-ip-ranges\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.2.0.0/16\")\n .region(\"us-central1\")\n .network(custom_test.id())\n .secondaryIpRanges(SubnetworkSecondaryIpRangeArgs.builder()\n .rangeName(\"tf-test-secondary-range-update1\")\n .ipCidrRange(\"192.168.10.0/24\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network-with-private-secondary-ip-ranges:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.2.0.0/16\n region: us-central1\n network: ${[\"custom-test\"].id}\n secondaryIpRanges:\n - rangeName: tf-test-secondary-range-update1\n ipCidrRange: 192.168.10.0/24\n custom-test:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n```\n{{% /example %}}\n{{% example %}}\n### Subnetwork Logging Config\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_test = new gcp.compute.Network(\"custom-test\", {autoCreateSubnetworks: false});\nconst subnet_with_logging = new gcp.compute.Subnetwork(\"subnet-with-logging\", {\n ipCidrRange: \"10.2.0.0/16\",\n region: \"us-central1\",\n network: custom_test.id,\n logConfig: {\n aggregationInterval: \"INTERVAL_10_MIN\",\n flowSampling: 0.5,\n metadata: \"INCLUDE_ALL_METADATA\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test = gcp.compute.Network(\"custom-test\", auto_create_subnetworks=False)\nsubnet_with_logging = gcp.compute.Subnetwork(\"subnet-with-logging\",\n ip_cidr_range=\"10.2.0.0/16\",\n region=\"us-central1\",\n network=custom_test.id,\n log_config=gcp.compute.SubnetworkLogConfigArgs(\n aggregation_interval=\"INTERVAL_10_MIN\",\n flow_sampling=0.5,\n metadata=\"INCLUDE_ALL_METADATA\",\n ))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var custom_test = new Gcp.Compute.Network(\"custom-test\", new Gcp.Compute.NetworkArgs\n {\n AutoCreateSubnetworks = false,\n });\n var subnet_with_logging = new Gcp.Compute.Subnetwork(\"subnet-with-logging\", new Gcp.Compute.SubnetworkArgs\n {\n IpCidrRange = \"10.2.0.0/16\",\n Region = \"us-central1\",\n Network = custom_test.Id,\n LogConfig = new Gcp.Compute.Inputs.SubnetworkLogConfigArgs\n {\n AggregationInterval = \"INTERVAL_10_MIN\",\n FlowSampling = 0.5,\n Metadata = \"INCLUDE_ALL_METADATA\",\n },\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\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 := compute.NewNetwork(ctx, \"custom-test\", \u0026compute.NetworkArgs{\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\t_, err = compute.NewSubnetwork(ctx, \"subnet-with-logging\", \u0026compute.SubnetworkArgs{\n\t\t\tIpCidrRange: pulumi.String(\"10.2.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: custom_test.ID(),\n\t\t\tLogConfig: \u0026compute.SubnetworkLogConfigArgs{\n\t\t\t\tAggregationInterval: pulumi.String(\"INTERVAL_10_MIN\"),\n\t\t\t\tFlowSampling: pulumi.Float64(0.5),\n\t\t\t\tMetadata: pulumi.String(\"INCLUDE_ALL_METADATA\"),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 custom_test = new Network(\"custom-test\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var subnet_with_logging = new Subnetwork(\"subnet-with-logging\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.2.0.0/16\")\n .region(\"us-central1\")\n .network(custom_test.id())\n .logConfig(SubnetworkLogConfigArgs.builder()\n .aggregationInterval(\"INTERVAL_10_MIN\")\n .flowSampling(0.5)\n .metadata(\"INCLUDE_ALL_METADATA\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n subnet-with-logging:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.2.0.0/16\n region: us-central1\n network: ${[\"custom-test\"].id}\n logConfig:\n aggregationInterval: INTERVAL_10_MIN\n flowSampling: 0.5\n metadata: INCLUDE_ALL_METADATA\n custom-test:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n```\n{{% /example %}}\n{{% example %}}\n### Subnetwork Internal L7lb\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_test = new gcp.compute.Network(\"custom-test\", {autoCreateSubnetworks: false}, {\n provider: google_beta,\n});\nconst network_for_l7lb = new gcp.compute.Subnetwork(\"network-for-l7lb\", {\n ipCidrRange: \"10.0.0.0/22\",\n region: \"us-central1\",\n purpose: \"INTERNAL_HTTPS_LOAD_BALANCER\",\n role: \"ACTIVE\",\n network: custom_test.id,\n}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test = gcp.compute.Network(\"custom-test\", auto_create_subnetworks=False,\nopts=pulumi.ResourceOptions(provider=google_beta))\nnetwork_for_l7lb = gcp.compute.Subnetwork(\"network-for-l7lb\",\n ip_cidr_range=\"10.0.0.0/22\",\n region=\"us-central1\",\n purpose=\"INTERNAL_HTTPS_LOAD_BALANCER\",\n role=\"ACTIVE\",\n network=custom_test.id,\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var custom_test = new Gcp.Compute.Network(\"custom-test\", new Gcp.Compute.NetworkArgs\n {\n AutoCreateSubnetworks = false,\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n var network_for_l7lb = new Gcp.Compute.Subnetwork(\"network-for-l7lb\", new Gcp.Compute.SubnetworkArgs\n {\n IpCidrRange = \"10.0.0.0/22\",\n Region = \"us-central1\",\n Purpose = \"INTERNAL_HTTPS_LOAD_BALANCER\",\n Role = \"ACTIVE\",\n Network = custom_test.Id,\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\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 := compute.NewNetwork(ctx, \"custom-test\", \u0026compute.NetworkArgs{\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"network-for-l7lb\", \u0026compute.SubnetworkArgs{\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/22\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPurpose: pulumi.String(\"INTERNAL_HTTPS_LOAD_BALANCER\"),\n\t\t\tRole: pulumi.String(\"ACTIVE\"),\n\t\t\tNetwork: custom_test.ID(),\n\t\t}, pulumi.Provider(google_beta))\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\nimport com.pulumi.resources.CustomResourceOptions;\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 custom_test = new Network(\"custom-test\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var network_for_l7lb = new Subnetwork(\"network-for-l7lb\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.0.0.0/22\")\n .region(\"us-central1\")\n .purpose(\"INTERNAL_HTTPS_LOAD_BALANCER\")\n .role(\"ACTIVE\")\n .network(custom_test.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network-for-l7lb:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.0.0.0/22\n region: us-central1\n purpose: INTERNAL_HTTPS_LOAD_BALANCER\n role: ACTIVE\n network: ${[\"custom-test\"].id}\n options:\n provider: ${[\"google-beta\"]}\n custom-test:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% example %}}\n### Subnetwork Ipv6\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_test = new gcp.compute.Network(\"custom-test\", {autoCreateSubnetworks: false});\nconst subnetwork_ipv6 = new gcp.compute.Subnetwork(\"subnetwork-ipv6\", {\n ipCidrRange: \"10.0.0.0/22\",\n region: \"us-west2\",\n stackType: \"IPV4_IPV6\",\n ipv6AccessType: \"EXTERNAL\",\n network: custom_test.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test = gcp.compute.Network(\"custom-test\", auto_create_subnetworks=False)\nsubnetwork_ipv6 = gcp.compute.Subnetwork(\"subnetwork-ipv6\",\n ip_cidr_range=\"10.0.0.0/22\",\n region=\"us-west2\",\n stack_type=\"IPV4_IPV6\",\n ipv6_access_type=\"EXTERNAL\",\n network=custom_test.id)\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var custom_test = new Gcp.Compute.Network(\"custom-test\", new Gcp.Compute.NetworkArgs\n {\n AutoCreateSubnetworks = false,\n });\n var subnetwork_ipv6 = new Gcp.Compute.Subnetwork(\"subnetwork-ipv6\", new Gcp.Compute.SubnetworkArgs\n {\n IpCidrRange = \"10.0.0.0/22\",\n Region = \"us-west2\",\n StackType = \"IPV4_IPV6\",\n Ipv6AccessType = \"EXTERNAL\",\n Network = custom_test.Id,\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\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 := compute.NewNetwork(ctx, \"custom-test\", \u0026compute.NetworkArgs{\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\t_, err = compute.NewSubnetwork(ctx, \"subnetwork-ipv6\", \u0026compute.SubnetworkArgs{\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/22\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tStackType: pulumi.String(\"IPV4_IPV6\"),\n\t\t\tIpv6AccessType: pulumi.String(\"EXTERNAL\"),\n\t\t\tNetwork: custom_test.ID(),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 custom_test = new Network(\"custom-test\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork_ipv6 = new Subnetwork(\"subnetwork-ipv6\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.0.0.0/22\")\n .region(\"us-west2\")\n .stackType(\"IPV4_IPV6\")\n .ipv6AccessType(\"EXTERNAL\")\n .network(custom_test.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n subnetwork-ipv6:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.0.0.0/22\n region: us-west2\n stackType: IPV4_IPV6\n ipv6AccessType: EXTERNAL\n network: ${[\"custom-test\"].id}\n custom-test:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n```\n{{% /example %}}\n{{% example %}}\n### Subnetwork Internal Ipv6\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_test = new gcp.compute.Network(\"custom-test\", {\n autoCreateSubnetworks: false,\n enableUlaInternalIpv6: true,\n});\nconst subnetwork_internal_ipv6 = new gcp.compute.Subnetwork(\"subnetwork-internal-ipv6\", {\n ipCidrRange: \"10.0.0.0/22\",\n region: \"us-west2\",\n stackType: \"IPV4_IPV6\",\n ipv6AccessType: \"INTERNAL\",\n network: custom_test.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test = gcp.compute.Network(\"custom-test\",\n auto_create_subnetworks=False,\n enable_ula_internal_ipv6=True)\nsubnetwork_internal_ipv6 = gcp.compute.Subnetwork(\"subnetwork-internal-ipv6\",\n ip_cidr_range=\"10.0.0.0/22\",\n region=\"us-west2\",\n stack_type=\"IPV4_IPV6\",\n ipv6_access_type=\"INTERNAL\",\n network=custom_test.id)\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var custom_test = new Gcp.Compute.Network(\"custom-test\", new Gcp.Compute.NetworkArgs\n {\n AutoCreateSubnetworks = false,\n EnableUlaInternalIpv6 = true,\n });\n var subnetwork_internal_ipv6 = new Gcp.Compute.Subnetwork(\"subnetwork-internal-ipv6\", new Gcp.Compute.SubnetworkArgs\n {\n IpCidrRange = \"10.0.0.0/22\",\n Region = \"us-west2\",\n StackType = \"IPV4_IPV6\",\n Ipv6AccessType = \"INTERNAL\",\n Network = custom_test.Id,\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\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 := compute.NewNetwork(ctx, \"custom-test\", \u0026compute.NetworkArgs{\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t\tEnableUlaInternalIpv6: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"subnetwork-internal-ipv6\", \u0026compute.SubnetworkArgs{\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/22\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tStackType: pulumi.String(\"IPV4_IPV6\"),\n\t\t\tIpv6AccessType: pulumi.String(\"INTERNAL\"),\n\t\t\tNetwork: custom_test.ID(),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 custom_test = new Network(\"custom-test\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .enableUlaInternalIpv6(true)\n .build());\n\n var subnetwork_internal_ipv6 = new Subnetwork(\"subnetwork-internal-ipv6\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.0.0.0/22\")\n .region(\"us-west2\")\n .stackType(\"IPV4_IPV6\")\n .ipv6AccessType(\"INTERNAL\")\n .network(custom_test.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n subnetwork-internal-ipv6:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.0.0.0/22\n region: us-west2\n stackType: IPV4_IPV6\n ipv6AccessType: INTERNAL\n network: ${[\"custom-test\"].id}\n custom-test:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n enableUlaInternalIpv6: true\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nSubnetwork can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:compute/subnetwork:Subnetwork default projects/{{project}}/regions/{{region}}/subnetworks/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/subnetwork:Subnetwork default {{project}}/{{region}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/subnetwork:Subnetwork default {{region}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/subnetwork:Subnetwork default {{name}}\n```\n\n ", "properties": { "creationTimestamp": { "type": "string", @@ -111933,7 +112188,7 @@ }, "ipv6AccessType": { "type": "string", - "description": "The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation\nor the first time the subnet is updated into IPV4_IPV6 dual stack. If the ipv6_type is EXTERNAL then this subnet\ncannot enable direct path.\nPossible values are `EXTERNAL`.\n" + "description": "The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation\nor the first time the subnet is updated into IPV4_IPV6 dual stack. If the ipv6_type is EXTERNAL then this subnet\ncannot enable direct path.\nPossible values are `EXTERNAL` and `INTERNAL`.\n" }, "ipv6CidrRange": { "type": "string", @@ -112020,7 +112275,7 @@ }, "ipv6AccessType": { "type": "string", - "description": "The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation\nor the first time the subnet is updated into IPV4_IPV6 dual stack. If the ipv6_type is EXTERNAL then this subnet\ncannot enable direct path.\nPossible values are `EXTERNAL`.\n", + "description": "The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation\nor the first time the subnet is updated into IPV4_IPV6 dual stack. If the ipv6_type is EXTERNAL then this subnet\ncannot enable direct path.\nPossible values are `EXTERNAL` and `INTERNAL`.\n", "willReplaceOnChanges": true }, "logConfig": { @@ -112111,7 +112366,7 @@ }, "ipv6AccessType": { "type": "string", - "description": "The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation\nor the first time the subnet is updated into IPV4_IPV6 dual stack. If the ipv6_type is EXTERNAL then this subnet\ncannot enable direct path.\nPossible values are `EXTERNAL`.\n", + "description": "The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation\nor the first time the subnet is updated into IPV4_IPV6 dual stack. If the ipv6_type is EXTERNAL then this subnet\ncannot enable direct path.\nPossible values are `EXTERNAL` and `INTERNAL`.\n", "willReplaceOnChanges": true }, "ipv6CidrRange": { @@ -123385,6 +123640,10 @@ "gcp:dns/managedZone:ManagedZone": { "description": "A zone is a subtree of the DNS namespace under one administrative\nresponsibility. A ManagedZone is a resource that represents a DNS zone\nhosted by the Cloud DNS service.\n\nTo get more information about ManagedZone, see:\n\n* [API documentation](https://cloud.google.com/dns/api/v1/managedZones)\n* How-to Guides\n * [Managing Zones](https://cloud.google.com/dns/zones/)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Dns Managed Zone Basic\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example_zone = new gcp.dns.ManagedZone(\"example-zone\", {\n description: \"Example DNS zone\",\n dnsName: \"my-domain.com.\",\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample_zone = gcp.dns.ManagedZone(\"example-zone\",\n description=\"Example DNS zone\",\n dns_name=\"my-domain.com.\",\n labels={\n \"foo\": \"bar\",\n })\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var example_zone = new Gcp.Dns.ManagedZone(\"example-zone\", new Gcp.Dns.ManagedZoneArgs\n {\n Description = \"Example DNS zone\",\n DnsName = \"my-domain.com.\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dns\"\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 := dns.NewManagedZone(ctx, \"example-zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tDescription: pulumi.String(\"Example DNS zone\"),\n\t\t\tDnsName: pulumi.String(\"my-domain.com.\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 example_zone = new ManagedZone(\"example-zone\", ManagedZoneArgs.builder() \n .description(\"Example DNS zone\")\n .dnsName(\"my-domain.com.\")\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-zone:\n type: gcp:dns:ManagedZone\n properties:\n description: Example DNS zone\n dnsName: my-domain.com.\n labels:\n foo: bar\n```\n{{% /example %}}\n{{% example %}}\n### Dns Managed Zone Private\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_1 = new gcp.compute.Network(\"network-1\", {autoCreateSubnetworks: false});\nconst network_2 = new gcp.compute.Network(\"network-2\", {autoCreateSubnetworks: false});\nconst private_zone = new gcp.dns.ManagedZone(\"private-zone\", {\n dnsName: \"private.example.com.\",\n description: \"Example private DNS zone\",\n labels: {\n foo: \"bar\",\n },\n visibility: \"private\",\n privateVisibilityConfig: {\n networks: [\n {\n networkUrl: network_1.id,\n },\n {\n networkUrl: network_2.id,\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_1 = gcp.compute.Network(\"network-1\", auto_create_subnetworks=False)\nnetwork_2 = gcp.compute.Network(\"network-2\", auto_create_subnetworks=False)\nprivate_zone = gcp.dns.ManagedZone(\"private-zone\",\n dns_name=\"private.example.com.\",\n description=\"Example private DNS zone\",\n labels={\n \"foo\": \"bar\",\n },\n visibility=\"private\",\n private_visibility_config=gcp.dns.ManagedZonePrivateVisibilityConfigArgs(\n networks=[\n gcp.dns.ManagedZonePrivateVisibilityConfigNetworkArgs(\n network_url=network_1.id,\n ),\n gcp.dns.ManagedZonePrivateVisibilityConfigNetworkArgs(\n network_url=network_2.id,\n ),\n ],\n ))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var network_1 = new Gcp.Compute.Network(\"network-1\", new Gcp.Compute.NetworkArgs\n {\n AutoCreateSubnetworks = false,\n });\n var network_2 = new Gcp.Compute.Network(\"network-2\", new Gcp.Compute.NetworkArgs\n {\n AutoCreateSubnetworks = false,\n });\n var private_zone = new Gcp.Dns.ManagedZone(\"private-zone\", new Gcp.Dns.ManagedZoneArgs\n {\n DnsName = \"private.example.com.\",\n Description = \"Example private DNS zone\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Visibility = \"private\",\n PrivateVisibilityConfig = new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigArgs\n {\n Networks = \n {\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network_1.Id,\n },\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network_2.Id,\n },\n },\n },\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dns\"\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 := compute.NewNetwork(ctx, \"network-1\", \u0026compute.NetworkArgs{\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\t_, err = compute.NewNetwork(ctx, \"network-2\", \u0026compute.NetworkArgs{\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\t_, err = dns.NewManagedZone(ctx, \"private-zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tDnsName: pulumi.String(\"private.example.com.\"),\n\t\t\tDescription: pulumi.String(\"Example private DNS zone\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tVisibility: pulumi.String(\"private\"),\n\t\t\tPrivateVisibilityConfig: \u0026dns.ManagedZonePrivateVisibilityConfigArgs{\n\t\t\t\tNetworks: dns.ManagedZonePrivateVisibilityConfigNetworkArray{\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network_1.ID(),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network_2.ID(),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 network_1 = new Network(\"network-1\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var network_2 = new Network(\"network-2\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var private_zone = new ManagedZone(\"private-zone\", ManagedZoneArgs.builder() \n .dnsName(\"private.example.com.\")\n .description(\"Example private DNS zone\")\n .labels(Map.of(\"foo\", \"bar\"))\n .visibility(\"private\")\n .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder()\n .networks( \n ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network_1.id())\n .build(),\n ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network_2.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n private-zone:\n type: gcp:dns:ManagedZone\n properties:\n dnsName: private.example.com.\n description: Example private DNS zone\n labels:\n foo: bar\n visibility: private\n privateVisibilityConfig:\n networks:\n - networkUrl: ${[\"network-1\"].id}\n - networkUrl: ${[\"network-2\"].id}\n network-1:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n network-2:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n```\n{{% /example %}}\n{{% example %}}\n### Dns Managed Zone Private Forwarding\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_1 = new gcp.compute.Network(\"network-1\", {autoCreateSubnetworks: false});\nconst network_2 = new gcp.compute.Network(\"network-2\", {autoCreateSubnetworks: false});\nconst private_zone = new gcp.dns.ManagedZone(\"private-zone\", {\n dnsName: \"private.example.com.\",\n description: \"Example private DNS zone\",\n labels: {\n foo: \"bar\",\n },\n visibility: \"private\",\n privateVisibilityConfig: {\n networks: [\n {\n networkUrl: network_1.id,\n },\n {\n networkUrl: network_2.id,\n },\n ],\n },\n forwardingConfig: {\n targetNameServers: [\n {\n ipv4Address: \"172.16.1.10\",\n },\n {\n ipv4Address: \"172.16.1.20\",\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_1 = gcp.compute.Network(\"network-1\", auto_create_subnetworks=False)\nnetwork_2 = gcp.compute.Network(\"network-2\", auto_create_subnetworks=False)\nprivate_zone = gcp.dns.ManagedZone(\"private-zone\",\n dns_name=\"private.example.com.\",\n description=\"Example private DNS zone\",\n labels={\n \"foo\": \"bar\",\n },\n visibility=\"private\",\n private_visibility_config=gcp.dns.ManagedZonePrivateVisibilityConfigArgs(\n networks=[\n gcp.dns.ManagedZonePrivateVisibilityConfigNetworkArgs(\n network_url=network_1.id,\n ),\n gcp.dns.ManagedZonePrivateVisibilityConfigNetworkArgs(\n network_url=network_2.id,\n ),\n ],\n ),\n forwarding_config=gcp.dns.ManagedZoneForwardingConfigArgs(\n target_name_servers=[\n gcp.dns.ManagedZoneForwardingConfigTargetNameServerArgs(\n ipv4_address=\"172.16.1.10\",\n ),\n gcp.dns.ManagedZoneForwardingConfigTargetNameServerArgs(\n ipv4_address=\"172.16.1.20\",\n ),\n ],\n ))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var network_1 = new Gcp.Compute.Network(\"network-1\", new Gcp.Compute.NetworkArgs\n {\n AutoCreateSubnetworks = false,\n });\n var network_2 = new Gcp.Compute.Network(\"network-2\", new Gcp.Compute.NetworkArgs\n {\n AutoCreateSubnetworks = false,\n });\n var private_zone = new Gcp.Dns.ManagedZone(\"private-zone\", new Gcp.Dns.ManagedZoneArgs\n {\n DnsName = \"private.example.com.\",\n Description = \"Example private DNS zone\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Visibility = \"private\",\n PrivateVisibilityConfig = new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigArgs\n {\n Networks = \n {\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network_1.Id,\n },\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network_2.Id,\n },\n },\n },\n ForwardingConfig = new Gcp.Dns.Inputs.ManagedZoneForwardingConfigArgs\n {\n TargetNameServers = \n {\n new Gcp.Dns.Inputs.ManagedZoneForwardingConfigTargetNameServerArgs\n {\n Ipv4Address = \"172.16.1.10\",\n },\n new Gcp.Dns.Inputs.ManagedZoneForwardingConfigTargetNameServerArgs\n {\n Ipv4Address = \"172.16.1.20\",\n },\n },\n },\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dns\"\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 := compute.NewNetwork(ctx, \"network-1\", \u0026compute.NetworkArgs{\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\t_, err = compute.NewNetwork(ctx, \"network-2\", \u0026compute.NetworkArgs{\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\t_, err = dns.NewManagedZone(ctx, \"private-zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tDnsName: pulumi.String(\"private.example.com.\"),\n\t\t\tDescription: pulumi.String(\"Example private DNS zone\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tVisibility: pulumi.String(\"private\"),\n\t\t\tPrivateVisibilityConfig: \u0026dns.ManagedZonePrivateVisibilityConfigArgs{\n\t\t\t\tNetworks: dns.ManagedZonePrivateVisibilityConfigNetworkArray{\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network_1.ID(),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network_2.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tForwardingConfig: \u0026dns.ManagedZoneForwardingConfigArgs{\n\t\t\t\tTargetNameServers: dns.ManagedZoneForwardingConfigTargetNameServerArray{\n\t\t\t\t\t\u0026dns.ManagedZoneForwardingConfigTargetNameServerArgs{\n\t\t\t\t\t\tIpv4Address: pulumi.String(\"172.16.1.10\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dns.ManagedZoneForwardingConfigTargetNameServerArgs{\n\t\t\t\t\t\tIpv4Address: pulumi.String(\"172.16.1.20\"),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 network_1 = new Network(\"network-1\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var network_2 = new Network(\"network-2\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var private_zone = new ManagedZone(\"private-zone\", ManagedZoneArgs.builder() \n .dnsName(\"private.example.com.\")\n .description(\"Example private DNS zone\")\n .labels(Map.of(\"foo\", \"bar\"))\n .visibility(\"private\")\n .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder()\n .networks( \n ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network_1.id())\n .build(),\n ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network_2.id())\n .build())\n .build())\n .forwardingConfig(ManagedZoneForwardingConfigArgs.builder()\n .targetNameServers( \n ManagedZoneForwardingConfigTargetNameServerArgs.builder()\n .ipv4Address(\"172.16.1.10\")\n .build(),\n ManagedZoneForwardingConfigTargetNameServerArgs.builder()\n .ipv4Address(\"172.16.1.20\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n private-zone:\n type: gcp:dns:ManagedZone\n properties:\n dnsName: private.example.com.\n description: Example private DNS zone\n labels:\n foo: bar\n visibility: private\n privateVisibilityConfig:\n networks:\n - networkUrl: ${[\"network-1\"].id}\n - networkUrl: ${[\"network-2\"].id}\n forwardingConfig:\n targetNameServers:\n - ipv4Address: 172.16.1.10\n - ipv4Address: 172.16.1.20\n network-1:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n network-2:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n```\n{{% /example %}}\n{{% example %}}\n### Dns Managed Zone Private Peering\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_source = new gcp.compute.Network(\"network-source\", {autoCreateSubnetworks: false});\nconst network_target = new gcp.compute.Network(\"network-target\", {autoCreateSubnetworks: false});\nconst peering_zone = new gcp.dns.ManagedZone(\"peering-zone\", {\n dnsName: \"peering.example.com.\",\n description: \"Example private DNS peering zone\",\n visibility: \"private\",\n privateVisibilityConfig: {\n networks: [{\n networkUrl: network_source.id,\n }],\n },\n peeringConfig: {\n targetNetwork: {\n networkUrl: network_target.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_source = gcp.compute.Network(\"network-source\", auto_create_subnetworks=False)\nnetwork_target = gcp.compute.Network(\"network-target\", auto_create_subnetworks=False)\npeering_zone = gcp.dns.ManagedZone(\"peering-zone\",\n dns_name=\"peering.example.com.\",\n description=\"Example private DNS peering zone\",\n visibility=\"private\",\n private_visibility_config=gcp.dns.ManagedZonePrivateVisibilityConfigArgs(\n networks=[gcp.dns.ManagedZonePrivateVisibilityConfigNetworkArgs(\n network_url=network_source.id,\n )],\n ),\n peering_config=gcp.dns.ManagedZonePeeringConfigArgs(\n target_network=gcp.dns.ManagedZonePeeringConfigTargetNetworkArgs(\n network_url=network_target.id,\n ),\n ))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var network_source = new Gcp.Compute.Network(\"network-source\", new Gcp.Compute.NetworkArgs\n {\n AutoCreateSubnetworks = false,\n });\n var network_target = new Gcp.Compute.Network(\"network-target\", new Gcp.Compute.NetworkArgs\n {\n AutoCreateSubnetworks = false,\n });\n var peering_zone = new Gcp.Dns.ManagedZone(\"peering-zone\", new Gcp.Dns.ManagedZoneArgs\n {\n DnsName = \"peering.example.com.\",\n Description = \"Example private DNS peering zone\",\n Visibility = \"private\",\n PrivateVisibilityConfig = new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigArgs\n {\n Networks = \n {\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network_source.Id,\n },\n },\n },\n PeeringConfig = new Gcp.Dns.Inputs.ManagedZonePeeringConfigArgs\n {\n TargetNetwork = new Gcp.Dns.Inputs.ManagedZonePeeringConfigTargetNetworkArgs\n {\n NetworkUrl = network_target.Id,\n },\n },\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dns\"\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 := compute.NewNetwork(ctx, \"network-source\", \u0026compute.NetworkArgs{\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\t_, err = compute.NewNetwork(ctx, \"network-target\", \u0026compute.NetworkArgs{\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\t_, err = dns.NewManagedZone(ctx, \"peering-zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tDnsName: pulumi.String(\"peering.example.com.\"),\n\t\t\tDescription: pulumi.String(\"Example private DNS peering zone\"),\n\t\t\tVisibility: pulumi.String(\"private\"),\n\t\t\tPrivateVisibilityConfig: \u0026dns.ManagedZonePrivateVisibilityConfigArgs{\n\t\t\t\tNetworks: dns.ManagedZonePrivateVisibilityConfigNetworkArray{\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network_source.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tPeeringConfig: \u0026dns.ManagedZonePeeringConfigArgs{\n\t\t\t\tTargetNetwork: \u0026dns.ManagedZonePeeringConfigTargetNetworkArgs{\n\t\t\t\t\tNetworkUrl: network_target.ID(),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 network_source = new Network(\"network-source\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var network_target = new Network(\"network-target\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var peering_zone = new ManagedZone(\"peering-zone\", ManagedZoneArgs.builder() \n .dnsName(\"peering.example.com.\")\n .description(\"Example private DNS peering zone\")\n .visibility(\"private\")\n .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder()\n .networks(ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network_source.id())\n .build())\n .build())\n .peeringConfig(ManagedZonePeeringConfigArgs.builder()\n .targetNetwork(ManagedZonePeeringConfigTargetNetworkArgs.builder()\n .networkUrl(network_target.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n peering-zone:\n type: gcp:dns:ManagedZone\n properties:\n dnsName: peering.example.com.\n description: Example private DNS peering zone\n visibility: private\n privateVisibilityConfig:\n networks:\n - networkUrl: ${[\"network-source\"].id}\n peeringConfig:\n targetNetwork:\n networkUrl: ${[\"network-target\"].id}\n network-source:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n network-target:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n```\n{{% /example %}}\n{{% example %}}\n### Dns Managed Zone Service Directory\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.servicedirectory.Namespace(\"example\", {\n namespaceId: \"example\",\n location: \"us-central1\",\n}, {\n provider: google_beta,\n});\nconst sd_zone = new gcp.dns.ManagedZone(\"sd-zone\", {\n dnsName: \"services.example.com.\",\n description: \"Example private DNS Service Directory zone\",\n visibility: \"private\",\n serviceDirectoryConfig: {\n namespace: {\n namespaceUrl: example.id,\n },\n },\n}, {\n provider: google_beta,\n});\nconst network = new gcp.compute.Network(\"network\", {autoCreateSubnetworks: false}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.servicedirectory.Namespace(\"example\",\n namespace_id=\"example\",\n location=\"us-central1\",\n opts=pulumi.ResourceOptions(provider=google_beta))\nsd_zone = gcp.dns.ManagedZone(\"sd-zone\",\n dns_name=\"services.example.com.\",\n description=\"Example private DNS Service Directory zone\",\n visibility=\"private\",\n service_directory_config=gcp.dns.ManagedZoneServiceDirectoryConfigArgs(\n namespace=gcp.dns.ManagedZoneServiceDirectoryConfigNamespaceArgs(\n namespace_url=example.id,\n ),\n ),\n opts=pulumi.ResourceOptions(provider=google_beta))\nnetwork = gcp.compute.Network(\"network\", auto_create_subnetworks=False,\nopts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var example = new Gcp.ServiceDirectory.Namespace(\"example\", new Gcp.ServiceDirectory.NamespaceArgs\n {\n NamespaceId = \"example\",\n Location = \"us-central1\",\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n var sd_zone = new Gcp.Dns.ManagedZone(\"sd-zone\", new Gcp.Dns.ManagedZoneArgs\n {\n DnsName = \"services.example.com.\",\n Description = \"Example private DNS Service Directory zone\",\n Visibility = \"private\",\n ServiceDirectoryConfig = new Gcp.Dns.Inputs.ManagedZoneServiceDirectoryConfigArgs\n {\n Namespace = new Gcp.Dns.Inputs.ManagedZoneServiceDirectoryConfigNamespaceArgs\n {\n NamespaceUrl = example.Id,\n },\n },\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n var network = new Gcp.Compute.Network(\"network\", new Gcp.Compute.NetworkArgs\n {\n AutoCreateSubnetworks = false,\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/servicedirectory\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := servicedirectory.NewNamespace(ctx, \"example\", \u0026servicedirectory.NamespaceArgs{\n\t\t\tNamespaceId: pulumi.String(\"example\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewManagedZone(ctx, \"sd-zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tDnsName: pulumi.String(\"services.example.com.\"),\n\t\t\tDescription: pulumi.String(\"Example private DNS Service Directory zone\"),\n\t\t\tVisibility: pulumi.String(\"private\"),\n\t\t\tServiceDirectoryConfig: \u0026dns.ManagedZoneServiceDirectoryConfigArgs{\n\t\t\t\tNamespace: \u0026dns.ManagedZoneServiceDirectoryConfigNamespaceArgs{\n\t\t\t\t\tNamespaceUrl: example.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t}, pulumi.Provider(google_beta))\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\nimport com.pulumi.resources.CustomResourceOptions;\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 example = new Namespace(\"example\", NamespaceArgs.builder() \n .namespaceId(\"example\")\n .location(\"us-central1\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var sd_zone = new ManagedZone(\"sd-zone\", ManagedZoneArgs.builder() \n .dnsName(\"services.example.com.\")\n .description(\"Example private DNS Service Directory zone\")\n .visibility(\"private\")\n .serviceDirectoryConfig(ManagedZoneServiceDirectoryConfigArgs.builder()\n .namespace(ManagedZoneServiceDirectoryConfigNamespaceArgs.builder()\n .namespaceUrl(example.id())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var network = new Network(\"network\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sd-zone:\n type: gcp:dns:ManagedZone\n properties:\n dnsName: services.example.com.\n description: Example private DNS Service Directory zone\n visibility: private\n serviceDirectoryConfig:\n namespace:\n namespaceUrl: ${example.id}\n options:\n provider: ${[\"google-beta\"]}\n example:\n type: gcp:servicedirectory:Namespace\n properties:\n namespaceId: example\n location: us-central1\n options:\n provider: ${[\"google-beta\"]}\n network:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nManagedZone can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:dns/managedZone:ManagedZone default projects/{{project}}/managedZones/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:dns/managedZone:ManagedZone default {{project}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:dns/managedZone:ManagedZone default {{name}}\n```\n\n ", "properties": { + "creationTime": { + "type": "string", + "description": "The time that this resource was created on the server. This is in RFC3339 text format.\n" + }, "description": { "type": "string", "description": "A textual description field. Defaults to 'Managed by Pulumi'.\n", @@ -123413,6 +123672,10 @@ }, "description": "A set of key/value label pairs to assign to this ManagedZone.\n" }, + "managedZoneId": { + "type": "integer", + "description": "Unique identifier for the resource; defined by the server.\n" + }, "name": { "type": "string", "description": "User assigned name for this resource.\nMust be unique within the project.\n" @@ -123450,8 +123713,10 @@ } }, "required": [ + "creationTime", "description", "dnsName", + "managedZoneId", "name", "nameServers", "project" @@ -123526,6 +123791,10 @@ "stateInputs": { "description": "Input properties used for looking up and filtering ManagedZone resources.\n", "properties": { + "creationTime": { + "type": "string", + "description": "The time that this resource was created on the server. This is in RFC3339 text format.\n" + }, "description": { "type": "string", "description": "A textual description field. Defaults to 'Managed by Pulumi'.\n", @@ -123555,6 +123824,10 @@ }, "description": "A set of key/value label pairs to assign to this ManagedZone.\n" }, + "managedZoneId": { + "type": "integer", + "description": "Unique identifier for the resource; defined by the server.\n" + }, "name": { "type": "string", "description": "User assigned name for this resource.\nMust be unique within the project.\n", @@ -126850,7 +127123,7 @@ } }, "gcp:gkehub/feature:Feature": { - "description": "{{% examples %}}\n## Example Usage\n{{% example %}}\n### Multi Cluster Ingress\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster = new gcp.container.Cluster(\"cluster\", {\n location: \"us-central1-a\",\n initialNodeCount: 1,\n}, {\n provider: google_beta,\n});\nconst membership = new gcp.gkehub.Membership(\"membership\", {\n membershipId: \"my-membership\",\n endpoint: {\n gkeCluster: {\n resourceLink: pulumi.interpolate`//container.googleapis.com/${cluster.id}`,\n },\n },\n description: \"Membership\",\n}, {\n provider: google_beta,\n});\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n location: \"global\",\n spec: {\n multiclusteringress: {\n configMembership: membership.id,\n },\n },\n}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster = gcp.container.Cluster(\"cluster\",\n location=\"us-central1-a\",\n initial_node_count=1,\n opts=pulumi.ResourceOptions(provider=google_beta))\nmembership = gcp.gkehub.Membership(\"membership\",\n membership_id=\"my-membership\",\n endpoint=gcp.gkehub.MembershipEndpointArgs(\n gke_cluster=gcp.gkehub.MembershipEndpointGkeClusterArgs(\n resource_link=cluster.id.apply(lambda id: f\"//container.googleapis.com/{id}\"),\n ),\n ),\n description=\"Membership\",\n opts=pulumi.ResourceOptions(provider=google_beta))\nfeature = gcp.gkehub.Feature(\"feature\",\n location=\"global\",\n spec=gcp.gkehub.FeatureSpecArgs(\n multiclusteringress=gcp.gkehub.FeatureSpecMulticlusteringressArgs(\n config_membership=membership.id,\n ),\n ),\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var cluster = new Gcp.Container.Cluster(\"cluster\", new Gcp.Container.ClusterArgs\n {\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n var membership = new Gcp.GkeHub.Membership(\"membership\", new Gcp.GkeHub.MembershipArgs\n {\n MembershipId = \"my-membership\",\n Endpoint = new Gcp.GkeHub.Inputs.MembershipEndpointArgs\n {\n GkeCluster = new Gcp.GkeHub.Inputs.MembershipEndpointGkeClusterArgs\n {\n ResourceLink = cluster.Id.Apply(id =\u003e $\"//container.googleapis.com/{id}\"),\n },\n },\n Description = \"Membership\",\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n var feature = new Gcp.GkeHub.Feature(\"feature\", new Gcp.GkeHub.FeatureArgs\n {\n Location = \"global\",\n Spec = new Gcp.GkeHub.Inputs.FeatureSpecArgs\n {\n Multiclusteringress = new Gcp.GkeHub.Inputs.FeatureSpecMulticlusteringressArgs\n {\n ConfigMembership = membership.Id,\n },\n },\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcluster, err := container.NewCluster(ctx, \"cluster\", \u0026container.ClusterArgs{\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmembership, err := gkehub.NewMembership(ctx, \"membership\", \u0026gkehub.MembershipArgs{\n\t\t\tMembershipId: pulumi.String(\"my-membership\"),\n\t\t\tEndpoint: \u0026gkehub.MembershipEndpointArgs{\n\t\t\t\tGkeCluster: \u0026gkehub.MembershipEndpointGkeClusterArgs{\n\t\t\t\t\tResourceLink: cluster.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"%v%v\", \"//container.googleapis.com/\", id), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"Membership\"),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tSpec: \u0026gkehub.FeatureSpecArgs{\n\t\t\t\tMulticlusteringress: \u0026gkehub.FeatureSpecMulticlusteringressArgs{\n\t\t\t\t\tConfigMembership: membership.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.Provider(google_beta))\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\nimport com.pulumi.resources.CustomResourceOptions;\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 cluster = new Cluster(\"cluster\", ClusterArgs.builder() \n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var membership = new Membership(\"membership\", MembershipArgs.builder() \n .membershipId(\"my-membership\")\n .endpoint(MembershipEndpointArgs.builder()\n .gkeCluster(MembershipEndpointGkeClusterArgs.builder()\n .resourceLink(cluster.id().apply(id -\u003e String.format(\"//container.googleapis.com/%s\", id)))\n .build())\n .build())\n .description(\"Membership\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var feature = new Feature(\"feature\", FeatureArgs.builder() \n .location(\"global\")\n .spec(FeatureSpecArgs.builder()\n .multiclusteringress(FeatureSpecMulticlusteringressArgs.builder()\n .configMembership(membership.id())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: gcp:container:Cluster\n properties:\n location: us-central1-a\n initialNodeCount: 1\n options:\n provider: ${[\"google-beta\"]}\n membership:\n type: gcp:gkehub:Membership\n properties:\n membershipId: my-membership\n endpoint:\n gkeCluster:\n resourceLink: //container.googleapis.com/${cluster.id}\n description: Membership\n options:\n provider: ${[\"google-beta\"]}\n feature:\n type: gcp:gkehub:Feature\n properties:\n location: global\n spec:\n multiclusteringress:\n configMembership: ${membership.id}\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% example %}}\n### Multi Cluster Service Discovery\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n location: \"global\",\n labels: {\n foo: \"bar\",\n },\n}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n location=\"global\",\n labels={\n \"foo\": \"bar\",\n },\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var feature = new Gcp.GkeHub.Feature(\"feature\", new Gcp.GkeHub.FeatureArgs\n {\n Location = \"global\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/gkehub\"\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 := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t}, pulumi.Provider(google_beta))\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\nimport com.pulumi.resources.CustomResourceOptions;\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 feature = new Feature(\"feature\", FeatureArgs.builder() \n .location(\"global\")\n .labels(Map.of(\"foo\", \"bar\"))\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n location: global\n labels:\n foo: bar\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nFeature can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:gkehub/feature:Feature default projects/{{project}}/locations/{{location}}/features/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:gkehub/feature:Feature default {{project}}/{{location}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:gkehub/feature:Feature default {{location}}/{{name}}\n```\n\n ", + "description": "{{% examples %}}\n## Example Usage\n{{% example %}}\n### Multi Cluster Ingress\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster = new gcp.container.Cluster(\"cluster\", {\n location: \"us-central1-a\",\n initialNodeCount: 1,\n}, {\n provider: google_beta,\n});\nconst membership = new gcp.gkehub.Membership(\"membership\", {\n membershipId: \"my-membership\",\n endpoint: {\n gkeCluster: {\n resourceLink: pulumi.interpolate`//container.googleapis.com/${cluster.id}`,\n },\n },\n description: \"Membership\",\n}, {\n provider: google_beta,\n});\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n location: \"global\",\n spec: {\n multiclusteringress: {\n configMembership: membership.id,\n },\n },\n}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster = gcp.container.Cluster(\"cluster\",\n location=\"us-central1-a\",\n initial_node_count=1,\n opts=pulumi.ResourceOptions(provider=google_beta))\nmembership = gcp.gkehub.Membership(\"membership\",\n membership_id=\"my-membership\",\n endpoint=gcp.gkehub.MembershipEndpointArgs(\n gke_cluster=gcp.gkehub.MembershipEndpointGkeClusterArgs(\n resource_link=cluster.id.apply(lambda id: f\"//container.googleapis.com/{id}\"),\n ),\n ),\n description=\"Membership\",\n opts=pulumi.ResourceOptions(provider=google_beta))\nfeature = gcp.gkehub.Feature(\"feature\",\n location=\"global\",\n spec=gcp.gkehub.FeatureSpecArgs(\n multiclusteringress=gcp.gkehub.FeatureSpecMulticlusteringressArgs(\n config_membership=membership.id,\n ),\n ),\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var cluster = new Gcp.Container.Cluster(\"cluster\", new Gcp.Container.ClusterArgs\n {\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n var membership = new Gcp.GkeHub.Membership(\"membership\", new Gcp.GkeHub.MembershipArgs\n {\n MembershipId = \"my-membership\",\n Endpoint = new Gcp.GkeHub.Inputs.MembershipEndpointArgs\n {\n GkeCluster = new Gcp.GkeHub.Inputs.MembershipEndpointGkeClusterArgs\n {\n ResourceLink = cluster.Id.Apply(id =\u003e $\"//container.googleapis.com/{id}\"),\n },\n },\n Description = \"Membership\",\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n var feature = new Gcp.GkeHub.Feature(\"feature\", new Gcp.GkeHub.FeatureArgs\n {\n Location = \"global\",\n Spec = new Gcp.GkeHub.Inputs.FeatureSpecArgs\n {\n Multiclusteringress = new Gcp.GkeHub.Inputs.FeatureSpecMulticlusteringressArgs\n {\n ConfigMembership = membership.Id,\n },\n },\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcluster, err := container.NewCluster(ctx, \"cluster\", \u0026container.ClusterArgs{\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmembership, err := gkehub.NewMembership(ctx, \"membership\", \u0026gkehub.MembershipArgs{\n\t\t\tMembershipId: pulumi.String(\"my-membership\"),\n\t\t\tEndpoint: \u0026gkehub.MembershipEndpointArgs{\n\t\t\t\tGkeCluster: \u0026gkehub.MembershipEndpointGkeClusterArgs{\n\t\t\t\t\tResourceLink: cluster.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"%v%v\", \"//container.googleapis.com/\", id), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"Membership\"),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tSpec: \u0026gkehub.FeatureSpecArgs{\n\t\t\t\tMulticlusteringress: \u0026gkehub.FeatureSpecMulticlusteringressArgs{\n\t\t\t\t\tConfigMembership: membership.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.Provider(google_beta))\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\nimport com.pulumi.resources.CustomResourceOptions;\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 cluster = new Cluster(\"cluster\", ClusterArgs.builder() \n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var membership = new Membership(\"membership\", MembershipArgs.builder() \n .membershipId(\"my-membership\")\n .endpoint(MembershipEndpointArgs.builder()\n .gkeCluster(MembershipEndpointGkeClusterArgs.builder()\n .resourceLink(cluster.id().apply(id -\u003e String.format(\"//container.googleapis.com/%s\", id)))\n .build())\n .build())\n .description(\"Membership\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var feature = new Feature(\"feature\", FeatureArgs.builder() \n .location(\"global\")\n .spec(FeatureSpecArgs.builder()\n .multiclusteringress(FeatureSpecMulticlusteringressArgs.builder()\n .configMembership(membership.id())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: gcp:container:Cluster\n properties:\n location: us-central1-a\n initialNodeCount: 1\n options:\n provider: ${[\"google-beta\"]}\n membership:\n type: gcp:gkehub:Membership\n properties:\n membershipId: my-membership\n endpoint:\n gkeCluster:\n resourceLink: //container.googleapis.com/${cluster.id}\n description: Membership\n options:\n provider: ${[\"google-beta\"]}\n feature:\n type: gcp:gkehub:Feature\n properties:\n location: global\n spec:\n multiclusteringress:\n configMembership: ${membership.id}\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% example %}}\n### Multi Cluster Service Discovery\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n location: \"global\",\n labels: {\n foo: \"bar\",\n },\n}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n location=\"global\",\n labels={\n \"foo\": \"bar\",\n },\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var feature = new Gcp.GkeHub.Feature(\"feature\", new Gcp.GkeHub.FeatureArgs\n {\n Location = \"global\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/gkehub\"\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 := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t}, pulumi.Provider(google_beta))\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\nimport com.pulumi.resources.CustomResourceOptions;\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 feature = new Feature(\"feature\", FeatureArgs.builder() \n .location(\"global\")\n .labels(Map.of(\"foo\", \"bar\"))\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n location: global\n labels:\n foo: bar\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% example %}}\n### Enable Anthos Service Mesh\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {location: \"global\"}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\", location=\"global\",\nopts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var feature = new Gcp.GkeHub.Feature(\"feature\", new Gcp.GkeHub.FeatureArgs\n {\n Location = \"global\",\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/gkehub\"\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 := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t}, pulumi.Provider(google_beta))\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\nimport com.pulumi.resources.CustomResourceOptions;\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 feature = new Feature(\"feature\", FeatureArgs.builder() \n .location(\"global\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n location: global\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nFeature can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:gkehub/feature:Feature default projects/{{project}}/locations/{{location}}/features/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:gkehub/feature:Feature default {{project}}/{{location}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:gkehub/feature:Feature default {{location}}/{{name}}\n```\n\n ", "properties": { "createTime": { "type": "string", @@ -136233,7 +136506,7 @@ } }, "gcp:monitoring/customService:CustomService": { - "description": "A Service is a discrete, autonomous, and network-accessible unit,\ndesigned to solve an individual concern (Wikipedia). In Cloud Monitoring,\na Service acts as the root resource under which operational aspects of\nthe service are accessible\n\n\nTo get more information about Service, see:\n\n* [API documentation](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/services)\n* How-to Guides\n * [Service Monitoring](https://cloud.google.com/monitoring/service-monitoring)\n * [Monitoring API Documentation](https://cloud.google.com/monitoring/api/v3/)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Monitoring Service Custom\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom = new gcp.monitoring.CustomService(\"custom\", {\n displayName: \"My Custom Service custom-srv\",\n serviceId: \"custom-srv\",\n telemetry: {\n resourceName: \"//product.googleapis.com/foo/foo/services/test\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom = gcp.monitoring.CustomService(\"custom\",\n display_name=\"My Custom Service custom-srv\",\n service_id=\"custom-srv\",\n telemetry=gcp.monitoring.CustomServiceTelemetryArgs(\n resource_name=\"//product.googleapis.com/foo/foo/services/test\",\n ))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var custom = new Gcp.Monitoring.CustomService(\"custom\", new Gcp.Monitoring.CustomServiceArgs\n {\n DisplayName = \"My Custom Service custom-srv\",\n ServiceId = \"custom-srv\",\n Telemetry = new Gcp.Monitoring.Inputs.CustomServiceTelemetryArgs\n {\n ResourceName = \"//product.googleapis.com/foo/foo/services/test\",\n },\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/monitoring\"\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 := monitoring.NewCustomService(ctx, \"custom\", \u0026monitoring.CustomServiceArgs{\n\t\t\tDisplayName: pulumi.String(\"My Custom Service custom-srv\"),\n\t\t\tServiceId: pulumi.String(\"custom-srv\"),\n\t\t\tTelemetry: \u0026monitoring.CustomServiceTelemetryArgs{\n\t\t\t\tResourceName: pulumi.String(\"//product.googleapis.com/foo/foo/services/test\"),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 custom = new CustomService(\"custom\", CustomServiceArgs.builder() \n .displayName(\"My Custom Service custom-srv\")\n .serviceId(\"custom-srv\")\n .telemetry(CustomServiceTelemetryArgs.builder()\n .resourceName(\"//product.googleapis.com/foo/foo/services/test\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n custom:\n type: gcp:monitoring:CustomService\n properties:\n displayName: My Custom Service custom-srv\n serviceId: custom-srv\n telemetry:\n resourceName: //product.googleapis.com/foo/foo/services/test\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nService can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:monitoring/customService:CustomService default {{name}}\n```\n\n ", + "description": "A Service is a discrete, autonomous, and network-accessible unit,\ndesigned to solve an individual concern (Wikipedia). In Cloud Monitoring,\na Service acts as the root resource under which operational aspects of\nthe service are accessible\n\n\nTo get more information about Service, see:\n\n* [API documentation](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/services)\n* How-to Guides\n * [Service Monitoring](https://cloud.google.com/monitoring/service-monitoring)\n * [Monitoring API Documentation](https://cloud.google.com/monitoring/api/v3/)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Monitoring Service Custom\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom = new gcp.monitoring.CustomService(\"custom\", {\n displayName: \"My Custom Service custom-srv\",\n serviceId: \"custom-srv\",\n telemetry: {\n resourceName: \"//product.googleapis.com/foo/foo/services/test\",\n },\n userLabels: {\n my_key: \"my_value\",\n my_other_key: \"my_other_value\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom = gcp.monitoring.CustomService(\"custom\",\n display_name=\"My Custom Service custom-srv\",\n service_id=\"custom-srv\",\n telemetry=gcp.monitoring.CustomServiceTelemetryArgs(\n resource_name=\"//product.googleapis.com/foo/foo/services/test\",\n ),\n user_labels={\n \"my_key\": \"my_value\",\n \"my_other_key\": \"my_other_value\",\n })\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var custom = new Gcp.Monitoring.CustomService(\"custom\", new Gcp.Monitoring.CustomServiceArgs\n {\n DisplayName = \"My Custom Service custom-srv\",\n ServiceId = \"custom-srv\",\n Telemetry = new Gcp.Monitoring.Inputs.CustomServiceTelemetryArgs\n {\n ResourceName = \"//product.googleapis.com/foo/foo/services/test\",\n },\n UserLabels = \n {\n { \"my_key\", \"my_value\" },\n { \"my_other_key\", \"my_other_value\" },\n },\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/monitoring\"\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 := monitoring.NewCustomService(ctx, \"custom\", \u0026monitoring.CustomServiceArgs{\n\t\t\tDisplayName: pulumi.String(\"My Custom Service custom-srv\"),\n\t\t\tServiceId: pulumi.String(\"custom-srv\"),\n\t\t\tTelemetry: \u0026monitoring.CustomServiceTelemetryArgs{\n\t\t\t\tResourceName: pulumi.String(\"//product.googleapis.com/foo/foo/services/test\"),\n\t\t\t},\n\t\t\tUserLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_value\"),\n\t\t\t\t\"my_other_key\": pulumi.String(\"my_other_value\"),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 custom = new CustomService(\"custom\", CustomServiceArgs.builder() \n .displayName(\"My Custom Service custom-srv\")\n .serviceId(\"custom-srv\")\n .telemetry(CustomServiceTelemetryArgs.builder()\n .resourceName(\"//product.googleapis.com/foo/foo/services/test\")\n .build())\n .userLabels(Map.ofEntries(\n Map.entry(\"my_key\", \"my_value\"),\n Map.entry(\"my_other_key\", \"my_other_value\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n custom:\n type: gcp:monitoring:CustomService\n properties:\n displayName: My Custom Service custom-srv\n serviceId: custom-srv\n telemetry:\n resourceName: //product.googleapis.com/foo/foo/services/test\n userLabels:\n my_key: my_value\n my_other_key: my_other_value\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nService can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:monitoring/customService:CustomService default {{name}}\n```\n\n ", "properties": { "displayName": { "type": "string", @@ -136254,6 +136527,13 @@ "telemetry": { "$ref": "#/types/gcp:monitoring/CustomServiceTelemetry:CustomServiceTelemetry", "description": "Configuration for how to query telemetry on a Service.\nStructure is documented below.\n" + }, + "userLabels": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Labels which have been used to annotate the service. Label keys must start\nwith a letter. Label keys and values may contain lowercase letters,\nnumbers, underscores, and dashes. Label keys and values have a maximum\nlength of 63 characters, and must be less than 128 bytes in size. Up to 64\nlabel entries may be stored. For labels which do not have a semantic value,\nthe empty string may be supplied for the label value.\n" } }, "required": [ @@ -136279,6 +136559,13 @@ "telemetry": { "$ref": "#/types/gcp:monitoring/CustomServiceTelemetry:CustomServiceTelemetry", "description": "Configuration for how to query telemetry on a Service.\nStructure is documented below.\n" + }, + "userLabels": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Labels which have been used to annotate the service. Label keys must start\nwith a letter. Label keys and values may contain lowercase letters,\nnumbers, underscores, and dashes. Label keys and values have a maximum\nlength of 63 characters, and must be less than 128 bytes in size. Up to 64\nlabel entries may be stored. For labels which do not have a semantic value,\nthe empty string may be supplied for the label value.\n" } }, "stateInputs": { @@ -136305,6 +136592,13 @@ "telemetry": { "$ref": "#/types/gcp:monitoring/CustomServiceTelemetry:CustomServiceTelemetry", "description": "Configuration for how to query telemetry on a Service.\nStructure is documented below.\n" + }, + "userLabels": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Labels which have been used to annotate the service. Label keys must start\nwith a letter. Label keys and values may contain lowercase letters,\nnumbers, underscores, and dashes. Label keys and values have a maximum\nlength of 63 characters, and must be less than 128 bytes in size. Up to 64\nlabel entries may be stored. For labels which do not have a semantic value,\nthe empty string may be supplied for the label value.\n" } }, "type": "object" @@ -136860,7 +137154,7 @@ } }, "gcp:monitoring/slo:Slo": { - "description": "A Service-Level Objective (SLO) describes the level of desired good\nservice. It consists of a service-level indicator (SLI), a performance\ngoal, and a period over which the objective is to be evaluated against\nthat goal. The SLO can use SLIs defined in a number of different manners.\nTypical SLOs might include \"99% of requests in each rolling week have\nlatency below 200 milliseconds\" or \"99.5% of requests in each calendar\nmonth return successfully.\"\n\n\nTo get more information about Slo, see:\n\n* [API documentation](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/services.serviceLevelObjectives)\n* How-to Guides\n * [Service Monitoring](https://cloud.google.com/monitoring/service-monitoring)\n * [Monitoring API Documentation](https://cloud.google.com/monitoring/api/v3/)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Monitoring Slo Appengine\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.monitoring.getAppEngineService({\n moduleId: \"default\",\n});\nconst appengSlo = new gcp.monitoring.Slo(\"appengSlo\", {\n service: _default.then(_default =\u003e _default.serviceId),\n sloId: \"ae-slo\",\n displayName: \"Test SLO for App Engine\",\n goal: 0.9,\n calendarPeriod: \"DAY\",\n basicSli: {\n latency: {\n threshold: \"1s\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.monitoring.get_app_engine_service(module_id=\"default\")\nappeng_slo = gcp.monitoring.Slo(\"appengSlo\",\n service=default.service_id,\n slo_id=\"ae-slo\",\n display_name=\"Test SLO for App Engine\",\n goal=0.9,\n calendar_period=\"DAY\",\n basic_sli=gcp.monitoring.SloBasicSliArgs(\n latency=gcp.monitoring.SloBasicSliLatencyArgs(\n threshold=\"1s\",\n ),\n ))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var @default = Output.Create(Gcp.Monitoring.GetAppEngineService.InvokeAsync(new Gcp.Monitoring.GetAppEngineServiceArgs\n {\n ModuleId = \"default\",\n }));\n var appengSlo = new Gcp.Monitoring.Slo(\"appengSlo\", new Gcp.Monitoring.SloArgs\n {\n Service = @default.Apply(@default =\u003e @default.ServiceId),\n SloId = \"ae-slo\",\n DisplayName = \"Test SLO for App Engine\",\n Goal = 0.9,\n CalendarPeriod = \"DAY\",\n BasicSli = new Gcp.Monitoring.Inputs.SloBasicSliArgs\n {\n Latency = new Gcp.Monitoring.Inputs.SloBasicSliLatencyArgs\n {\n Threshold = \"1s\",\n },\n },\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/monitoring\"\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_default, err := monitoring.GetAppEngineService(ctx, \u0026monitoring.GetAppEngineServiceArgs{\n\t\t\tModuleId: \"default\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = monitoring.NewSlo(ctx, \"appengSlo\", \u0026monitoring.SloArgs{\n\t\t\tService: pulumi.String(_default.ServiceId),\n\t\t\tSloId: pulumi.String(\"ae-slo\"),\n\t\t\tDisplayName: pulumi.String(\"Test SLO for App Engine\"),\n\t\t\tGoal: pulumi.Float64(0.9),\n\t\t\tCalendarPeriod: pulumi.String(\"DAY\"),\n\t\t\tBasicSli: \u0026monitoring.SloBasicSliArgs{\n\t\t\t\tLatency: \u0026monitoring.SloBasicSliLatencyArgs{\n\t\t\t\t\tThreshold: pulumi.String(\"1s\"),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 default = Output.of(MonitoringFunctions.getAppEngineService(GetAppEngineServiceArgs.builder()\n .moduleId(\"default\")\n .build()));\n\n var appengSlo = new Slo(\"appengSlo\", SloArgs.builder() \n .service(default_.serviceId())\n .sloId(\"ae-slo\")\n .displayName(\"Test SLO for App Engine\")\n .goal(0.9)\n .calendarPeriod(\"DAY\")\n .basicSli(SloBasicSliArgs.builder()\n .latency(SloBasicSliLatencyArgs.builder()\n .threshold(\"1s\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n appengSlo:\n type: gcp:monitoring:Slo\n properties:\n service: ${default.serviceId}\n sloId: ae-slo\n displayName: Test SLO for App Engine\n goal: 0.9\n calendarPeriod: DAY\n basicSli:\n latency:\n threshold: 1s\nvariables:\n default:\n Fn::Invoke:\n Function: gcp:monitoring:getAppEngineService\n Arguments:\n moduleId: default\n```\n{{% /example %}}\n{{% example %}}\n### Monitoring Slo Request Based\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst customsrv = new gcp.monitoring.CustomService(\"customsrv\", {\n serviceId: \"custom-srv-request-slos\",\n displayName: \"My Custom Service\",\n});\nconst requestBasedSlo = new gcp.monitoring.Slo(\"requestBasedSlo\", {\n service: customsrv.serviceId,\n sloId: \"consumed-api-slo\",\n displayName: \"Test SLO with request based SLI (good total ratio)\",\n goal: 0.9,\n rollingPeriodDays: 30,\n requestBasedSli: {\n distributionCut: {\n distributionFilter: \"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\" resource.type=\\\"api\\\" \",\n range: {\n max: 0.5,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustomsrv = gcp.monitoring.CustomService(\"customsrv\",\n service_id=\"custom-srv-request-slos\",\n display_name=\"My Custom Service\")\nrequest_based_slo = gcp.monitoring.Slo(\"requestBasedSlo\",\n service=customsrv.service_id,\n slo_id=\"consumed-api-slo\",\n display_name=\"Test SLO with request based SLI (good total ratio)\",\n goal=0.9,\n rolling_period_days=30,\n request_based_sli=gcp.monitoring.SloRequestBasedSliArgs(\n distribution_cut=gcp.monitoring.SloRequestBasedSliDistributionCutArgs(\n distribution_filter=\"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\" resource.type=\\\"api\\\" \",\n range=gcp.monitoring.SloRequestBasedSliDistributionCutRangeArgs(\n max=0.5,\n ),\n ),\n ))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var customsrv = new Gcp.Monitoring.CustomService(\"customsrv\", new Gcp.Monitoring.CustomServiceArgs\n {\n ServiceId = \"custom-srv-request-slos\",\n DisplayName = \"My Custom Service\",\n });\n var requestBasedSlo = new Gcp.Monitoring.Slo(\"requestBasedSlo\", new Gcp.Monitoring.SloArgs\n {\n Service = customsrv.ServiceId,\n SloId = \"consumed-api-slo\",\n DisplayName = \"Test SLO with request based SLI (good total ratio)\",\n Goal = 0.9,\n RollingPeriodDays = 30,\n RequestBasedSli = new Gcp.Monitoring.Inputs.SloRequestBasedSliArgs\n {\n DistributionCut = new Gcp.Monitoring.Inputs.SloRequestBasedSliDistributionCutArgs\n {\n DistributionFilter = \"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\" resource.type=\\\"api\\\" \",\n Range = new Gcp.Monitoring.Inputs.SloRequestBasedSliDistributionCutRangeArgs\n {\n Max = 0.5,\n },\n },\n },\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcustomsrv, err := monitoring.NewCustomService(ctx, \"customsrv\", \u0026monitoring.CustomServiceArgs{\n\t\t\tServiceId: pulumi.String(\"custom-srv-request-slos\"),\n\t\t\tDisplayName: pulumi.String(\"My Custom Service\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = monitoring.NewSlo(ctx, \"requestBasedSlo\", \u0026monitoring.SloArgs{\n\t\t\tService: customsrv.ServiceId,\n\t\t\tSloId: pulumi.String(\"consumed-api-slo\"),\n\t\t\tDisplayName: pulumi.String(\"Test SLO with request based SLI (good total ratio)\"),\n\t\t\tGoal: pulumi.Float64(0.9),\n\t\t\tRollingPeriodDays: pulumi.Int(30),\n\t\t\tRequestBasedSli: \u0026monitoring.SloRequestBasedSliArgs{\n\t\t\t\tDistributionCut: \u0026monitoring.SloRequestBasedSliDistributionCutArgs{\n\t\t\t\t\tDistributionFilter: pulumi.String(\"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\" resource.type=\\\"api\\\" \"),\n\t\t\t\t\tRange: \u0026monitoring.SloRequestBasedSliDistributionCutRangeArgs{\n\t\t\t\t\t\tMax: pulumi.Float64(0.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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 customsrv = new CustomService(\"customsrv\", CustomServiceArgs.builder() \n .serviceId(\"custom-srv-request-slos\")\n .displayName(\"My Custom Service\")\n .build());\n\n var requestBasedSlo = new Slo(\"requestBasedSlo\", SloArgs.builder() \n .service(customsrv.serviceId())\n .sloId(\"consumed-api-slo\")\n .displayName(\"Test SLO with request based SLI (good total ratio)\")\n .goal(0.9)\n .rollingPeriodDays(30)\n .requestBasedSli(SloRequestBasedSliArgs.builder()\n .distributionCut(SloRequestBasedSliDistributionCutArgs.builder()\n .distributionFilter(\"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\" resource.type=\\\"api\\\" \")\n .range(SloRequestBasedSliDistributionCutRangeArgs.builder()\n .max(0.5)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n customsrv:\n type: gcp:monitoring:CustomService\n properties:\n serviceId: custom-srv-request-slos\n displayName: My Custom Service\n requestBasedSlo:\n type: gcp:monitoring:Slo\n properties:\n service: ${customsrv.serviceId}\n sloId: consumed-api-slo\n displayName: Test SLO with request based SLI (good total ratio)\n goal: 0.9\n rollingPeriodDays: 30\n requestBasedSli:\n distributionCut:\n distributionFilter: 'metric.type=\"serviceruntime.googleapis.com/api/request_latencies\" resource.type=\"api\" '\n range:\n max: 0.5\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nSlo can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:monitoring/slo:Slo default {{name}}\n```\n\n ", + "description": "A Service-Level Objective (SLO) describes the level of desired good\nservice. It consists of a service-level indicator (SLI), a performance\ngoal, and a period over which the objective is to be evaluated against\nthat goal. The SLO can use SLIs defined in a number of different manners.\nTypical SLOs might include \"99% of requests in each rolling week have\nlatency below 200 milliseconds\" or \"99.5% of requests in each calendar\nmonth return successfully.\"\n\n\nTo get more information about Slo, see:\n\n* [API documentation](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/services.serviceLevelObjectives)\n* How-to Guides\n * [Service Monitoring](https://cloud.google.com/monitoring/service-monitoring)\n * [Monitoring API Documentation](https://cloud.google.com/monitoring/api/v3/)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Monitoring Slo Appengine\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.monitoring.getAppEngineService({\n moduleId: \"default\",\n});\nconst appengSlo = new gcp.monitoring.Slo(\"appengSlo\", {\n service: _default.then(_default =\u003e _default.serviceId),\n sloId: \"ae-slo\",\n displayName: \"Test SLO for App Engine\",\n goal: 0.9,\n calendarPeriod: \"DAY\",\n basicSli: {\n latency: {\n threshold: \"1s\",\n },\n },\n userLabels: {\n my_key: \"my_value\",\n my_other_key: \"my_other_value\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.monitoring.get_app_engine_service(module_id=\"default\")\nappeng_slo = gcp.monitoring.Slo(\"appengSlo\",\n service=default.service_id,\n slo_id=\"ae-slo\",\n display_name=\"Test SLO for App Engine\",\n goal=0.9,\n calendar_period=\"DAY\",\n basic_sli=gcp.monitoring.SloBasicSliArgs(\n latency=gcp.monitoring.SloBasicSliLatencyArgs(\n threshold=\"1s\",\n ),\n ),\n user_labels={\n \"my_key\": \"my_value\",\n \"my_other_key\": \"my_other_value\",\n })\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var @default = Output.Create(Gcp.Monitoring.GetAppEngineService.InvokeAsync(new Gcp.Monitoring.GetAppEngineServiceArgs\n {\n ModuleId = \"default\",\n }));\n var appengSlo = new Gcp.Monitoring.Slo(\"appengSlo\", new Gcp.Monitoring.SloArgs\n {\n Service = @default.Apply(@default =\u003e @default.ServiceId),\n SloId = \"ae-slo\",\n DisplayName = \"Test SLO for App Engine\",\n Goal = 0.9,\n CalendarPeriod = \"DAY\",\n BasicSli = new Gcp.Monitoring.Inputs.SloBasicSliArgs\n {\n Latency = new Gcp.Monitoring.Inputs.SloBasicSliLatencyArgs\n {\n Threshold = \"1s\",\n },\n },\n UserLabels = \n {\n { \"my_key\", \"my_value\" },\n { \"my_other_key\", \"my_other_value\" },\n },\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/monitoring\"\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_default, err := monitoring.GetAppEngineService(ctx, \u0026monitoring.GetAppEngineServiceArgs{\n\t\t\tModuleId: \"default\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = monitoring.NewSlo(ctx, \"appengSlo\", \u0026monitoring.SloArgs{\n\t\t\tService: pulumi.String(_default.ServiceId),\n\t\t\tSloId: pulumi.String(\"ae-slo\"),\n\t\t\tDisplayName: pulumi.String(\"Test SLO for App Engine\"),\n\t\t\tGoal: pulumi.Float64(0.9),\n\t\t\tCalendarPeriod: pulumi.String(\"DAY\"),\n\t\t\tBasicSli: \u0026monitoring.SloBasicSliArgs{\n\t\t\t\tLatency: \u0026monitoring.SloBasicSliLatencyArgs{\n\t\t\t\t\tThreshold: pulumi.String(\"1s\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tUserLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_value\"),\n\t\t\t\t\"my_other_key\": pulumi.String(\"my_other_value\"),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 default = Output.of(MonitoringFunctions.getAppEngineService(GetAppEngineServiceArgs.builder()\n .moduleId(\"default\")\n .build()));\n\n var appengSlo = new Slo(\"appengSlo\", SloArgs.builder() \n .service(default_.serviceId())\n .sloId(\"ae-slo\")\n .displayName(\"Test SLO for App Engine\")\n .goal(0.9)\n .calendarPeriod(\"DAY\")\n .basicSli(SloBasicSliArgs.builder()\n .latency(SloBasicSliLatencyArgs.builder()\n .threshold(\"1s\")\n .build())\n .build())\n .userLabels(Map.ofEntries(\n Map.entry(\"my_key\", \"my_value\"),\n Map.entry(\"my_other_key\", \"my_other_value\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n appengSlo:\n type: gcp:monitoring:Slo\n properties:\n service: ${default.serviceId}\n sloId: ae-slo\n displayName: Test SLO for App Engine\n goal: 0.9\n calendarPeriod: DAY\n basicSli:\n latency:\n threshold: 1s\n userLabels:\n my_key: my_value\n my_other_key: my_other_value\nvariables:\n default:\n Fn::Invoke:\n Function: gcp:monitoring:getAppEngineService\n Arguments:\n moduleId: default\n```\n{{% /example %}}\n{{% example %}}\n### Monitoring Slo Request Based\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst customsrv = new gcp.monitoring.CustomService(\"customsrv\", {\n serviceId: \"custom-srv-request-slos\",\n displayName: \"My Custom Service\",\n});\nconst requestBasedSlo = new gcp.monitoring.Slo(\"requestBasedSlo\", {\n service: customsrv.serviceId,\n sloId: \"consumed-api-slo\",\n displayName: \"Test SLO with request based SLI (good total ratio)\",\n goal: 0.9,\n rollingPeriodDays: 30,\n requestBasedSli: {\n distributionCut: {\n distributionFilter: \"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\" resource.type=\\\"api\\\" \",\n range: {\n max: 0.5,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustomsrv = gcp.monitoring.CustomService(\"customsrv\",\n service_id=\"custom-srv-request-slos\",\n display_name=\"My Custom Service\")\nrequest_based_slo = gcp.monitoring.Slo(\"requestBasedSlo\",\n service=customsrv.service_id,\n slo_id=\"consumed-api-slo\",\n display_name=\"Test SLO with request based SLI (good total ratio)\",\n goal=0.9,\n rolling_period_days=30,\n request_based_sli=gcp.monitoring.SloRequestBasedSliArgs(\n distribution_cut=gcp.monitoring.SloRequestBasedSliDistributionCutArgs(\n distribution_filter=\"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\" resource.type=\\\"api\\\" \",\n range=gcp.monitoring.SloRequestBasedSliDistributionCutRangeArgs(\n max=0.5,\n ),\n ),\n ))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var customsrv = new Gcp.Monitoring.CustomService(\"customsrv\", new Gcp.Monitoring.CustomServiceArgs\n {\n ServiceId = \"custom-srv-request-slos\",\n DisplayName = \"My Custom Service\",\n });\n var requestBasedSlo = new Gcp.Monitoring.Slo(\"requestBasedSlo\", new Gcp.Monitoring.SloArgs\n {\n Service = customsrv.ServiceId,\n SloId = \"consumed-api-slo\",\n DisplayName = \"Test SLO with request based SLI (good total ratio)\",\n Goal = 0.9,\n RollingPeriodDays = 30,\n RequestBasedSli = new Gcp.Monitoring.Inputs.SloRequestBasedSliArgs\n {\n DistributionCut = new Gcp.Monitoring.Inputs.SloRequestBasedSliDistributionCutArgs\n {\n DistributionFilter = \"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\" resource.type=\\\"api\\\" \",\n Range = new Gcp.Monitoring.Inputs.SloRequestBasedSliDistributionCutRangeArgs\n {\n Max = 0.5,\n },\n },\n },\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcustomsrv, err := monitoring.NewCustomService(ctx, \"customsrv\", \u0026monitoring.CustomServiceArgs{\n\t\t\tServiceId: pulumi.String(\"custom-srv-request-slos\"),\n\t\t\tDisplayName: pulumi.String(\"My Custom Service\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = monitoring.NewSlo(ctx, \"requestBasedSlo\", \u0026monitoring.SloArgs{\n\t\t\tService: customsrv.ServiceId,\n\t\t\tSloId: pulumi.String(\"consumed-api-slo\"),\n\t\t\tDisplayName: pulumi.String(\"Test SLO with request based SLI (good total ratio)\"),\n\t\t\tGoal: pulumi.Float64(0.9),\n\t\t\tRollingPeriodDays: pulumi.Int(30),\n\t\t\tRequestBasedSli: \u0026monitoring.SloRequestBasedSliArgs{\n\t\t\t\tDistributionCut: \u0026monitoring.SloRequestBasedSliDistributionCutArgs{\n\t\t\t\t\tDistributionFilter: pulumi.String(\"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\" resource.type=\\\"api\\\" \"),\n\t\t\t\t\tRange: \u0026monitoring.SloRequestBasedSliDistributionCutRangeArgs{\n\t\t\t\t\t\tMax: pulumi.Float64(0.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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 customsrv = new CustomService(\"customsrv\", CustomServiceArgs.builder() \n .serviceId(\"custom-srv-request-slos\")\n .displayName(\"My Custom Service\")\n .build());\n\n var requestBasedSlo = new Slo(\"requestBasedSlo\", SloArgs.builder() \n .service(customsrv.serviceId())\n .sloId(\"consumed-api-slo\")\n .displayName(\"Test SLO with request based SLI (good total ratio)\")\n .goal(0.9)\n .rollingPeriodDays(30)\n .requestBasedSli(SloRequestBasedSliArgs.builder()\n .distributionCut(SloRequestBasedSliDistributionCutArgs.builder()\n .distributionFilter(\"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\" resource.type=\\\"api\\\" \")\n .range(SloRequestBasedSliDistributionCutRangeArgs.builder()\n .max(0.5)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n customsrv:\n type: gcp:monitoring:CustomService\n properties:\n serviceId: custom-srv-request-slos\n displayName: My Custom Service\n requestBasedSlo:\n type: gcp:monitoring:Slo\n properties:\n service: ${customsrv.serviceId}\n sloId: consumed-api-slo\n displayName: Test SLO with request based SLI (good total ratio)\n goal: 0.9\n rollingPeriodDays: 30\n requestBasedSli:\n distributionCut:\n distributionFilter: 'metric.type=\"serviceruntime.googleapis.com/api/request_latencies\" resource.type=\"api\" '\n range:\n max: 0.5\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nSlo can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:monitoring/slo:Slo default {{name}}\n```\n\n ", "properties": { "basicSli": { "$ref": "#/types/gcp:monitoring/SloBasicSli:SloBasicSli", @@ -136902,6 +137196,13 @@ "type": "string", "description": "The id to use for this ServiceLevelObjective. If omitted, an id will be generated instead.\n" }, + "userLabels": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "This field is intended to be used for organizing and identifying the AlertPolicy\nobjects.The field can contain up to 64 entries. Each key and value is limited\nto 63 Unicode characters or 128 bytes, whichever is smaller. Labels and values\ncan contain only lowercase letters, numerals, underscores, and dashes. Keys\nmust begin with a letter.\n" + }, "windowsBasedSli": { "$ref": "#/types/gcp:monitoring/SloWindowsBasedSli:SloWindowsBasedSli", "description": "A windows-based SLI defines the criteria for time windows.\ngood_service is defined based off the count of these time windows\nfor which the provided service was of good quality.\nA SLI describes a good service. It is used to measure and calculate\nthe quality of the Service's performance with respect to a single\naspect of service quality.\nExactly one of the following must be set:\n`basic_sli`, `request_based_sli`, `windows_based_sli`\nStructure is documented below.\n" @@ -136954,6 +137255,13 @@ "description": "The id to use for this ServiceLevelObjective. If omitted, an id will be generated instead.\n", "willReplaceOnChanges": true }, + "userLabels": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "This field is intended to be used for organizing and identifying the AlertPolicy\nobjects.The field can contain up to 64 entries. Each key and value is limited\nto 63 Unicode characters or 128 bytes, whichever is smaller. Labels and values\ncan contain only lowercase letters, numerals, underscores, and dashes. Keys\nmust begin with a letter.\n" + }, "windowsBasedSli": { "$ref": "#/types/gcp:monitoring/SloWindowsBasedSli:SloWindowsBasedSli", "description": "A windows-based SLI defines the criteria for time windows.\ngood_service is defined based off the count of these time windows\nfor which the provided service was of good quality.\nA SLI describes a good service. It is used to measure and calculate\nthe quality of the Service's performance with respect to a single\naspect of service quality.\nExactly one of the following must be set:\n`basic_sli`, `request_based_sli`, `windows_based_sli`\nStructure is documented below.\n" @@ -137009,6 +137317,13 @@ "description": "The id to use for this ServiceLevelObjective. If omitted, an id will be generated instead.\n", "willReplaceOnChanges": true }, + "userLabels": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "This field is intended to be used for organizing and identifying the AlertPolicy\nobjects.The field can contain up to 64 entries. Each key and value is limited\nto 63 Unicode characters or 128 bytes, whichever is smaller. Labels and values\ncan contain only lowercase letters, numerals, underscores, and dashes. Keys\nmust begin with a letter.\n" + }, "windowsBasedSli": { "$ref": "#/types/gcp:monitoring/SloWindowsBasedSli:SloWindowsBasedSli", "description": "A windows-based SLI defines the criteria for time windows.\ngood_service is defined based off the count of these time windows\nfor which the provided service was of good quality.\nA SLI describes a good service. It is used to measure and calculate\nthe quality of the Service's performance with respect to a single\naspect of service quality.\nExactly one of the following must be set:\n`basic_sli`, `request_based_sli`, `windows_based_sli`\nStructure is documented below.\n" @@ -137018,7 +137333,7 @@ } }, "gcp:monitoring/uptimeCheckConfig:UptimeCheckConfig": { - "description": "This message configures which resources and services to monitor for availability.\n\n\nTo get more information about UptimeCheckConfig, see:\n\n* [API documentation](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.uptimeCheckConfigs)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/monitoring/uptime-checks/)\n\n\u003e **Warning:** All arguments including `http_check.auth_info.password` will be stored in the raw\nstate as plain-text. [Read more about secrets in state](https://www.pulumi.com/docs/intro/concepts/programming-model/#secrets).\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Uptime Check Config Http\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst http = new gcp.monitoring.UptimeCheckConfig(\"http\", {\n checkerType: \"STATIC_IP_CHECKERS\",\n contentMatchers: [{\n content: \"example\",\n }],\n displayName: \"http-uptime-check\",\n httpCheck: {\n body: \"Zm9vJTI1M0RiYXI=\",\n contentType: \"URL_ENCODED\",\n path: \"some-path\",\n port: 8010,\n requestMethod: \"POST\",\n },\n monitoredResource: {\n labels: {\n host: \"192.168.1.1\",\n project_id: \"my-project-name\",\n },\n type: \"uptime_url\",\n },\n timeout: \"60s\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttp = gcp.monitoring.UptimeCheckConfig(\"http\",\n checker_type=\"STATIC_IP_CHECKERS\",\n content_matchers=[gcp.monitoring.UptimeCheckConfigContentMatcherArgs(\n content=\"example\",\n )],\n display_name=\"http-uptime-check\",\n http_check=gcp.monitoring.UptimeCheckConfigHttpCheckArgs(\n body=\"Zm9vJTI1M0RiYXI=\",\n content_type=\"URL_ENCODED\",\n path=\"some-path\",\n port=8010,\n request_method=\"POST\",\n ),\n monitored_resource=gcp.monitoring.UptimeCheckConfigMonitoredResourceArgs(\n labels={\n \"host\": \"192.168.1.1\",\n \"projectId\": \"my-project-name\",\n },\n type=\"uptime_url\",\n ),\n timeout=\"60s\")\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var http = new Gcp.Monitoring.UptimeCheckConfig(\"http\", new Gcp.Monitoring.UptimeCheckConfigArgs\n {\n CheckerType = \"STATIC_IP_CHECKERS\",\n ContentMatchers = \n {\n new Gcp.Monitoring.Inputs.UptimeCheckConfigContentMatcherArgs\n {\n Content = \"example\",\n },\n },\n DisplayName = \"http-uptime-check\",\n HttpCheck = new Gcp.Monitoring.Inputs.UptimeCheckConfigHttpCheckArgs\n {\n Body = \"Zm9vJTI1M0RiYXI=\",\n ContentType = \"URL_ENCODED\",\n Path = \"some-path\",\n Port = 8010,\n RequestMethod = \"POST\",\n },\n MonitoredResource = new Gcp.Monitoring.Inputs.UptimeCheckConfigMonitoredResourceArgs\n {\n Labels = \n {\n { \"host\", \"192.168.1.1\" },\n { \"projectId\", \"my-project-name\" },\n },\n Type = \"uptime_url\",\n },\n Timeout = \"60s\",\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/monitoring\"\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 := monitoring.NewUptimeCheckConfig(ctx, \"http\", \u0026monitoring.UptimeCheckConfigArgs{\n\t\t\tCheckerType: pulumi.String(\"STATIC_IP_CHECKERS\"),\n\t\t\tContentMatchers: monitoring.UptimeCheckConfigContentMatcherArray{\n\t\t\t\t\u0026monitoring.UptimeCheckConfigContentMatcherArgs{\n\t\t\t\t\tContent: pulumi.String(\"example\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDisplayName: pulumi.String(\"http-uptime-check\"),\n\t\t\tHttpCheck: \u0026monitoring.UptimeCheckConfigHttpCheckArgs{\n\t\t\t\tBody: pulumi.String(\"Zm9vJTI1M0RiYXI=\"),\n\t\t\t\tContentType: pulumi.String(\"URL_ENCODED\"),\n\t\t\t\tPath: pulumi.String(\"some-path\"),\n\t\t\t\tPort: pulumi.Int(8010),\n\t\t\t\tRequestMethod: pulumi.String(\"POST\"),\n\t\t\t},\n\t\t\tMonitoredResource: \u0026monitoring.UptimeCheckConfigMonitoredResourceArgs{\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"host\": pulumi.String(\"192.168.1.1\"),\n\t\t\t\t\t\"projectId\": pulumi.String(\"my-project-name\"),\n\t\t\t\t},\n\t\t\t\tType: pulumi.String(\"uptime_url\"),\n\t\t\t},\n\t\t\tTimeout: pulumi.String(\"60s\"),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 http = new UptimeCheckConfig(\"http\", UptimeCheckConfigArgs.builder() \n .checkerType(\"STATIC_IP_CHECKERS\")\n .contentMatchers(UptimeCheckConfigContentMatcherArgs.builder()\n .content(\"example\")\n .build())\n .displayName(\"http-uptime-check\")\n .httpCheck(UptimeCheckConfigHttpCheckArgs.builder()\n .body(\"Zm9vJTI1M0RiYXI=\")\n .contentType(\"URL_ENCODED\")\n .path(\"some-path\")\n .port(\"8010\")\n .requestMethod(\"POST\")\n .build())\n .monitoredResource(UptimeCheckConfigMonitoredResourceArgs.builder()\n .labels(Map.ofEntries(\n Map.entry(\"host\", \"192.168.1.1\"),\n Map.entry(\"projectId\", \"my-project-name\")\n ))\n .type(\"uptime_url\")\n .build())\n .timeout(\"60s\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n http:\n type: gcp:monitoring:UptimeCheckConfig\n properties:\n checkerType: STATIC_IP_CHECKERS\n contentMatchers:\n - content: example\n displayName: http-uptime-check\n httpCheck:\n body: Zm9vJTI1M0RiYXI=\n contentType: URL_ENCODED\n path: some-path\n port: 8010\n requestMethod: POST\n monitoredResource:\n labels:\n host: 192.168.1.1\n projectId: my-project-name\n type: uptime_url\n timeout: 60s\n```\n{{% /example %}}\n{{% example %}}\n### Uptime Check Config Https\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst https = new gcp.monitoring.UptimeCheckConfig(\"https\", {\n contentMatchers: [{\n content: \"example\",\n }],\n displayName: \"https-uptime-check\",\n httpCheck: {\n path: \"/some-path\",\n port: 443,\n useSsl: true,\n validateSsl: true,\n },\n monitoredResource: {\n labels: {\n host: \"192.168.1.1\",\n project_id: \"my-project-name\",\n },\n type: \"uptime_url\",\n },\n timeout: \"60s\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttps = gcp.monitoring.UptimeCheckConfig(\"https\",\n content_matchers=[gcp.monitoring.UptimeCheckConfigContentMatcherArgs(\n content=\"example\",\n )],\n display_name=\"https-uptime-check\",\n http_check=gcp.monitoring.UptimeCheckConfigHttpCheckArgs(\n path=\"/some-path\",\n port=443,\n use_ssl=True,\n validate_ssl=True,\n ),\n monitored_resource=gcp.monitoring.UptimeCheckConfigMonitoredResourceArgs(\n labels={\n \"host\": \"192.168.1.1\",\n \"projectId\": \"my-project-name\",\n },\n type=\"uptime_url\",\n ),\n timeout=\"60s\")\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var https = new Gcp.Monitoring.UptimeCheckConfig(\"https\", new Gcp.Monitoring.UptimeCheckConfigArgs\n {\n ContentMatchers = \n {\n new Gcp.Monitoring.Inputs.UptimeCheckConfigContentMatcherArgs\n {\n Content = \"example\",\n },\n },\n DisplayName = \"https-uptime-check\",\n HttpCheck = new Gcp.Monitoring.Inputs.UptimeCheckConfigHttpCheckArgs\n {\n Path = \"/some-path\",\n Port = 443,\n UseSsl = true,\n ValidateSsl = true,\n },\n MonitoredResource = new Gcp.Monitoring.Inputs.UptimeCheckConfigMonitoredResourceArgs\n {\n Labels = \n {\n { \"host\", \"192.168.1.1\" },\n { \"projectId\", \"my-project-name\" },\n },\n Type = \"uptime_url\",\n },\n Timeout = \"60s\",\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/monitoring\"\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 := monitoring.NewUptimeCheckConfig(ctx, \"https\", \u0026monitoring.UptimeCheckConfigArgs{\n\t\t\tContentMatchers: monitoring.UptimeCheckConfigContentMatcherArray{\n\t\t\t\t\u0026monitoring.UptimeCheckConfigContentMatcherArgs{\n\t\t\t\t\tContent: pulumi.String(\"example\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDisplayName: pulumi.String(\"https-uptime-check\"),\n\t\t\tHttpCheck: \u0026monitoring.UptimeCheckConfigHttpCheckArgs{\n\t\t\t\tPath: pulumi.String(\"/some-path\"),\n\t\t\t\tPort: pulumi.Int(443),\n\t\t\t\tUseSsl: pulumi.Bool(true),\n\t\t\t\tValidateSsl: pulumi.Bool(true),\n\t\t\t},\n\t\t\tMonitoredResource: \u0026monitoring.UptimeCheckConfigMonitoredResourceArgs{\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"host\": pulumi.String(\"192.168.1.1\"),\n\t\t\t\t\t\"projectId\": pulumi.String(\"my-project-name\"),\n\t\t\t\t},\n\t\t\t\tType: pulumi.String(\"uptime_url\"),\n\t\t\t},\n\t\t\tTimeout: pulumi.String(\"60s\"),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 https = new UptimeCheckConfig(\"https\", UptimeCheckConfigArgs.builder() \n .contentMatchers(UptimeCheckConfigContentMatcherArgs.builder()\n .content(\"example\")\n .build())\n .displayName(\"https-uptime-check\")\n .httpCheck(UptimeCheckConfigHttpCheckArgs.builder()\n .path(\"/some-path\")\n .port(\"443\")\n .useSsl(true)\n .validateSsl(true)\n .build())\n .monitoredResource(UptimeCheckConfigMonitoredResourceArgs.builder()\n .labels(Map.ofEntries(\n Map.entry(\"host\", \"192.168.1.1\"),\n Map.entry(\"projectId\", \"my-project-name\")\n ))\n .type(\"uptime_url\")\n .build())\n .timeout(\"60s\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n https:\n type: gcp:monitoring:UptimeCheckConfig\n properties:\n contentMatchers:\n - content: example\n displayName: https-uptime-check\n httpCheck:\n path: /some-path\n port: 443\n useSsl: true\n validateSsl: true\n monitoredResource:\n labels:\n host: 192.168.1.1\n projectId: my-project-name\n type: uptime_url\n timeout: 60s\n```\n{{% /example %}}\n{{% example %}}\n### Uptime Check Tcp\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst check = new gcp.monitoring.Group(\"check\", {\n displayName: \"uptime-check-group\",\n filter: \"resource.metadata.name=has_substring(\\\"foo\\\")\",\n});\nconst tcpGroup = new gcp.monitoring.UptimeCheckConfig(\"tcpGroup\", {\n displayName: \"tcp-uptime-check\",\n timeout: \"60s\",\n tcpCheck: {\n port: 888,\n },\n resourceGroup: {\n resourceType: \"INSTANCE\",\n groupId: check.name,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncheck = gcp.monitoring.Group(\"check\",\n display_name=\"uptime-check-group\",\n filter=\"resource.metadata.name=has_substring(\\\"foo\\\")\")\ntcp_group = gcp.monitoring.UptimeCheckConfig(\"tcpGroup\",\n display_name=\"tcp-uptime-check\",\n timeout=\"60s\",\n tcp_check=gcp.monitoring.UptimeCheckConfigTcpCheckArgs(\n port=888,\n ),\n resource_group=gcp.monitoring.UptimeCheckConfigResourceGroupArgs(\n resource_type=\"INSTANCE\",\n group_id=check.name,\n ))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var check = new Gcp.Monitoring.Group(\"check\", new Gcp.Monitoring.GroupArgs\n {\n DisplayName = \"uptime-check-group\",\n Filter = \"resource.metadata.name=has_substring(\\\"foo\\\")\",\n });\n var tcpGroup = new Gcp.Monitoring.UptimeCheckConfig(\"tcpGroup\", new Gcp.Monitoring.UptimeCheckConfigArgs\n {\n DisplayName = \"tcp-uptime-check\",\n Timeout = \"60s\",\n TcpCheck = new Gcp.Monitoring.Inputs.UptimeCheckConfigTcpCheckArgs\n {\n Port = 888,\n },\n ResourceGroup = new Gcp.Monitoring.Inputs.UptimeCheckConfigResourceGroupArgs\n {\n ResourceType = \"INSTANCE\",\n GroupId = check.Name,\n },\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcheck, err := monitoring.NewGroup(ctx, \"check\", \u0026monitoring.GroupArgs{\n\t\t\tDisplayName: pulumi.String(\"uptime-check-group\"),\n\t\t\tFilter: pulumi.String(\"resource.metadata.name=has_substring(\\\"foo\\\")\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = monitoring.NewUptimeCheckConfig(ctx, \"tcpGroup\", \u0026monitoring.UptimeCheckConfigArgs{\n\t\t\tDisplayName: pulumi.String(\"tcp-uptime-check\"),\n\t\t\tTimeout: pulumi.String(\"60s\"),\n\t\t\tTcpCheck: \u0026monitoring.UptimeCheckConfigTcpCheckArgs{\n\t\t\t\tPort: pulumi.Int(888),\n\t\t\t},\n\t\t\tResourceGroup: \u0026monitoring.UptimeCheckConfigResourceGroupArgs{\n\t\t\t\tResourceType: pulumi.String(\"INSTANCE\"),\n\t\t\t\tGroupId: check.Name,\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 check = new Group(\"check\", GroupArgs.builder() \n .displayName(\"uptime-check-group\")\n .filter(\"resource.metadata.name=has_substring(\\\"foo\\\")\")\n .build());\n\n var tcpGroup = new UptimeCheckConfig(\"tcpGroup\", UptimeCheckConfigArgs.builder() \n .displayName(\"tcp-uptime-check\")\n .timeout(\"60s\")\n .tcpCheck(UptimeCheckConfigTcpCheckArgs.builder()\n .port(888)\n .build())\n .resourceGroup(UptimeCheckConfigResourceGroupArgs.builder()\n .resourceType(\"INSTANCE\")\n .groupId(check.name())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tcpGroup:\n type: gcp:monitoring:UptimeCheckConfig\n properties:\n displayName: tcp-uptime-check\n timeout: 60s\n tcpCheck:\n port: 888\n resourceGroup:\n resourceType: INSTANCE\n groupId: ${check.name}\n check:\n type: gcp:monitoring:Group\n properties:\n displayName: uptime-check-group\n filter: resource.metadata.name=has_substring(\"foo\")\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nUptimeCheckConfig can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:monitoring/uptimeCheckConfig:UptimeCheckConfig default {{name}}\n```\n\n ", + "description": "This message configures which resources and services to monitor for availability.\n\n\nTo get more information about UptimeCheckConfig, see:\n\n* [API documentation](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.uptimeCheckConfigs)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/monitoring/uptime-checks/)\n\n\u003e **Warning:** All arguments including `http_check.auth_info.password` will be stored in the raw\nstate as plain-text. [Read more about secrets in state](https://www.pulumi.com/docs/intro/concepts/programming-model/#secrets).\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Uptime Check Config Http\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst http = new gcp.monitoring.UptimeCheckConfig(\"http\", {\n checkerType: \"STATIC_IP_CHECKERS\",\n contentMatchers: [{\n content: \"\\\"example\\\"\",\n jsonPathMatcher: {\n jsonMatcher: \"EXACT_MATCH\",\n jsonPath: \"$.path\",\n },\n matcher: \"MATCHES_JSON_PATH\",\n }],\n displayName: \"http-uptime-check\",\n httpCheck: {\n body: \"Zm9vJTI1M0RiYXI=\",\n contentType: \"URL_ENCODED\",\n path: \"some-path\",\n port: 8010,\n requestMethod: \"POST\",\n },\n monitoredResource: {\n labels: {\n host: \"192.168.1.1\",\n project_id: \"my-project-name\",\n },\n type: \"uptime_url\",\n },\n timeout: \"60s\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttp = gcp.monitoring.UptimeCheckConfig(\"http\",\n checker_type=\"STATIC_IP_CHECKERS\",\n content_matchers=[gcp.monitoring.UptimeCheckConfigContentMatcherArgs(\n content=\"\\\"example\\\"\",\n json_path_matcher=gcp.monitoring.UptimeCheckConfigContentMatcherJsonPathMatcherArgs(\n json_matcher=\"EXACT_MATCH\",\n json_path=\"$.path\",\n ),\n matcher=\"MATCHES_JSON_PATH\",\n )],\n display_name=\"http-uptime-check\",\n http_check=gcp.monitoring.UptimeCheckConfigHttpCheckArgs(\n body=\"Zm9vJTI1M0RiYXI=\",\n content_type=\"URL_ENCODED\",\n path=\"some-path\",\n port=8010,\n request_method=\"POST\",\n ),\n monitored_resource=gcp.monitoring.UptimeCheckConfigMonitoredResourceArgs(\n labels={\n \"host\": \"192.168.1.1\",\n \"projectId\": \"my-project-name\",\n },\n type=\"uptime_url\",\n ),\n timeout=\"60s\")\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var http = new Gcp.Monitoring.UptimeCheckConfig(\"http\", new Gcp.Monitoring.UptimeCheckConfigArgs\n {\n CheckerType = \"STATIC_IP_CHECKERS\",\n ContentMatchers = \n {\n new Gcp.Monitoring.Inputs.UptimeCheckConfigContentMatcherArgs\n {\n Content = \"\\\"example\\\"\",\n JsonPathMatcher = new Gcp.Monitoring.Inputs.UptimeCheckConfigContentMatcherJsonPathMatcherArgs\n {\n JsonMatcher = \"EXACT_MATCH\",\n JsonPath = \"$.path\",\n },\n Matcher = \"MATCHES_JSON_PATH\",\n },\n },\n DisplayName = \"http-uptime-check\",\n HttpCheck = new Gcp.Monitoring.Inputs.UptimeCheckConfigHttpCheckArgs\n {\n Body = \"Zm9vJTI1M0RiYXI=\",\n ContentType = \"URL_ENCODED\",\n Path = \"some-path\",\n Port = 8010,\n RequestMethod = \"POST\",\n },\n MonitoredResource = new Gcp.Monitoring.Inputs.UptimeCheckConfigMonitoredResourceArgs\n {\n Labels = \n {\n { \"host\", \"192.168.1.1\" },\n { \"projectId\", \"my-project-name\" },\n },\n Type = \"uptime_url\",\n },\n Timeout = \"60s\",\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/monitoring\"\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 := monitoring.NewUptimeCheckConfig(ctx, \"http\", \u0026monitoring.UptimeCheckConfigArgs{\n\t\t\tCheckerType: pulumi.String(\"STATIC_IP_CHECKERS\"),\n\t\t\tContentMatchers: monitoring.UptimeCheckConfigContentMatcherArray{\n\t\t\t\t\u0026monitoring.UptimeCheckConfigContentMatcherArgs{\n\t\t\t\t\tContent: pulumi.String(\"\\\"example\\\"\"),\n\t\t\t\t\tJsonPathMatcher: \u0026monitoring.UptimeCheckConfigContentMatcherJsonPathMatcherArgs{\n\t\t\t\t\t\tJsonMatcher: pulumi.String(\"EXACT_MATCH\"),\n\t\t\t\t\t\tJsonPath: pulumi.String(fmt.Sprintf(\"%v%v\", \"$\", \".path\")),\n\t\t\t\t\t},\n\t\t\t\t\tMatcher: pulumi.String(\"MATCHES_JSON_PATH\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDisplayName: pulumi.String(\"http-uptime-check\"),\n\t\t\tHttpCheck: \u0026monitoring.UptimeCheckConfigHttpCheckArgs{\n\t\t\t\tBody: pulumi.String(\"Zm9vJTI1M0RiYXI=\"),\n\t\t\t\tContentType: pulumi.String(\"URL_ENCODED\"),\n\t\t\t\tPath: pulumi.String(\"some-path\"),\n\t\t\t\tPort: pulumi.Int(8010),\n\t\t\t\tRequestMethod: pulumi.String(\"POST\"),\n\t\t\t},\n\t\t\tMonitoredResource: \u0026monitoring.UptimeCheckConfigMonitoredResourceArgs{\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"host\": pulumi.String(\"192.168.1.1\"),\n\t\t\t\t\t\"projectId\": pulumi.String(\"my-project-name\"),\n\t\t\t\t},\n\t\t\t\tType: pulumi.String(\"uptime_url\"),\n\t\t\t},\n\t\t\tTimeout: pulumi.String(\"60s\"),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 http = new UptimeCheckConfig(\"http\", UptimeCheckConfigArgs.builder() \n .checkerType(\"STATIC_IP_CHECKERS\")\n .contentMatchers(UptimeCheckConfigContentMatcherArgs.builder()\n .content(\"\\\"example\\\"\")\n .jsonPathMatcher(UptimeCheckConfigContentMatcherJsonPathMatcherArgs.builder()\n .jsonMatcher(\"EXACT_MATCH\")\n .jsonPath(\"$.path\")\n .build())\n .matcher(\"MATCHES_JSON_PATH\")\n .build())\n .displayName(\"http-uptime-check\")\n .httpCheck(UptimeCheckConfigHttpCheckArgs.builder()\n .body(\"Zm9vJTI1M0RiYXI=\")\n .contentType(\"URL_ENCODED\")\n .path(\"some-path\")\n .port(\"8010\")\n .requestMethod(\"POST\")\n .build())\n .monitoredResource(UptimeCheckConfigMonitoredResourceArgs.builder()\n .labels(Map.ofEntries(\n Map.entry(\"host\", \"192.168.1.1\"),\n Map.entry(\"projectId\", \"my-project-name\")\n ))\n .type(\"uptime_url\")\n .build())\n .timeout(\"60s\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n http:\n type: gcp:monitoring:UptimeCheckConfig\n properties:\n checkerType: STATIC_IP_CHECKERS\n contentMatchers:\n - content: '\"example\"'\n jsonPathMatcher:\n jsonMatcher: EXACT_MATCH\n jsonPath: $.path\n matcher: MATCHES_JSON_PATH\n displayName: http-uptime-check\n httpCheck:\n body: Zm9vJTI1M0RiYXI=\n contentType: URL_ENCODED\n path: some-path\n port: 8010\n requestMethod: POST\n monitoredResource:\n labels:\n host: 192.168.1.1\n projectId: my-project-name\n type: uptime_url\n timeout: 60s\n```\n{{% /example %}}\n{{% example %}}\n### Uptime Check Config Https\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst https = new gcp.monitoring.UptimeCheckConfig(\"https\", {\n contentMatchers: [{\n content: \"example\",\n jsonPathMatcher: {\n jsonMatcher: \"REGEX_MATCH\",\n jsonPath: \"$.path\",\n },\n matcher: \"MATCHES_JSON_PATH\",\n }],\n displayName: \"https-uptime-check\",\n httpCheck: {\n path: \"/some-path\",\n port: 443,\n useSsl: true,\n validateSsl: true,\n },\n monitoredResource: {\n labels: {\n host: \"192.168.1.1\",\n project_id: \"my-project-name\",\n },\n type: \"uptime_url\",\n },\n timeout: \"60s\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttps = gcp.monitoring.UptimeCheckConfig(\"https\",\n content_matchers=[gcp.monitoring.UptimeCheckConfigContentMatcherArgs(\n content=\"example\",\n json_path_matcher=gcp.monitoring.UptimeCheckConfigContentMatcherJsonPathMatcherArgs(\n json_matcher=\"REGEX_MATCH\",\n json_path=\"$.path\",\n ),\n matcher=\"MATCHES_JSON_PATH\",\n )],\n display_name=\"https-uptime-check\",\n http_check=gcp.monitoring.UptimeCheckConfigHttpCheckArgs(\n path=\"/some-path\",\n port=443,\n use_ssl=True,\n validate_ssl=True,\n ),\n monitored_resource=gcp.monitoring.UptimeCheckConfigMonitoredResourceArgs(\n labels={\n \"host\": \"192.168.1.1\",\n \"projectId\": \"my-project-name\",\n },\n type=\"uptime_url\",\n ),\n timeout=\"60s\")\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var https = new Gcp.Monitoring.UptimeCheckConfig(\"https\", new Gcp.Monitoring.UptimeCheckConfigArgs\n {\n ContentMatchers = \n {\n new Gcp.Monitoring.Inputs.UptimeCheckConfigContentMatcherArgs\n {\n Content = \"example\",\n JsonPathMatcher = new Gcp.Monitoring.Inputs.UptimeCheckConfigContentMatcherJsonPathMatcherArgs\n {\n JsonMatcher = \"REGEX_MATCH\",\n JsonPath = \"$.path\",\n },\n Matcher = \"MATCHES_JSON_PATH\",\n },\n },\n DisplayName = \"https-uptime-check\",\n HttpCheck = new Gcp.Monitoring.Inputs.UptimeCheckConfigHttpCheckArgs\n {\n Path = \"/some-path\",\n Port = 443,\n UseSsl = true,\n ValidateSsl = true,\n },\n MonitoredResource = new Gcp.Monitoring.Inputs.UptimeCheckConfigMonitoredResourceArgs\n {\n Labels = \n {\n { \"host\", \"192.168.1.1\" },\n { \"projectId\", \"my-project-name\" },\n },\n Type = \"uptime_url\",\n },\n Timeout = \"60s\",\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/monitoring\"\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 := monitoring.NewUptimeCheckConfig(ctx, \"https\", \u0026monitoring.UptimeCheckConfigArgs{\n\t\t\tContentMatchers: monitoring.UptimeCheckConfigContentMatcherArray{\n\t\t\t\t\u0026monitoring.UptimeCheckConfigContentMatcherArgs{\n\t\t\t\t\tContent: pulumi.String(\"example\"),\n\t\t\t\t\tJsonPathMatcher: \u0026monitoring.UptimeCheckConfigContentMatcherJsonPathMatcherArgs{\n\t\t\t\t\t\tJsonMatcher: pulumi.String(\"REGEX_MATCH\"),\n\t\t\t\t\t\tJsonPath: pulumi.String(fmt.Sprintf(\"%v%v\", \"$\", \".path\")),\n\t\t\t\t\t},\n\t\t\t\t\tMatcher: pulumi.String(\"MATCHES_JSON_PATH\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDisplayName: pulumi.String(\"https-uptime-check\"),\n\t\t\tHttpCheck: \u0026monitoring.UptimeCheckConfigHttpCheckArgs{\n\t\t\t\tPath: pulumi.String(\"/some-path\"),\n\t\t\t\tPort: pulumi.Int(443),\n\t\t\t\tUseSsl: pulumi.Bool(true),\n\t\t\t\tValidateSsl: pulumi.Bool(true),\n\t\t\t},\n\t\t\tMonitoredResource: \u0026monitoring.UptimeCheckConfigMonitoredResourceArgs{\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"host\": pulumi.String(\"192.168.1.1\"),\n\t\t\t\t\t\"projectId\": pulumi.String(\"my-project-name\"),\n\t\t\t\t},\n\t\t\t\tType: pulumi.String(\"uptime_url\"),\n\t\t\t},\n\t\t\tTimeout: pulumi.String(\"60s\"),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 https = new UptimeCheckConfig(\"https\", UptimeCheckConfigArgs.builder() \n .contentMatchers(UptimeCheckConfigContentMatcherArgs.builder()\n .content(\"example\")\n .jsonPathMatcher(UptimeCheckConfigContentMatcherJsonPathMatcherArgs.builder()\n .jsonMatcher(\"REGEX_MATCH\")\n .jsonPath(\"$.path\")\n .build())\n .matcher(\"MATCHES_JSON_PATH\")\n .build())\n .displayName(\"https-uptime-check\")\n .httpCheck(UptimeCheckConfigHttpCheckArgs.builder()\n .path(\"/some-path\")\n .port(\"443\")\n .useSsl(true)\n .validateSsl(true)\n .build())\n .monitoredResource(UptimeCheckConfigMonitoredResourceArgs.builder()\n .labels(Map.ofEntries(\n Map.entry(\"host\", \"192.168.1.1\"),\n Map.entry(\"projectId\", \"my-project-name\")\n ))\n .type(\"uptime_url\")\n .build())\n .timeout(\"60s\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n https:\n type: gcp:monitoring:UptimeCheckConfig\n properties:\n contentMatchers:\n - content: example\n jsonPathMatcher:\n jsonMatcher: REGEX_MATCH\n jsonPath: $.path\n matcher: MATCHES_JSON_PATH\n displayName: https-uptime-check\n httpCheck:\n path: /some-path\n port: 443\n useSsl: true\n validateSsl: true\n monitoredResource:\n labels:\n host: 192.168.1.1\n projectId: my-project-name\n type: uptime_url\n timeout: 60s\n```\n{{% /example %}}\n{{% example %}}\n### Uptime Check Tcp\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst check = new gcp.monitoring.Group(\"check\", {\n displayName: \"uptime-check-group\",\n filter: \"resource.metadata.name=has_substring(\\\"foo\\\")\",\n});\nconst tcpGroup = new gcp.monitoring.UptimeCheckConfig(\"tcpGroup\", {\n displayName: \"tcp-uptime-check\",\n timeout: \"60s\",\n tcpCheck: {\n port: 888,\n },\n resourceGroup: {\n resourceType: \"INSTANCE\",\n groupId: check.name,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncheck = gcp.monitoring.Group(\"check\",\n display_name=\"uptime-check-group\",\n filter=\"resource.metadata.name=has_substring(\\\"foo\\\")\")\ntcp_group = gcp.monitoring.UptimeCheckConfig(\"tcpGroup\",\n display_name=\"tcp-uptime-check\",\n timeout=\"60s\",\n tcp_check=gcp.monitoring.UptimeCheckConfigTcpCheckArgs(\n port=888,\n ),\n resource_group=gcp.monitoring.UptimeCheckConfigResourceGroupArgs(\n resource_type=\"INSTANCE\",\n group_id=check.name,\n ))\n```\n```csharp\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var check = new Gcp.Monitoring.Group(\"check\", new Gcp.Monitoring.GroupArgs\n {\n DisplayName = \"uptime-check-group\",\n Filter = \"resource.metadata.name=has_substring(\\\"foo\\\")\",\n });\n var tcpGroup = new Gcp.Monitoring.UptimeCheckConfig(\"tcpGroup\", new Gcp.Monitoring.UptimeCheckConfigArgs\n {\n DisplayName = \"tcp-uptime-check\",\n Timeout = \"60s\",\n TcpCheck = new Gcp.Monitoring.Inputs.UptimeCheckConfigTcpCheckArgs\n {\n Port = 888,\n },\n ResourceGroup = new Gcp.Monitoring.Inputs.UptimeCheckConfigResourceGroupArgs\n {\n ResourceType = \"INSTANCE\",\n GroupId = check.Name,\n },\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcheck, err := monitoring.NewGroup(ctx, \"check\", \u0026monitoring.GroupArgs{\n\t\t\tDisplayName: pulumi.String(\"uptime-check-group\"),\n\t\t\tFilter: pulumi.String(\"resource.metadata.name=has_substring(\\\"foo\\\")\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = monitoring.NewUptimeCheckConfig(ctx, \"tcpGroup\", \u0026monitoring.UptimeCheckConfigArgs{\n\t\t\tDisplayName: pulumi.String(\"tcp-uptime-check\"),\n\t\t\tTimeout: pulumi.String(\"60s\"),\n\t\t\tTcpCheck: \u0026monitoring.UptimeCheckConfigTcpCheckArgs{\n\t\t\t\tPort: pulumi.Int(888),\n\t\t\t},\n\t\t\tResourceGroup: \u0026monitoring.UptimeCheckConfigResourceGroupArgs{\n\t\t\t\tResourceType: pulumi.String(\"INSTANCE\"),\n\t\t\t\tGroupId: check.Name,\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 check = new Group(\"check\", GroupArgs.builder() \n .displayName(\"uptime-check-group\")\n .filter(\"resource.metadata.name=has_substring(\\\"foo\\\")\")\n .build());\n\n var tcpGroup = new UptimeCheckConfig(\"tcpGroup\", UptimeCheckConfigArgs.builder() \n .displayName(\"tcp-uptime-check\")\n .timeout(\"60s\")\n .tcpCheck(UptimeCheckConfigTcpCheckArgs.builder()\n .port(888)\n .build())\n .resourceGroup(UptimeCheckConfigResourceGroupArgs.builder()\n .resourceType(\"INSTANCE\")\n .groupId(check.name())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tcpGroup:\n type: gcp:monitoring:UptimeCheckConfig\n properties:\n displayName: tcp-uptime-check\n timeout: 60s\n tcpCheck:\n port: 888\n resourceGroup:\n resourceType: INSTANCE\n groupId: ${check.name}\n check:\n type: gcp:monitoring:Group\n properties:\n displayName: uptime-check-group\n filter: resource.metadata.name=has_substring(\"foo\")\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nUptimeCheckConfig can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:monitoring/uptimeCheckConfig:UptimeCheckConfig default {{name}}\n```\n\n ", "properties": { "checkerType": { "type": "string", @@ -137041,7 +137356,7 @@ }, "monitoredResource": { "$ref": "#/types/gcp:monitoring/UptimeCheckConfigMonitoredResource:UptimeCheckConfigMonitoredResource", - "description": "The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptime_url gce_instance gae_app aws_ec2_instance aws_elb_load_balancer\nStructure is documented below.\n" + "description": "The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptime_url gce_instance gae_app aws_ec2_instance aws_elb_load_balancer k8s_service servicedirectory_service\nStructure is documented below.\n" }, "name": { "type": "string", @@ -137110,7 +137425,7 @@ }, "monitoredResource": { "$ref": "#/types/gcp:monitoring/UptimeCheckConfigMonitoredResource:UptimeCheckConfigMonitoredResource", - "description": "The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptime_url gce_instance gae_app aws_ec2_instance aws_elb_load_balancer\nStructure is documented below.\n", + "description": "The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptime_url gce_instance gae_app aws_ec2_instance aws_elb_load_balancer k8s_service servicedirectory_service\nStructure is documented below.\n", "willReplaceOnChanges": true }, "period": { @@ -137173,7 +137488,7 @@ }, "monitoredResource": { "$ref": "#/types/gcp:monitoring/UptimeCheckConfigMonitoredResource:UptimeCheckConfigMonitoredResource", - "description": "The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptime_url gce_instance gae_app aws_ec2_instance aws_elb_load_balancer\nStructure is documented below.\n", + "description": "The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptime_url gce_instance gae_app aws_ec2_instance aws_elb_load_balancer k8s_service servicedirectory_service\nStructure is documented below.\n", "willReplaceOnChanges": true }, "name": { @@ -148716,6 +149031,9 @@ "type": "string", "description": "The ID of the project in which the resource belongs. If it\nis not provided, the provider project is used.\n" }, + "sqlServerUserDetails": { + "$ref": "#/types/gcp:sql/UserSqlServerUserDetails:UserSqlServerUserDetails" + }, "type": { "type": "string", "description": "The user type. It determines the method to authenticate the\nuser during login. The default is the database's built-in user type. Flags\ninclude \"BUILT_IN\", \"CLOUD_IAM_USER\", or \"CLOUD_IAM_SERVICE_ACCOUNT\".\n" @@ -148756,6 +149074,9 @@ "description": "The ID of the project in which the resource belongs. If it\nis not provided, the provider project is used.\n", "willReplaceOnChanges": true }, + "sqlServerUserDetails": { + "$ref": "#/types/gcp:sql/UserSqlServerUserDetails:UserSqlServerUserDetails" + }, "type": { "type": "string", "description": "The user type. It determines the method to authenticate the\nuser during login. The default is the database's built-in user type. Flags\ninclude \"BUILT_IN\", \"CLOUD_IAM_USER\", or \"CLOUD_IAM_SERVICE_ACCOUNT\".\n", @@ -148796,6 +149117,9 @@ "description": "The ID of the project in which the resource belongs. If it\nis not provided, the provider project is used.\n", "willReplaceOnChanges": true }, + "sqlServerUserDetails": { + "$ref": "#/types/gcp:sql/UserSqlServerUserDetails:UserSqlServerUserDetails" + }, "type": { "type": "string", "description": "The user type. It determines the method to authenticate the\nuser during login. The default is the database's built-in user type. Flags\ninclude \"BUILT_IN\", \"CLOUD_IAM_USER\", or \"CLOUD_IAM_SERVICE_ACCOUNT\".\n", @@ -157801,6 +158125,12 @@ "items": { "$ref": "#/types/gcp:monitoring/getAppEngineServiceTelemetry:getAppEngineServiceTelemetry" } + }, + "userLabels": { + "type": "object", + "additionalProperties": { + "type": "string" + } } }, "type": "object", @@ -157810,6 +158140,7 @@ "name", "serviceId", "telemetries", + "userLabels", "id" ] } @@ -157884,6 +158215,12 @@ "items": { "$ref": "#/types/gcp:monitoring/getClusterIstioServiceTelemetry:getClusterIstioServiceTelemetry" } + }, + "userLabels": { + "type": "object", + "additionalProperties": { + "type": "string" + } } }, "type": "object", @@ -157896,6 +158233,7 @@ "serviceName", "serviceNamespace", "telemetries", + "userLabels", "id" ] } @@ -157962,6 +158300,12 @@ "items": { "$ref": "#/types/gcp:monitoring/getIstioCanonicalServiceTelemetry:getIstioCanonicalServiceTelemetry" } + }, + "userLabels": { + "type": "object", + "additionalProperties": { + "type": "string" + } } }, "type": "object", @@ -157973,6 +158317,7 @@ "name", "serviceId", "telemetries", + "userLabels", "id" ] } @@ -158039,6 +158384,12 @@ "items": { "$ref": "#/types/gcp:monitoring/getMeshIstioServiceTelemetry:getMeshIstioServiceTelemetry" } + }, + "userLabels": { + "type": "object", + "additionalProperties": { + "type": "string" + } } }, "type": "object", @@ -158050,6 +158401,7 @@ "serviceName", "serviceNamespace", "telemetries", + "userLabels", "id" ] } diff --git a/provider/go.mod b/provider/go.mod index 9187bab8bb..40be13bcae 100644 --- a/provider/go.mod +++ b/provider/go.mod @@ -31,7 +31,7 @@ require ( github.com/Azure/go-autorest/autorest/validation v0.3.1 // indirect github.com/Azure/go-autorest/logger v0.2.1 // indirect github.com/Azure/go-autorest/tracing v0.6.0 // indirect - github.com/GoogleCloudPlatform/declarative-resource-client-library v1.8.2 // indirect + github.com/GoogleCloudPlatform/declarative-resource-client-library v1.10.0 // indirect github.com/Masterminds/goutils v1.1.0 // indirect github.com/Masterminds/semver v1.5.0 // indirect github.com/Masterminds/sprig v2.22.0+incompatible // indirect @@ -85,7 +85,7 @@ require ( github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/google/uuid v1.3.0 // indirect github.com/google/wire v0.5.0 // indirect - github.com/googleapis/gax-go/v2 v2.3.0 // indirect + github.com/googleapis/gax-go/v2 v2.4.0 // indirect github.com/googleapis/go-type-adapters v1.0.0 // indirect github.com/gorilla/mux v1.8.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect @@ -200,18 +200,18 @@ require ( gocloud.dev/secrets/hashivault v0.24.0 // indirect golang.org/x/crypto v0.0.0-20220131195533-30dcbda58838 // indirect golang.org/x/mod v0.5.0 // indirect - golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4 // indirect - golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5 // indirect - golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect - golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6 // indirect + golang.org/x/net v0.0.0-20220526153639-5463443f8c37 // indirect + golang.org/x/oauth2 v0.0.0-20220524215830-622c5d57e401 // indirect + golang.org/x/sync v0.0.0-20220513210516-0976fa681c29 // indirect + golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a // indirect golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect golang.org/x/text v0.3.7 // indirect golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect - golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f // indirect - google.golang.org/api v0.79.0 // indirect + golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df // indirect + google.golang.org/api v0.82.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3 // indirect - google.golang.org/grpc v1.46.0 // indirect + google.golang.org/genproto v0.0.0-20220527130721-00d5c0f3be58 // indirect + google.golang.org/grpc v1.46.2 // indirect google.golang.org/protobuf v1.28.0 // indirect gopkg.in/AlecAivazis/survey.v1 v1.8.9-0.20200217094205-6773bdf39b7f // indirect gopkg.in/square/go-jose.v2 v2.6.0 // indirect @@ -225,6 +225,7 @@ require ( replace ( github.com/hashicorp/terraform-plugin-sdk/v2 => github.com/pulumi/terraform-plugin-sdk/v2 v2.0.0-20220523144019-a9dc436975cc - github.com/hashicorp/terraform-provider-google-beta => github.com/pulumi/terraform-provider-google-beta v0.0.0-20220610113829-6340bbf2d502 + github.com/hashicorp/terraform-provider-google-beta => github.com/pulumi/terraform-provider-google-beta v0.0.0-20220616093159-3f49f5dca146 github.com/hashicorp/vault => github.com/hashicorp/vault v1.2.0 + google.golang.org/genproto => google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3 ) diff --git a/provider/go.sum b/provider/go.sum index 4961867966..eee794bf6b 100644 --- a/provider/go.sum +++ b/provider/go.sum @@ -162,8 +162,8 @@ github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3 github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= github.com/GoogleCloudPlatform/cloudsql-proxy v1.22.0/go.mod h1:mAm5O/zik2RFmcpigNjg6nMotDL8ZXJaxKzgGVcSMFA= github.com/GoogleCloudPlatform/cloudsql-proxy v1.24.0/go.mod h1:3tx938GhY4FC+E1KT/jNjDw7Z5qxAEtIiERJ2sXjnII= -github.com/GoogleCloudPlatform/declarative-resource-client-library v1.8.2 h1:V2EzqYSMPUkyKTtSevKTFU0Dw7nK6uVpg40U31Y0x/8= -github.com/GoogleCloudPlatform/declarative-resource-client-library v1.8.2/go.mod h1:UJoDYx6t3+xCOd+dZX8+NrEB+Y/eW1pQlvxh2Gt7y5E= +github.com/GoogleCloudPlatform/declarative-resource-client-library v1.10.0 h1:zw07xH8x3MxhIG9dvof0FtIyr0iV3Wr7xCpGYMlgygU= +github.com/GoogleCloudPlatform/declarative-resource-client-library v1.10.0/go.mod h1:UJoDYx6t3+xCOd+dZX8+NrEB+Y/eW1pQlvxh2Gt7y5E= github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM= github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/Masterminds/goutils v1.1.0 h1:zukEsf/1JZwCMgHiK3GZftabmxiCw4apj3a28RPBiVg= @@ -619,8 +619,9 @@ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5m github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= -github.com/googleapis/gax-go/v2 v2.3.0 h1:nRJtk3y8Fm770D42QV6T90ZnvFZyk7agSo3Q+Z9p3WI= github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= +github.com/googleapis/gax-go/v2 v2.4.0 h1:dS9eYAjhrE2RjmzYw2XAPvcXfmcQLtFEQWn0CR82awk= +github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= github.com/googleapis/go-type-adapters v1.0.0 h1:9XdMn+d/G57qq1s8dNc5IesGCXHf6V2HZ2JwRxfA2tA= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/gookit/color v1.3.8/go.mod h1:R3ogXq2B9rTbXoSHJ1HyUVAZ3poOJHpd9nQmyGZsfvQ= @@ -1119,8 +1120,8 @@ github.com/pulumi/terraform-diff-reader v0.0.0-20201211191010-ad4715e9285e h1:Di github.com/pulumi/terraform-diff-reader v0.0.0-20201211191010-ad4715e9285e/go.mod h1:sZ9FUzGO+yM41hsQHs/yIcj/Y993qMdBxBU5mpDmAfQ= github.com/pulumi/terraform-plugin-sdk/v2 v2.0.0-20220523144019-a9dc436975cc h1:pRyACeDl6HDEU9e6J8LcTJ6WIy2hOksb35Fvp0WpHS4= github.com/pulumi/terraform-plugin-sdk/v2 v2.0.0-20220523144019-a9dc436975cc/go.mod h1:hLa0sTiySU/AWEgV2GxJh0/pQIqcCmm30IPja9N9lTg= -github.com/pulumi/terraform-provider-google-beta v0.0.0-20220610113829-6340bbf2d502 h1:kWM8QpPhYqP/OwdP64pI+yYmqcIPnYhVI+Ix1Y+NDro= -github.com/pulumi/terraform-provider-google-beta v0.0.0-20220610113829-6340bbf2d502/go.mod h1:L94CDP7SMuUOnlOxzV77vkqTIr3qijAGmaKzbKTccCo= +github.com/pulumi/terraform-provider-google-beta v0.0.0-20220616093159-3f49f5dca146 h1:1efJ8oAMchrmbMPDZM+IQ5qw9q6rpvddajBlQwHfLiI= +github.com/pulumi/terraform-provider-google-beta v0.0.0-20220616093159-3f49f5dca146/go.mod h1:+wcFG2HB3wD7/zLy3n/+Ok85gxc+sZycYF9QWBhx2JQ= github.com/quasilyte/go-consistent v0.0.0-20190521200055-c6f3937de18c/go.mod h1:5STLWrekHfjyYwxBRVRXNOSewLJ3PWfDJd1VyTS21fI= github.com/quasilyte/go-ruleguard v0.3.1-0.20210203134552-1b5a410e1cc8/go.mod h1:KsAh3x0e7Fkpgs+Q9pNLS5XpFSvYCEVl5gP9Pp1xp30= github.com/quasilyte/go-ruleguard v0.3.4/go.mod h1:57FZgMnoo6jqxkYKmVj5Fc8vOt0rVzoE/UNAmFFIPqA= @@ -1420,7 +1421,6 @@ golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86h 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= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= @@ -1512,8 +1512,9 @@ golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4 h1:HVyaeDAYux4pnY+D/SiwmLOR36ewZ4iGQIIrtnuCjFA= golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220526153639-5463443f8c37 h1:lUkvobShwKsOesNfWWlCS5q7fnbG1MEliIzwu886fn8= +golang.org/x/net v0.0.0-20220526153639-5463443f8c37/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= 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= @@ -1535,8 +1536,9 @@ golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5 h1:OSnWWcOd/CtWQC2cYSBgbTSJv3ciqd8r54ySIW2y3RE= golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220524215830-622c5d57e401 h1:zwrSfklXn0gxyLRX/aR+q6cgHbV/ItVyzbPlbA+dkAw= +golang.org/x/oauth2 v0.0.0-20220524215830-622c5d57e401/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1548,8 +1550,9 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220513210516-0976fa681c29 h1:w8s32wxx3sY+OjLlv9qltkLU5yvJzxjjgiHWLjdIcw4= +golang.org/x/sync v0.0.0-20220513210516-0976fa681c29/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 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= @@ -1659,8 +1662,9 @@ golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6 h1:nonptSpoQ4vQjyraW20DXPAglgQfVnM9ZC6MmNLMR60= -golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a h1:dGzPydgVsqGcTRVwiLJ1jVbufYwmzD3LfVPLKsKg+0k= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 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-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= @@ -1690,7 +1694,6 @@ golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20190110163146-51295c7ec13a/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190307163923-6a08e3108db3/go.mod h1:25r3+/G6/xytQM8iWZKq3Hn0kr0rgFKPUNVEL/dr3z4= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190311215038-5c2858a9cfe5/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -1785,7 +1788,6 @@ golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.2-0.20210512205948-8287d5da45e4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5 h1:ouewzE6p+/VEB31YYnTbEJdi8pFqKp4P4n85vwo3DHA= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= @@ -1793,8 +1795,9 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f h1:GGU+dLjvlC3qDwqYgL6UgRmHXhOOgns0bZu2Ty5mm6U= golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df h1:5Pf6pFKu98ODmgnpvkJ3kFUOQGGLIzLIkbzUHp47618= +golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= @@ -1845,8 +1848,9 @@ google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/S google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.79.0 h1:vaOcm0WdXvhGkci9a0+CcQVZqSRjN8ksSBlWv99f8Pg= -google.golang.org/api v0.79.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= +google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= +google.golang.org/api v0.82.0 h1:h6EGeZuzhoKSS7BUznzkW+2wHZ+4Ubd6rsVvvh3dRkw= +google.golang.org/api v0.82.0/go.mod h1:Ld58BeTlL9DIYr2M2ajvoSqmGLei0BMn+kVBmkam1os= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1856,110 +1860,6 @@ google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCID google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20170818010345-ee236bd376b0/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20181107211654-5fc9ac540362/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190508193815-b515fa19cec8/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= -google.golang.org/genproto v0.0.0-20190708153700-3bdd9d9f5532/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= -google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20190927181202-20e1ac93f88c/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200608115520-7c474a2e3482/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200626011028-ee7919e894b5/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200707001353-8e8330bf89df/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200711021454-869866162049/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210413151531-c14fb6ef47c3/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210420162539-3c870d7478d2/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210423144448-3a41ef94ed2b/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210429181445-86c259c2b4ab/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210506142907-4a47615972c2/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210517163617-5e0236093d7a/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210721163202-f1cecdd8b78a/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210722135532-667f2b7c528f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210825212027-de86158e7fda/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210917145530-b395a37504d4/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211018162055-cf77aa76bad2/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211203200212-54befc351ae9/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211223182754-3ac035c7e7cb/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220111164026-67b88f271998/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220201184016-50beb8ab5c44/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= -google.golang.org/genproto v0.0.0-20220405205423-9d709892a2bf/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3 h1:q1kiSVscqoDeqTF27eQ2NnLLDmqF0I373qQNXYMy0fo= google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= @@ -1998,8 +1898,9 @@ google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9K google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.46.0 h1:oCjezcn6g6A75TGoKYBPgKmVBLexhYLM6MebdrPApP8= google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.46.2 h1:u+MLGgVf7vRdjEYZ8wDFhAVNmhkbJ5hmrA1LMWK1CAQ= +google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.2.0/go.mod h1:DNq5QpG7LJqD2AamLZ7zvKE0DEpVl2BSEVjFycAAjRY= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= @@ -2009,7 +1910,6 @@ google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miE google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= diff --git a/sdk/dotnet/BigQuery/Inputs/TableExternalDataConfigurationArgs.cs b/sdk/dotnet/BigQuery/Inputs/TableExternalDataConfigurationArgs.cs index 5f4049d772..475a5781eb 100644 --- a/sdk/dotnet/BigQuery/Inputs/TableExternalDataConfigurationArgs.cs +++ b/sdk/dotnet/BigQuery/Inputs/TableExternalDataConfigurationArgs.cs @@ -26,6 +26,15 @@ public sealed class TableExternalDataConfigurationArgs : Pulumi.ResourceArgs [Input("compression")] public Input? Compression { get; set; } + /// + /// The connection specifying the credentials to be used to read + /// external storage, such as Azure Blob, Cloud Storage, or S3. The `connection_id` can have + /// the form `{{project}}.{{location}}.{{connection_id}}` + /// or `projects/{{project}}/locations/{{location}}/connections/{{connection_id}}`. + /// + [Input("connectionId")] + public Input? ConnectionId { get; set; } + /// /// Additional properties to set if /// `source_format` is set to "CSV". Structure is documented below. diff --git a/sdk/dotnet/BigQuery/Inputs/TableExternalDataConfigurationGetArgs.cs b/sdk/dotnet/BigQuery/Inputs/TableExternalDataConfigurationGetArgs.cs index bac8b72d13..aa7b31cf2d 100644 --- a/sdk/dotnet/BigQuery/Inputs/TableExternalDataConfigurationGetArgs.cs +++ b/sdk/dotnet/BigQuery/Inputs/TableExternalDataConfigurationGetArgs.cs @@ -26,6 +26,15 @@ public sealed class TableExternalDataConfigurationGetArgs : Pulumi.ResourceArgs [Input("compression")] public Input? Compression { get; set; } + /// + /// The connection specifying the credentials to be used to read + /// external storage, such as Azure Blob, Cloud Storage, or S3. The `connection_id` can have + /// the form `{{project}}.{{location}}.{{connection_id}}` + /// or `projects/{{project}}/locations/{{location}}/connections/{{connection_id}}`. + /// + [Input("connectionId")] + public Input? ConnectionId { get; set; } + /// /// Additional properties to set if /// `source_format` is set to "CSV". Structure is documented below. diff --git a/sdk/dotnet/BigQuery/Outputs/TableExternalDataConfiguration.cs b/sdk/dotnet/BigQuery/Outputs/TableExternalDataConfiguration.cs index a9beed91e6..1f4f479263 100644 --- a/sdk/dotnet/BigQuery/Outputs/TableExternalDataConfiguration.cs +++ b/sdk/dotnet/BigQuery/Outputs/TableExternalDataConfiguration.cs @@ -24,6 +24,13 @@ public sealed class TableExternalDataConfiguration /// public readonly string? Compression; /// + /// The connection specifying the credentials to be used to read + /// external storage, such as Azure Blob, Cloud Storage, or S3. The `connection_id` can have + /// the form `{{project}}.{{location}}.{{connection_id}}` + /// or `projects/{{project}}/locations/{{location}}/connections/{{connection_id}}`. + /// + public readonly string? ConnectionId; + /// /// Additional properties to set if /// `source_format` is set to "CSV". Structure is documented below. /// @@ -89,6 +96,8 @@ public sealed class TableExternalDataConfiguration string? compression, + string? connectionId, + Outputs.TableExternalDataConfigurationCsvOptions? csvOptions, Outputs.TableExternalDataConfigurationGoogleSheetsOptions? googleSheetsOptions, @@ -107,6 +116,7 @@ public sealed class TableExternalDataConfiguration { Autodetect = autodetect; Compression = compression; + ConnectionId = connectionId; CsvOptions = csvOptions; GoogleSheetsOptions = googleSheetsOptions; HivePartitioningOptions = hivePartitioningOptions; diff --git a/sdk/dotnet/CloudDeploy/DeliveryPipeline.cs b/sdk/dotnet/CloudDeploy/DeliveryPipeline.cs index f9406369ea..6952ea13f8 100644 --- a/sdk/dotnet/CloudDeploy/DeliveryPipeline.cs +++ b/sdk/dotnet/CloudDeploy/DeliveryPipeline.cs @@ -10,7 +10,7 @@ namespace Pulumi.Gcp.CloudDeploy { /// - /// The Clouddeploy DeliveryPipeline resource + /// The Cloud Deploy `DeliveryPipeline` resource /// /// ## Example Usage /// ### Delivery_pipeline diff --git a/sdk/dotnet/CloudDeploy/Target.cs b/sdk/dotnet/CloudDeploy/Target.cs index 343f3fb5bb..caabe98009 100644 --- a/sdk/dotnet/CloudDeploy/Target.cs +++ b/sdk/dotnet/CloudDeploy/Target.cs @@ -10,7 +10,7 @@ namespace Pulumi.Gcp.CloudDeploy { /// - /// The Clouddeploy Target resource + /// The Cloud Deploy `Target` resource /// /// ## Example Usage /// ### Target diff --git a/sdk/dotnet/CloudFunctionsV2/Function.cs b/sdk/dotnet/CloudFunctionsV2/Function.cs index 2387f6fc1b..edf250230a 100644 --- a/sdk/dotnet/CloudFunctionsV2/Function.cs +++ b/sdk/dotnet/CloudFunctionsV2/Function.cs @@ -78,6 +78,14 @@ namespace Pulumi.Gcp.CloudFunctionsV2 /// { /// public MyStack() /// { + /// var account = new Gcp.ServiceAccount.Account("account", new Gcp.ServiceAccount.AccountArgs + /// { + /// AccountId = "test-service-account", + /// DisplayName = "Test Service Account", + /// }, new CustomResourceOptions + /// { + /// Provider = google_beta, + /// }); /// var sub = new Gcp.PubSub.Topic("sub", new Gcp.PubSub.TopicArgs /// { /// }, new CustomResourceOptions @@ -133,6 +141,7 @@ namespace Pulumi.Gcp.CloudFunctionsV2 /// }, /// IngressSettings = "ALLOW_INTERNAL_ONLY", /// AllTrafficOnLatestRevision = true, + /// ServiceAccountEmail = account.Email, /// }, /// EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs /// { @@ -140,6 +149,7 @@ namespace Pulumi.Gcp.CloudFunctionsV2 /// EventType = "google.cloud.pubsub.topic.v1.messagePublished", /// PubsubTopic = sub.Id, /// RetryPolicy = "RETRY_POLICY_RETRY", + /// ServiceAccountEmail = account.Email, /// }, /// }, new CustomResourceOptions /// { diff --git a/sdk/dotnet/CloudFunctionsV2/Inputs/FunctionEventTriggerArgs.cs b/sdk/dotnet/CloudFunctionsV2/Inputs/FunctionEventTriggerArgs.cs index af4d053090..82f23dac27 100644 --- a/sdk/dotnet/CloudFunctionsV2/Inputs/FunctionEventTriggerArgs.cs +++ b/sdk/dotnet/CloudFunctionsV2/Inputs/FunctionEventTriggerArgs.cs @@ -34,7 +34,6 @@ public sealed class FunctionEventTriggerArgs : Pulumi.ResourceArgs public Input? RetryPolicy { get; set; } /// - /// - /// The email of the service account for this function. /// [Input("serviceAccountEmail")] diff --git a/sdk/dotnet/CloudFunctionsV2/Inputs/FunctionEventTriggerGetArgs.cs b/sdk/dotnet/CloudFunctionsV2/Inputs/FunctionEventTriggerGetArgs.cs index ee0713babd..2058cef439 100644 --- a/sdk/dotnet/CloudFunctionsV2/Inputs/FunctionEventTriggerGetArgs.cs +++ b/sdk/dotnet/CloudFunctionsV2/Inputs/FunctionEventTriggerGetArgs.cs @@ -34,7 +34,6 @@ public sealed class FunctionEventTriggerGetArgs : Pulumi.ResourceArgs public Input? RetryPolicy { get; set; } /// - /// - /// The email of the service account for this function. /// [Input("serviceAccountEmail")] diff --git a/sdk/dotnet/CloudFunctionsV2/Inputs/FunctionServiceConfigArgs.cs b/sdk/dotnet/CloudFunctionsV2/Inputs/FunctionServiceConfigArgs.cs index 09d23d0816..8447b5704c 100644 --- a/sdk/dotnet/CloudFunctionsV2/Inputs/FunctionServiceConfigArgs.cs +++ b/sdk/dotnet/CloudFunctionsV2/Inputs/FunctionServiceConfigArgs.cs @@ -74,7 +74,6 @@ public InputMap EnvironmentVariables public Input? Service { get; set; } /// - /// - /// The email of the service account for this function. /// [Input("serviceAccountEmail")] diff --git a/sdk/dotnet/CloudFunctionsV2/Inputs/FunctionServiceConfigGetArgs.cs b/sdk/dotnet/CloudFunctionsV2/Inputs/FunctionServiceConfigGetArgs.cs index 00a80bf016..544803673b 100644 --- a/sdk/dotnet/CloudFunctionsV2/Inputs/FunctionServiceConfigGetArgs.cs +++ b/sdk/dotnet/CloudFunctionsV2/Inputs/FunctionServiceConfigGetArgs.cs @@ -74,7 +74,6 @@ public InputMap EnvironmentVariables public Input? Service { get; set; } /// - /// - /// The email of the service account for this function. /// [Input("serviceAccountEmail")] diff --git a/sdk/dotnet/CloudFunctionsV2/Outputs/FunctionEventTrigger.cs b/sdk/dotnet/CloudFunctionsV2/Outputs/FunctionEventTrigger.cs index 65d61ff248..e321c7f515 100644 --- a/sdk/dotnet/CloudFunctionsV2/Outputs/FunctionEventTrigger.cs +++ b/sdk/dotnet/CloudFunctionsV2/Outputs/FunctionEventTrigger.cs @@ -29,7 +29,6 @@ public sealed class FunctionEventTrigger /// public readonly string? RetryPolicy; /// - /// - /// The email of the service account for this function. /// public readonly string? ServiceAccountEmail; diff --git a/sdk/dotnet/CloudFunctionsV2/Outputs/FunctionServiceConfig.cs b/sdk/dotnet/CloudFunctionsV2/Outputs/FunctionServiceConfig.cs index e67d1937cc..a63feaa8d3 100644 --- a/sdk/dotnet/CloudFunctionsV2/Outputs/FunctionServiceConfig.cs +++ b/sdk/dotnet/CloudFunctionsV2/Outputs/FunctionServiceConfig.cs @@ -53,7 +53,6 @@ public sealed class FunctionServiceConfig /// public readonly string? Service; /// - /// - /// The email of the service account for this function. /// public readonly string? ServiceAccountEmail; diff --git a/sdk/dotnet/Compute/BackendService.cs b/sdk/dotnet/Compute/BackendService.cs index 7c4dc0e60d..29613c454c 100644 --- a/sdk/dotnet/Compute/BackendService.cs +++ b/sdk/dotnet/Compute/BackendService.cs @@ -83,6 +83,42 @@ namespace Pulumi.Gcp.Compute /// /// } /// ``` + /// ### Backend Service Cache Include Named Cookies + /// + /// ```csharp + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// class MyStack : Stack + /// { + /// public MyStack() + /// { + /// var @default = new Gcp.Compute.BackendService("default", new Gcp.Compute.BackendServiceArgs + /// { + /// CdnPolicy = new Gcp.Compute.Inputs.BackendServiceCdnPolicyArgs + /// { + /// CacheKeyPolicy = new Gcp.Compute.Inputs.BackendServiceCdnPolicyCacheKeyPolicyArgs + /// { + /// IncludeHost = true, + /// IncludeNamedCookies = + /// { + /// "__next_preview_data", + /// "__prerender_bypass", + /// }, + /// IncludeProtocol = true, + /// IncludeQueryString = true, + /// }, + /// CacheMode = "CACHE_ALL_STATIC", + /// ClientTtl = 7200, + /// DefaultTtl = 3600, + /// MaxTtl = 10800, + /// }, + /// EnableCdn = true, + /// }); + /// } + /// + /// } + /// ``` /// ### Backend Service Cache /// /// ```csharp diff --git a/sdk/dotnet/Compute/Inputs/BackendServiceCdnPolicyCacheKeyPolicyArgs.cs b/sdk/dotnet/Compute/Inputs/BackendServiceCdnPolicyCacheKeyPolicyArgs.cs index 60d28b453c..64366726ee 100644 --- a/sdk/dotnet/Compute/Inputs/BackendServiceCdnPolicyCacheKeyPolicyArgs.cs +++ b/sdk/dotnet/Compute/Inputs/BackendServiceCdnPolicyCacheKeyPolicyArgs.cs @@ -18,6 +18,18 @@ public sealed class BackendServiceCdnPolicyCacheKeyPolicyArgs : Pulumi.ResourceA [Input("includeHost")] public Input? IncludeHost { get; set; } + [Input("includeNamedCookies")] + private InputList? _includeNamedCookies; + + /// + /// Names of cookies to include in cache keys. + /// + public InputList IncludeNamedCookies + { + get => _includeNamedCookies ?? (_includeNamedCookies = new InputList()); + set => _includeNamedCookies = value; + } + /// /// If true, http and https requests will be cached separately. /// diff --git a/sdk/dotnet/Compute/Inputs/BackendServiceCdnPolicyCacheKeyPolicyGetArgs.cs b/sdk/dotnet/Compute/Inputs/BackendServiceCdnPolicyCacheKeyPolicyGetArgs.cs index b349da668a..5864cdbdd1 100644 --- a/sdk/dotnet/Compute/Inputs/BackendServiceCdnPolicyCacheKeyPolicyGetArgs.cs +++ b/sdk/dotnet/Compute/Inputs/BackendServiceCdnPolicyCacheKeyPolicyGetArgs.cs @@ -18,6 +18,18 @@ public sealed class BackendServiceCdnPolicyCacheKeyPolicyGetArgs : Pulumi.Resour [Input("includeHost")] public Input? IncludeHost { get; set; } + [Input("includeNamedCookies")] + private InputList? _includeNamedCookies; + + /// + /// Names of cookies to include in cache keys. + /// + public InputList IncludeNamedCookies + { + get => _includeNamedCookies ?? (_includeNamedCookies = new InputList()); + set => _includeNamedCookies = value; + } + /// /// If true, http and https requests will be cached separately. /// diff --git a/sdk/dotnet/Compute/Inputs/RegionBackendServiceCdnPolicyCacheKeyPolicyArgs.cs b/sdk/dotnet/Compute/Inputs/RegionBackendServiceCdnPolicyCacheKeyPolicyArgs.cs index 8339d724f2..df7fbec992 100644 --- a/sdk/dotnet/Compute/Inputs/RegionBackendServiceCdnPolicyCacheKeyPolicyArgs.cs +++ b/sdk/dotnet/Compute/Inputs/RegionBackendServiceCdnPolicyCacheKeyPolicyArgs.cs @@ -18,6 +18,18 @@ public sealed class RegionBackendServiceCdnPolicyCacheKeyPolicyArgs : Pulumi.Res [Input("includeHost")] public Input? IncludeHost { get; set; } + [Input("includeNamedCookies")] + private InputList? _includeNamedCookies; + + /// + /// Names of cookies to include in cache keys. + /// + public InputList IncludeNamedCookies + { + get => _includeNamedCookies ?? (_includeNamedCookies = new InputList()); + set => _includeNamedCookies = value; + } + /// /// If true, http and https requests will be cached separately. /// diff --git a/sdk/dotnet/Compute/Inputs/RegionBackendServiceCdnPolicyCacheKeyPolicyGetArgs.cs b/sdk/dotnet/Compute/Inputs/RegionBackendServiceCdnPolicyCacheKeyPolicyGetArgs.cs index 5de80bf7ab..a7302181ca 100644 --- a/sdk/dotnet/Compute/Inputs/RegionBackendServiceCdnPolicyCacheKeyPolicyGetArgs.cs +++ b/sdk/dotnet/Compute/Inputs/RegionBackendServiceCdnPolicyCacheKeyPolicyGetArgs.cs @@ -18,6 +18,18 @@ public sealed class RegionBackendServiceCdnPolicyCacheKeyPolicyGetArgs : Pulumi. [Input("includeHost")] public Input? IncludeHost { get; set; } + [Input("includeNamedCookies")] + private InputList? _includeNamedCookies; + + /// + /// Names of cookies to include in cache keys. + /// + public InputList IncludeNamedCookies + { + get => _includeNamedCookies ?? (_includeNamedCookies = new InputList()); + set => _includeNamedCookies = value; + } + /// /// If true, http and https requests will be cached separately. /// diff --git a/sdk/dotnet/Compute/Inputs/SecurityPolicyAdvancedOptionsConfigArgs.cs b/sdk/dotnet/Compute/Inputs/SecurityPolicyAdvancedOptionsConfigArgs.cs new file mode 100644 index 0000000000..6003162a38 --- /dev/null +++ b/sdk/dotnet/Compute/Inputs/SecurityPolicyAdvancedOptionsConfigArgs.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.Compute.Inputs +{ + + public sealed class SecurityPolicyAdvancedOptionsConfigArgs : Pulumi.ResourceArgs + { + /// + /// Whether or not to JSON parse the payload body. Defaults to `DISABLED`. + /// * DISABLED - Don't parse JSON payloads in POST bodies. + /// * STANDARD - Parse JSON payloads in POST bodies. + /// + [Input("jsonParsing")] + public Input? JsonParsing { get; set; } + + /// + /// Log level to use. Defaults to `NORMAL`. + /// * NORMAL - Normal log level. + /// * VERBOSE - Verbose log level. + /// + [Input("logLevel")] + public Input? LogLevel { get; set; } + + public SecurityPolicyAdvancedOptionsConfigArgs() + { + } + } +} diff --git a/sdk/dotnet/Compute/Inputs/SecurityPolicyAdvancedOptionsConfigGetArgs.cs b/sdk/dotnet/Compute/Inputs/SecurityPolicyAdvancedOptionsConfigGetArgs.cs new file mode 100644 index 0000000000..f9808267fa --- /dev/null +++ b/sdk/dotnet/Compute/Inputs/SecurityPolicyAdvancedOptionsConfigGetArgs.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.Compute.Inputs +{ + + public sealed class SecurityPolicyAdvancedOptionsConfigGetArgs : Pulumi.ResourceArgs + { + /// + /// Whether or not to JSON parse the payload body. Defaults to `DISABLED`. + /// * DISABLED - Don't parse JSON payloads in POST bodies. + /// * STANDARD - Parse JSON payloads in POST bodies. + /// + [Input("jsonParsing")] + public Input? JsonParsing { get; set; } + + /// + /// Log level to use. Defaults to `NORMAL`. + /// * NORMAL - Normal log level. + /// * VERBOSE - Verbose log level. + /// + [Input("logLevel")] + public Input? LogLevel { get; set; } + + public SecurityPolicyAdvancedOptionsConfigGetArgs() + { + } + } +} diff --git a/sdk/dotnet/Compute/InstanceGroup.cs b/sdk/dotnet/Compute/InstanceGroup.cs index c6d617d330..96930dcdeb 100644 --- a/sdk/dotnet/Compute/InstanceGroup.cs +++ b/sdk/dotnet/Compute/InstanceGroup.cs @@ -182,9 +182,8 @@ public partial class InstanceGroup : Pulumi.CustomResource public Output Description { get; private set; } = null!; /// - /// List of instances in the group. They should be given - /// as either self_link or id. When adding instances they must all be in the same - /// network and zone as the instance group. + /// The list of instances in the group, in `self_link` format. + /// When adding instances they must all be in the same network and zone as the instance group. /// [Output("instances")] public Output> Instances { get; private set; } = null!; @@ -293,9 +292,8 @@ public sealed class InstanceGroupArgs : Pulumi.ResourceArgs private InputList? _instances; /// - /// List of instances in the group. They should be given - /// as either self_link or id. When adding instances they must all be in the same - /// network and zone as the instance group. + /// The list of instances in the group, in `self_link` format. + /// When adding instances they must all be in the same network and zone as the instance group. /// public InputList Instances { @@ -362,9 +360,8 @@ public sealed class InstanceGroupState : Pulumi.ResourceArgs private InputList? _instances; /// - /// List of instances in the group. They should be given - /// as either self_link or id. When adding instances they must all be in the same - /// network and zone as the instance group. + /// The list of instances in the group, in `self_link` format. + /// When adding instances they must all be in the same network and zone as the instance group. /// public InputList Instances { diff --git a/sdk/dotnet/Compute/Network.cs b/sdk/dotnet/Compute/Network.cs index 366f79e141..d14735e907 100644 --- a/sdk/dotnet/Compute/Network.cs +++ b/sdk/dotnet/Compute/Network.cs @@ -100,12 +100,29 @@ public partial class Network : Pulumi.CustomResource [Output("description")] public Output Description { get; private set; } = null!; + /// + /// Enable ULA internal ipv6 on this network. Enabling this feature will assign + /// a /48 from google defined ULA prefix fd20::/20. + /// + [Output("enableUlaInternalIpv6")] + public Output EnableUlaInternalIpv6 { get; private set; } = null!; + /// /// The gateway address for default routing out of the network. This value is selected by GCP. /// [Output("gatewayIpv4")] public Output GatewayIpv4 { get; private set; } = null!; + /// + /// When enabling ula internal ipv6, caller optionally can specify the /48 range + /// they want from the google defined ULA prefix fd20::/20. The input must be a + /// valid /48 ULA IPv6 address and must be within the fd20::/20. Operation will + /// fail if the speficied /48 is already in used by another resource. + /// If the field is not speficied, then a /48 range will be randomly allocated from fd20::/20 and returned via this field. + /// + [Output("internalIpv6Range")] + public Output InternalIpv6Range { get; private set; } = null!; + /// /// Maximum Transmission Unit in bytes. The minimum value for this field is 1460 /// and the maximum value is 1500 bytes. @@ -219,6 +236,23 @@ public sealed class NetworkArgs : Pulumi.ResourceArgs [Input("description")] public Input? Description { get; set; } + /// + /// Enable ULA internal ipv6 on this network. Enabling this feature will assign + /// a /48 from google defined ULA prefix fd20::/20. + /// + [Input("enableUlaInternalIpv6")] + public Input? EnableUlaInternalIpv6 { get; set; } + + /// + /// When enabling ula internal ipv6, caller optionally can specify the /48 range + /// they want from the google defined ULA prefix fd20::/20. The input must be a + /// valid /48 ULA IPv6 address and must be within the fd20::/20. Operation will + /// fail if the speficied /48 is already in used by another resource. + /// If the field is not speficied, then a /48 range will be randomly allocated from fd20::/20 and returned via this field. + /// + [Input("internalIpv6Range")] + public Input? InternalIpv6Range { get; set; } + /// /// Maximum Transmission Unit in bytes. The minimum value for this field is 1460 /// and the maximum value is 1500 bytes. @@ -287,12 +321,29 @@ public sealed class NetworkState : Pulumi.ResourceArgs [Input("description")] public Input? Description { get; set; } + /// + /// Enable ULA internal ipv6 on this network. Enabling this feature will assign + /// a /48 from google defined ULA prefix fd20::/20. + /// + [Input("enableUlaInternalIpv6")] + public Input? EnableUlaInternalIpv6 { get; set; } + /// /// The gateway address for default routing out of the network. This value is selected by GCP. /// [Input("gatewayIpv4")] public Input? GatewayIpv4 { get; set; } + /// + /// When enabling ula internal ipv6, caller optionally can specify the /48 range + /// they want from the google defined ULA prefix fd20::/20. The input must be a + /// valid /48 ULA IPv6 address and must be within the fd20::/20. Operation will + /// fail if the speficied /48 is already in used by another resource. + /// If the field is not speficied, then a /48 range will be randomly allocated from fd20::/20 and returned via this field. + /// + [Input("internalIpv6Range")] + public Input? InternalIpv6Range { get; set; } + /// /// Maximum Transmission Unit in bytes. The minimum value for this field is 1460 /// and the maximum value is 1500 bytes. diff --git a/sdk/dotnet/Compute/Outputs/BackendServiceCdnPolicyCacheKeyPolicy.cs b/sdk/dotnet/Compute/Outputs/BackendServiceCdnPolicyCacheKeyPolicy.cs index 72252e8e3a..e054df4251 100644 --- a/sdk/dotnet/Compute/Outputs/BackendServiceCdnPolicyCacheKeyPolicy.cs +++ b/sdk/dotnet/Compute/Outputs/BackendServiceCdnPolicyCacheKeyPolicy.cs @@ -18,6 +18,10 @@ public sealed class BackendServiceCdnPolicyCacheKeyPolicy /// public readonly bool? IncludeHost; /// + /// Names of cookies to include in cache keys. + /// + public readonly ImmutableArray IncludeNamedCookies; + /// /// If true, http and https requests will be cached separately. /// public readonly bool? IncludeProtocol; @@ -51,6 +55,8 @@ public sealed class BackendServiceCdnPolicyCacheKeyPolicy private BackendServiceCdnPolicyCacheKeyPolicy( bool? includeHost, + ImmutableArray includeNamedCookies, + bool? includeProtocol, bool? includeQueryString, @@ -60,6 +66,7 @@ public sealed class BackendServiceCdnPolicyCacheKeyPolicy ImmutableArray queryStringWhitelists) { IncludeHost = includeHost; + IncludeNamedCookies = includeNamedCookies; IncludeProtocol = includeProtocol; IncludeQueryString = includeQueryString; QueryStringBlacklists = queryStringBlacklists; diff --git a/sdk/dotnet/Compute/Outputs/GetBackendServiceCdnPolicyCacheKeyPolicyResult.cs b/sdk/dotnet/Compute/Outputs/GetBackendServiceCdnPolicyCacheKeyPolicyResult.cs index d578ec6af7..fe12138e51 100644 --- a/sdk/dotnet/Compute/Outputs/GetBackendServiceCdnPolicyCacheKeyPolicyResult.cs +++ b/sdk/dotnet/Compute/Outputs/GetBackendServiceCdnPolicyCacheKeyPolicyResult.cs @@ -14,6 +14,7 @@ namespace Pulumi.Gcp.Compute.Outputs public sealed class GetBackendServiceCdnPolicyCacheKeyPolicyResult { public readonly bool IncludeHost; + public readonly ImmutableArray IncludeNamedCookies; public readonly bool IncludeProtocol; public readonly bool IncludeQueryString; public readonly ImmutableArray QueryStringBlacklists; @@ -23,6 +24,8 @@ public sealed class GetBackendServiceCdnPolicyCacheKeyPolicyResult private GetBackendServiceCdnPolicyCacheKeyPolicyResult( bool includeHost, + ImmutableArray includeNamedCookies, + bool includeProtocol, bool includeQueryString, @@ -32,6 +35,7 @@ public sealed class GetBackendServiceCdnPolicyCacheKeyPolicyResult ImmutableArray queryStringWhitelists) { IncludeHost = includeHost; + IncludeNamedCookies = includeNamedCookies; IncludeProtocol = includeProtocol; IncludeQueryString = includeQueryString; QueryStringBlacklists = queryStringBlacklists; diff --git a/sdk/dotnet/Compute/Outputs/RegionBackendServiceCdnPolicyCacheKeyPolicy.cs b/sdk/dotnet/Compute/Outputs/RegionBackendServiceCdnPolicyCacheKeyPolicy.cs index 62d189b508..df71f52828 100644 --- a/sdk/dotnet/Compute/Outputs/RegionBackendServiceCdnPolicyCacheKeyPolicy.cs +++ b/sdk/dotnet/Compute/Outputs/RegionBackendServiceCdnPolicyCacheKeyPolicy.cs @@ -18,6 +18,10 @@ public sealed class RegionBackendServiceCdnPolicyCacheKeyPolicy /// public readonly bool? IncludeHost; /// + /// Names of cookies to include in cache keys. + /// + public readonly ImmutableArray IncludeNamedCookies; + /// /// If true, http and https requests will be cached separately. /// public readonly bool? IncludeProtocol; @@ -51,6 +55,8 @@ public sealed class RegionBackendServiceCdnPolicyCacheKeyPolicy private RegionBackendServiceCdnPolicyCacheKeyPolicy( bool? includeHost, + ImmutableArray includeNamedCookies, + bool? includeProtocol, bool? includeQueryString, @@ -60,6 +66,7 @@ public sealed class RegionBackendServiceCdnPolicyCacheKeyPolicy ImmutableArray queryStringWhitelists) { IncludeHost = includeHost; + IncludeNamedCookies = includeNamedCookies; IncludeProtocol = includeProtocol; IncludeQueryString = includeQueryString; QueryStringBlacklists = queryStringBlacklists; diff --git a/sdk/dotnet/Compute/Outputs/SecurityPolicyAdvancedOptionsConfig.cs b/sdk/dotnet/Compute/Outputs/SecurityPolicyAdvancedOptionsConfig.cs new file mode 100644 index 0000000000..e128b39aa7 --- /dev/null +++ b/sdk/dotnet/Compute/Outputs/SecurityPolicyAdvancedOptionsConfig.cs @@ -0,0 +1,39 @@ +// *** 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 SecurityPolicyAdvancedOptionsConfig + { + /// + /// Whether or not to JSON parse the payload body. Defaults to `DISABLED`. + /// * DISABLED - Don't parse JSON payloads in POST bodies. + /// * STANDARD - Parse JSON payloads in POST bodies. + /// + public readonly string? JsonParsing; + /// + /// Log level to use. Defaults to `NORMAL`. + /// * NORMAL - Normal log level. + /// * VERBOSE - Verbose log level. + /// + public readonly string? LogLevel; + + [OutputConstructor] + private SecurityPolicyAdvancedOptionsConfig( + string? jsonParsing, + + string? logLevel) + { + JsonParsing = jsonParsing; + LogLevel = logLevel; + } + } +} diff --git a/sdk/dotnet/Compute/SecurityPolicy.cs b/sdk/dotnet/Compute/SecurityPolicy.cs index 8e3621a2dd..f80818b119 100644 --- a/sdk/dotnet/Compute/SecurityPolicy.cs +++ b/sdk/dotnet/Compute/SecurityPolicy.cs @@ -78,6 +78,12 @@ public partial class SecurityPolicy : Pulumi.CustomResource [Output("adaptiveProtectionConfig")] public Output AdaptiveProtectionConfig { get; private set; } = null!; + /// + /// [Advanced Configuration Options](https://cloud.google.com/armor/docs/security-policy-overview#json-parsing). + /// + [Output("advancedOptionsConfig")] + public Output AdvancedOptionsConfig { get; private set; } = null!; + /// /// An optional description of this rule. Max size is 64. /// @@ -175,6 +181,12 @@ public sealed class SecurityPolicyArgs : Pulumi.ResourceArgs [Input("adaptiveProtectionConfig")] public Input? AdaptiveProtectionConfig { get; set; } + /// + /// [Advanced Configuration Options](https://cloud.google.com/armor/docs/security-policy-overview#json-parsing). + /// + [Input("advancedOptionsConfig")] + public Input? AdvancedOptionsConfig { get; set; } + /// /// An optional description of this rule. Max size is 64. /// @@ -227,6 +239,12 @@ public sealed class SecurityPolicyState : Pulumi.ResourceArgs [Input("adaptiveProtectionConfig")] public Input? AdaptiveProtectionConfig { get; set; } + /// + /// [Advanced Configuration Options](https://cloud.google.com/armor/docs/security-policy-overview#json-parsing). + /// + [Input("advancedOptionsConfig")] + public Input? AdvancedOptionsConfig { get; set; } + /// /// An optional description of this rule. Max size is 64. /// diff --git a/sdk/dotnet/Compute/Subnetwork.cs b/sdk/dotnet/Compute/Subnetwork.cs index c6b2e44ea2..ed7d1f302b 100644 --- a/sdk/dotnet/Compute/Subnetwork.cs +++ b/sdk/dotnet/Compute/Subnetwork.cs @@ -161,6 +161,33 @@ namespace Pulumi.Gcp.Compute /// /// } /// ``` + /// ### Subnetwork Internal Ipv6 + /// + /// ```csharp + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// class MyStack : Stack + /// { + /// public MyStack() + /// { + /// var custom_test = new Gcp.Compute.Network("custom-test", new Gcp.Compute.NetworkArgs + /// { + /// AutoCreateSubnetworks = false, + /// EnableUlaInternalIpv6 = true, + /// }); + /// var subnetwork_internal_ipv6 = new Gcp.Compute.Subnetwork("subnetwork-internal-ipv6", new Gcp.Compute.SubnetworkArgs + /// { + /// IpCidrRange = "10.0.0.0/22", + /// Region = "us-west2", + /// StackType = "IPV4_IPV6", + /// Ipv6AccessType = "INTERNAL", + /// Network = custom_test.Id, + /// }); + /// } + /// + /// } + /// ``` /// /// ## Import /// @@ -230,7 +257,7 @@ public partial class Subnetwork : Pulumi.CustomResource /// The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation /// or the first time the subnet is updated into IPV4_IPV6 dual stack. If the ipv6_type is EXTERNAL then this subnet /// cannot enable direct path. - /// Possible values are `EXTERNAL`. + /// Possible values are `EXTERNAL` and `INTERNAL`. /// [Output("ipv6AccessType")] public Output Ipv6AccessType { get; private set; } = null!; @@ -406,7 +433,7 @@ public sealed class SubnetworkArgs : Pulumi.ResourceArgs /// The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation /// or the first time the subnet is updated into IPV4_IPV6 dual stack. If the ipv6_type is EXTERNAL then this subnet /// cannot enable direct path. - /// Possible values are `EXTERNAL`. + /// Possible values are `EXTERNAL` and `INTERNAL`. /// [Input("ipv6AccessType")] public Input? Ipv6AccessType { get; set; } @@ -561,7 +588,7 @@ public sealed class SubnetworkState : Pulumi.ResourceArgs /// The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation /// or the first time the subnet is updated into IPV4_IPV6 dual stack. If the ipv6_type is EXTERNAL then this subnet /// cannot enable direct path. - /// Possible values are `EXTERNAL`. + /// Possible values are `EXTERNAL` and `INTERNAL`. /// [Input("ipv6AccessType")] public Input? Ipv6AccessType { get; set; } diff --git a/sdk/dotnet/Container/Inputs/ClusterLoggingConfigArgs.cs b/sdk/dotnet/Container/Inputs/ClusterLoggingConfigArgs.cs index cade3a5693..ec96d549d7 100644 --- a/sdk/dotnet/Container/Inputs/ClusterLoggingConfigArgs.cs +++ b/sdk/dotnet/Container/Inputs/ClusterLoggingConfigArgs.cs @@ -16,7 +16,7 @@ public sealed class ClusterLoggingConfigArgs : Pulumi.ResourceArgs private InputList? _enableComponents; /// - /// The GKE components exposing logs. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. + /// The GKE components exposing metrics. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. (`WORKLOADS` is deprecated and removed in GKE 1.24.) /// public InputList EnableComponents { diff --git a/sdk/dotnet/Container/Inputs/ClusterLoggingConfigGetArgs.cs b/sdk/dotnet/Container/Inputs/ClusterLoggingConfigGetArgs.cs index 5b9e8dea8d..5b2b625c1b 100644 --- a/sdk/dotnet/Container/Inputs/ClusterLoggingConfigGetArgs.cs +++ b/sdk/dotnet/Container/Inputs/ClusterLoggingConfigGetArgs.cs @@ -16,7 +16,7 @@ public sealed class ClusterLoggingConfigGetArgs : Pulumi.ResourceArgs private InputList? _enableComponents; /// - /// The GKE components exposing logs. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. + /// The GKE components exposing metrics. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. (`WORKLOADS` is deprecated and removed in GKE 1.24.) /// public InputList EnableComponents { diff --git a/sdk/dotnet/Container/Inputs/ClusterMonitoringConfigArgs.cs b/sdk/dotnet/Container/Inputs/ClusterMonitoringConfigArgs.cs index 3a54876597..772ebeae26 100644 --- a/sdk/dotnet/Container/Inputs/ClusterMonitoringConfigArgs.cs +++ b/sdk/dotnet/Container/Inputs/ClusterMonitoringConfigArgs.cs @@ -12,11 +12,11 @@ namespace Pulumi.Gcp.Container.Inputs public sealed class ClusterMonitoringConfigArgs : Pulumi.ResourceArgs { - [Input("enableComponents", required: true)] + [Input("enableComponents")] private InputList? _enableComponents; /// - /// The GKE components exposing logs. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. + /// The GKE components exposing metrics. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. (`WORKLOADS` is deprecated and removed in GKE 1.24.) /// public InputList EnableComponents { @@ -24,6 +24,12 @@ public InputList EnableComponents set => _enableComponents = value; } + /// + /// Configuration for Managed Service for Prometheus. Structure is documented below. + /// + [Input("managedPrometheus")] + public Input? ManagedPrometheus { get; set; } + public ClusterMonitoringConfigArgs() { } diff --git a/sdk/dotnet/Container/Inputs/ClusterMonitoringConfigGetArgs.cs b/sdk/dotnet/Container/Inputs/ClusterMonitoringConfigGetArgs.cs index b5679f830b..fb0b3677ee 100644 --- a/sdk/dotnet/Container/Inputs/ClusterMonitoringConfigGetArgs.cs +++ b/sdk/dotnet/Container/Inputs/ClusterMonitoringConfigGetArgs.cs @@ -12,11 +12,11 @@ namespace Pulumi.Gcp.Container.Inputs public sealed class ClusterMonitoringConfigGetArgs : Pulumi.ResourceArgs { - [Input("enableComponents", required: true)] + [Input("enableComponents")] private InputList? _enableComponents; /// - /// The GKE components exposing logs. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. + /// The GKE components exposing metrics. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. (`WORKLOADS` is deprecated and removed in GKE 1.24.) /// public InputList EnableComponents { @@ -24,6 +24,12 @@ public InputList EnableComponents set => _enableComponents = value; } + /// + /// Configuration for Managed Service for Prometheus. Structure is documented below. + /// + [Input("managedPrometheus")] + public Input? ManagedPrometheus { get; set; } + public ClusterMonitoringConfigGetArgs() { } diff --git a/sdk/dotnet/Container/Inputs/ClusterMonitoringConfigManagedPrometheusArgs.cs b/sdk/dotnet/Container/Inputs/ClusterMonitoringConfigManagedPrometheusArgs.cs new file mode 100644 index 0000000000..26f7172e68 --- /dev/null +++ b/sdk/dotnet/Container/Inputs/ClusterMonitoringConfigManagedPrometheusArgs.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.Container.Inputs +{ + + public sealed class ClusterMonitoringConfigManagedPrometheusArgs : Pulumi.ResourceArgs + { + /// + /// Enable the PodSecurityPolicy controller for this cluster. + /// If enabled, pods must be valid under a PodSecurityPolicy to be created. + /// + [Input("enabled", required: true)] + public Input Enabled { get; set; } = null!; + + public ClusterMonitoringConfigManagedPrometheusArgs() + { + } + } +} diff --git a/sdk/dotnet/Container/Inputs/ClusterMonitoringConfigManagedPrometheusGetArgs.cs b/sdk/dotnet/Container/Inputs/ClusterMonitoringConfigManagedPrometheusGetArgs.cs new file mode 100644 index 0000000000..58552ccdae --- /dev/null +++ b/sdk/dotnet/Container/Inputs/ClusterMonitoringConfigManagedPrometheusGetArgs.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.Container.Inputs +{ + + public sealed class ClusterMonitoringConfigManagedPrometheusGetArgs : Pulumi.ResourceArgs + { + /// + /// Enable the PodSecurityPolicy controller for this cluster. + /// If enabled, pods must be valid under a PodSecurityPolicy to be created. + /// + [Input("enabled", required: true)] + public Input Enabled { get; set; } = null!; + + public ClusterMonitoringConfigManagedPrometheusGetArgs() + { + } + } +} diff --git a/sdk/dotnet/Container/Inputs/ClusterNodeConfigArgs.cs b/sdk/dotnet/Container/Inputs/ClusterNodeConfigArgs.cs index dc054022bf..77c623b41d 100644 --- a/sdk/dotnet/Container/Inputs/ClusterNodeConfigArgs.cs +++ b/sdk/dotnet/Container/Inputs/ClusterNodeConfigArgs.cs @@ -175,10 +175,6 @@ public InputList OauthScopes [Input("preemptible")] public Input? Preemptible { get; set; } - /// - /// [GKE Sandbox](https://cloud.google.com/kubernetes-engine/docs/how-to/sandbox-pods) configuration. When enabling this feature you must specify `image_type = "COS_CONTAINERD"` and `node_version = "1.12.7-gke.17"` or later to use it. - /// Structure is documented below. - /// [Input("sandboxConfig")] public Input? SandboxConfig { get; set; } @@ -196,8 +192,8 @@ public InputList OauthScopes public Input? ShieldedInstanceConfig { get; set; } /// - /// ) A boolean - /// that represents whether the underlying node VMs are spot. See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) + /// A boolean that represents whether the underlying node VMs are spot. + /// See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) /// for more information. Defaults to false. /// [Input("spot")] diff --git a/sdk/dotnet/Container/Inputs/ClusterNodeConfigGetArgs.cs b/sdk/dotnet/Container/Inputs/ClusterNodeConfigGetArgs.cs index 322c30e416..5144ef7904 100644 --- a/sdk/dotnet/Container/Inputs/ClusterNodeConfigGetArgs.cs +++ b/sdk/dotnet/Container/Inputs/ClusterNodeConfigGetArgs.cs @@ -175,10 +175,6 @@ public InputList OauthScopes [Input("preemptible")] public Input? Preemptible { get; set; } - /// - /// [GKE Sandbox](https://cloud.google.com/kubernetes-engine/docs/how-to/sandbox-pods) configuration. When enabling this feature you must specify `image_type = "COS_CONTAINERD"` and `node_version = "1.12.7-gke.17"` or later to use it. - /// Structure is documented below. - /// [Input("sandboxConfig")] public Input? SandboxConfig { get; set; } @@ -196,8 +192,8 @@ public InputList OauthScopes public Input? ShieldedInstanceConfig { get; set; } /// - /// ) A boolean - /// that represents whether the underlying node VMs are spot. See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) + /// A boolean that represents whether the underlying node VMs are spot. + /// See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) /// for more information. Defaults to false. /// [Input("spot")] diff --git a/sdk/dotnet/Container/Inputs/ClusterNodePoolNodeConfigArgs.cs b/sdk/dotnet/Container/Inputs/ClusterNodePoolNodeConfigArgs.cs index ff3a8a309a..dddfe2f4e9 100644 --- a/sdk/dotnet/Container/Inputs/ClusterNodePoolNodeConfigArgs.cs +++ b/sdk/dotnet/Container/Inputs/ClusterNodePoolNodeConfigArgs.cs @@ -175,10 +175,6 @@ public InputList OauthScopes [Input("preemptible")] public Input? Preemptible { get; set; } - /// - /// [GKE Sandbox](https://cloud.google.com/kubernetes-engine/docs/how-to/sandbox-pods) configuration. When enabling this feature you must specify `image_type = "COS_CONTAINERD"` and `node_version = "1.12.7-gke.17"` or later to use it. - /// Structure is documented below. - /// [Input("sandboxConfig")] public Input? SandboxConfig { get; set; } @@ -196,8 +192,8 @@ public InputList OauthScopes public Input? ShieldedInstanceConfig { get; set; } /// - /// ) A boolean - /// that represents whether the underlying node VMs are spot. See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) + /// A boolean that represents whether the underlying node VMs are spot. + /// See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) /// for more information. Defaults to false. /// [Input("spot")] diff --git a/sdk/dotnet/Container/Inputs/ClusterNodePoolNodeConfigGetArgs.cs b/sdk/dotnet/Container/Inputs/ClusterNodePoolNodeConfigGetArgs.cs index fd4a7cab81..f797e2eda5 100644 --- a/sdk/dotnet/Container/Inputs/ClusterNodePoolNodeConfigGetArgs.cs +++ b/sdk/dotnet/Container/Inputs/ClusterNodePoolNodeConfigGetArgs.cs @@ -175,10 +175,6 @@ public InputList OauthScopes [Input("preemptible")] public Input? Preemptible { get; set; } - /// - /// [GKE Sandbox](https://cloud.google.com/kubernetes-engine/docs/how-to/sandbox-pods) configuration. When enabling this feature you must specify `image_type = "COS_CONTAINERD"` and `node_version = "1.12.7-gke.17"` or later to use it. - /// Structure is documented below. - /// [Input("sandboxConfig")] public Input? SandboxConfig { get; set; } @@ -196,8 +192,8 @@ public InputList OauthScopes public Input? ShieldedInstanceConfig { get; set; } /// - /// ) A boolean - /// that represents whether the underlying node VMs are spot. See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) + /// A boolean that represents whether the underlying node VMs are spot. + /// See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) /// for more information. Defaults to false. /// [Input("spot")] diff --git a/sdk/dotnet/Container/Outputs/ClusterLoggingConfig.cs b/sdk/dotnet/Container/Outputs/ClusterLoggingConfig.cs index 4e93a6520b..50c16abf9f 100644 --- a/sdk/dotnet/Container/Outputs/ClusterLoggingConfig.cs +++ b/sdk/dotnet/Container/Outputs/ClusterLoggingConfig.cs @@ -14,7 +14,7 @@ namespace Pulumi.Gcp.Container.Outputs public sealed class ClusterLoggingConfig { /// - /// The GKE components exposing logs. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. + /// The GKE components exposing metrics. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. (`WORKLOADS` is deprecated and removed in GKE 1.24.) /// public readonly ImmutableArray EnableComponents; diff --git a/sdk/dotnet/Container/Outputs/ClusterMonitoringConfig.cs b/sdk/dotnet/Container/Outputs/ClusterMonitoringConfig.cs index 6211afcee6..69084c01f8 100644 --- a/sdk/dotnet/Container/Outputs/ClusterMonitoringConfig.cs +++ b/sdk/dotnet/Container/Outputs/ClusterMonitoringConfig.cs @@ -14,14 +14,22 @@ namespace Pulumi.Gcp.Container.Outputs public sealed class ClusterMonitoringConfig { /// - /// The GKE components exposing logs. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. + /// The GKE components exposing metrics. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. (`WORKLOADS` is deprecated and removed in GKE 1.24.) /// public readonly ImmutableArray EnableComponents; + /// + /// Configuration for Managed Service for Prometheus. Structure is documented below. + /// + public readonly Outputs.ClusterMonitoringConfigManagedPrometheus? ManagedPrometheus; [OutputConstructor] - private ClusterMonitoringConfig(ImmutableArray enableComponents) + private ClusterMonitoringConfig( + ImmutableArray enableComponents, + + Outputs.ClusterMonitoringConfigManagedPrometheus? managedPrometheus) { EnableComponents = enableComponents; + ManagedPrometheus = managedPrometheus; } } } diff --git a/sdk/dotnet/Container/Outputs/ClusterMonitoringConfigManagedPrometheus.cs b/sdk/dotnet/Container/Outputs/ClusterMonitoringConfigManagedPrometheus.cs new file mode 100644 index 0000000000..994f9c58f9 --- /dev/null +++ b/sdk/dotnet/Container/Outputs/ClusterMonitoringConfigManagedPrometheus.cs @@ -0,0 +1,28 @@ +// *** 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.Container.Outputs +{ + + [OutputType] + public sealed class ClusterMonitoringConfigManagedPrometheus + { + /// + /// Enable the PodSecurityPolicy controller for this cluster. + /// If enabled, pods must be valid under a PodSecurityPolicy to be created. + /// + public readonly bool Enabled; + + [OutputConstructor] + private ClusterMonitoringConfigManagedPrometheus(bool enabled) + { + Enabled = enabled; + } + } +} diff --git a/sdk/dotnet/Container/Outputs/ClusterNodeConfig.cs b/sdk/dotnet/Container/Outputs/ClusterNodeConfig.cs index f8f38d3e32..18aa4b35b8 100644 --- a/sdk/dotnet/Container/Outputs/ClusterNodeConfig.cs +++ b/sdk/dotnet/Container/Outputs/ClusterNodeConfig.cs @@ -116,10 +116,6 @@ public sealed class ClusterNodeConfig /// for more information. Defaults to false. /// public readonly bool? Preemptible; - /// - /// [GKE Sandbox](https://cloud.google.com/kubernetes-engine/docs/how-to/sandbox-pods) configuration. When enabling this feature you must specify `image_type = "COS_CONTAINERD"` and `node_version = "1.12.7-gke.17"` or later to use it. - /// Structure is documented below. - /// public readonly Outputs.ClusterNodeConfigSandboxConfig? SandboxConfig; /// /// The service account to be used by the Node VMs. @@ -131,8 +127,8 @@ public sealed class ClusterNodeConfig /// public readonly Outputs.ClusterNodeConfigShieldedInstanceConfig? ShieldedInstanceConfig; /// - /// ) A boolean - /// that represents whether the underlying node VMs are spot. See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) + /// A boolean that represents whether the underlying node VMs are spot. + /// See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) /// for more information. Defaults to false. /// public readonly bool? Spot; diff --git a/sdk/dotnet/Container/Outputs/ClusterNodePoolNodeConfig.cs b/sdk/dotnet/Container/Outputs/ClusterNodePoolNodeConfig.cs index 1a27e71edb..087de3949a 100644 --- a/sdk/dotnet/Container/Outputs/ClusterNodePoolNodeConfig.cs +++ b/sdk/dotnet/Container/Outputs/ClusterNodePoolNodeConfig.cs @@ -116,10 +116,6 @@ public sealed class ClusterNodePoolNodeConfig /// for more information. Defaults to false. /// public readonly bool? Preemptible; - /// - /// [GKE Sandbox](https://cloud.google.com/kubernetes-engine/docs/how-to/sandbox-pods) configuration. When enabling this feature you must specify `image_type = "COS_CONTAINERD"` and `node_version = "1.12.7-gke.17"` or later to use it. - /// Structure is documented below. - /// public readonly Outputs.ClusterNodePoolNodeConfigSandboxConfig? SandboxConfig; /// /// The service account to be used by the Node VMs. @@ -131,8 +127,8 @@ public sealed class ClusterNodePoolNodeConfig /// public readonly Outputs.ClusterNodePoolNodeConfigShieldedInstanceConfig? ShieldedInstanceConfig; /// - /// ) A boolean - /// that represents whether the underlying node VMs are spot. See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) + /// A boolean that represents whether the underlying node VMs are spot. + /// See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) /// for more information. Defaults to false. /// public readonly bool? Spot; diff --git a/sdk/dotnet/Container/Outputs/GetClusterMonitoringConfigManagedPrometheusResult.cs b/sdk/dotnet/Container/Outputs/GetClusterMonitoringConfigManagedPrometheusResult.cs new file mode 100644 index 0000000000..a142079843 --- /dev/null +++ b/sdk/dotnet/Container/Outputs/GetClusterMonitoringConfigManagedPrometheusResult.cs @@ -0,0 +1,24 @@ +// *** 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.Container.Outputs +{ + + [OutputType] + public sealed class GetClusterMonitoringConfigManagedPrometheusResult + { + public readonly bool Enabled; + + [OutputConstructor] + private GetClusterMonitoringConfigManagedPrometheusResult(bool enabled) + { + Enabled = enabled; + } + } +} diff --git a/sdk/dotnet/Container/Outputs/GetClusterMonitoringConfigResult.cs b/sdk/dotnet/Container/Outputs/GetClusterMonitoringConfigResult.cs index 8095316c02..ce8897acc5 100644 --- a/sdk/dotnet/Container/Outputs/GetClusterMonitoringConfigResult.cs +++ b/sdk/dotnet/Container/Outputs/GetClusterMonitoringConfigResult.cs @@ -14,11 +14,16 @@ namespace Pulumi.Gcp.Container.Outputs public sealed class GetClusterMonitoringConfigResult { public readonly ImmutableArray EnableComponents; + public readonly ImmutableArray ManagedPrometheuses; [OutputConstructor] - private GetClusterMonitoringConfigResult(ImmutableArray enableComponents) + private GetClusterMonitoringConfigResult( + ImmutableArray enableComponents, + + ImmutableArray managedPrometheuses) { EnableComponents = enableComponents; + ManagedPrometheuses = managedPrometheuses; } } } diff --git a/sdk/dotnet/Dns/ManagedZone.cs b/sdk/dotnet/Dns/ManagedZone.cs index e265d42fab..b4ab0ea62c 100644 --- a/sdk/dotnet/Dns/ManagedZone.cs +++ b/sdk/dotnet/Dns/ManagedZone.cs @@ -260,6 +260,12 @@ namespace Pulumi.Gcp.Dns [GcpResourceType("gcp:dns/managedZone:ManagedZone")] public partial class ManagedZone : Pulumi.CustomResource { + /// + /// The time that this resource was created on the server. This is in RFC3339 text format. + /// + [Output("creationTime")] + public Output CreationTime { get; private set; } = null!; + /// /// A textual description field. Defaults to 'Managed by Pulumi'. /// @@ -300,6 +306,12 @@ public partial class ManagedZone : Pulumi.CustomResource [Output("labels")] public Output?> Labels { get; private set; } = null!; + /// + /// Unique identifier for the resource; defined by the server. + /// + [Output("managedZoneId")] + public Output ManagedZoneId { get; private set; } = null!; + /// /// User assigned name for this resource. /// Must be unique within the project. @@ -514,6 +526,12 @@ public ManagedZoneArgs() public sealed class ManagedZoneState : Pulumi.ResourceArgs { + /// + /// The time that this resource was created on the server. This is in RFC3339 text format. + /// + [Input("creationTime")] + public Input? CreationTime { get; set; } + /// /// A textual description field. Defaults to 'Managed by Pulumi'. /// @@ -560,6 +578,12 @@ public InputMap Labels set => _labels = value; } + /// + /// Unique identifier for the resource; defined by the server. + /// + [Input("managedZoneId")] + public Input? ManagedZoneId { get; set; } + /// /// User assigned name for this resource. /// Must be unique within the project. diff --git a/sdk/dotnet/GkeHub/Feature.cs b/sdk/dotnet/GkeHub/Feature.cs index 5e860c5368..38d59bbe35 100644 --- a/sdk/dotnet/GkeHub/Feature.cs +++ b/sdk/dotnet/GkeHub/Feature.cs @@ -87,6 +87,27 @@ namespace Pulumi.Gcp.GkeHub /// /// } /// ``` + /// ### Enable Anthos Service Mesh + /// + /// ```csharp + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// class MyStack : Stack + /// { + /// public MyStack() + /// { + /// var feature = new Gcp.GkeHub.Feature("feature", new Gcp.GkeHub.FeatureArgs + /// { + /// Location = "global", + /// }, new CustomResourceOptions + /// { + /// Provider = google_beta, + /// }); + /// } + /// + /// } + /// ``` /// /// ## Import /// diff --git a/sdk/dotnet/GkeHub/Inputs/FeatureMembershipConfigmanagementConfigSyncArgs.cs b/sdk/dotnet/GkeHub/Inputs/FeatureMembershipConfigmanagementConfigSyncArgs.cs index 182bc3cdbd..2a2bd8f8ac 100644 --- a/sdk/dotnet/GkeHub/Inputs/FeatureMembershipConfigmanagementConfigSyncArgs.cs +++ b/sdk/dotnet/GkeHub/Inputs/FeatureMembershipConfigmanagementConfigSyncArgs.cs @@ -19,6 +19,12 @@ public sealed class FeatureMembershipConfigmanagementConfigSyncArgs : Pulumi.Res [Input("git")] public Input? Git { get; set; } + /// + /// Supported from ACM versions 1.10.0 onwards. Set to true to enable the Config Sync admission webhook to prevent drifts. If set to "false", disables the Config Sync admission webhook and does not prevent drifts. + /// + [Input("preventDrift")] + public Input? PreventDrift { get; set; } + /// /// Specifies whether the Config Sync Repo is in "hierarchical" or "unstructured" mode. /// diff --git a/sdk/dotnet/GkeHub/Inputs/FeatureMembershipConfigmanagementConfigSyncGetArgs.cs b/sdk/dotnet/GkeHub/Inputs/FeatureMembershipConfigmanagementConfigSyncGetArgs.cs index 0a1478dc3a..d99b369d8b 100644 --- a/sdk/dotnet/GkeHub/Inputs/FeatureMembershipConfigmanagementConfigSyncGetArgs.cs +++ b/sdk/dotnet/GkeHub/Inputs/FeatureMembershipConfigmanagementConfigSyncGetArgs.cs @@ -19,6 +19,12 @@ public sealed class FeatureMembershipConfigmanagementConfigSyncGetArgs : Pulumi. [Input("git")] public Input? Git { get; set; } + /// + /// Supported from ACM versions 1.10.0 onwards. Set to true to enable the Config Sync admission webhook to prevent drifts. If set to "false", disables the Config Sync admission webhook and does not prevent drifts. + /// + [Input("preventDrift")] + public Input? PreventDrift { get; set; } + /// /// Specifies whether the Config Sync Repo is in "hierarchical" or "unstructured" mode. /// diff --git a/sdk/dotnet/GkeHub/Outputs/FeatureMembershipConfigmanagementConfigSync.cs b/sdk/dotnet/GkeHub/Outputs/FeatureMembershipConfigmanagementConfigSync.cs index 9f20d6b6f2..fc431dd270 100644 --- a/sdk/dotnet/GkeHub/Outputs/FeatureMembershipConfigmanagementConfigSync.cs +++ b/sdk/dotnet/GkeHub/Outputs/FeatureMembershipConfigmanagementConfigSync.cs @@ -19,6 +19,10 @@ public sealed class FeatureMembershipConfigmanagementConfigSync /// public readonly Outputs.FeatureMembershipConfigmanagementConfigSyncGit? Git; /// + /// Supported from ACM versions 1.10.0 onwards. Set to true to enable the Config Sync admission webhook to prevent drifts. If set to "false", disables the Config Sync admission webhook and does not prevent drifts. + /// + public readonly bool? PreventDrift; + /// /// Specifies whether the Config Sync Repo is in "hierarchical" or "unstructured" mode. /// public readonly string? SourceFormat; @@ -27,9 +31,12 @@ public sealed class FeatureMembershipConfigmanagementConfigSync private FeatureMembershipConfigmanagementConfigSync( Outputs.FeatureMembershipConfigmanagementConfigSyncGit? git, + bool? preventDrift, + string? sourceFormat) { Git = git; + PreventDrift = preventDrift; SourceFormat = sourceFormat; } } diff --git a/sdk/dotnet/Monitoring/CustomService.cs b/sdk/dotnet/Monitoring/CustomService.cs index 314d07502d..8bf5f71f91 100644 --- a/sdk/dotnet/Monitoring/CustomService.cs +++ b/sdk/dotnet/Monitoring/CustomService.cs @@ -41,6 +41,11 @@ namespace Pulumi.Gcp.Monitoring /// { /// ResourceName = "//product.googleapis.com/foo/foo/services/test", /// }, + /// UserLabels = + /// { + /// { "my_key", "my_value" }, + /// { "my_other_key", "my_other_value" }, + /// }, /// }); /// } /// @@ -91,6 +96,17 @@ public partial class CustomService : Pulumi.CustomResource [Output("telemetry")] public Output Telemetry { get; private set; } = null!; + /// + /// Labels which have been used to annotate the service. Label keys must start + /// with a letter. Label keys and values may contain lowercase letters, + /// numbers, underscores, and dashes. Label keys and values have a maximum + /// length of 63 characters, and must be less than 128 bytes in size. Up to 64 + /// label entries may be stored. For labels which do not have a semantic value, + /// the empty string may be supplied for the label value. + /// + [Output("userLabels")] + public Output?> UserLabels { get; private set; } = null!; + /// /// Create a CustomService resource with the given unique name, arguments, and options. @@ -164,6 +180,23 @@ public sealed class CustomServiceArgs : Pulumi.ResourceArgs [Input("telemetry")] public Input? Telemetry { get; set; } + [Input("userLabels")] + private InputMap? _userLabels; + + /// + /// Labels which have been used to annotate the service. Label keys must start + /// with a letter. Label keys and values may contain lowercase letters, + /// numbers, underscores, and dashes. Label keys and values have a maximum + /// length of 63 characters, and must be less than 128 bytes in size. Up to 64 + /// label entries may be stored. For labels which do not have a semantic value, + /// the empty string may be supplied for the label value. + /// + public InputMap UserLabels + { + get => _userLabels ?? (_userLabels = new InputMap()); + set => _userLabels = value; + } + public CustomServiceArgs() { } @@ -204,6 +237,23 @@ public sealed class CustomServiceState : Pulumi.ResourceArgs [Input("telemetry")] public Input? Telemetry { get; set; } + [Input("userLabels")] + private InputMap? _userLabels; + + /// + /// Labels which have been used to annotate the service. Label keys must start + /// with a letter. Label keys and values may contain lowercase letters, + /// numbers, underscores, and dashes. Label keys and values have a maximum + /// length of 63 characters, and must be less than 128 bytes in size. Up to 64 + /// label entries may be stored. For labels which do not have a semantic value, + /// the empty string may be supplied for the label value. + /// + public InputMap UserLabels + { + get => _userLabels ?? (_userLabels = new InputMap()); + set => _userLabels = value; + } + public CustomServiceState() { } diff --git a/sdk/dotnet/Monitoring/GetAppEngineService.cs b/sdk/dotnet/Monitoring/GetAppEngineService.cs index ccd693fd7b..2f0ff38e1f 100644 --- a/sdk/dotnet/Monitoring/GetAppEngineService.cs +++ b/sdk/dotnet/Monitoring/GetAppEngineService.cs @@ -229,6 +229,7 @@ public sealed class GetAppEngineServiceResult public readonly string? Project; public readonly string ServiceId; public readonly ImmutableArray Telemetries; + public readonly ImmutableDictionary UserLabels; [OutputConstructor] private GetAppEngineServiceResult( @@ -244,7 +245,9 @@ public sealed class GetAppEngineServiceResult string serviceId, - ImmutableArray telemetries) + ImmutableArray telemetries, + + ImmutableDictionary userLabels) { DisplayName = displayName; Id = id; @@ -253,6 +256,7 @@ public sealed class GetAppEngineServiceResult Project = project; ServiceId = serviceId; Telemetries = telemetries; + UserLabels = userLabels; } } } diff --git a/sdk/dotnet/Monitoring/GetClusterIstioService.cs b/sdk/dotnet/Monitoring/GetClusterIstioService.cs index 935d91288d..f404ff1c67 100644 --- a/sdk/dotnet/Monitoring/GetClusterIstioService.cs +++ b/sdk/dotnet/Monitoring/GetClusterIstioService.cs @@ -208,6 +208,7 @@ public sealed class GetClusterIstioServiceResult public readonly string ServiceName; public readonly string ServiceNamespace; public readonly ImmutableArray Telemetries; + public readonly ImmutableDictionary UserLabels; [OutputConstructor] private GetClusterIstioServiceResult( @@ -229,7 +230,9 @@ public sealed class GetClusterIstioServiceResult string serviceNamespace, - ImmutableArray telemetries) + ImmutableArray telemetries, + + ImmutableDictionary userLabels) { ClusterName = clusterName; DisplayName = displayName; @@ -241,6 +244,7 @@ public sealed class GetClusterIstioServiceResult ServiceName = serviceName; ServiceNamespace = serviceNamespace; Telemetries = telemetries; + UserLabels = userLabels; } } } diff --git a/sdk/dotnet/Monitoring/GetIstioCanonicalService.cs b/sdk/dotnet/Monitoring/GetIstioCanonicalService.cs index a66ea8fb8b..a1d3356c38 100644 --- a/sdk/dotnet/Monitoring/GetIstioCanonicalService.cs +++ b/sdk/dotnet/Monitoring/GetIstioCanonicalService.cs @@ -191,6 +191,7 @@ public sealed class GetIstioCanonicalServiceResult public readonly string? Project; public readonly string ServiceId; public readonly ImmutableArray Telemetries; + public readonly ImmutableDictionary UserLabels; [OutputConstructor] private GetIstioCanonicalServiceResult( @@ -210,7 +211,9 @@ public sealed class GetIstioCanonicalServiceResult string serviceId, - ImmutableArray telemetries) + ImmutableArray telemetries, + + ImmutableDictionary userLabels) { CanonicalService = canonicalService; CanonicalServiceNamespace = canonicalServiceNamespace; @@ -221,6 +224,7 @@ public sealed class GetIstioCanonicalServiceResult Project = project; ServiceId = serviceId; Telemetries = telemetries; + UserLabels = userLabels; } } } diff --git a/sdk/dotnet/Monitoring/GetMeshIstioService.cs b/sdk/dotnet/Monitoring/GetMeshIstioService.cs index 7f971ae032..75819e1ac7 100644 --- a/sdk/dotnet/Monitoring/GetMeshIstioService.cs +++ b/sdk/dotnet/Monitoring/GetMeshIstioService.cs @@ -191,6 +191,7 @@ public sealed class GetMeshIstioServiceResult public readonly string ServiceName; public readonly string ServiceNamespace; public readonly ImmutableArray Telemetries; + public readonly ImmutableDictionary UserLabels; [OutputConstructor] private GetMeshIstioServiceResult( @@ -210,7 +211,9 @@ public sealed class GetMeshIstioServiceResult string serviceNamespace, - ImmutableArray telemetries) + ImmutableArray telemetries, + + ImmutableDictionary userLabels) { DisplayName = displayName; Id = id; @@ -221,6 +224,7 @@ public sealed class GetMeshIstioServiceResult ServiceName = serviceName; ServiceNamespace = serviceNamespace; Telemetries = telemetries; + UserLabels = userLabels; } } } diff --git a/sdk/dotnet/Monitoring/Inputs/UptimeCheckConfigContentMatcherArgs.cs b/sdk/dotnet/Monitoring/Inputs/UptimeCheckConfigContentMatcherArgs.cs index a659adda58..75871eafac 100644 --- a/sdk/dotnet/Monitoring/Inputs/UptimeCheckConfigContentMatcherArgs.cs +++ b/sdk/dotnet/Monitoring/Inputs/UptimeCheckConfigContentMatcherArgs.cs @@ -18,10 +18,17 @@ public sealed class UptimeCheckConfigContentMatcherArgs : Pulumi.ResourceArgs [Input("content", required: true)] public Input Content { get; set; } = null!; + /// + /// Information needed to perform a JSONPath content match. Used for `ContentMatcherOption::MATCHES_JSON_PATH` and `ContentMatcherOption::NOT_MATCHES_JSON_PATH`. + /// Structure is documented below. + /// + [Input("jsonPathMatcher")] + public Input? JsonPathMatcher { get; set; } + /// /// The type of content matcher that will be applied to the server output, compared to the content string when the check is run. /// Default value is `CONTAINS_STRING`. - /// Possible values are `CONTAINS_STRING`, `NOT_CONTAINS_STRING`, `MATCHES_REGEX`, and `NOT_MATCHES_REGEX`. + /// Possible values are `CONTAINS_STRING`, `NOT_CONTAINS_STRING`, `MATCHES_REGEX`, `NOT_MATCHES_REGEX`, `MATCHES_JSON_PATH`, and `NOT_MATCHES_JSON_PATH`. /// [Input("matcher")] public Input? Matcher { get; set; } diff --git a/sdk/dotnet/Monitoring/Inputs/UptimeCheckConfigContentMatcherGetArgs.cs b/sdk/dotnet/Monitoring/Inputs/UptimeCheckConfigContentMatcherGetArgs.cs index c685ea4231..ab185c1803 100644 --- a/sdk/dotnet/Monitoring/Inputs/UptimeCheckConfigContentMatcherGetArgs.cs +++ b/sdk/dotnet/Monitoring/Inputs/UptimeCheckConfigContentMatcherGetArgs.cs @@ -18,10 +18,17 @@ public sealed class UptimeCheckConfigContentMatcherGetArgs : Pulumi.ResourceArgs [Input("content", required: true)] public Input Content { get; set; } = null!; + /// + /// Information needed to perform a JSONPath content match. Used for `ContentMatcherOption::MATCHES_JSON_PATH` and `ContentMatcherOption::NOT_MATCHES_JSON_PATH`. + /// Structure is documented below. + /// + [Input("jsonPathMatcher")] + public Input? JsonPathMatcher { get; set; } + /// /// The type of content matcher that will be applied to the server output, compared to the content string when the check is run. /// Default value is `CONTAINS_STRING`. - /// Possible values are `CONTAINS_STRING`, `NOT_CONTAINS_STRING`, `MATCHES_REGEX`, and `NOT_MATCHES_REGEX`. + /// Possible values are `CONTAINS_STRING`, `NOT_CONTAINS_STRING`, `MATCHES_REGEX`, `NOT_MATCHES_REGEX`, `MATCHES_JSON_PATH`, and `NOT_MATCHES_JSON_PATH`. /// [Input("matcher")] public Input? Matcher { get; set; } diff --git a/sdk/dotnet/Monitoring/Inputs/UptimeCheckConfigContentMatcherJsonPathMatcherArgs.cs b/sdk/dotnet/Monitoring/Inputs/UptimeCheckConfigContentMatcherJsonPathMatcherArgs.cs new file mode 100644 index 0000000000..d9b4c06a33 --- /dev/null +++ b/sdk/dotnet/Monitoring/Inputs/UptimeCheckConfigContentMatcherJsonPathMatcherArgs.cs @@ -0,0 +1,33 @@ +// *** 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.Monitoring.Inputs +{ + + public sealed class UptimeCheckConfigContentMatcherJsonPathMatcherArgs : Pulumi.ResourceArgs + { + /// + /// Options to perform JSONPath content matching. + /// Default value is `EXACT_MATCH`. + /// Possible values are `EXACT_MATCH` and `REGEX_MATCH`. + /// + [Input("jsonMatcher")] + public Input? JsonMatcher { get; set; } + + /// + /// JSONPath within the response output pointing to the expected `ContentMatcher::content` to match against. + /// + [Input("jsonPath", required: true)] + public Input JsonPath { get; set; } = null!; + + public UptimeCheckConfigContentMatcherJsonPathMatcherArgs() + { + } + } +} diff --git a/sdk/dotnet/Monitoring/Inputs/UptimeCheckConfigContentMatcherJsonPathMatcherGetArgs.cs b/sdk/dotnet/Monitoring/Inputs/UptimeCheckConfigContentMatcherJsonPathMatcherGetArgs.cs new file mode 100644 index 0000000000..30e516fd2f --- /dev/null +++ b/sdk/dotnet/Monitoring/Inputs/UptimeCheckConfigContentMatcherJsonPathMatcherGetArgs.cs @@ -0,0 +1,33 @@ +// *** 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.Monitoring.Inputs +{ + + public sealed class UptimeCheckConfigContentMatcherJsonPathMatcherGetArgs : Pulumi.ResourceArgs + { + /// + /// Options to perform JSONPath content matching. + /// Default value is `EXACT_MATCH`. + /// Possible values are `EXACT_MATCH` and `REGEX_MATCH`. + /// + [Input("jsonMatcher")] + public Input? JsonMatcher { get; set; } + + /// + /// JSONPath within the response output pointing to the expected `ContentMatcher::content` to match against. + /// + [Input("jsonPath", required: true)] + public Input JsonPath { get; set; } = null!; + + public UptimeCheckConfigContentMatcherJsonPathMatcherGetArgs() + { + } + } +} diff --git a/sdk/dotnet/Monitoring/Outputs/UptimeCheckConfigContentMatcher.cs b/sdk/dotnet/Monitoring/Outputs/UptimeCheckConfigContentMatcher.cs index a4946722be..f4ef9f4a92 100644 --- a/sdk/dotnet/Monitoring/Outputs/UptimeCheckConfigContentMatcher.cs +++ b/sdk/dotnet/Monitoring/Outputs/UptimeCheckConfigContentMatcher.cs @@ -18,9 +18,14 @@ public sealed class UptimeCheckConfigContentMatcher /// public readonly string Content; /// + /// Information needed to perform a JSONPath content match. Used for `ContentMatcherOption::MATCHES_JSON_PATH` and `ContentMatcherOption::NOT_MATCHES_JSON_PATH`. + /// Structure is documented below. + /// + public readonly Outputs.UptimeCheckConfigContentMatcherJsonPathMatcher? JsonPathMatcher; + /// /// The type of content matcher that will be applied to the server output, compared to the content string when the check is run. /// Default value is `CONTAINS_STRING`. - /// Possible values are `CONTAINS_STRING`, `NOT_CONTAINS_STRING`, `MATCHES_REGEX`, and `NOT_MATCHES_REGEX`. + /// Possible values are `CONTAINS_STRING`, `NOT_CONTAINS_STRING`, `MATCHES_REGEX`, `NOT_MATCHES_REGEX`, `MATCHES_JSON_PATH`, and `NOT_MATCHES_JSON_PATH`. /// public readonly string? Matcher; @@ -28,9 +33,12 @@ public sealed class UptimeCheckConfigContentMatcher private UptimeCheckConfigContentMatcher( string content, + Outputs.UptimeCheckConfigContentMatcherJsonPathMatcher? jsonPathMatcher, + string? matcher) { Content = content; + JsonPathMatcher = jsonPathMatcher; Matcher = matcher; } } diff --git a/sdk/dotnet/Monitoring/Outputs/UptimeCheckConfigContentMatcherJsonPathMatcher.cs b/sdk/dotnet/Monitoring/Outputs/UptimeCheckConfigContentMatcherJsonPathMatcher.cs new file mode 100644 index 0000000000..6e4fde4170 --- /dev/null +++ b/sdk/dotnet/Monitoring/Outputs/UptimeCheckConfigContentMatcherJsonPathMatcher.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.Monitoring.Outputs +{ + + [OutputType] + public sealed class UptimeCheckConfigContentMatcherJsonPathMatcher + { + /// + /// Options to perform JSONPath content matching. + /// Default value is `EXACT_MATCH`. + /// Possible values are `EXACT_MATCH` and `REGEX_MATCH`. + /// + public readonly string? JsonMatcher; + /// + /// JSONPath within the response output pointing to the expected `ContentMatcher::content` to match against. + /// + public readonly string JsonPath; + + [OutputConstructor] + private UptimeCheckConfigContentMatcherJsonPathMatcher( + string? jsonMatcher, + + string jsonPath) + { + JsonMatcher = jsonMatcher; + JsonPath = jsonPath; + } + } +} diff --git a/sdk/dotnet/Monitoring/Slo.cs b/sdk/dotnet/Monitoring/Slo.cs index 88e995331b..b43336e81f 100644 --- a/sdk/dotnet/Monitoring/Slo.cs +++ b/sdk/dotnet/Monitoring/Slo.cs @@ -54,6 +54,11 @@ namespace Pulumi.Gcp.Monitoring /// Threshold = "1s", /// }, /// }, + /// UserLabels = + /// { + /// { "my_key", "my_value" }, + /// { "my_other_key", "my_other_value" }, + /// }, /// }); /// } /// @@ -188,6 +193,16 @@ public partial class Slo : Pulumi.CustomResource [Output("sloId")] public Output SloId { get; private set; } = null!; + /// + /// This field is intended to be used for organizing and identifying the AlertPolicy + /// objects.The field can contain up to 64 entries. Each key and value is limited + /// to 63 Unicode characters or 128 bytes, whichever is smaller. Labels and values + /// can contain only lowercase letters, numerals, underscores, and dashes. Keys + /// must begin with a letter. + /// + [Output("userLabels")] + public Output?> UserLabels { get; private set; } = null!; + /// /// A windows-based SLI defines the criteria for time windows. /// good_service is defined based off the count of these time windows @@ -320,6 +335,22 @@ public sealed class SloArgs : Pulumi.ResourceArgs [Input("sloId")] public Input? SloId { get; set; } + [Input("userLabels")] + private InputMap? _userLabels; + + /// + /// This field is intended to be used for organizing and identifying the AlertPolicy + /// objects.The field can contain up to 64 entries. Each key and value is limited + /// to 63 Unicode characters or 128 bytes, whichever is smaller. Labels and values + /// can contain only lowercase letters, numerals, underscores, and dashes. Keys + /// must begin with a letter. + /// + public InputMap UserLabels + { + get => _userLabels ?? (_userLabels = new InputMap()); + set => _userLabels = value; + } + /// /// A windows-based SLI defines the criteria for time windows. /// good_service is defined based off the count of these time windows @@ -420,6 +451,22 @@ public sealed class SloState : Pulumi.ResourceArgs [Input("sloId")] public Input? SloId { get; set; } + [Input("userLabels")] + private InputMap? _userLabels; + + /// + /// This field is intended to be used for organizing and identifying the AlertPolicy + /// objects.The field can contain up to 64 entries. Each key and value is limited + /// to 63 Unicode characters or 128 bytes, whichever is smaller. Labels and values + /// can contain only lowercase letters, numerals, underscores, and dashes. Keys + /// must begin with a letter. + /// + public InputMap UserLabels + { + get => _userLabels ?? (_userLabels = new InputMap()); + set => _userLabels = value; + } + /// /// A windows-based SLI defines the criteria for time windows. /// good_service is defined based off the count of these time windows diff --git a/sdk/dotnet/Monitoring/UptimeCheckConfig.cs b/sdk/dotnet/Monitoring/UptimeCheckConfig.cs index 44a1b1de33..c596c796a6 100644 --- a/sdk/dotnet/Monitoring/UptimeCheckConfig.cs +++ b/sdk/dotnet/Monitoring/UptimeCheckConfig.cs @@ -39,7 +39,13 @@ namespace Pulumi.Gcp.Monitoring /// { /// new Gcp.Monitoring.Inputs.UptimeCheckConfigContentMatcherArgs /// { - /// Content = "example", + /// Content = "\"example\"", + /// JsonPathMatcher = new Gcp.Monitoring.Inputs.UptimeCheckConfigContentMatcherJsonPathMatcherArgs + /// { + /// JsonMatcher = "EXACT_MATCH", + /// JsonPath = "$.path", + /// }, + /// Matcher = "MATCHES_JSON_PATH", /// }, /// }, /// DisplayName = "http-uptime-check", @@ -83,6 +89,12 @@ namespace Pulumi.Gcp.Monitoring /// new Gcp.Monitoring.Inputs.UptimeCheckConfigContentMatcherArgs /// { /// Content = "example", + /// JsonPathMatcher = new Gcp.Monitoring.Inputs.UptimeCheckConfigContentMatcherJsonPathMatcherArgs + /// { + /// JsonMatcher = "REGEX_MATCH", + /// JsonPath = "$.path", + /// }, + /// Matcher = "MATCHES_JSON_PATH", /// }, /// }, /// DisplayName = "https-uptime-check", @@ -181,7 +193,7 @@ public partial class UptimeCheckConfig : Pulumi.CustomResource public Output HttpCheck { get; private set; } = null!; /// - /// The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptime_url gce_instance gae_app aws_ec2_instance aws_elb_load_balancer + /// The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptime_url gce_instance gae_app aws_ec2_instance aws_elb_load_balancer k8s_service servicedirectory_service /// Structure is documented below. /// [Output("monitoredResource")] @@ -319,7 +331,7 @@ public InputList ContentMatchers public Input? HttpCheck { get; set; } /// - /// The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptime_url gce_instance gae_app aws_ec2_instance aws_elb_load_balancer + /// The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptime_url gce_instance gae_app aws_ec2_instance aws_elb_load_balancer k8s_service servicedirectory_service /// Structure is documented below. /// [Input("monitoredResource")] @@ -411,7 +423,7 @@ public InputList ContentMatchers public Input? HttpCheck { get; set; } /// - /// The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptime_url gce_instance gae_app aws_ec2_instance aws_elb_load_balancer + /// The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptime_url gce_instance gae_app aws_ec2_instance aws_elb_load_balancer k8s_service servicedirectory_service /// Structure is documented below. /// [Input("monitoredResource")] diff --git a/sdk/dotnet/Sql/Inputs/UserSqlServerUserDetailsArgs.cs b/sdk/dotnet/Sql/Inputs/UserSqlServerUserDetailsArgs.cs new file mode 100644 index 0000000000..2b255902be --- /dev/null +++ b/sdk/dotnet/Sql/Inputs/UserSqlServerUserDetailsArgs.cs @@ -0,0 +1,30 @@ +// *** 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.Sql.Inputs +{ + + public sealed class UserSqlServerUserDetailsArgs : Pulumi.ResourceArgs + { + [Input("disabled")] + public Input? Disabled { get; set; } + + [Input("serverRoles")] + private InputList? _serverRoles; + public InputList ServerRoles + { + get => _serverRoles ?? (_serverRoles = new InputList()); + set => _serverRoles = value; + } + + public UserSqlServerUserDetailsArgs() + { + } + } +} diff --git a/sdk/dotnet/Sql/Inputs/UserSqlServerUserDetailsGetArgs.cs b/sdk/dotnet/Sql/Inputs/UserSqlServerUserDetailsGetArgs.cs new file mode 100644 index 0000000000..e6cd4baa83 --- /dev/null +++ b/sdk/dotnet/Sql/Inputs/UserSqlServerUserDetailsGetArgs.cs @@ -0,0 +1,30 @@ +// *** 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.Sql.Inputs +{ + + public sealed class UserSqlServerUserDetailsGetArgs : Pulumi.ResourceArgs + { + [Input("disabled")] + public Input? Disabled { get; set; } + + [Input("serverRoles")] + private InputList? _serverRoles; + public InputList ServerRoles + { + get => _serverRoles ?? (_serverRoles = new InputList()); + set => _serverRoles = value; + } + + public UserSqlServerUserDetailsGetArgs() + { + } + } +} diff --git a/sdk/dotnet/Sql/Outputs/UserSqlServerUserDetails.cs b/sdk/dotnet/Sql/Outputs/UserSqlServerUserDetails.cs new file mode 100644 index 0000000000..3ede8515dd --- /dev/null +++ b/sdk/dotnet/Sql/Outputs/UserSqlServerUserDetails.cs @@ -0,0 +1,29 @@ +// *** 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.Sql.Outputs +{ + + [OutputType] + public sealed class UserSqlServerUserDetails + { + public readonly bool? Disabled; + public readonly ImmutableArray ServerRoles; + + [OutputConstructor] + private UserSqlServerUserDetails( + bool? disabled, + + ImmutableArray serverRoles) + { + Disabled = disabled; + ServerRoles = serverRoles; + } + } +} diff --git a/sdk/dotnet/Sql/User.cs b/sdk/dotnet/Sql/User.cs index 2d57a0c6c8..da0ccbc942 100644 --- a/sdk/dotnet/Sql/User.cs +++ b/sdk/dotnet/Sql/User.cs @@ -151,6 +151,9 @@ public partial class User : Pulumi.CustomResource [Output("project")] public Output Project { get; private set; } = null!; + [Output("sqlServerUserDetails")] + public Output SqlServerUserDetails { get; private set; } = null!; + /// /// The user type. It determines the method to authenticate the /// user during login. The default is the database's built-in user type. Flags @@ -250,6 +253,9 @@ public sealed class UserArgs : Pulumi.ResourceArgs [Input("project")] public Input? Project { get; set; } + [Input("sqlServerUserDetails")] + public Input? SqlServerUserDetails { get; set; } + /// /// The user type. It determines the method to authenticate the /// user during login. The default is the database's built-in user type. Flags @@ -310,6 +316,9 @@ public sealed class UserState : Pulumi.ResourceArgs [Input("project")] public Input? Project { get; set; } + [Input("sqlServerUserDetails")] + public Input? SqlServerUserDetails { get; set; } + /// /// The user type. It determines the method to authenticate the /// user during login. The default is the database's built-in user type. Flags diff --git a/sdk/go/gcp/bigquery/pulumiTypes.go b/sdk/go/gcp/bigquery/pulumiTypes.go index dfa40f98ad..3c48ad0412 100644 --- a/sdk/go/gcp/bigquery/pulumiTypes.go +++ b/sdk/go/gcp/bigquery/pulumiTypes.go @@ -8322,6 +8322,11 @@ type TableExternalDataConfiguration struct { // The compression type of the data source. // Valid values are "NONE" or "GZIP". Compression *string `pulumi:"compression"` + // The connection specifying the credentials to be used to read + // external storage, such as Azure Blob, Cloud Storage, or S3. The `connectionId` can have + // the form `{{project}}.{{location}}.{{connection_id}}` + // or `projects/{{project}}/locations/{{location}}/connections/{{connection_id}}`. + ConnectionId *string `pulumi:"connectionId"` // Additional properties to set if // `sourceFormat` is set to "CSV". Structure is documented below. CsvOptions *TableExternalDataConfigurationCsvOptions `pulumi:"csvOptions"` @@ -8385,6 +8390,11 @@ type TableExternalDataConfigurationArgs struct { // The compression type of the data source. // Valid values are "NONE" or "GZIP". Compression pulumi.StringPtrInput `pulumi:"compression"` + // The connection specifying the credentials to be used to read + // external storage, such as Azure Blob, Cloud Storage, or S3. The `connectionId` can have + // the form `{{project}}.{{location}}.{{connection_id}}` + // or `projects/{{project}}/locations/{{location}}/connections/{{connection_id}}`. + ConnectionId pulumi.StringPtrInput `pulumi:"connectionId"` // Additional properties to set if // `sourceFormat` is set to "CSV". Structure is documented below. CsvOptions TableExternalDataConfigurationCsvOptionsPtrInput `pulumi:"csvOptions"` @@ -8519,6 +8529,14 @@ func (o TableExternalDataConfigurationOutput) Compression() pulumi.StringPtrOutp return o.ApplyT(func(v TableExternalDataConfiguration) *string { return v.Compression }).(pulumi.StringPtrOutput) } +// The connection specifying the credentials to be used to read +// external storage, such as Azure Blob, Cloud Storage, or S3. The `connectionId` can have +// the form `{{project}}.{{location}}.{{connection_id}}` +// or `projects/{{project}}/locations/{{location}}/connections/{{connection_id}}`. +func (o TableExternalDataConfigurationOutput) ConnectionId() pulumi.StringPtrOutput { + return o.ApplyT(func(v TableExternalDataConfiguration) *string { return v.ConnectionId }).(pulumi.StringPtrOutput) +} + // Additional properties to set if // `sourceFormat` is set to "CSV". Structure is documented below. func (o TableExternalDataConfigurationOutput) CsvOptions() TableExternalDataConfigurationCsvOptionsPtrOutput { @@ -8636,6 +8654,19 @@ func (o TableExternalDataConfigurationPtrOutput) Compression() pulumi.StringPtrO }).(pulumi.StringPtrOutput) } +// The connection specifying the credentials to be used to read +// external storage, such as Azure Blob, Cloud Storage, or S3. The `connectionId` can have +// the form `{{project}}.{{location}}.{{connection_id}}` +// or `projects/{{project}}/locations/{{location}}/connections/{{connection_id}}`. +func (o TableExternalDataConfigurationPtrOutput) ConnectionId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TableExternalDataConfiguration) *string { + if v == nil { + return nil + } + return v.ConnectionId + }).(pulumi.StringPtrOutput) +} + // Additional properties to set if // `sourceFormat` is set to "CSV". Structure is documented below. func (o TableExternalDataConfigurationPtrOutput) CsvOptions() TableExternalDataConfigurationCsvOptionsPtrOutput { diff --git a/sdk/go/gcp/clouddeploy/deliveryPipeline.go b/sdk/go/gcp/clouddeploy/deliveryPipeline.go index 076f07d86b..0695bca924 100644 --- a/sdk/go/gcp/clouddeploy/deliveryPipeline.go +++ b/sdk/go/gcp/clouddeploy/deliveryPipeline.go @@ -11,7 +11,7 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) -// The Clouddeploy DeliveryPipeline resource +// The Cloud Deploy `DeliveryPipeline` resource // // ## Example Usage // ### Delivery_pipeline diff --git a/sdk/go/gcp/clouddeploy/target.go b/sdk/go/gcp/clouddeploy/target.go index f9b57d284d..ed581336f6 100644 --- a/sdk/go/gcp/clouddeploy/target.go +++ b/sdk/go/gcp/clouddeploy/target.go @@ -11,7 +11,7 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) -// The Clouddeploy Target resource +// The Cloud Deploy `Target` resource // // ## Example Usage // ### Target diff --git a/sdk/go/gcp/cloudfunctionsv2/function.go b/sdk/go/gcp/cloudfunctionsv2/function.go index f847716a18..431fae680c 100644 --- a/sdk/go/gcp/cloudfunctionsv2/function.go +++ b/sdk/go/gcp/cloudfunctionsv2/function.go @@ -72,12 +72,20 @@ import ( // import ( // "github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudfunctionsv2" // "github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/pubsub" +// "github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/serviceAccount" // "github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/storage" // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" // ) // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { +// account, err := serviceAccount.NewAccount(ctx, "account", &serviceAccount.AccountArgs{ +// AccountId: pulumi.String("test-service-account"), +// DisplayName: pulumi.String("Test Service Account"), +// }, pulumi.Provider(google_beta)) +// if err != nil { +// return err +// } // sub, err := pubsub.NewTopic(ctx, "sub", nil, pulumi.Provider(google_beta)) // if err != nil { // return err @@ -122,12 +130,14 @@ import ( // }, // IngressSettings: pulumi.String("ALLOW_INTERNAL_ONLY"), // AllTrafficOnLatestRevision: pulumi.Bool(true), +// ServiceAccountEmail: account.Email, // }, // EventTrigger: &cloudfunctionsv2.FunctionEventTriggerArgs{ -// TriggerRegion: pulumi.String("us-central1"), -// EventType: pulumi.String("google.cloud.pubsub.topic.v1.messagePublished"), -// PubsubTopic: sub.ID(), -// RetryPolicy: pulumi.String("RETRY_POLICY_RETRY"), +// TriggerRegion: pulumi.String("us-central1"), +// EventType: pulumi.String("google.cloud.pubsub.topic.v1.messagePublished"), +// PubsubTopic: sub.ID(), +// RetryPolicy: pulumi.String("RETRY_POLICY_RETRY"), +// ServiceAccountEmail: account.Email, // }, // }, pulumi.Provider(google_beta)) // if err != nil { diff --git a/sdk/go/gcp/cloudfunctionsv2/pulumiTypes.go b/sdk/go/gcp/cloudfunctionsv2/pulumiTypes.go index 18d217da61..4942ec673a 100644 --- a/sdk/go/gcp/cloudfunctionsv2/pulumiTypes.go +++ b/sdk/go/gcp/cloudfunctionsv2/pulumiTypes.go @@ -905,7 +905,6 @@ type FunctionEventTrigger struct { // Retried execution is charged as any other execution. // Possible values are `RETRY_POLICY_UNSPECIFIED`, `RETRY_POLICY_DO_NOT_RETRY`, and `RETRY_POLICY_RETRY`. RetryPolicy *string `pulumi:"retryPolicy"` - // - // The email of the service account for this function. ServiceAccountEmail *string `pulumi:"serviceAccountEmail"` // - @@ -939,7 +938,6 @@ type FunctionEventTriggerArgs struct { // Retried execution is charged as any other execution. // Possible values are `RETRY_POLICY_UNSPECIFIED`, `RETRY_POLICY_DO_NOT_RETRY`, and `RETRY_POLICY_RETRY`. RetryPolicy pulumi.StringPtrInput `pulumi:"retryPolicy"` - // - // The email of the service account for this function. ServiceAccountEmail pulumi.StringPtrInput `pulumi:"serviceAccountEmail"` // - @@ -1047,7 +1045,6 @@ func (o FunctionEventTriggerOutput) RetryPolicy() pulumi.StringPtrOutput { return o.ApplyT(func(v FunctionEventTrigger) *string { return v.RetryPolicy }).(pulumi.StringPtrOutput) } -// - // The email of the service account for this function. func (o FunctionEventTriggerOutput) ServiceAccountEmail() pulumi.StringPtrOutput { return o.ApplyT(func(v FunctionEventTrigger) *string { return v.ServiceAccountEmail }).(pulumi.StringPtrOutput) @@ -1124,7 +1121,6 @@ func (o FunctionEventTriggerPtrOutput) RetryPolicy() pulumi.StringPtrOutput { }).(pulumi.StringPtrOutput) } -// - // The email of the service account for this function. func (o FunctionEventTriggerPtrOutput) ServiceAccountEmail() pulumi.StringPtrOutput { return o.ApplyT(func(v *FunctionEventTrigger) *string { @@ -1183,7 +1179,6 @@ type FunctionServiceConfig struct { MinInstanceCount *int `pulumi:"minInstanceCount"` // Name of the service associated with a Function. Service *string `pulumi:"service"` - // - // The email of the service account for this function. ServiceAccountEmail *string `pulumi:"serviceAccountEmail"` // The function execution timeout. Execution is considered failed and @@ -1235,7 +1230,6 @@ type FunctionServiceConfigArgs struct { MinInstanceCount pulumi.IntPtrInput `pulumi:"minInstanceCount"` // Name of the service associated with a Function. Service pulumi.StringPtrInput `pulumi:"service"` - // - // The email of the service account for this function. ServiceAccountEmail pulumi.StringPtrInput `pulumi:"serviceAccountEmail"` // The function execution timeout. Execution is considered failed and @@ -1376,7 +1370,6 @@ func (o FunctionServiceConfigOutput) Service() pulumi.StringPtrOutput { return o.ApplyT(func(v FunctionServiceConfig) *string { return v.Service }).(pulumi.StringPtrOutput) } -// - // The email of the service account for this function. func (o FunctionServiceConfigOutput) ServiceAccountEmail() pulumi.StringPtrOutput { return o.ApplyT(func(v FunctionServiceConfig) *string { return v.ServiceAccountEmail }).(pulumi.StringPtrOutput) @@ -1517,7 +1510,6 @@ func (o FunctionServiceConfigPtrOutput) Service() pulumi.StringPtrOutput { }).(pulumi.StringPtrOutput) } -// - // The email of the service account for this function. func (o FunctionServiceConfigPtrOutput) ServiceAccountEmail() pulumi.StringPtrOutput { return o.ApplyT(func(v *FunctionServiceConfig) *string { diff --git a/sdk/go/gcp/compute/backendService.go b/sdk/go/gcp/compute/backendService.go index 4ee7690120..f153df78e2 100644 --- a/sdk/go/gcp/compute/backendService.go +++ b/sdk/go/gcp/compute/backendService.go @@ -92,6 +92,43 @@ import ( // }) // } // ``` +// ### Backend Service Cache Include Named Cookies +// +// ```go +// package main +// +// import ( +// "github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := compute.NewBackendService(ctx, "default", &compute.BackendServiceArgs{ +// CdnPolicy: &compute.BackendServiceCdnPolicyArgs{ +// CacheKeyPolicy: &compute.BackendServiceCdnPolicyCacheKeyPolicyArgs{ +// IncludeHost: pulumi.Bool(true), +// IncludeNamedCookies: pulumi.StringArray{ +// pulumi.String("__next_preview_data"), +// pulumi.String("__prerender_bypass"), +// }, +// IncludeProtocol: pulumi.Bool(true), +// IncludeQueryString: pulumi.Bool(true), +// }, +// CacheMode: pulumi.String("CACHE_ALL_STATIC"), +// ClientTtl: pulumi.Int(7200), +// DefaultTtl: pulumi.Int(3600), +// MaxTtl: pulumi.Int(10800), +// }, +// EnableCdn: pulumi.Bool(true), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// ``` // ### Backend Service Cache // // ```go diff --git a/sdk/go/gcp/compute/instanceGroup.go b/sdk/go/gcp/compute/instanceGroup.go index dd78a8f617..24e782b100 100644 --- a/sdk/go/gcp/compute/instanceGroup.go +++ b/sdk/go/gcp/compute/instanceGroup.go @@ -181,9 +181,8 @@ type InstanceGroup struct { // An optional textual description of the instance // group. Description pulumi.StringPtrOutput `pulumi:"description"` - // List of instances in the group. They should be given - // as either selfLink or id. When adding instances they must all be in the same - // network and zone as the instance group. + // The list of instances in the group, in `selfLink` format. + // When adding instances they must all be in the same network and zone as the instance group. Instances pulumi.StringArrayOutput `pulumi:"instances"` // The name which the port will be mapped to. Name pulumi.StringOutput `pulumi:"name"` @@ -238,9 +237,8 @@ type instanceGroupState struct { // An optional textual description of the instance // group. Description *string `pulumi:"description"` - // List of instances in the group. They should be given - // as either selfLink or id. When adding instances they must all be in the same - // network and zone as the instance group. + // The list of instances in the group, in `selfLink` format. + // When adding instances they must all be in the same network and zone as the instance group. Instances []string `pulumi:"instances"` // The name which the port will be mapped to. Name *string `pulumi:"name"` @@ -267,9 +265,8 @@ type InstanceGroupState struct { // An optional textual description of the instance // group. Description pulumi.StringPtrInput - // List of instances in the group. They should be given - // as either selfLink or id. When adding instances they must all be in the same - // network and zone as the instance group. + // The list of instances in the group, in `selfLink` format. + // When adding instances they must all be in the same network and zone as the instance group. Instances pulumi.StringArrayInput // The name which the port will be mapped to. Name pulumi.StringPtrInput @@ -300,9 +297,8 @@ type instanceGroupArgs struct { // An optional textual description of the instance // group. Description *string `pulumi:"description"` - // List of instances in the group. They should be given - // as either selfLink or id. When adding instances they must all be in the same - // network and zone as the instance group. + // The list of instances in the group, in `selfLink` format. + // When adding instances they must all be in the same network and zone as the instance group. Instances []string `pulumi:"instances"` // The name which the port will be mapped to. Name *string `pulumi:"name"` @@ -326,9 +322,8 @@ type InstanceGroupArgs struct { // An optional textual description of the instance // group. Description pulumi.StringPtrInput - // List of instances in the group. They should be given - // as either selfLink or id. When adding instances they must all be in the same - // network and zone as the instance group. + // The list of instances in the group, in `selfLink` format. + // When adding instances they must all be in the same network and zone as the instance group. Instances pulumi.StringArrayInput // The name which the port will be mapped to. Name pulumi.StringPtrInput @@ -440,9 +435,8 @@ func (o InstanceGroupOutput) Description() pulumi.StringPtrOutput { return o.ApplyT(func(v *InstanceGroup) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput) } -// List of instances in the group. They should be given -// as either selfLink or id. When adding instances they must all be in the same -// network and zone as the instance group. +// The list of instances in the group, in `selfLink` format. +// When adding instances they must all be in the same network and zone as the instance group. func (o InstanceGroupOutput) Instances() pulumi.StringArrayOutput { return o.ApplyT(func(v *InstanceGroup) pulumi.StringArrayOutput { return v.Instances }).(pulumi.StringArrayOutput) } diff --git a/sdk/go/gcp/compute/network.go b/sdk/go/gcp/compute/network.go index dc9fe855c4..fc84ec1028 100644 --- a/sdk/go/gcp/compute/network.go +++ b/sdk/go/gcp/compute/network.go @@ -94,8 +94,17 @@ type Network struct { // An optional description of this resource. The resource must be // recreated to modify this field. Description pulumi.StringPtrOutput `pulumi:"description"` + // Enable ULA internal ipv6 on this network. Enabling this feature will assign + // a /48 from google defined ULA prefix fd20::/20. + EnableUlaInternalIpv6 pulumi.BoolPtrOutput `pulumi:"enableUlaInternalIpv6"` // The gateway address for default routing out of the network. This value is selected by GCP. GatewayIpv4 pulumi.StringOutput `pulumi:"gatewayIpv4"` + // When enabling ula internal ipv6, caller optionally can specify the /48 range + // they want from the google defined ULA prefix fd20::/20. The input must be a + // valid /48 ULA IPv6 address and must be within the fd20::/20. Operation will + // fail if the speficied /48 is already in used by another resource. + // If the field is not speficied, then a /48 range will be randomly allocated from fd20::/20 and returned via this field. + InternalIpv6Range pulumi.StringOutput `pulumi:"internalIpv6Range"` // Maximum Transmission Unit in bytes. The minimum value for this field is 1460 // and the maximum value is 1500 bytes. Mtu pulumi.IntOutput `pulumi:"mtu"` @@ -162,8 +171,17 @@ type networkState struct { // An optional description of this resource. The resource must be // recreated to modify this field. Description *string `pulumi:"description"` + // Enable ULA internal ipv6 on this network. Enabling this feature will assign + // a /48 from google defined ULA prefix fd20::/20. + EnableUlaInternalIpv6 *bool `pulumi:"enableUlaInternalIpv6"` // The gateway address for default routing out of the network. This value is selected by GCP. GatewayIpv4 *string `pulumi:"gatewayIpv4"` + // When enabling ula internal ipv6, caller optionally can specify the /48 range + // they want from the google defined ULA prefix fd20::/20. The input must be a + // valid /48 ULA IPv6 address and must be within the fd20::/20. Operation will + // fail if the speficied /48 is already in used by another resource. + // If the field is not speficied, then a /48 range will be randomly allocated from fd20::/20 and returned via this field. + InternalIpv6Range *string `pulumi:"internalIpv6Range"` // Maximum Transmission Unit in bytes. The minimum value for this field is 1460 // and the maximum value is 1500 bytes. Mtu *int `pulumi:"mtu"` @@ -202,8 +220,17 @@ type NetworkState struct { // An optional description of this resource. The resource must be // recreated to modify this field. Description pulumi.StringPtrInput + // Enable ULA internal ipv6 on this network. Enabling this feature will assign + // a /48 from google defined ULA prefix fd20::/20. + EnableUlaInternalIpv6 pulumi.BoolPtrInput // The gateway address for default routing out of the network. This value is selected by GCP. GatewayIpv4 pulumi.StringPtrInput + // When enabling ula internal ipv6, caller optionally can specify the /48 range + // they want from the google defined ULA prefix fd20::/20. The input must be a + // valid /48 ULA IPv6 address and must be within the fd20::/20. Operation will + // fail if the speficied /48 is already in used by another resource. + // If the field is not speficied, then a /48 range will be randomly allocated from fd20::/20 and returned via this field. + InternalIpv6Range pulumi.StringPtrInput // Maximum Transmission Unit in bytes. The minimum value for this field is 1460 // and the maximum value is 1500 bytes. Mtu pulumi.IntPtrInput @@ -246,6 +273,15 @@ type networkArgs struct { // An optional description of this resource. The resource must be // recreated to modify this field. Description *string `pulumi:"description"` + // Enable ULA internal ipv6 on this network. Enabling this feature will assign + // a /48 from google defined ULA prefix fd20::/20. + EnableUlaInternalIpv6 *bool `pulumi:"enableUlaInternalIpv6"` + // When enabling ula internal ipv6, caller optionally can specify the /48 range + // they want from the google defined ULA prefix fd20::/20. The input must be a + // valid /48 ULA IPv6 address and must be within the fd20::/20. Operation will + // fail if the speficied /48 is already in used by another resource. + // If the field is not speficied, then a /48 range will be randomly allocated from fd20::/20 and returned via this field. + InternalIpv6Range *string `pulumi:"internalIpv6Range"` // Maximum Transmission Unit in bytes. The minimum value for this field is 1460 // and the maximum value is 1500 bytes. Mtu *int `pulumi:"mtu"` @@ -283,6 +319,15 @@ type NetworkArgs struct { // An optional description of this resource. The resource must be // recreated to modify this field. Description pulumi.StringPtrInput + // Enable ULA internal ipv6 on this network. Enabling this feature will assign + // a /48 from google defined ULA prefix fd20::/20. + EnableUlaInternalIpv6 pulumi.BoolPtrInput + // When enabling ula internal ipv6, caller optionally can specify the /48 range + // they want from the google defined ULA prefix fd20::/20. The input must be a + // valid /48 ULA IPv6 address and must be within the fd20::/20. Operation will + // fail if the speficied /48 is already in used by another resource. + // If the field is not speficied, then a /48 range will be randomly allocated from fd20::/20 and returned via this field. + InternalIpv6Range pulumi.StringPtrInput // Maximum Transmission Unit in bytes. The minimum value for this field is 1460 // and the maximum value is 1500 bytes. Mtu pulumi.IntPtrInput @@ -414,11 +459,26 @@ func (o NetworkOutput) Description() pulumi.StringPtrOutput { return o.ApplyT(func(v *Network) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput) } +// Enable ULA internal ipv6 on this network. Enabling this feature will assign +// a /48 from google defined ULA prefix fd20::/20. +func (o NetworkOutput) EnableUlaInternalIpv6() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *Network) pulumi.BoolPtrOutput { return v.EnableUlaInternalIpv6 }).(pulumi.BoolPtrOutput) +} + // The gateway address for default routing out of the network. This value is selected by GCP. func (o NetworkOutput) GatewayIpv4() pulumi.StringOutput { return o.ApplyT(func(v *Network) pulumi.StringOutput { return v.GatewayIpv4 }).(pulumi.StringOutput) } +// When enabling ula internal ipv6, caller optionally can specify the /48 range +// they want from the google defined ULA prefix fd20::/20. The input must be a +// valid /48 ULA IPv6 address and must be within the fd20::/20. Operation will +// fail if the speficied /48 is already in used by another resource. +// If the field is not speficied, then a /48 range will be randomly allocated from fd20::/20 and returned via this field. +func (o NetworkOutput) InternalIpv6Range() pulumi.StringOutput { + return o.ApplyT(func(v *Network) pulumi.StringOutput { return v.InternalIpv6Range }).(pulumi.StringOutput) +} + // Maximum Transmission Unit in bytes. The minimum value for this field is 1460 // and the maximum value is 1500 bytes. func (o NetworkOutput) Mtu() pulumi.IntOutput { diff --git a/sdk/go/gcp/compute/pulumiTypes.go b/sdk/go/gcp/compute/pulumiTypes.go index baba25c06e..458e90bcc2 100644 --- a/sdk/go/gcp/compute/pulumiTypes.go +++ b/sdk/go/gcp/compute/pulumiTypes.go @@ -4932,6 +4932,8 @@ func (o BackendServiceCdnPolicyPtrOutput) SignedUrlCacheMaxAgeSec() pulumi.IntPt type BackendServiceCdnPolicyCacheKeyPolicy struct { // If true requests to different hosts will be cached separately. IncludeHost *bool `pulumi:"includeHost"` + // Names of cookies to include in cache keys. + IncludeNamedCookies []string `pulumi:"includeNamedCookies"` // If true, http and https requests will be cached separately. IncludeProtocol *bool `pulumi:"includeProtocol"` // If true, include query string parameters in the cache key @@ -4969,6 +4971,8 @@ type BackendServiceCdnPolicyCacheKeyPolicyInput interface { type BackendServiceCdnPolicyCacheKeyPolicyArgs struct { // If true requests to different hosts will be cached separately. IncludeHost pulumi.BoolPtrInput `pulumi:"includeHost"` + // Names of cookies to include in cache keys. + IncludeNamedCookies pulumi.StringArrayInput `pulumi:"includeNamedCookies"` // If true, http and https requests will be cached separately. IncludeProtocol pulumi.BoolPtrInput `pulumi:"includeProtocol"` // If true, include query string parameters in the cache key @@ -5074,6 +5078,11 @@ func (o BackendServiceCdnPolicyCacheKeyPolicyOutput) IncludeHost() pulumi.BoolPt return o.ApplyT(func(v BackendServiceCdnPolicyCacheKeyPolicy) *bool { return v.IncludeHost }).(pulumi.BoolPtrOutput) } +// Names of cookies to include in cache keys. +func (o BackendServiceCdnPolicyCacheKeyPolicyOutput) IncludeNamedCookies() pulumi.StringArrayOutput { + return o.ApplyT(func(v BackendServiceCdnPolicyCacheKeyPolicy) []string { return v.IncludeNamedCookies }).(pulumi.StringArrayOutput) +} + // If true, http and https requests will be cached separately. func (o BackendServiceCdnPolicyCacheKeyPolicyOutput) IncludeProtocol() pulumi.BoolPtrOutput { return o.ApplyT(func(v BackendServiceCdnPolicyCacheKeyPolicy) *bool { return v.IncludeProtocol }).(pulumi.BoolPtrOutput) @@ -5141,6 +5150,16 @@ func (o BackendServiceCdnPolicyCacheKeyPolicyPtrOutput) IncludeHost() pulumi.Boo }).(pulumi.BoolPtrOutput) } +// Names of cookies to include in cache keys. +func (o BackendServiceCdnPolicyCacheKeyPolicyPtrOutput) IncludeNamedCookies() pulumi.StringArrayOutput { + return o.ApplyT(func(v *BackendServiceCdnPolicyCacheKeyPolicy) []string { + if v == nil { + return nil + } + return v.IncludeNamedCookies + }).(pulumi.StringArrayOutput) +} + // If true, http and https requests will be cached separately. func (o BackendServiceCdnPolicyCacheKeyPolicyPtrOutput) IncludeProtocol() pulumi.BoolPtrOutput { return o.ApplyT(func(v *BackendServiceCdnPolicyCacheKeyPolicy) *bool { @@ -31313,6 +31332,8 @@ func (o RegionBackendServiceCdnPolicyPtrOutput) SignedUrlCacheMaxAgeSec() pulumi type RegionBackendServiceCdnPolicyCacheKeyPolicy struct { // If true requests to different hosts will be cached separately. IncludeHost *bool `pulumi:"includeHost"` + // Names of cookies to include in cache keys. + IncludeNamedCookies []string `pulumi:"includeNamedCookies"` // If true, http and https requests will be cached separately. IncludeProtocol *bool `pulumi:"includeProtocol"` // If true, include query string parameters in the cache key @@ -31350,6 +31371,8 @@ type RegionBackendServiceCdnPolicyCacheKeyPolicyInput interface { type RegionBackendServiceCdnPolicyCacheKeyPolicyArgs struct { // If true requests to different hosts will be cached separately. IncludeHost pulumi.BoolPtrInput `pulumi:"includeHost"` + // Names of cookies to include in cache keys. + IncludeNamedCookies pulumi.StringArrayInput `pulumi:"includeNamedCookies"` // If true, http and https requests will be cached separately. IncludeProtocol pulumi.BoolPtrInput `pulumi:"includeProtocol"` // If true, include query string parameters in the cache key @@ -31455,6 +31478,11 @@ func (o RegionBackendServiceCdnPolicyCacheKeyPolicyOutput) IncludeHost() pulumi. return o.ApplyT(func(v RegionBackendServiceCdnPolicyCacheKeyPolicy) *bool { return v.IncludeHost }).(pulumi.BoolPtrOutput) } +// Names of cookies to include in cache keys. +func (o RegionBackendServiceCdnPolicyCacheKeyPolicyOutput) IncludeNamedCookies() pulumi.StringArrayOutput { + return o.ApplyT(func(v RegionBackendServiceCdnPolicyCacheKeyPolicy) []string { return v.IncludeNamedCookies }).(pulumi.StringArrayOutput) +} + // If true, http and https requests will be cached separately. func (o RegionBackendServiceCdnPolicyCacheKeyPolicyOutput) IncludeProtocol() pulumi.BoolPtrOutput { return o.ApplyT(func(v RegionBackendServiceCdnPolicyCacheKeyPolicy) *bool { return v.IncludeProtocol }).(pulumi.BoolPtrOutput) @@ -31522,6 +31550,16 @@ func (o RegionBackendServiceCdnPolicyCacheKeyPolicyPtrOutput) IncludeHost() pulu }).(pulumi.BoolPtrOutput) } +// Names of cookies to include in cache keys. +func (o RegionBackendServiceCdnPolicyCacheKeyPolicyPtrOutput) IncludeNamedCookies() pulumi.StringArrayOutput { + return o.ApplyT(func(v *RegionBackendServiceCdnPolicyCacheKeyPolicy) []string { + if v == nil { + return nil + } + return v.IncludeNamedCookies + }).(pulumi.StringArrayOutput) +} + // If true, http and https requests will be cached separately. func (o RegionBackendServiceCdnPolicyCacheKeyPolicyPtrOutput) IncludeProtocol() pulumi.BoolPtrOutput { return o.ApplyT(func(v *RegionBackendServiceCdnPolicyCacheKeyPolicy) *bool { @@ -54101,6 +54139,178 @@ func (o SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigPtrOutput) }).(pulumi.StringPtrOutput) } +type SecurityPolicyAdvancedOptionsConfig struct { + // Whether or not to JSON parse the payload body. Defaults to `DISABLED`. + // * DISABLED - Don't parse JSON payloads in POST bodies. + // * STANDARD - Parse JSON payloads in POST bodies. + JsonParsing *string `pulumi:"jsonParsing"` + // Log level to use. Defaults to `NORMAL`. + // * NORMAL - Normal log level. + // * VERBOSE - Verbose log level. + LogLevel *string `pulumi:"logLevel"` +} + +// SecurityPolicyAdvancedOptionsConfigInput is an input type that accepts SecurityPolicyAdvancedOptionsConfigArgs and SecurityPolicyAdvancedOptionsConfigOutput values. +// You can construct a concrete instance of `SecurityPolicyAdvancedOptionsConfigInput` via: +// +// SecurityPolicyAdvancedOptionsConfigArgs{...} +type SecurityPolicyAdvancedOptionsConfigInput interface { + pulumi.Input + + ToSecurityPolicyAdvancedOptionsConfigOutput() SecurityPolicyAdvancedOptionsConfigOutput + ToSecurityPolicyAdvancedOptionsConfigOutputWithContext(context.Context) SecurityPolicyAdvancedOptionsConfigOutput +} + +type SecurityPolicyAdvancedOptionsConfigArgs struct { + // Whether or not to JSON parse the payload body. Defaults to `DISABLED`. + // * DISABLED - Don't parse JSON payloads in POST bodies. + // * STANDARD - Parse JSON payloads in POST bodies. + JsonParsing pulumi.StringPtrInput `pulumi:"jsonParsing"` + // Log level to use. Defaults to `NORMAL`. + // * NORMAL - Normal log level. + // * VERBOSE - Verbose log level. + LogLevel pulumi.StringPtrInput `pulumi:"logLevel"` +} + +func (SecurityPolicyAdvancedOptionsConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*SecurityPolicyAdvancedOptionsConfig)(nil)).Elem() +} + +func (i SecurityPolicyAdvancedOptionsConfigArgs) ToSecurityPolicyAdvancedOptionsConfigOutput() SecurityPolicyAdvancedOptionsConfigOutput { + return i.ToSecurityPolicyAdvancedOptionsConfigOutputWithContext(context.Background()) +} + +func (i SecurityPolicyAdvancedOptionsConfigArgs) ToSecurityPolicyAdvancedOptionsConfigOutputWithContext(ctx context.Context) SecurityPolicyAdvancedOptionsConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(SecurityPolicyAdvancedOptionsConfigOutput) +} + +func (i SecurityPolicyAdvancedOptionsConfigArgs) ToSecurityPolicyAdvancedOptionsConfigPtrOutput() SecurityPolicyAdvancedOptionsConfigPtrOutput { + return i.ToSecurityPolicyAdvancedOptionsConfigPtrOutputWithContext(context.Background()) +} + +func (i SecurityPolicyAdvancedOptionsConfigArgs) ToSecurityPolicyAdvancedOptionsConfigPtrOutputWithContext(ctx context.Context) SecurityPolicyAdvancedOptionsConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(SecurityPolicyAdvancedOptionsConfigOutput).ToSecurityPolicyAdvancedOptionsConfigPtrOutputWithContext(ctx) +} + +// SecurityPolicyAdvancedOptionsConfigPtrInput is an input type that accepts SecurityPolicyAdvancedOptionsConfigArgs, SecurityPolicyAdvancedOptionsConfigPtr and SecurityPolicyAdvancedOptionsConfigPtrOutput values. +// You can construct a concrete instance of `SecurityPolicyAdvancedOptionsConfigPtrInput` via: +// +// SecurityPolicyAdvancedOptionsConfigArgs{...} +// +// or: +// +// nil +type SecurityPolicyAdvancedOptionsConfigPtrInput interface { + pulumi.Input + + ToSecurityPolicyAdvancedOptionsConfigPtrOutput() SecurityPolicyAdvancedOptionsConfigPtrOutput + ToSecurityPolicyAdvancedOptionsConfigPtrOutputWithContext(context.Context) SecurityPolicyAdvancedOptionsConfigPtrOutput +} + +type securityPolicyAdvancedOptionsConfigPtrType SecurityPolicyAdvancedOptionsConfigArgs + +func SecurityPolicyAdvancedOptionsConfigPtr(v *SecurityPolicyAdvancedOptionsConfigArgs) SecurityPolicyAdvancedOptionsConfigPtrInput { + return (*securityPolicyAdvancedOptionsConfigPtrType)(v) +} + +func (*securityPolicyAdvancedOptionsConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**SecurityPolicyAdvancedOptionsConfig)(nil)).Elem() +} + +func (i *securityPolicyAdvancedOptionsConfigPtrType) ToSecurityPolicyAdvancedOptionsConfigPtrOutput() SecurityPolicyAdvancedOptionsConfigPtrOutput { + return i.ToSecurityPolicyAdvancedOptionsConfigPtrOutputWithContext(context.Background()) +} + +func (i *securityPolicyAdvancedOptionsConfigPtrType) ToSecurityPolicyAdvancedOptionsConfigPtrOutputWithContext(ctx context.Context) SecurityPolicyAdvancedOptionsConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(SecurityPolicyAdvancedOptionsConfigPtrOutput) +} + +type SecurityPolicyAdvancedOptionsConfigOutput struct{ *pulumi.OutputState } + +func (SecurityPolicyAdvancedOptionsConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*SecurityPolicyAdvancedOptionsConfig)(nil)).Elem() +} + +func (o SecurityPolicyAdvancedOptionsConfigOutput) ToSecurityPolicyAdvancedOptionsConfigOutput() SecurityPolicyAdvancedOptionsConfigOutput { + return o +} + +func (o SecurityPolicyAdvancedOptionsConfigOutput) ToSecurityPolicyAdvancedOptionsConfigOutputWithContext(ctx context.Context) SecurityPolicyAdvancedOptionsConfigOutput { + return o +} + +func (o SecurityPolicyAdvancedOptionsConfigOutput) ToSecurityPolicyAdvancedOptionsConfigPtrOutput() SecurityPolicyAdvancedOptionsConfigPtrOutput { + return o.ToSecurityPolicyAdvancedOptionsConfigPtrOutputWithContext(context.Background()) +} + +func (o SecurityPolicyAdvancedOptionsConfigOutput) ToSecurityPolicyAdvancedOptionsConfigPtrOutputWithContext(ctx context.Context) SecurityPolicyAdvancedOptionsConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v SecurityPolicyAdvancedOptionsConfig) *SecurityPolicyAdvancedOptionsConfig { + return &v + }).(SecurityPolicyAdvancedOptionsConfigPtrOutput) +} + +// Whether or not to JSON parse the payload body. Defaults to `DISABLED`. +// * DISABLED - Don't parse JSON payloads in POST bodies. +// * STANDARD - Parse JSON payloads in POST bodies. +func (o SecurityPolicyAdvancedOptionsConfigOutput) JsonParsing() pulumi.StringPtrOutput { + return o.ApplyT(func(v SecurityPolicyAdvancedOptionsConfig) *string { return v.JsonParsing }).(pulumi.StringPtrOutput) +} + +// Log level to use. Defaults to `NORMAL`. +// * NORMAL - Normal log level. +// * VERBOSE - Verbose log level. +func (o SecurityPolicyAdvancedOptionsConfigOutput) LogLevel() pulumi.StringPtrOutput { + return o.ApplyT(func(v SecurityPolicyAdvancedOptionsConfig) *string { return v.LogLevel }).(pulumi.StringPtrOutput) +} + +type SecurityPolicyAdvancedOptionsConfigPtrOutput struct{ *pulumi.OutputState } + +func (SecurityPolicyAdvancedOptionsConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**SecurityPolicyAdvancedOptionsConfig)(nil)).Elem() +} + +func (o SecurityPolicyAdvancedOptionsConfigPtrOutput) ToSecurityPolicyAdvancedOptionsConfigPtrOutput() SecurityPolicyAdvancedOptionsConfigPtrOutput { + return o +} + +func (o SecurityPolicyAdvancedOptionsConfigPtrOutput) ToSecurityPolicyAdvancedOptionsConfigPtrOutputWithContext(ctx context.Context) SecurityPolicyAdvancedOptionsConfigPtrOutput { + return o +} + +func (o SecurityPolicyAdvancedOptionsConfigPtrOutput) Elem() SecurityPolicyAdvancedOptionsConfigOutput { + return o.ApplyT(func(v *SecurityPolicyAdvancedOptionsConfig) SecurityPolicyAdvancedOptionsConfig { + if v != nil { + return *v + } + var ret SecurityPolicyAdvancedOptionsConfig + return ret + }).(SecurityPolicyAdvancedOptionsConfigOutput) +} + +// Whether or not to JSON parse the payload body. Defaults to `DISABLED`. +// * DISABLED - Don't parse JSON payloads in POST bodies. +// * STANDARD - Parse JSON payloads in POST bodies. +func (o SecurityPolicyAdvancedOptionsConfigPtrOutput) JsonParsing() pulumi.StringPtrOutput { + return o.ApplyT(func(v *SecurityPolicyAdvancedOptionsConfig) *string { + if v == nil { + return nil + } + return v.JsonParsing + }).(pulumi.StringPtrOutput) +} + +// Log level to use. Defaults to `NORMAL`. +// * NORMAL - Normal log level. +// * VERBOSE - Verbose log level. +func (o SecurityPolicyAdvancedOptionsConfigPtrOutput) LogLevel() pulumi.StringPtrOutput { + return o.ApplyT(func(v *SecurityPolicyAdvancedOptionsConfig) *string { + if v == nil { + return nil + } + return v.LogLevel + }).(pulumi.StringPtrOutput) +} + type SecurityPolicyRule struct { // Action to take when `match` matches the request. Valid values: // * allow: allow access to target. @@ -73915,6 +74125,7 @@ func (o GetBackendServiceCdnPolicyArrayOutput) Index(i pulumi.IntInput) GetBacke type GetBackendServiceCdnPolicyCacheKeyPolicy struct { IncludeHost bool `pulumi:"includeHost"` + IncludeNamedCookies []string `pulumi:"includeNamedCookies"` IncludeProtocol bool `pulumi:"includeProtocol"` IncludeQueryString bool `pulumi:"includeQueryString"` QueryStringBlacklists []string `pulumi:"queryStringBlacklists"` @@ -73934,6 +74145,7 @@ type GetBackendServiceCdnPolicyCacheKeyPolicyInput interface { type GetBackendServiceCdnPolicyCacheKeyPolicyArgs struct { IncludeHost pulumi.BoolInput `pulumi:"includeHost"` + IncludeNamedCookies pulumi.StringArrayInput `pulumi:"includeNamedCookies"` IncludeProtocol pulumi.BoolInput `pulumi:"includeProtocol"` IncludeQueryString pulumi.BoolInput `pulumi:"includeQueryString"` QueryStringBlacklists pulumi.StringArrayInput `pulumi:"queryStringBlacklists"` @@ -73995,6 +74207,10 @@ func (o GetBackendServiceCdnPolicyCacheKeyPolicyOutput) IncludeHost() pulumi.Boo return o.ApplyT(func(v GetBackendServiceCdnPolicyCacheKeyPolicy) bool { return v.IncludeHost }).(pulumi.BoolOutput) } +func (o GetBackendServiceCdnPolicyCacheKeyPolicyOutput) IncludeNamedCookies() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetBackendServiceCdnPolicyCacheKeyPolicy) []string { return v.IncludeNamedCookies }).(pulumi.StringArrayOutput) +} + func (o GetBackendServiceCdnPolicyCacheKeyPolicyOutput) IncludeProtocol() pulumi.BoolOutput { return o.ApplyT(func(v GetBackendServiceCdnPolicyCacheKeyPolicy) bool { return v.IncludeProtocol }).(pulumi.BoolOutput) } @@ -84001,6 +84217,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*SecurityPolicyAdaptiveProtectionConfigPtrInput)(nil)).Elem(), SecurityPolicyAdaptiveProtectionConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigInput)(nil)).Elem(), SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigPtrInput)(nil)).Elem(), SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*SecurityPolicyAdvancedOptionsConfigInput)(nil)).Elem(), SecurityPolicyAdvancedOptionsConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*SecurityPolicyAdvancedOptionsConfigPtrInput)(nil)).Elem(), SecurityPolicyAdvancedOptionsConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*SecurityPolicyRuleInput)(nil)).Elem(), SecurityPolicyRuleArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*SecurityPolicyRuleArrayInput)(nil)).Elem(), SecurityPolicyRuleArray{}) pulumi.RegisterInputType(reflect.TypeOf((*SecurityPolicyRuleMatchInput)(nil)).Elem(), SecurityPolicyRuleMatchArgs{}) @@ -84980,6 +85198,8 @@ func init() { pulumi.RegisterOutputType(SecurityPolicyAdaptiveProtectionConfigPtrOutput{}) pulumi.RegisterOutputType(SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigOutput{}) pulumi.RegisterOutputType(SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigPtrOutput{}) + pulumi.RegisterOutputType(SecurityPolicyAdvancedOptionsConfigOutput{}) + pulumi.RegisterOutputType(SecurityPolicyAdvancedOptionsConfigPtrOutput{}) pulumi.RegisterOutputType(SecurityPolicyRuleOutput{}) pulumi.RegisterOutputType(SecurityPolicyRuleArrayOutput{}) pulumi.RegisterOutputType(SecurityPolicyRuleMatchOutput{}) diff --git a/sdk/go/gcp/compute/securityPolicy.go b/sdk/go/gcp/compute/securityPolicy.go index ff7dc220f5..d11da3c2a6 100644 --- a/sdk/go/gcp/compute/securityPolicy.go +++ b/sdk/go/gcp/compute/securityPolicy.go @@ -68,6 +68,8 @@ type SecurityPolicy struct { // Configuration for [Google Cloud Armor Adaptive Protection](https://cloud.google.com/armor/docs/adaptive-protection-overview?hl=en). Structure is documented below. AdaptiveProtectionConfig SecurityPolicyAdaptiveProtectionConfigPtrOutput `pulumi:"adaptiveProtectionConfig"` + // [Advanced Configuration Options](https://cloud.google.com/armor/docs/security-policy-overview#json-parsing). + AdvancedOptionsConfig SecurityPolicyAdvancedOptionsConfigOutput `pulumi:"advancedOptionsConfig"` // An optional description of this rule. Max size is 64. Description pulumi.StringPtrOutput `pulumi:"description"` // Fingerprint of this resource. @@ -118,6 +120,8 @@ func GetSecurityPolicy(ctx *pulumi.Context, type securityPolicyState struct { // Configuration for [Google Cloud Armor Adaptive Protection](https://cloud.google.com/armor/docs/adaptive-protection-overview?hl=en). Structure is documented below. AdaptiveProtectionConfig *SecurityPolicyAdaptiveProtectionConfig `pulumi:"adaptiveProtectionConfig"` + // [Advanced Configuration Options](https://cloud.google.com/armor/docs/security-policy-overview#json-parsing). + AdvancedOptionsConfig *SecurityPolicyAdvancedOptionsConfig `pulumi:"advancedOptionsConfig"` // An optional description of this rule. Max size is 64. Description *string `pulumi:"description"` // Fingerprint of this resource. @@ -140,6 +144,8 @@ type securityPolicyState struct { type SecurityPolicyState struct { // Configuration for [Google Cloud Armor Adaptive Protection](https://cloud.google.com/armor/docs/adaptive-protection-overview?hl=en). Structure is documented below. AdaptiveProtectionConfig SecurityPolicyAdaptiveProtectionConfigPtrInput + // [Advanced Configuration Options](https://cloud.google.com/armor/docs/security-policy-overview#json-parsing). + AdvancedOptionsConfig SecurityPolicyAdvancedOptionsConfigPtrInput // An optional description of this rule. Max size is 64. Description pulumi.StringPtrInput // Fingerprint of this resource. @@ -166,6 +172,8 @@ func (SecurityPolicyState) ElementType() reflect.Type { type securityPolicyArgs struct { // Configuration for [Google Cloud Armor Adaptive Protection](https://cloud.google.com/armor/docs/adaptive-protection-overview?hl=en). Structure is documented below. AdaptiveProtectionConfig *SecurityPolicyAdaptiveProtectionConfig `pulumi:"adaptiveProtectionConfig"` + // [Advanced Configuration Options](https://cloud.google.com/armor/docs/security-policy-overview#json-parsing). + AdvancedOptionsConfig *SecurityPolicyAdvancedOptionsConfig `pulumi:"advancedOptionsConfig"` // An optional description of this rule. Max size is 64. Description *string `pulumi:"description"` // The name of the security policy. @@ -185,6 +193,8 @@ type securityPolicyArgs struct { type SecurityPolicyArgs struct { // Configuration for [Google Cloud Armor Adaptive Protection](https://cloud.google.com/armor/docs/adaptive-protection-overview?hl=en). Structure is documented below. AdaptiveProtectionConfig SecurityPolicyAdaptiveProtectionConfigPtrInput + // [Advanced Configuration Options](https://cloud.google.com/armor/docs/security-policy-overview#json-parsing). + AdvancedOptionsConfig SecurityPolicyAdvancedOptionsConfigPtrInput // An optional description of this rule. Max size is 64. Description pulumi.StringPtrInput // The name of the security policy. @@ -294,6 +304,11 @@ func (o SecurityPolicyOutput) AdaptiveProtectionConfig() SecurityPolicyAdaptiveP }).(SecurityPolicyAdaptiveProtectionConfigPtrOutput) } +// [Advanced Configuration Options](https://cloud.google.com/armor/docs/security-policy-overview#json-parsing). +func (o SecurityPolicyOutput) AdvancedOptionsConfig() SecurityPolicyAdvancedOptionsConfigOutput { + return o.ApplyT(func(v *SecurityPolicy) SecurityPolicyAdvancedOptionsConfigOutput { return v.AdvancedOptionsConfig }).(SecurityPolicyAdvancedOptionsConfigOutput) +} + // An optional description of this rule. Max size is 64. func (o SecurityPolicyOutput) Description() pulumi.StringPtrOutput { return o.ApplyT(func(v *SecurityPolicy) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput) diff --git a/sdk/go/gcp/compute/subnetwork.go b/sdk/go/gcp/compute/subnetwork.go index 61f0702130..24f69830d2 100644 --- a/sdk/go/gcp/compute/subnetwork.go +++ b/sdk/go/gcp/compute/subnetwork.go @@ -177,6 +177,39 @@ import ( // }) // } // ``` +// ### Subnetwork Internal Ipv6 +// +// ```go +// package main +// +// import ( +// "github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := compute.NewNetwork(ctx, "custom-test", &compute.NetworkArgs{ +// AutoCreateSubnetworks: pulumi.Bool(false), +// EnableUlaInternalIpv6: pulumi.Bool(true), +// }) +// if err != nil { +// return err +// } +// _, err = compute.NewSubnetwork(ctx, "subnetwork-internal-ipv6", &compute.SubnetworkArgs{ +// IpCidrRange: pulumi.String("10.0.0.0/22"), +// Region: pulumi.String("us-west2"), +// StackType: pulumi.String("IPV4_IPV6"), +// Ipv6AccessType: pulumi.String("INTERNAL"), +// Network: custom_test.ID(), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// ``` // // ## Import // @@ -222,7 +255,7 @@ type Subnetwork struct { // The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation // or the first time the subnet is updated into IPV4_IPV6 dual stack. If the ipv6Type is EXTERNAL then this subnet // cannot enable direct path. - // Possible values are `EXTERNAL`. + // Possible values are `EXTERNAL` and `INTERNAL`. Ipv6AccessType pulumi.StringPtrOutput `pulumi:"ipv6AccessType"` // The range of internal IPv6 addresses that are owned by this subnetwork. Ipv6CidrRange pulumi.StringOutput `pulumi:"ipv6CidrRange"` @@ -335,7 +368,7 @@ type subnetworkState struct { // The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation // or the first time the subnet is updated into IPV4_IPV6 dual stack. If the ipv6Type is EXTERNAL then this subnet // cannot enable direct path. - // Possible values are `EXTERNAL`. + // Possible values are `EXTERNAL` and `INTERNAL`. Ipv6AccessType *string `pulumi:"ipv6AccessType"` // The range of internal IPv6 addresses that are owned by this subnetwork. Ipv6CidrRange *string `pulumi:"ipv6CidrRange"` @@ -414,7 +447,7 @@ type SubnetworkState struct { // The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation // or the first time the subnet is updated into IPV4_IPV6 dual stack. If the ipv6Type is EXTERNAL then this subnet // cannot enable direct path. - // Possible values are `EXTERNAL`. + // Possible values are `EXTERNAL` and `INTERNAL`. Ipv6AccessType pulumi.StringPtrInput // The range of internal IPv6 addresses that are owned by this subnetwork. Ipv6CidrRange pulumi.StringPtrInput @@ -487,7 +520,7 @@ type subnetworkArgs struct { // The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation // or the first time the subnet is updated into IPV4_IPV6 dual stack. If the ipv6Type is EXTERNAL then this subnet // cannot enable direct path. - // Possible values are `EXTERNAL`. + // Possible values are `EXTERNAL` and `INTERNAL`. Ipv6AccessType *string `pulumi:"ipv6AccessType"` // Denotes the logging options for the subnetwork flow logs. If logging is enabled // logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this @@ -553,7 +586,7 @@ type SubnetworkArgs struct { // The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation // or the first time the subnet is updated into IPV4_IPV6 dual stack. If the ipv6Type is EXTERNAL then this subnet // cannot enable direct path. - // Possible values are `EXTERNAL`. + // Possible values are `EXTERNAL` and `INTERNAL`. Ipv6AccessType pulumi.StringPtrInput // Denotes the logging options for the subnetwork flow logs. If logging is enabled // logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this @@ -732,7 +765,7 @@ func (o SubnetworkOutput) IpCidrRange() pulumi.StringOutput { // The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation // or the first time the subnet is updated into IPV4_IPV6 dual stack. If the ipv6Type is EXTERNAL then this subnet // cannot enable direct path. -// Possible values are `EXTERNAL`. +// Possible values are `EXTERNAL` and `INTERNAL`. func (o SubnetworkOutput) Ipv6AccessType() pulumi.StringPtrOutput { return o.ApplyT(func(v *Subnetwork) pulumi.StringPtrOutput { return v.Ipv6AccessType }).(pulumi.StringPtrOutput) } diff --git a/sdk/go/gcp/container/pulumiTypes.go b/sdk/go/gcp/container/pulumiTypes.go index afda267cfd..fea5264506 100644 --- a/sdk/go/gcp/container/pulumiTypes.go +++ b/sdk/go/gcp/container/pulumiTypes.go @@ -10990,7 +10990,7 @@ func (o ClusterIpAllocationPolicyPtrOutput) ServicesSecondaryRangeName() pulumi. } type ClusterLoggingConfig struct { - // The GKE components exposing logs. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. + // The GKE components exposing metrics. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. (`WORKLOADS` is deprecated and removed in GKE 1.24.) EnableComponents []string `pulumi:"enableComponents"` } @@ -11006,7 +11006,7 @@ type ClusterLoggingConfigInput interface { } type ClusterLoggingConfigArgs struct { - // The GKE components exposing logs. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. + // The GKE components exposing metrics. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. (`WORKLOADS` is deprecated and removed in GKE 1.24.) EnableComponents pulumi.StringArrayInput `pulumi:"enableComponents"` } @@ -11087,7 +11087,7 @@ func (o ClusterLoggingConfigOutput) ToClusterLoggingConfigPtrOutputWithContext(c }).(ClusterLoggingConfigPtrOutput) } -// The GKE components exposing logs. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. +// The GKE components exposing metrics. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. (`WORKLOADS` is deprecated and removed in GKE 1.24.) func (o ClusterLoggingConfigOutput) EnableComponents() pulumi.StringArrayOutput { return o.ApplyT(func(v ClusterLoggingConfig) []string { return v.EnableComponents }).(pulumi.StringArrayOutput) } @@ -11116,7 +11116,7 @@ func (o ClusterLoggingConfigPtrOutput) Elem() ClusterLoggingConfigOutput { }).(ClusterLoggingConfigOutput) } -// The GKE components exposing logs. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. +// The GKE components exposing metrics. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. (`WORKLOADS` is deprecated and removed in GKE 1.24.) func (o ClusterLoggingConfigPtrOutput) EnableComponents() pulumi.StringArrayOutput { return o.ApplyT(func(v *ClusterLoggingConfig) []string { if v == nil { @@ -12446,8 +12446,10 @@ func (o ClusterMasterAuthorizedNetworksConfigCidrBlockArrayOutput) Index(i pulum } type ClusterMonitoringConfig struct { - // The GKE components exposing logs. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. + // The GKE components exposing metrics. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. (`WORKLOADS` is deprecated and removed in GKE 1.24.) EnableComponents []string `pulumi:"enableComponents"` + // Configuration for Managed Service for Prometheus. Structure is documented below. + ManagedPrometheus *ClusterMonitoringConfigManagedPrometheus `pulumi:"managedPrometheus"` } // ClusterMonitoringConfigInput is an input type that accepts ClusterMonitoringConfigArgs and ClusterMonitoringConfigOutput values. @@ -12462,8 +12464,10 @@ type ClusterMonitoringConfigInput interface { } type ClusterMonitoringConfigArgs struct { - // The GKE components exposing logs. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. + // The GKE components exposing metrics. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. (`WORKLOADS` is deprecated and removed in GKE 1.24.) EnableComponents pulumi.StringArrayInput `pulumi:"enableComponents"` + // Configuration for Managed Service for Prometheus. Structure is documented below. + ManagedPrometheus ClusterMonitoringConfigManagedPrometheusPtrInput `pulumi:"managedPrometheus"` } func (ClusterMonitoringConfigArgs) ElementType() reflect.Type { @@ -12543,11 +12547,16 @@ func (o ClusterMonitoringConfigOutput) ToClusterMonitoringConfigPtrOutputWithCon }).(ClusterMonitoringConfigPtrOutput) } -// The GKE components exposing logs. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. +// The GKE components exposing metrics. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. (`WORKLOADS` is deprecated and removed in GKE 1.24.) func (o ClusterMonitoringConfigOutput) EnableComponents() pulumi.StringArrayOutput { return o.ApplyT(func(v ClusterMonitoringConfig) []string { return v.EnableComponents }).(pulumi.StringArrayOutput) } +// Configuration for Managed Service for Prometheus. Structure is documented below. +func (o ClusterMonitoringConfigOutput) ManagedPrometheus() ClusterMonitoringConfigManagedPrometheusPtrOutput { + return o.ApplyT(func(v ClusterMonitoringConfig) *ClusterMonitoringConfigManagedPrometheus { return v.ManagedPrometheus }).(ClusterMonitoringConfigManagedPrometheusPtrOutput) +} + type ClusterMonitoringConfigPtrOutput struct{ *pulumi.OutputState } func (ClusterMonitoringConfigPtrOutput) ElementType() reflect.Type { @@ -12572,7 +12581,7 @@ func (o ClusterMonitoringConfigPtrOutput) Elem() ClusterMonitoringConfigOutput { }).(ClusterMonitoringConfigOutput) } -// The GKE components exposing logs. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. +// The GKE components exposing metrics. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. (`WORKLOADS` is deprecated and removed in GKE 1.24.) func (o ClusterMonitoringConfigPtrOutput) EnableComponents() pulumi.StringArrayOutput { return o.ApplyT(func(v *ClusterMonitoringConfig) []string { if v == nil { @@ -12582,6 +12591,157 @@ func (o ClusterMonitoringConfigPtrOutput) EnableComponents() pulumi.StringArrayO }).(pulumi.StringArrayOutput) } +// Configuration for Managed Service for Prometheus. Structure is documented below. +func (o ClusterMonitoringConfigPtrOutput) ManagedPrometheus() ClusterMonitoringConfigManagedPrometheusPtrOutput { + return o.ApplyT(func(v *ClusterMonitoringConfig) *ClusterMonitoringConfigManagedPrometheus { + if v == nil { + return nil + } + return v.ManagedPrometheus + }).(ClusterMonitoringConfigManagedPrometheusPtrOutput) +} + +type ClusterMonitoringConfigManagedPrometheus struct { + // Enable the PodSecurityPolicy controller for this cluster. + // If enabled, pods must be valid under a PodSecurityPolicy to be created. + Enabled bool `pulumi:"enabled"` +} + +// ClusterMonitoringConfigManagedPrometheusInput is an input type that accepts ClusterMonitoringConfigManagedPrometheusArgs and ClusterMonitoringConfigManagedPrometheusOutput values. +// You can construct a concrete instance of `ClusterMonitoringConfigManagedPrometheusInput` via: +// +// ClusterMonitoringConfigManagedPrometheusArgs{...} +type ClusterMonitoringConfigManagedPrometheusInput interface { + pulumi.Input + + ToClusterMonitoringConfigManagedPrometheusOutput() ClusterMonitoringConfigManagedPrometheusOutput + ToClusterMonitoringConfigManagedPrometheusOutputWithContext(context.Context) ClusterMonitoringConfigManagedPrometheusOutput +} + +type ClusterMonitoringConfigManagedPrometheusArgs struct { + // Enable the PodSecurityPolicy controller for this cluster. + // If enabled, pods must be valid under a PodSecurityPolicy to be created. + Enabled pulumi.BoolInput `pulumi:"enabled"` +} + +func (ClusterMonitoringConfigManagedPrometheusArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ClusterMonitoringConfigManagedPrometheus)(nil)).Elem() +} + +func (i ClusterMonitoringConfigManagedPrometheusArgs) ToClusterMonitoringConfigManagedPrometheusOutput() ClusterMonitoringConfigManagedPrometheusOutput { + return i.ToClusterMonitoringConfigManagedPrometheusOutputWithContext(context.Background()) +} + +func (i ClusterMonitoringConfigManagedPrometheusArgs) ToClusterMonitoringConfigManagedPrometheusOutputWithContext(ctx context.Context) ClusterMonitoringConfigManagedPrometheusOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterMonitoringConfigManagedPrometheusOutput) +} + +func (i ClusterMonitoringConfigManagedPrometheusArgs) ToClusterMonitoringConfigManagedPrometheusPtrOutput() ClusterMonitoringConfigManagedPrometheusPtrOutput { + return i.ToClusterMonitoringConfigManagedPrometheusPtrOutputWithContext(context.Background()) +} + +func (i ClusterMonitoringConfigManagedPrometheusArgs) ToClusterMonitoringConfigManagedPrometheusPtrOutputWithContext(ctx context.Context) ClusterMonitoringConfigManagedPrometheusPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterMonitoringConfigManagedPrometheusOutput).ToClusterMonitoringConfigManagedPrometheusPtrOutputWithContext(ctx) +} + +// ClusterMonitoringConfigManagedPrometheusPtrInput is an input type that accepts ClusterMonitoringConfigManagedPrometheusArgs, ClusterMonitoringConfigManagedPrometheusPtr and ClusterMonitoringConfigManagedPrometheusPtrOutput values. +// You can construct a concrete instance of `ClusterMonitoringConfigManagedPrometheusPtrInput` via: +// +// ClusterMonitoringConfigManagedPrometheusArgs{...} +// +// or: +// +// nil +type ClusterMonitoringConfigManagedPrometheusPtrInput interface { + pulumi.Input + + ToClusterMonitoringConfigManagedPrometheusPtrOutput() ClusterMonitoringConfigManagedPrometheusPtrOutput + ToClusterMonitoringConfigManagedPrometheusPtrOutputWithContext(context.Context) ClusterMonitoringConfigManagedPrometheusPtrOutput +} + +type clusterMonitoringConfigManagedPrometheusPtrType ClusterMonitoringConfigManagedPrometheusArgs + +func ClusterMonitoringConfigManagedPrometheusPtr(v *ClusterMonitoringConfigManagedPrometheusArgs) ClusterMonitoringConfigManagedPrometheusPtrInput { + return (*clusterMonitoringConfigManagedPrometheusPtrType)(v) +} + +func (*clusterMonitoringConfigManagedPrometheusPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ClusterMonitoringConfigManagedPrometheus)(nil)).Elem() +} + +func (i *clusterMonitoringConfigManagedPrometheusPtrType) ToClusterMonitoringConfigManagedPrometheusPtrOutput() ClusterMonitoringConfigManagedPrometheusPtrOutput { + return i.ToClusterMonitoringConfigManagedPrometheusPtrOutputWithContext(context.Background()) +} + +func (i *clusterMonitoringConfigManagedPrometheusPtrType) ToClusterMonitoringConfigManagedPrometheusPtrOutputWithContext(ctx context.Context) ClusterMonitoringConfigManagedPrometheusPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterMonitoringConfigManagedPrometheusPtrOutput) +} + +type ClusterMonitoringConfigManagedPrometheusOutput struct{ *pulumi.OutputState } + +func (ClusterMonitoringConfigManagedPrometheusOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ClusterMonitoringConfigManagedPrometheus)(nil)).Elem() +} + +func (o ClusterMonitoringConfigManagedPrometheusOutput) ToClusterMonitoringConfigManagedPrometheusOutput() ClusterMonitoringConfigManagedPrometheusOutput { + return o +} + +func (o ClusterMonitoringConfigManagedPrometheusOutput) ToClusterMonitoringConfigManagedPrometheusOutputWithContext(ctx context.Context) ClusterMonitoringConfigManagedPrometheusOutput { + return o +} + +func (o ClusterMonitoringConfigManagedPrometheusOutput) ToClusterMonitoringConfigManagedPrometheusPtrOutput() ClusterMonitoringConfigManagedPrometheusPtrOutput { + return o.ToClusterMonitoringConfigManagedPrometheusPtrOutputWithContext(context.Background()) +} + +func (o ClusterMonitoringConfigManagedPrometheusOutput) ToClusterMonitoringConfigManagedPrometheusPtrOutputWithContext(ctx context.Context) ClusterMonitoringConfigManagedPrometheusPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterMonitoringConfigManagedPrometheus) *ClusterMonitoringConfigManagedPrometheus { + return &v + }).(ClusterMonitoringConfigManagedPrometheusPtrOutput) +} + +// Enable the PodSecurityPolicy controller for this cluster. +// If enabled, pods must be valid under a PodSecurityPolicy to be created. +func (o ClusterMonitoringConfigManagedPrometheusOutput) Enabled() pulumi.BoolOutput { + return o.ApplyT(func(v ClusterMonitoringConfigManagedPrometheus) bool { return v.Enabled }).(pulumi.BoolOutput) +} + +type ClusterMonitoringConfigManagedPrometheusPtrOutput struct{ *pulumi.OutputState } + +func (ClusterMonitoringConfigManagedPrometheusPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ClusterMonitoringConfigManagedPrometheus)(nil)).Elem() +} + +func (o ClusterMonitoringConfigManagedPrometheusPtrOutput) ToClusterMonitoringConfigManagedPrometheusPtrOutput() ClusterMonitoringConfigManagedPrometheusPtrOutput { + return o +} + +func (o ClusterMonitoringConfigManagedPrometheusPtrOutput) ToClusterMonitoringConfigManagedPrometheusPtrOutputWithContext(ctx context.Context) ClusterMonitoringConfigManagedPrometheusPtrOutput { + return o +} + +func (o ClusterMonitoringConfigManagedPrometheusPtrOutput) Elem() ClusterMonitoringConfigManagedPrometheusOutput { + return o.ApplyT(func(v *ClusterMonitoringConfigManagedPrometheus) ClusterMonitoringConfigManagedPrometheus { + if v != nil { + return *v + } + var ret ClusterMonitoringConfigManagedPrometheus + return ret + }).(ClusterMonitoringConfigManagedPrometheusOutput) +} + +// Enable the PodSecurityPolicy controller for this cluster. +// If enabled, pods must be valid under a PodSecurityPolicy to be created. +func (o ClusterMonitoringConfigManagedPrometheusPtrOutput) Enabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *ClusterMonitoringConfigManagedPrometheus) *bool { + if v == nil { + return nil + } + return &v.Enabled + }).(pulumi.BoolPtrOutput) +} + type ClusterNetworkPolicy struct { // Enable the PodSecurityPolicy controller for this cluster. // If enabled, pods must be valid under a PodSecurityPolicy to be created. @@ -12809,17 +12969,15 @@ type ClusterNodeConfig struct { // A boolean that represents whether or not the underlying node VMs // are preemptible. See the [official documentation](https://cloud.google.com/container-engine/docs/preemptible-vm) // for more information. Defaults to false. - Preemptible *bool `pulumi:"preemptible"` - // [GKE Sandbox](https://cloud.google.com/kubernetes-engine/docs/how-to/sandbox-pods) configuration. When enabling this feature you must specify `imageType = "COS_CONTAINERD"` and `nodeVersion = "1.12.7-gke.17"` or later to use it. - // Structure is documented below. + Preemptible *bool `pulumi:"preemptible"` SandboxConfig *ClusterNodeConfigSandboxConfig `pulumi:"sandboxConfig"` // The service account to be used by the Node VMs. // If not specified, the "default" service account is used. ServiceAccount *string `pulumi:"serviceAccount"` // Shielded Instance options. Structure is documented below. ShieldedInstanceConfig *ClusterNodeConfigShieldedInstanceConfig `pulumi:"shieldedInstanceConfig"` - // ) A boolean - // that represents whether the underlying node VMs are spot. See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) + // A boolean that represents whether the underlying node VMs are spot. + // See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) // for more information. Defaults to false. Spot *bool `pulumi:"spot"` // The list of instance tags applied to all nodes. Tags are used to identify @@ -12917,17 +13075,15 @@ type ClusterNodeConfigArgs struct { // A boolean that represents whether or not the underlying node VMs // are preemptible. See the [official documentation](https://cloud.google.com/container-engine/docs/preemptible-vm) // for more information. Defaults to false. - Preemptible pulumi.BoolPtrInput `pulumi:"preemptible"` - // [GKE Sandbox](https://cloud.google.com/kubernetes-engine/docs/how-to/sandbox-pods) configuration. When enabling this feature you must specify `imageType = "COS_CONTAINERD"` and `nodeVersion = "1.12.7-gke.17"` or later to use it. - // Structure is documented below. + Preemptible pulumi.BoolPtrInput `pulumi:"preemptible"` SandboxConfig ClusterNodeConfigSandboxConfigPtrInput `pulumi:"sandboxConfig"` // The service account to be used by the Node VMs. // If not specified, the "default" service account is used. ServiceAccount pulumi.StringPtrInput `pulumi:"serviceAccount"` // Shielded Instance options. Structure is documented below. ShieldedInstanceConfig ClusterNodeConfigShieldedInstanceConfigPtrInput `pulumi:"shieldedInstanceConfig"` - // ) A boolean - // that represents whether the underlying node VMs are spot. See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) + // A boolean that represents whether the underlying node VMs are spot. + // See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) // for more information. Defaults to false. Spot pulumi.BoolPtrInput `pulumi:"spot"` // The list of instance tags applied to all nodes. Tags are used to identify @@ -13145,8 +13301,6 @@ func (o ClusterNodeConfigOutput) Preemptible() pulumi.BoolPtrOutput { return o.ApplyT(func(v ClusterNodeConfig) *bool { return v.Preemptible }).(pulumi.BoolPtrOutput) } -// [GKE Sandbox](https://cloud.google.com/kubernetes-engine/docs/how-to/sandbox-pods) configuration. When enabling this feature you must specify `imageType = "COS_CONTAINERD"` and `nodeVersion = "1.12.7-gke.17"` or later to use it. -// Structure is documented below. func (o ClusterNodeConfigOutput) SandboxConfig() ClusterNodeConfigSandboxConfigPtrOutput { return o.ApplyT(func(v ClusterNodeConfig) *ClusterNodeConfigSandboxConfig { return v.SandboxConfig }).(ClusterNodeConfigSandboxConfigPtrOutput) } @@ -13162,8 +13316,8 @@ func (o ClusterNodeConfigOutput) ShieldedInstanceConfig() ClusterNodeConfigShiel return o.ApplyT(func(v ClusterNodeConfig) *ClusterNodeConfigShieldedInstanceConfig { return v.ShieldedInstanceConfig }).(ClusterNodeConfigShieldedInstanceConfigPtrOutput) } -// ) A boolean -// that represents whether the underlying node VMs are spot. See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) +// A boolean that represents whether the underlying node VMs are spot. +// See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) // for more information. Defaults to false. func (o ClusterNodeConfigOutput) Spot() pulumi.BoolPtrOutput { return o.ApplyT(func(v ClusterNodeConfig) *bool { return v.Spot }).(pulumi.BoolPtrOutput) @@ -13428,8 +13582,6 @@ func (o ClusterNodeConfigPtrOutput) Preemptible() pulumi.BoolPtrOutput { }).(pulumi.BoolPtrOutput) } -// [GKE Sandbox](https://cloud.google.com/kubernetes-engine/docs/how-to/sandbox-pods) configuration. When enabling this feature you must specify `imageType = "COS_CONTAINERD"` and `nodeVersion = "1.12.7-gke.17"` or later to use it. -// Structure is documented below. func (o ClusterNodeConfigPtrOutput) SandboxConfig() ClusterNodeConfigSandboxConfigPtrOutput { return o.ApplyT(func(v *ClusterNodeConfig) *ClusterNodeConfigSandboxConfig { if v == nil { @@ -13460,8 +13612,8 @@ func (o ClusterNodeConfigPtrOutput) ShieldedInstanceConfig() ClusterNodeConfigSh }).(ClusterNodeConfigShieldedInstanceConfigPtrOutput) } -// ) A boolean -// that represents whether the underlying node VMs are spot. See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) +// A boolean that represents whether the underlying node VMs are spot. +// See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) // for more information. Defaults to false. func (o ClusterNodeConfigPtrOutput) Spot() pulumi.BoolPtrOutput { return o.ApplyT(func(v *ClusterNodeConfig) *bool { @@ -15727,17 +15879,15 @@ type ClusterNodePoolNodeConfig struct { // A boolean that represents whether or not the underlying node VMs // are preemptible. See the [official documentation](https://cloud.google.com/container-engine/docs/preemptible-vm) // for more information. Defaults to false. - Preemptible *bool `pulumi:"preemptible"` - // [GKE Sandbox](https://cloud.google.com/kubernetes-engine/docs/how-to/sandbox-pods) configuration. When enabling this feature you must specify `imageType = "COS_CONTAINERD"` and `nodeVersion = "1.12.7-gke.17"` or later to use it. - // Structure is documented below. + Preemptible *bool `pulumi:"preemptible"` SandboxConfig *ClusterNodePoolNodeConfigSandboxConfig `pulumi:"sandboxConfig"` // The service account to be used by the Node VMs. // If not specified, the "default" service account is used. ServiceAccount *string `pulumi:"serviceAccount"` // Shielded Instance options. Structure is documented below. ShieldedInstanceConfig *ClusterNodePoolNodeConfigShieldedInstanceConfig `pulumi:"shieldedInstanceConfig"` - // ) A boolean - // that represents whether the underlying node VMs are spot. See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) + // A boolean that represents whether the underlying node VMs are spot. + // See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) // for more information. Defaults to false. Spot *bool `pulumi:"spot"` // The list of instance tags applied to all nodes. Tags are used to identify @@ -15835,17 +15985,15 @@ type ClusterNodePoolNodeConfigArgs struct { // A boolean that represents whether or not the underlying node VMs // are preemptible. See the [official documentation](https://cloud.google.com/container-engine/docs/preemptible-vm) // for more information. Defaults to false. - Preemptible pulumi.BoolPtrInput `pulumi:"preemptible"` - // [GKE Sandbox](https://cloud.google.com/kubernetes-engine/docs/how-to/sandbox-pods) configuration. When enabling this feature you must specify `imageType = "COS_CONTAINERD"` and `nodeVersion = "1.12.7-gke.17"` or later to use it. - // Structure is documented below. + Preemptible pulumi.BoolPtrInput `pulumi:"preemptible"` SandboxConfig ClusterNodePoolNodeConfigSandboxConfigPtrInput `pulumi:"sandboxConfig"` // The service account to be used by the Node VMs. // If not specified, the "default" service account is used. ServiceAccount pulumi.StringPtrInput `pulumi:"serviceAccount"` // Shielded Instance options. Structure is documented below. ShieldedInstanceConfig ClusterNodePoolNodeConfigShieldedInstanceConfigPtrInput `pulumi:"shieldedInstanceConfig"` - // ) A boolean - // that represents whether the underlying node VMs are spot. See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) + // A boolean that represents whether the underlying node VMs are spot. + // See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) // for more information. Defaults to false. Spot pulumi.BoolPtrInput `pulumi:"spot"` // The list of instance tags applied to all nodes. Tags are used to identify @@ -16067,8 +16215,6 @@ func (o ClusterNodePoolNodeConfigOutput) Preemptible() pulumi.BoolPtrOutput { return o.ApplyT(func(v ClusterNodePoolNodeConfig) *bool { return v.Preemptible }).(pulumi.BoolPtrOutput) } -// [GKE Sandbox](https://cloud.google.com/kubernetes-engine/docs/how-to/sandbox-pods) configuration. When enabling this feature you must specify `imageType = "COS_CONTAINERD"` and `nodeVersion = "1.12.7-gke.17"` or later to use it. -// Structure is documented below. func (o ClusterNodePoolNodeConfigOutput) SandboxConfig() ClusterNodePoolNodeConfigSandboxConfigPtrOutput { return o.ApplyT(func(v ClusterNodePoolNodeConfig) *ClusterNodePoolNodeConfigSandboxConfig { return v.SandboxConfig }).(ClusterNodePoolNodeConfigSandboxConfigPtrOutput) } @@ -16086,8 +16232,8 @@ func (o ClusterNodePoolNodeConfigOutput) ShieldedInstanceConfig() ClusterNodePoo }).(ClusterNodePoolNodeConfigShieldedInstanceConfigPtrOutput) } -// ) A boolean -// that represents whether the underlying node VMs are spot. See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) +// A boolean that represents whether the underlying node VMs are spot. +// See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) // for more information. Defaults to false. func (o ClusterNodePoolNodeConfigOutput) Spot() pulumi.BoolPtrOutput { return o.ApplyT(func(v ClusterNodePoolNodeConfig) *bool { return v.Spot }).(pulumi.BoolPtrOutput) @@ -16354,8 +16500,6 @@ func (o ClusterNodePoolNodeConfigPtrOutput) Preemptible() pulumi.BoolPtrOutput { }).(pulumi.BoolPtrOutput) } -// [GKE Sandbox](https://cloud.google.com/kubernetes-engine/docs/how-to/sandbox-pods) configuration. When enabling this feature you must specify `imageType = "COS_CONTAINERD"` and `nodeVersion = "1.12.7-gke.17"` or later to use it. -// Structure is documented below. func (o ClusterNodePoolNodeConfigPtrOutput) SandboxConfig() ClusterNodePoolNodeConfigSandboxConfigPtrOutput { return o.ApplyT(func(v *ClusterNodePoolNodeConfig) *ClusterNodePoolNodeConfigSandboxConfig { if v == nil { @@ -16386,8 +16530,8 @@ func (o ClusterNodePoolNodeConfigPtrOutput) ShieldedInstanceConfig() ClusterNode }).(ClusterNodePoolNodeConfigShieldedInstanceConfigPtrOutput) } -// ) A boolean -// that represents whether the underlying node VMs are spot. See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) +// A boolean that represents whether the underlying node VMs are spot. +// See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) // for more information. Defaults to false. func (o ClusterNodePoolNodeConfigPtrOutput) Spot() pulumi.BoolPtrOutput { return o.ApplyT(func(v *ClusterNodePoolNodeConfig) *bool { @@ -25796,7 +25940,8 @@ func (o GetClusterMasterAuthorizedNetworksConfigCidrBlockArrayOutput) Index(i pu } type GetClusterMonitoringConfig struct { - EnableComponents []string `pulumi:"enableComponents"` + EnableComponents []string `pulumi:"enableComponents"` + ManagedPrometheuses []GetClusterMonitoringConfigManagedPrometheus `pulumi:"managedPrometheuses"` } // GetClusterMonitoringConfigInput is an input type that accepts GetClusterMonitoringConfigArgs and GetClusterMonitoringConfigOutput values. @@ -25811,7 +25956,8 @@ type GetClusterMonitoringConfigInput interface { } type GetClusterMonitoringConfigArgs struct { - EnableComponents pulumi.StringArrayInput `pulumi:"enableComponents"` + EnableComponents pulumi.StringArrayInput `pulumi:"enableComponents"` + ManagedPrometheuses GetClusterMonitoringConfigManagedPrometheusArrayInput `pulumi:"managedPrometheuses"` } func (GetClusterMonitoringConfigArgs) ElementType() reflect.Type { @@ -25869,6 +26015,12 @@ func (o GetClusterMonitoringConfigOutput) EnableComponents() pulumi.StringArrayO return o.ApplyT(func(v GetClusterMonitoringConfig) []string { return v.EnableComponents }).(pulumi.StringArrayOutput) } +func (o GetClusterMonitoringConfigOutput) ManagedPrometheuses() GetClusterMonitoringConfigManagedPrometheusArrayOutput { + return o.ApplyT(func(v GetClusterMonitoringConfig) []GetClusterMonitoringConfigManagedPrometheus { + return v.ManagedPrometheuses + }).(GetClusterMonitoringConfigManagedPrometheusArrayOutput) +} + type GetClusterMonitoringConfigArrayOutput struct{ *pulumi.OutputState } func (GetClusterMonitoringConfigArrayOutput) ElementType() reflect.Type { @@ -25889,6 +26041,100 @@ func (o GetClusterMonitoringConfigArrayOutput) Index(i pulumi.IntInput) GetClust }).(GetClusterMonitoringConfigOutput) } +type GetClusterMonitoringConfigManagedPrometheus struct { + Enabled bool `pulumi:"enabled"` +} + +// GetClusterMonitoringConfigManagedPrometheusInput is an input type that accepts GetClusterMonitoringConfigManagedPrometheusArgs and GetClusterMonitoringConfigManagedPrometheusOutput values. +// You can construct a concrete instance of `GetClusterMonitoringConfigManagedPrometheusInput` via: +// +// GetClusterMonitoringConfigManagedPrometheusArgs{...} +type GetClusterMonitoringConfigManagedPrometheusInput interface { + pulumi.Input + + ToGetClusterMonitoringConfigManagedPrometheusOutput() GetClusterMonitoringConfigManagedPrometheusOutput + ToGetClusterMonitoringConfigManagedPrometheusOutputWithContext(context.Context) GetClusterMonitoringConfigManagedPrometheusOutput +} + +type GetClusterMonitoringConfigManagedPrometheusArgs struct { + Enabled pulumi.BoolInput `pulumi:"enabled"` +} + +func (GetClusterMonitoringConfigManagedPrometheusArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetClusterMonitoringConfigManagedPrometheus)(nil)).Elem() +} + +func (i GetClusterMonitoringConfigManagedPrometheusArgs) ToGetClusterMonitoringConfigManagedPrometheusOutput() GetClusterMonitoringConfigManagedPrometheusOutput { + return i.ToGetClusterMonitoringConfigManagedPrometheusOutputWithContext(context.Background()) +} + +func (i GetClusterMonitoringConfigManagedPrometheusArgs) ToGetClusterMonitoringConfigManagedPrometheusOutputWithContext(ctx context.Context) GetClusterMonitoringConfigManagedPrometheusOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetClusterMonitoringConfigManagedPrometheusOutput) +} + +// GetClusterMonitoringConfigManagedPrometheusArrayInput is an input type that accepts GetClusterMonitoringConfigManagedPrometheusArray and GetClusterMonitoringConfigManagedPrometheusArrayOutput values. +// You can construct a concrete instance of `GetClusterMonitoringConfigManagedPrometheusArrayInput` via: +// +// GetClusterMonitoringConfigManagedPrometheusArray{ GetClusterMonitoringConfigManagedPrometheusArgs{...} } +type GetClusterMonitoringConfigManagedPrometheusArrayInput interface { + pulumi.Input + + ToGetClusterMonitoringConfigManagedPrometheusArrayOutput() GetClusterMonitoringConfigManagedPrometheusArrayOutput + ToGetClusterMonitoringConfigManagedPrometheusArrayOutputWithContext(context.Context) GetClusterMonitoringConfigManagedPrometheusArrayOutput +} + +type GetClusterMonitoringConfigManagedPrometheusArray []GetClusterMonitoringConfigManagedPrometheusInput + +func (GetClusterMonitoringConfigManagedPrometheusArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetClusterMonitoringConfigManagedPrometheus)(nil)).Elem() +} + +func (i GetClusterMonitoringConfigManagedPrometheusArray) ToGetClusterMonitoringConfigManagedPrometheusArrayOutput() GetClusterMonitoringConfigManagedPrometheusArrayOutput { + return i.ToGetClusterMonitoringConfigManagedPrometheusArrayOutputWithContext(context.Background()) +} + +func (i GetClusterMonitoringConfigManagedPrometheusArray) ToGetClusterMonitoringConfigManagedPrometheusArrayOutputWithContext(ctx context.Context) GetClusterMonitoringConfigManagedPrometheusArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetClusterMonitoringConfigManagedPrometheusArrayOutput) +} + +type GetClusterMonitoringConfigManagedPrometheusOutput struct{ *pulumi.OutputState } + +func (GetClusterMonitoringConfigManagedPrometheusOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetClusterMonitoringConfigManagedPrometheus)(nil)).Elem() +} + +func (o GetClusterMonitoringConfigManagedPrometheusOutput) ToGetClusterMonitoringConfigManagedPrometheusOutput() GetClusterMonitoringConfigManagedPrometheusOutput { + return o +} + +func (o GetClusterMonitoringConfigManagedPrometheusOutput) ToGetClusterMonitoringConfigManagedPrometheusOutputWithContext(ctx context.Context) GetClusterMonitoringConfigManagedPrometheusOutput { + return o +} + +func (o GetClusterMonitoringConfigManagedPrometheusOutput) Enabled() pulumi.BoolOutput { + return o.ApplyT(func(v GetClusterMonitoringConfigManagedPrometheus) bool { return v.Enabled }).(pulumi.BoolOutput) +} + +type GetClusterMonitoringConfigManagedPrometheusArrayOutput struct{ *pulumi.OutputState } + +func (GetClusterMonitoringConfigManagedPrometheusArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetClusterMonitoringConfigManagedPrometheus)(nil)).Elem() +} + +func (o GetClusterMonitoringConfigManagedPrometheusArrayOutput) ToGetClusterMonitoringConfigManagedPrometheusArrayOutput() GetClusterMonitoringConfigManagedPrometheusArrayOutput { + return o +} + +func (o GetClusterMonitoringConfigManagedPrometheusArrayOutput) ToGetClusterMonitoringConfigManagedPrometheusArrayOutputWithContext(ctx context.Context) GetClusterMonitoringConfigManagedPrometheusArrayOutput { + return o +} + +func (o GetClusterMonitoringConfigManagedPrometheusArrayOutput) Index(i pulumi.IntInput) GetClusterMonitoringConfigManagedPrometheusOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetClusterMonitoringConfigManagedPrometheus { + return vs[0].([]GetClusterMonitoringConfigManagedPrometheus)[vs[1].(int)] + }).(GetClusterMonitoringConfigManagedPrometheusOutput) +} + type GetClusterNetworkPolicy struct { Enabled bool `pulumi:"enabled"` Provider string `pulumi:"provider"` @@ -30287,6 +30533,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*ClusterMasterAuthorizedNetworksConfigCidrBlockArrayInput)(nil)).Elem(), ClusterMasterAuthorizedNetworksConfigCidrBlockArray{}) pulumi.RegisterInputType(reflect.TypeOf((*ClusterMonitoringConfigInput)(nil)).Elem(), ClusterMonitoringConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*ClusterMonitoringConfigPtrInput)(nil)).Elem(), ClusterMonitoringConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ClusterMonitoringConfigManagedPrometheusInput)(nil)).Elem(), ClusterMonitoringConfigManagedPrometheusArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ClusterMonitoringConfigManagedPrometheusPtrInput)(nil)).Elem(), ClusterMonitoringConfigManagedPrometheusArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*ClusterNetworkPolicyInput)(nil)).Elem(), ClusterNetworkPolicyArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*ClusterNetworkPolicyPtrInput)(nil)).Elem(), ClusterNetworkPolicyArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*ClusterNodeConfigInput)(nil)).Elem(), ClusterNodeConfigArgs{}) @@ -30465,6 +30713,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*GetClusterMasterAuthorizedNetworksConfigCidrBlockArrayInput)(nil)).Elem(), GetClusterMasterAuthorizedNetworksConfigCidrBlockArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetClusterMonitoringConfigInput)(nil)).Elem(), GetClusterMonitoringConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetClusterMonitoringConfigArrayInput)(nil)).Elem(), GetClusterMonitoringConfigArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetClusterMonitoringConfigManagedPrometheusInput)(nil)).Elem(), GetClusterMonitoringConfigManagedPrometheusArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetClusterMonitoringConfigManagedPrometheusArrayInput)(nil)).Elem(), GetClusterMonitoringConfigManagedPrometheusArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetClusterNetworkPolicyInput)(nil)).Elem(), GetClusterNetworkPolicyArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetClusterNetworkPolicyArrayInput)(nil)).Elem(), GetClusterNetworkPolicyArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetClusterNodeConfigInput)(nil)).Elem(), GetClusterNodeConfigArgs{}) @@ -30701,6 +30951,8 @@ func init() { pulumi.RegisterOutputType(ClusterMasterAuthorizedNetworksConfigCidrBlockArrayOutput{}) pulumi.RegisterOutputType(ClusterMonitoringConfigOutput{}) pulumi.RegisterOutputType(ClusterMonitoringConfigPtrOutput{}) + pulumi.RegisterOutputType(ClusterMonitoringConfigManagedPrometheusOutput{}) + pulumi.RegisterOutputType(ClusterMonitoringConfigManagedPrometheusPtrOutput{}) pulumi.RegisterOutputType(ClusterNetworkPolicyOutput{}) pulumi.RegisterOutputType(ClusterNetworkPolicyPtrOutput{}) pulumi.RegisterOutputType(ClusterNodeConfigOutput{}) @@ -30879,6 +31131,8 @@ func init() { pulumi.RegisterOutputType(GetClusterMasterAuthorizedNetworksConfigCidrBlockArrayOutput{}) pulumi.RegisterOutputType(GetClusterMonitoringConfigOutput{}) pulumi.RegisterOutputType(GetClusterMonitoringConfigArrayOutput{}) + pulumi.RegisterOutputType(GetClusterMonitoringConfigManagedPrometheusOutput{}) + pulumi.RegisterOutputType(GetClusterMonitoringConfigManagedPrometheusArrayOutput{}) pulumi.RegisterOutputType(GetClusterNetworkPolicyOutput{}) pulumi.RegisterOutputType(GetClusterNetworkPolicyArrayOutput{}) pulumi.RegisterOutputType(GetClusterNodeConfigOutput{}) diff --git a/sdk/go/gcp/dns/managedZone.go b/sdk/go/gcp/dns/managedZone.go index a9949bc395..2c088b3979 100644 --- a/sdk/go/gcp/dns/managedZone.go +++ b/sdk/go/gcp/dns/managedZone.go @@ -270,6 +270,8 @@ import ( type ManagedZone struct { pulumi.CustomResourceState + // The time that this resource was created on the server. This is in RFC3339 text format. + CreationTime pulumi.StringOutput `pulumi:"creationTime"` // A textual description field. Defaults to 'Managed by Pulumi'. Description pulumi.StringOutput `pulumi:"description"` // The DNS name of this managed zone, for instance "example.com.". @@ -286,6 +288,8 @@ type ManagedZone struct { ForwardingConfig ManagedZoneForwardingConfigPtrOutput `pulumi:"forwardingConfig"` // A set of key/value label pairs to assign to this ManagedZone. Labels pulumi.StringMapOutput `pulumi:"labels"` + // Unique identifier for the resource; defined by the server. + ManagedZoneId pulumi.IntOutput `pulumi:"managedZoneId"` // User assigned name for this resource. // Must be unique within the project. Name pulumi.StringOutput `pulumi:"name"` @@ -351,6 +355,8 @@ func GetManagedZone(ctx *pulumi.Context, // Input properties used for looking up and filtering ManagedZone resources. type managedZoneState struct { + // The time that this resource was created on the server. This is in RFC3339 text format. + CreationTime *string `pulumi:"creationTime"` // A textual description field. Defaults to 'Managed by Pulumi'. Description *string `pulumi:"description"` // The DNS name of this managed zone, for instance "example.com.". @@ -367,6 +373,8 @@ type managedZoneState struct { ForwardingConfig *ManagedZoneForwardingConfig `pulumi:"forwardingConfig"` // A set of key/value label pairs to assign to this ManagedZone. Labels map[string]string `pulumi:"labels"` + // Unique identifier for the resource; defined by the server. + ManagedZoneId *int `pulumi:"managedZoneId"` // User assigned name for this resource. // Must be unique within the project. Name *string `pulumi:"name"` @@ -398,6 +406,8 @@ type managedZoneState struct { } type ManagedZoneState struct { + // The time that this resource was created on the server. This is in RFC3339 text format. + CreationTime pulumi.StringPtrInput // A textual description field. Defaults to 'Managed by Pulumi'. Description pulumi.StringPtrInput // The DNS name of this managed zone, for instance "example.com.". @@ -414,6 +424,8 @@ type ManagedZoneState struct { ForwardingConfig ManagedZoneForwardingConfigPtrInput // A set of key/value label pairs to assign to this ManagedZone. Labels pulumi.StringMapInput + // Unique identifier for the resource; defined by the server. + ManagedZoneId pulumi.IntPtrInput // User assigned name for this resource. // Must be unique within the project. Name pulumi.StringPtrInput @@ -626,6 +638,11 @@ func (o ManagedZoneOutput) ToManagedZoneOutputWithContext(ctx context.Context) M return o } +// The time that this resource was created on the server. This is in RFC3339 text format. +func (o ManagedZoneOutput) CreationTime() pulumi.StringOutput { + return o.ApplyT(func(v *ManagedZone) pulumi.StringOutput { return v.CreationTime }).(pulumi.StringOutput) +} + // A textual description field. Defaults to 'Managed by Pulumi'. func (o ManagedZoneOutput) Description() pulumi.StringOutput { return o.ApplyT(func(v *ManagedZone) pulumi.StringOutput { return v.Description }).(pulumi.StringOutput) @@ -660,6 +677,11 @@ func (o ManagedZoneOutput) Labels() pulumi.StringMapOutput { return o.ApplyT(func(v *ManagedZone) pulumi.StringMapOutput { return v.Labels }).(pulumi.StringMapOutput) } +// Unique identifier for the resource; defined by the server. +func (o ManagedZoneOutput) ManagedZoneId() pulumi.IntOutput { + return o.ApplyT(func(v *ManagedZone) pulumi.IntOutput { return v.ManagedZoneId }).(pulumi.IntOutput) +} + // User assigned name for this resource. // Must be unique within the project. func (o ManagedZoneOutput) Name() pulumi.StringOutput { diff --git a/sdk/go/gcp/gkehub/feature.go b/sdk/go/gcp/gkehub/feature.go index c0c6d8e956..fc53cd87dd 100644 --- a/sdk/go/gcp/gkehub/feature.go +++ b/sdk/go/gcp/gkehub/feature.go @@ -88,6 +88,28 @@ import ( // }) // } // ``` +// ### Enable Anthos Service Mesh +// +// ```go +// package main +// +// import ( +// "github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/gkehub" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := gkehub.NewFeature(ctx, "feature", &gkehub.FeatureArgs{ +// Location: pulumi.String("global"), +// }, pulumi.Provider(google_beta)) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// ``` // // ## Import // diff --git a/sdk/go/gcp/gkehub/pulumiTypes.go b/sdk/go/gcp/gkehub/pulumiTypes.go index fcec4cfed4..a96ff915f2 100644 --- a/sdk/go/gcp/gkehub/pulumiTypes.go +++ b/sdk/go/gcp/gkehub/pulumiTypes.go @@ -372,6 +372,8 @@ type FeatureMembershipConfigmanagementConfigSync struct { // - // (Optional) Structure is documented below. Git *FeatureMembershipConfigmanagementConfigSyncGit `pulumi:"git"` + // Supported from ACM versions 1.10.0 onwards. Set to true to enable the Config Sync admission webhook to prevent drifts. If set to "false", disables the Config Sync admission webhook and does not prevent drifts. + PreventDrift *bool `pulumi:"preventDrift"` // Specifies whether the Config Sync Repo is in "hierarchical" or "unstructured" mode. SourceFormat *string `pulumi:"sourceFormat"` } @@ -391,6 +393,8 @@ type FeatureMembershipConfigmanagementConfigSyncArgs struct { // - // (Optional) Structure is documented below. Git FeatureMembershipConfigmanagementConfigSyncGitPtrInput `pulumi:"git"` + // Supported from ACM versions 1.10.0 onwards. Set to true to enable the Config Sync admission webhook to prevent drifts. If set to "false", disables the Config Sync admission webhook and does not prevent drifts. + PreventDrift pulumi.BoolPtrInput `pulumi:"preventDrift"` // Specifies whether the Config Sync Repo is in "hierarchical" or "unstructured" mode. SourceFormat pulumi.StringPtrInput `pulumi:"sourceFormat"` } @@ -480,6 +484,11 @@ func (o FeatureMembershipConfigmanagementConfigSyncOutput) Git() FeatureMembersh }).(FeatureMembershipConfigmanagementConfigSyncGitPtrOutput) } +// Supported from ACM versions 1.10.0 onwards. Set to true to enable the Config Sync admission webhook to prevent drifts. If set to "false", disables the Config Sync admission webhook and does not prevent drifts. +func (o FeatureMembershipConfigmanagementConfigSyncOutput) PreventDrift() pulumi.BoolPtrOutput { + return o.ApplyT(func(v FeatureMembershipConfigmanagementConfigSync) *bool { return v.PreventDrift }).(pulumi.BoolPtrOutput) +} + // Specifies whether the Config Sync Repo is in "hierarchical" or "unstructured" mode. func (o FeatureMembershipConfigmanagementConfigSyncOutput) SourceFormat() pulumi.StringPtrOutput { return o.ApplyT(func(v FeatureMembershipConfigmanagementConfigSync) *string { return v.SourceFormat }).(pulumi.StringPtrOutput) @@ -520,6 +529,16 @@ func (o FeatureMembershipConfigmanagementConfigSyncPtrOutput) Git() FeatureMembe }).(FeatureMembershipConfigmanagementConfigSyncGitPtrOutput) } +// Supported from ACM versions 1.10.0 onwards. Set to true to enable the Config Sync admission webhook to prevent drifts. If set to "false", disables the Config Sync admission webhook and does not prevent drifts. +func (o FeatureMembershipConfigmanagementConfigSyncPtrOutput) PreventDrift() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *FeatureMembershipConfigmanagementConfigSync) *bool { + if v == nil { + return nil + } + return v.PreventDrift + }).(pulumi.BoolPtrOutput) +} + // Specifies whether the Config Sync Repo is in "hierarchical" or "unstructured" mode. func (o FeatureMembershipConfigmanagementConfigSyncPtrOutput) SourceFormat() pulumi.StringPtrOutput { return o.ApplyT(func(v *FeatureMembershipConfigmanagementConfigSync) *string { diff --git a/sdk/go/gcp/monitoring/customService.go b/sdk/go/gcp/monitoring/customService.go index 41a2d597f4..12d8452f31 100644 --- a/sdk/go/gcp/monitoring/customService.go +++ b/sdk/go/gcp/monitoring/customService.go @@ -41,6 +41,10 @@ import ( // Telemetry: &monitoring.CustomServiceTelemetryArgs{ // ResourceName: pulumi.String("//product.googleapis.com/foo/foo/services/test"), // }, +// UserLabels: pulumi.StringMap{ +// "my_key": pulumi.String("my_value"), +// "my_other_key": pulumi.String("my_other_value"), +// }, // }) // if err != nil { // return err @@ -73,6 +77,13 @@ type CustomService struct { // Configuration for how to query telemetry on a Service. // Structure is documented below. Telemetry CustomServiceTelemetryPtrOutput `pulumi:"telemetry"` + // Labels which have been used to annotate the service. Label keys must start + // with a letter. Label keys and values may contain lowercase letters, + // numbers, underscores, and dashes. Label keys and values have a maximum + // length of 63 characters, and must be less than 128 bytes in size. Up to 64 + // label entries may be stored. For labels which do not have a semantic value, + // the empty string may be supplied for the label value. + UserLabels pulumi.StringMapOutput `pulumi:"userLabels"` } // NewCustomService registers a new resource with the given unique name, arguments, and options. @@ -117,6 +128,13 @@ type customServiceState struct { // Configuration for how to query telemetry on a Service. // Structure is documented below. Telemetry *CustomServiceTelemetry `pulumi:"telemetry"` + // Labels which have been used to annotate the service. Label keys must start + // with a letter. Label keys and values may contain lowercase letters, + // numbers, underscores, and dashes. Label keys and values have a maximum + // length of 63 characters, and must be less than 128 bytes in size. Up to 64 + // label entries may be stored. For labels which do not have a semantic value, + // the empty string may be supplied for the label value. + UserLabels map[string]string `pulumi:"userLabels"` } type CustomServiceState struct { @@ -133,6 +151,13 @@ type CustomServiceState struct { // Configuration for how to query telemetry on a Service. // Structure is documented below. Telemetry CustomServiceTelemetryPtrInput + // Labels which have been used to annotate the service. Label keys must start + // with a letter. Label keys and values may contain lowercase letters, + // numbers, underscores, and dashes. Label keys and values have a maximum + // length of 63 characters, and must be less than 128 bytes in size. Up to 64 + // label entries may be stored. For labels which do not have a semantic value, + // the empty string may be supplied for the label value. + UserLabels pulumi.StringMapInput } func (CustomServiceState) ElementType() reflect.Type { @@ -151,6 +176,13 @@ type customServiceArgs struct { // Configuration for how to query telemetry on a Service. // Structure is documented below. Telemetry *CustomServiceTelemetry `pulumi:"telemetry"` + // Labels which have been used to annotate the service. Label keys must start + // with a letter. Label keys and values may contain lowercase letters, + // numbers, underscores, and dashes. Label keys and values have a maximum + // length of 63 characters, and must be less than 128 bytes in size. Up to 64 + // label entries may be stored. For labels which do not have a semantic value, + // the empty string may be supplied for the label value. + UserLabels map[string]string `pulumi:"userLabels"` } // The set of arguments for constructing a CustomService resource. @@ -166,6 +198,13 @@ type CustomServiceArgs struct { // Configuration for how to query telemetry on a Service. // Structure is documented below. Telemetry CustomServiceTelemetryPtrInput + // Labels which have been used to annotate the service. Label keys must start + // with a letter. Label keys and values may contain lowercase letters, + // numbers, underscores, and dashes. Label keys and values have a maximum + // length of 63 characters, and must be less than 128 bytes in size. Up to 64 + // label entries may be stored. For labels which do not have a semantic value, + // the empty string may be supplied for the label value. + UserLabels pulumi.StringMapInput } func (CustomServiceArgs) ElementType() reflect.Type { @@ -283,6 +322,16 @@ func (o CustomServiceOutput) Telemetry() CustomServiceTelemetryPtrOutput { return o.ApplyT(func(v *CustomService) CustomServiceTelemetryPtrOutput { return v.Telemetry }).(CustomServiceTelemetryPtrOutput) } +// Labels which have been used to annotate the service. Label keys must start +// with a letter. Label keys and values may contain lowercase letters, +// numbers, underscores, and dashes. Label keys and values have a maximum +// length of 63 characters, and must be less than 128 bytes in size. Up to 64 +// label entries may be stored. For labels which do not have a semantic value, +// the empty string may be supplied for the label value. +func (o CustomServiceOutput) UserLabels() pulumi.StringMapOutput { + return o.ApplyT(func(v *CustomService) pulumi.StringMapOutput { return v.UserLabels }).(pulumi.StringMapOutput) +} + type CustomServiceArrayOutput struct{ *pulumi.OutputState } func (CustomServiceArrayOutput) ElementType() reflect.Type { diff --git a/sdk/go/gcp/monitoring/getAppEngineService.go b/sdk/go/gcp/monitoring/getAppEngineService.go index e951b69727..e42219eabb 100644 --- a/sdk/go/gcp/monitoring/getAppEngineService.go +++ b/sdk/go/gcp/monitoring/getAppEngineService.go @@ -114,6 +114,7 @@ type GetAppEngineServiceResult struct { Project *string `pulumi:"project"` ServiceId string `pulumi:"serviceId"` Telemetries []GetAppEngineServiceTelemetry `pulumi:"telemetries"` + UserLabels map[string]string `pulumi:"userLabels"` } func GetAppEngineServiceOutput(ctx *pulumi.Context, args GetAppEngineServiceOutputArgs, opts ...pulumi.InvokeOption) GetAppEngineServiceResultOutput { @@ -187,6 +188,10 @@ func (o GetAppEngineServiceResultOutput) Telemetries() GetAppEngineServiceTeleme return o.ApplyT(func(v GetAppEngineServiceResult) []GetAppEngineServiceTelemetry { return v.Telemetries }).(GetAppEngineServiceTelemetryArrayOutput) } +func (o GetAppEngineServiceResultOutput) UserLabels() pulumi.StringMapOutput { + return o.ApplyT(func(v GetAppEngineServiceResult) map[string]string { return v.UserLabels }).(pulumi.StringMapOutput) +} + func init() { pulumi.RegisterOutputType(GetAppEngineServiceResultOutput{}) } diff --git a/sdk/go/gcp/monitoring/getClusterIstioService.go b/sdk/go/gcp/monitoring/getClusterIstioService.go index e1df34be27..653d4dd986 100644 --- a/sdk/go/gcp/monitoring/getClusterIstioService.go +++ b/sdk/go/gcp/monitoring/getClusterIstioService.go @@ -91,6 +91,7 @@ type GetClusterIstioServiceResult struct { ServiceName string `pulumi:"serviceName"` ServiceNamespace string `pulumi:"serviceNamespace"` Telemetries []GetClusterIstioServiceTelemetry `pulumi:"telemetries"` + UserLabels map[string]string `pulumi:"userLabels"` } func GetClusterIstioServiceOutput(ctx *pulumi.Context, args GetClusterIstioServiceOutputArgs, opts ...pulumi.InvokeOption) GetClusterIstioServiceResultOutput { @@ -185,6 +186,10 @@ func (o GetClusterIstioServiceResultOutput) Telemetries() GetClusterIstioService return o.ApplyT(func(v GetClusterIstioServiceResult) []GetClusterIstioServiceTelemetry { return v.Telemetries }).(GetClusterIstioServiceTelemetryArrayOutput) } +func (o GetClusterIstioServiceResultOutput) UserLabels() pulumi.StringMapOutput { + return o.ApplyT(func(v GetClusterIstioServiceResult) map[string]string { return v.UserLabels }).(pulumi.StringMapOutput) +} + func init() { pulumi.RegisterOutputType(GetClusterIstioServiceResultOutput{}) } diff --git a/sdk/go/gcp/monitoring/getIstioCanonicalService.go b/sdk/go/gcp/monitoring/getIstioCanonicalService.go index 1780ba2ecf..083e4ce5f1 100644 --- a/sdk/go/gcp/monitoring/getIstioCanonicalService.go +++ b/sdk/go/gcp/monitoring/getIstioCanonicalService.go @@ -86,6 +86,7 @@ type GetIstioCanonicalServiceResult struct { Project *string `pulumi:"project"` ServiceId string `pulumi:"serviceId"` Telemetries []GetIstioCanonicalServiceTelemetry `pulumi:"telemetries"` + UserLabels map[string]string `pulumi:"userLabels"` } func GetIstioCanonicalServiceOutput(ctx *pulumi.Context, args GetIstioCanonicalServiceOutputArgs, opts ...pulumi.InvokeOption) GetIstioCanonicalServiceResultOutput { @@ -173,6 +174,10 @@ func (o GetIstioCanonicalServiceResultOutput) Telemetries() GetIstioCanonicalSer return o.ApplyT(func(v GetIstioCanonicalServiceResult) []GetIstioCanonicalServiceTelemetry { return v.Telemetries }).(GetIstioCanonicalServiceTelemetryArrayOutput) } +func (o GetIstioCanonicalServiceResultOutput) UserLabels() pulumi.StringMapOutput { + return o.ApplyT(func(v GetIstioCanonicalServiceResult) map[string]string { return v.UserLabels }).(pulumi.StringMapOutput) +} + func init() { pulumi.RegisterOutputType(GetIstioCanonicalServiceResultOutput{}) } diff --git a/sdk/go/gcp/monitoring/getMeshIstioService.go b/sdk/go/gcp/monitoring/getMeshIstioService.go index 506d14399f..cdddfcec10 100644 --- a/sdk/go/gcp/monitoring/getMeshIstioService.go +++ b/sdk/go/gcp/monitoring/getMeshIstioService.go @@ -86,6 +86,7 @@ type GetMeshIstioServiceResult struct { ServiceName string `pulumi:"serviceName"` ServiceNamespace string `pulumi:"serviceNamespace"` Telemetries []GetMeshIstioServiceTelemetry `pulumi:"telemetries"` + UserLabels map[string]string `pulumi:"userLabels"` } func GetMeshIstioServiceOutput(ctx *pulumi.Context, args GetMeshIstioServiceOutputArgs, opts ...pulumi.InvokeOption) GetMeshIstioServiceResultOutput { @@ -173,6 +174,10 @@ func (o GetMeshIstioServiceResultOutput) Telemetries() GetMeshIstioServiceTeleme return o.ApplyT(func(v GetMeshIstioServiceResult) []GetMeshIstioServiceTelemetry { return v.Telemetries }).(GetMeshIstioServiceTelemetryArrayOutput) } +func (o GetMeshIstioServiceResultOutput) UserLabels() pulumi.StringMapOutput { + return o.ApplyT(func(v GetMeshIstioServiceResult) map[string]string { return v.UserLabels }).(pulumi.StringMapOutput) +} + func init() { pulumi.RegisterOutputType(GetMeshIstioServiceResultOutput{}) } diff --git a/sdk/go/gcp/monitoring/pulumiTypes.go b/sdk/go/gcp/monitoring/pulumiTypes.go index cc21657ae1..a8da1d4283 100644 --- a/sdk/go/gcp/monitoring/pulumiTypes.go +++ b/sdk/go/gcp/monitoring/pulumiTypes.go @@ -8292,9 +8292,12 @@ func (o SloWindowsBasedSliMetricSumInRangeRangePtrOutput) Min() pulumi.Float64Pt type UptimeCheckConfigContentMatcher struct { // String or regex content to match (max 1024 bytes) Content string `pulumi:"content"` + // Information needed to perform a JSONPath content match. Used for `ContentMatcherOption::MATCHES_JSON_PATH` and `ContentMatcherOption::NOT_MATCHES_JSON_PATH`. + // Structure is documented below. + JsonPathMatcher *UptimeCheckConfigContentMatcherJsonPathMatcher `pulumi:"jsonPathMatcher"` // The type of content matcher that will be applied to the server output, compared to the content string when the check is run. // Default value is `CONTAINS_STRING`. - // Possible values are `CONTAINS_STRING`, `NOT_CONTAINS_STRING`, `MATCHES_REGEX`, and `NOT_MATCHES_REGEX`. + // Possible values are `CONTAINS_STRING`, `NOT_CONTAINS_STRING`, `MATCHES_REGEX`, `NOT_MATCHES_REGEX`, `MATCHES_JSON_PATH`, and `NOT_MATCHES_JSON_PATH`. Matcher *string `pulumi:"matcher"` } @@ -8312,9 +8315,12 @@ type UptimeCheckConfigContentMatcherInput interface { type UptimeCheckConfigContentMatcherArgs struct { // String or regex content to match (max 1024 bytes) Content pulumi.StringInput `pulumi:"content"` + // Information needed to perform a JSONPath content match. Used for `ContentMatcherOption::MATCHES_JSON_PATH` and `ContentMatcherOption::NOT_MATCHES_JSON_PATH`. + // Structure is documented below. + JsonPathMatcher UptimeCheckConfigContentMatcherJsonPathMatcherPtrInput `pulumi:"jsonPathMatcher"` // The type of content matcher that will be applied to the server output, compared to the content string when the check is run. // Default value is `CONTAINS_STRING`. - // Possible values are `CONTAINS_STRING`, `NOT_CONTAINS_STRING`, `MATCHES_REGEX`, and `NOT_MATCHES_REGEX`. + // Possible values are `CONTAINS_STRING`, `NOT_CONTAINS_STRING`, `MATCHES_REGEX`, `NOT_MATCHES_REGEX`, `MATCHES_JSON_PATH`, and `NOT_MATCHES_JSON_PATH`. Matcher pulumi.StringPtrInput `pulumi:"matcher"` } @@ -8374,9 +8380,17 @@ func (o UptimeCheckConfigContentMatcherOutput) Content() pulumi.StringOutput { return o.ApplyT(func(v UptimeCheckConfigContentMatcher) string { return v.Content }).(pulumi.StringOutput) } +// Information needed to perform a JSONPath content match. Used for `ContentMatcherOption::MATCHES_JSON_PATH` and `ContentMatcherOption::NOT_MATCHES_JSON_PATH`. +// Structure is documented below. +func (o UptimeCheckConfigContentMatcherOutput) JsonPathMatcher() UptimeCheckConfigContentMatcherJsonPathMatcherPtrOutput { + return o.ApplyT(func(v UptimeCheckConfigContentMatcher) *UptimeCheckConfigContentMatcherJsonPathMatcher { + return v.JsonPathMatcher + }).(UptimeCheckConfigContentMatcherJsonPathMatcherPtrOutput) +} + // The type of content matcher that will be applied to the server output, compared to the content string when the check is run. // Default value is `CONTAINS_STRING`. -// Possible values are `CONTAINS_STRING`, `NOT_CONTAINS_STRING`, `MATCHES_REGEX`, and `NOT_MATCHES_REGEX`. +// Possible values are `CONTAINS_STRING`, `NOT_CONTAINS_STRING`, `MATCHES_REGEX`, `NOT_MATCHES_REGEX`, `MATCHES_JSON_PATH`, and `NOT_MATCHES_JSON_PATH`. func (o UptimeCheckConfigContentMatcherOutput) Matcher() pulumi.StringPtrOutput { return o.ApplyT(func(v UptimeCheckConfigContentMatcher) *string { return v.Matcher }).(pulumi.StringPtrOutput) } @@ -8401,6 +8415,170 @@ func (o UptimeCheckConfigContentMatcherArrayOutput) Index(i pulumi.IntInput) Upt }).(UptimeCheckConfigContentMatcherOutput) } +type UptimeCheckConfigContentMatcherJsonPathMatcher struct { + // Options to perform JSONPath content matching. + // Default value is `EXACT_MATCH`. + // Possible values are `EXACT_MATCH` and `REGEX_MATCH`. + JsonMatcher *string `pulumi:"jsonMatcher"` + // JSONPath within the response output pointing to the expected `ContentMatcher::content` to match against. + JsonPath string `pulumi:"jsonPath"` +} + +// UptimeCheckConfigContentMatcherJsonPathMatcherInput is an input type that accepts UptimeCheckConfigContentMatcherJsonPathMatcherArgs and UptimeCheckConfigContentMatcherJsonPathMatcherOutput values. +// You can construct a concrete instance of `UptimeCheckConfigContentMatcherJsonPathMatcherInput` via: +// +// UptimeCheckConfigContentMatcherJsonPathMatcherArgs{...} +type UptimeCheckConfigContentMatcherJsonPathMatcherInput interface { + pulumi.Input + + ToUptimeCheckConfigContentMatcherJsonPathMatcherOutput() UptimeCheckConfigContentMatcherJsonPathMatcherOutput + ToUptimeCheckConfigContentMatcherJsonPathMatcherOutputWithContext(context.Context) UptimeCheckConfigContentMatcherJsonPathMatcherOutput +} + +type UptimeCheckConfigContentMatcherJsonPathMatcherArgs struct { + // Options to perform JSONPath content matching. + // Default value is `EXACT_MATCH`. + // Possible values are `EXACT_MATCH` and `REGEX_MATCH`. + JsonMatcher pulumi.StringPtrInput `pulumi:"jsonMatcher"` + // JSONPath within the response output pointing to the expected `ContentMatcher::content` to match against. + JsonPath pulumi.StringInput `pulumi:"jsonPath"` +} + +func (UptimeCheckConfigContentMatcherJsonPathMatcherArgs) ElementType() reflect.Type { + return reflect.TypeOf((*UptimeCheckConfigContentMatcherJsonPathMatcher)(nil)).Elem() +} + +func (i UptimeCheckConfigContentMatcherJsonPathMatcherArgs) ToUptimeCheckConfigContentMatcherJsonPathMatcherOutput() UptimeCheckConfigContentMatcherJsonPathMatcherOutput { + return i.ToUptimeCheckConfigContentMatcherJsonPathMatcherOutputWithContext(context.Background()) +} + +func (i UptimeCheckConfigContentMatcherJsonPathMatcherArgs) ToUptimeCheckConfigContentMatcherJsonPathMatcherOutputWithContext(ctx context.Context) UptimeCheckConfigContentMatcherJsonPathMatcherOutput { + return pulumi.ToOutputWithContext(ctx, i).(UptimeCheckConfigContentMatcherJsonPathMatcherOutput) +} + +func (i UptimeCheckConfigContentMatcherJsonPathMatcherArgs) ToUptimeCheckConfigContentMatcherJsonPathMatcherPtrOutput() UptimeCheckConfigContentMatcherJsonPathMatcherPtrOutput { + return i.ToUptimeCheckConfigContentMatcherJsonPathMatcherPtrOutputWithContext(context.Background()) +} + +func (i UptimeCheckConfigContentMatcherJsonPathMatcherArgs) ToUptimeCheckConfigContentMatcherJsonPathMatcherPtrOutputWithContext(ctx context.Context) UptimeCheckConfigContentMatcherJsonPathMatcherPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(UptimeCheckConfigContentMatcherJsonPathMatcherOutput).ToUptimeCheckConfigContentMatcherJsonPathMatcherPtrOutputWithContext(ctx) +} + +// UptimeCheckConfigContentMatcherJsonPathMatcherPtrInput is an input type that accepts UptimeCheckConfigContentMatcherJsonPathMatcherArgs, UptimeCheckConfigContentMatcherJsonPathMatcherPtr and UptimeCheckConfigContentMatcherJsonPathMatcherPtrOutput values. +// You can construct a concrete instance of `UptimeCheckConfigContentMatcherJsonPathMatcherPtrInput` via: +// +// UptimeCheckConfigContentMatcherJsonPathMatcherArgs{...} +// +// or: +// +// nil +type UptimeCheckConfigContentMatcherJsonPathMatcherPtrInput interface { + pulumi.Input + + ToUptimeCheckConfigContentMatcherJsonPathMatcherPtrOutput() UptimeCheckConfigContentMatcherJsonPathMatcherPtrOutput + ToUptimeCheckConfigContentMatcherJsonPathMatcherPtrOutputWithContext(context.Context) UptimeCheckConfigContentMatcherJsonPathMatcherPtrOutput +} + +type uptimeCheckConfigContentMatcherJsonPathMatcherPtrType UptimeCheckConfigContentMatcherJsonPathMatcherArgs + +func UptimeCheckConfigContentMatcherJsonPathMatcherPtr(v *UptimeCheckConfigContentMatcherJsonPathMatcherArgs) UptimeCheckConfigContentMatcherJsonPathMatcherPtrInput { + return (*uptimeCheckConfigContentMatcherJsonPathMatcherPtrType)(v) +} + +func (*uptimeCheckConfigContentMatcherJsonPathMatcherPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**UptimeCheckConfigContentMatcherJsonPathMatcher)(nil)).Elem() +} + +func (i *uptimeCheckConfigContentMatcherJsonPathMatcherPtrType) ToUptimeCheckConfigContentMatcherJsonPathMatcherPtrOutput() UptimeCheckConfigContentMatcherJsonPathMatcherPtrOutput { + return i.ToUptimeCheckConfigContentMatcherJsonPathMatcherPtrOutputWithContext(context.Background()) +} + +func (i *uptimeCheckConfigContentMatcherJsonPathMatcherPtrType) ToUptimeCheckConfigContentMatcherJsonPathMatcherPtrOutputWithContext(ctx context.Context) UptimeCheckConfigContentMatcherJsonPathMatcherPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(UptimeCheckConfigContentMatcherJsonPathMatcherPtrOutput) +} + +type UptimeCheckConfigContentMatcherJsonPathMatcherOutput struct{ *pulumi.OutputState } + +func (UptimeCheckConfigContentMatcherJsonPathMatcherOutput) ElementType() reflect.Type { + return reflect.TypeOf((*UptimeCheckConfigContentMatcherJsonPathMatcher)(nil)).Elem() +} + +func (o UptimeCheckConfigContentMatcherJsonPathMatcherOutput) ToUptimeCheckConfigContentMatcherJsonPathMatcherOutput() UptimeCheckConfigContentMatcherJsonPathMatcherOutput { + return o +} + +func (o UptimeCheckConfigContentMatcherJsonPathMatcherOutput) ToUptimeCheckConfigContentMatcherJsonPathMatcherOutputWithContext(ctx context.Context) UptimeCheckConfigContentMatcherJsonPathMatcherOutput { + return o +} + +func (o UptimeCheckConfigContentMatcherJsonPathMatcherOutput) ToUptimeCheckConfigContentMatcherJsonPathMatcherPtrOutput() UptimeCheckConfigContentMatcherJsonPathMatcherPtrOutput { + return o.ToUptimeCheckConfigContentMatcherJsonPathMatcherPtrOutputWithContext(context.Background()) +} + +func (o UptimeCheckConfigContentMatcherJsonPathMatcherOutput) ToUptimeCheckConfigContentMatcherJsonPathMatcherPtrOutputWithContext(ctx context.Context) UptimeCheckConfigContentMatcherJsonPathMatcherPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v UptimeCheckConfigContentMatcherJsonPathMatcher) *UptimeCheckConfigContentMatcherJsonPathMatcher { + return &v + }).(UptimeCheckConfigContentMatcherJsonPathMatcherPtrOutput) +} + +// Options to perform JSONPath content matching. +// Default value is `EXACT_MATCH`. +// Possible values are `EXACT_MATCH` and `REGEX_MATCH`. +func (o UptimeCheckConfigContentMatcherJsonPathMatcherOutput) JsonMatcher() pulumi.StringPtrOutput { + return o.ApplyT(func(v UptimeCheckConfigContentMatcherJsonPathMatcher) *string { return v.JsonMatcher }).(pulumi.StringPtrOutput) +} + +// JSONPath within the response output pointing to the expected `ContentMatcher::content` to match against. +func (o UptimeCheckConfigContentMatcherJsonPathMatcherOutput) JsonPath() pulumi.StringOutput { + return o.ApplyT(func(v UptimeCheckConfigContentMatcherJsonPathMatcher) string { return v.JsonPath }).(pulumi.StringOutput) +} + +type UptimeCheckConfigContentMatcherJsonPathMatcherPtrOutput struct{ *pulumi.OutputState } + +func (UptimeCheckConfigContentMatcherJsonPathMatcherPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**UptimeCheckConfigContentMatcherJsonPathMatcher)(nil)).Elem() +} + +func (o UptimeCheckConfigContentMatcherJsonPathMatcherPtrOutput) ToUptimeCheckConfigContentMatcherJsonPathMatcherPtrOutput() UptimeCheckConfigContentMatcherJsonPathMatcherPtrOutput { + return o +} + +func (o UptimeCheckConfigContentMatcherJsonPathMatcherPtrOutput) ToUptimeCheckConfigContentMatcherJsonPathMatcherPtrOutputWithContext(ctx context.Context) UptimeCheckConfigContentMatcherJsonPathMatcherPtrOutput { + return o +} + +func (o UptimeCheckConfigContentMatcherJsonPathMatcherPtrOutput) Elem() UptimeCheckConfigContentMatcherJsonPathMatcherOutput { + return o.ApplyT(func(v *UptimeCheckConfigContentMatcherJsonPathMatcher) UptimeCheckConfigContentMatcherJsonPathMatcher { + if v != nil { + return *v + } + var ret UptimeCheckConfigContentMatcherJsonPathMatcher + return ret + }).(UptimeCheckConfigContentMatcherJsonPathMatcherOutput) +} + +// Options to perform JSONPath content matching. +// Default value is `EXACT_MATCH`. +// Possible values are `EXACT_MATCH` and `REGEX_MATCH`. +func (o UptimeCheckConfigContentMatcherJsonPathMatcherPtrOutput) JsonMatcher() pulumi.StringPtrOutput { + return o.ApplyT(func(v *UptimeCheckConfigContentMatcherJsonPathMatcher) *string { + if v == nil { + return nil + } + return v.JsonMatcher + }).(pulumi.StringPtrOutput) +} + +// JSONPath within the response output pointing to the expected `ContentMatcher::content` to match against. +func (o UptimeCheckConfigContentMatcherJsonPathMatcherPtrOutput) JsonPath() pulumi.StringPtrOutput { + return o.ApplyT(func(v *UptimeCheckConfigContentMatcherJsonPathMatcher) *string { + if v == nil { + return nil + } + return &v.JsonPath + }).(pulumi.StringPtrOutput) +} + type UptimeCheckConfigHttpCheck struct { // The authentication information. Optional when creating an HTTP check; defaults to empty. // Structure is documented below. @@ -10028,6 +10206,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*SloWindowsBasedSliMetricSumInRangeRangePtrInput)(nil)).Elem(), SloWindowsBasedSliMetricSumInRangeRangeArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*UptimeCheckConfigContentMatcherInput)(nil)).Elem(), UptimeCheckConfigContentMatcherArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*UptimeCheckConfigContentMatcherArrayInput)(nil)).Elem(), UptimeCheckConfigContentMatcherArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*UptimeCheckConfigContentMatcherJsonPathMatcherInput)(nil)).Elem(), UptimeCheckConfigContentMatcherJsonPathMatcherArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*UptimeCheckConfigContentMatcherJsonPathMatcherPtrInput)(nil)).Elem(), UptimeCheckConfigContentMatcherJsonPathMatcherArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*UptimeCheckConfigHttpCheckInput)(nil)).Elem(), UptimeCheckConfigHttpCheckArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*UptimeCheckConfigHttpCheckPtrInput)(nil)).Elem(), UptimeCheckConfigHttpCheckArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*UptimeCheckConfigHttpCheckAuthInfoInput)(nil)).Elem(), UptimeCheckConfigHttpCheckAuthInfoArgs{}) @@ -10130,6 +10310,8 @@ func init() { pulumi.RegisterOutputType(SloWindowsBasedSliMetricSumInRangeRangePtrOutput{}) pulumi.RegisterOutputType(UptimeCheckConfigContentMatcherOutput{}) pulumi.RegisterOutputType(UptimeCheckConfigContentMatcherArrayOutput{}) + pulumi.RegisterOutputType(UptimeCheckConfigContentMatcherJsonPathMatcherOutput{}) + pulumi.RegisterOutputType(UptimeCheckConfigContentMatcherJsonPathMatcherPtrOutput{}) pulumi.RegisterOutputType(UptimeCheckConfigHttpCheckOutput{}) pulumi.RegisterOutputType(UptimeCheckConfigHttpCheckPtrOutput{}) pulumi.RegisterOutputType(UptimeCheckConfigHttpCheckAuthInfoOutput{}) diff --git a/sdk/go/gcp/monitoring/slo.go b/sdk/go/gcp/monitoring/slo.go index c715b6d6b3..dff1b35910 100644 --- a/sdk/go/gcp/monitoring/slo.go +++ b/sdk/go/gcp/monitoring/slo.go @@ -56,6 +56,10 @@ import ( // Threshold: pulumi.String("1s"), // }, // }, +// UserLabels: pulumi.StringMap{ +// "my_key": pulumi.String("my_value"), +// "my_other_key": pulumi.String("my_other_value"), +// }, // }) // if err != nil { // return err @@ -155,6 +159,12 @@ type Slo struct { Service pulumi.StringOutput `pulumi:"service"` // The id to use for this ServiceLevelObjective. If omitted, an id will be generated instead. SloId pulumi.StringOutput `pulumi:"sloId"` + // This field is intended to be used for organizing and identifying the AlertPolicy + // objects.The field can contain up to 64 entries. Each key and value is limited + // to 63 Unicode characters or 128 bytes, whichever is smaller. Labels and values + // can contain only lowercase letters, numerals, underscores, and dashes. Keys + // must begin with a letter. + UserLabels pulumi.StringMapOutput `pulumi:"userLabels"` // A windows-based SLI defines the criteria for time windows. // goodService is defined based off the count of these time windows // for which the provided service was of good quality. @@ -241,6 +251,12 @@ type sloState struct { Service *string `pulumi:"service"` // The id to use for this ServiceLevelObjective. If omitted, an id will be generated instead. SloId *string `pulumi:"sloId"` + // This field is intended to be used for organizing and identifying the AlertPolicy + // objects.The field can contain up to 64 entries. Each key and value is limited + // to 63 Unicode characters or 128 bytes, whichever is smaller. Labels and values + // can contain only lowercase letters, numerals, underscores, and dashes. Keys + // must begin with a letter. + UserLabels map[string]string `pulumi:"userLabels"` // A windows-based SLI defines the criteria for time windows. // goodService is defined based off the count of these time windows // for which the provided service was of good quality. @@ -293,6 +309,12 @@ type SloState struct { Service pulumi.StringPtrInput // The id to use for this ServiceLevelObjective. If omitted, an id will be generated instead. SloId pulumi.StringPtrInput + // This field is intended to be used for organizing and identifying the AlertPolicy + // objects.The field can contain up to 64 entries. Each key and value is limited + // to 63 Unicode characters or 128 bytes, whichever is smaller. Labels and values + // can contain only lowercase letters, numerals, underscores, and dashes. Keys + // must begin with a letter. + UserLabels pulumi.StringMapInput // A windows-based SLI defines the criteria for time windows. // goodService is defined based off the count of these time windows // for which the provided service was of good quality. @@ -346,6 +368,12 @@ type sloArgs struct { Service string `pulumi:"service"` // The id to use for this ServiceLevelObjective. If omitted, an id will be generated instead. SloId *string `pulumi:"sloId"` + // This field is intended to be used for organizing and identifying the AlertPolicy + // objects.The field can contain up to 64 entries. Each key and value is limited + // to 63 Unicode characters or 128 bytes, whichever is smaller. Labels and values + // can contain only lowercase letters, numerals, underscores, and dashes. Keys + // must begin with a letter. + UserLabels map[string]string `pulumi:"userLabels"` // A windows-based SLI defines the criteria for time windows. // goodService is defined based off the count of these time windows // for which the provided service was of good quality. @@ -396,6 +424,12 @@ type SloArgs struct { Service pulumi.StringInput // The id to use for this ServiceLevelObjective. If omitted, an id will be generated instead. SloId pulumi.StringPtrInput + // This field is intended to be used for organizing and identifying the AlertPolicy + // objects.The field can contain up to 64 entries. Each key and value is limited + // to 63 Unicode characters or 128 bytes, whichever is smaller. Labels and values + // can contain only lowercase letters, numerals, underscores, and dashes. Keys + // must begin with a letter. + UserLabels pulumi.StringMapInput // A windows-based SLI defines the criteria for time windows. // goodService is defined based off the count of these time windows // for which the provided service was of good quality. @@ -564,6 +598,15 @@ func (o SloOutput) SloId() pulumi.StringOutput { return o.ApplyT(func(v *Slo) pulumi.StringOutput { return v.SloId }).(pulumi.StringOutput) } +// This field is intended to be used for organizing and identifying the AlertPolicy +// objects.The field can contain up to 64 entries. Each key and value is limited +// to 63 Unicode characters or 128 bytes, whichever is smaller. Labels and values +// can contain only lowercase letters, numerals, underscores, and dashes. Keys +// must begin with a letter. +func (o SloOutput) UserLabels() pulumi.StringMapOutput { + return o.ApplyT(func(v *Slo) pulumi.StringMapOutput { return v.UserLabels }).(pulumi.StringMapOutput) +} + // A windows-based SLI defines the criteria for time windows. // goodService is defined based off the count of these time windows // for which the provided service was of good quality. diff --git a/sdk/go/gcp/monitoring/uptimeCheckConfig.go b/sdk/go/gcp/monitoring/uptimeCheckConfig.go index 53e914ccdf..95cf73b57f 100644 --- a/sdk/go/gcp/monitoring/uptimeCheckConfig.go +++ b/sdk/go/gcp/monitoring/uptimeCheckConfig.go @@ -29,6 +29,8 @@ import ( // package main // // import ( +// "fmt" +// // "github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/monitoring" // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" // ) @@ -39,7 +41,12 @@ import ( // CheckerType: pulumi.String("STATIC_IP_CHECKERS"), // ContentMatchers: monitoring.UptimeCheckConfigContentMatcherArray{ // &monitoring.UptimeCheckConfigContentMatcherArgs{ -// Content: pulumi.String("example"), +// Content: pulumi.String("\"example\""), +// JsonPathMatcher: &monitoring.UptimeCheckConfigContentMatcherJsonPathMatcherArgs{ +// JsonMatcher: pulumi.String("EXACT_MATCH"), +// JsonPath: pulumi.String(fmt.Sprintf("%v%v", "$", ".path")), +// }, +// Matcher: pulumi.String("MATCHES_JSON_PATH"), // }, // }, // DisplayName: pulumi.String("http-uptime-check"), @@ -72,6 +79,8 @@ import ( // package main // // import ( +// "fmt" +// // "github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/monitoring" // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" // ) @@ -82,6 +91,11 @@ import ( // ContentMatchers: monitoring.UptimeCheckConfigContentMatcherArray{ // &monitoring.UptimeCheckConfigContentMatcherArgs{ // Content: pulumi.String("example"), +// JsonPathMatcher: &monitoring.UptimeCheckConfigContentMatcherJsonPathMatcherArgs{ +// JsonMatcher: pulumi.String("REGEX_MATCH"), +// JsonPath: pulumi.String(fmt.Sprintf("%v%v", "$", ".path")), +// }, +// Matcher: pulumi.String("MATCHES_JSON_PATH"), // }, // }, // DisplayName: pulumi.String("https-uptime-check"), @@ -166,7 +180,7 @@ type UptimeCheckConfig struct { // Contains information needed to make an HTTP or HTTPS check. // Structure is documented below. HttpCheck UptimeCheckConfigHttpCheckPtrOutput `pulumi:"httpCheck"` - // The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptimeUrl gceInstance gaeApp awsEc2Instance awsElbLoadBalancer + // The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptimeUrl gceInstance gaeApp awsEc2Instance aws_elb_load_balancer k8sService servicedirectoryService // Structure is documented below. MonitoredResource UptimeCheckConfigMonitoredResourcePtrOutput `pulumi:"monitoredResource"` // A unique resource name for this UptimeCheckConfig. The format is @@ -237,7 +251,7 @@ type uptimeCheckConfigState struct { // Contains information needed to make an HTTP or HTTPS check. // Structure is documented below. HttpCheck *UptimeCheckConfigHttpCheck `pulumi:"httpCheck"` - // The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptimeUrl gceInstance gaeApp awsEc2Instance awsElbLoadBalancer + // The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptimeUrl gceInstance gaeApp awsEc2Instance aws_elb_load_balancer k8sService servicedirectoryService // Structure is documented below. MonitoredResource *UptimeCheckConfigMonitoredResource `pulumi:"monitoredResource"` // A unique resource name for this UptimeCheckConfig. The format is @@ -274,7 +288,7 @@ type UptimeCheckConfigState struct { // Contains information needed to make an HTTP or HTTPS check. // Structure is documented below. HttpCheck UptimeCheckConfigHttpCheckPtrInput - // The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptimeUrl gceInstance gaeApp awsEc2Instance awsElbLoadBalancer + // The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptimeUrl gceInstance gaeApp awsEc2Instance aws_elb_load_balancer k8sService servicedirectoryService // Structure is documented below. MonitoredResource UptimeCheckConfigMonitoredResourcePtrInput // A unique resource name for this UptimeCheckConfig. The format is @@ -315,7 +329,7 @@ type uptimeCheckConfigArgs struct { // Contains information needed to make an HTTP or HTTPS check. // Structure is documented below. HttpCheck *UptimeCheckConfigHttpCheck `pulumi:"httpCheck"` - // The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptimeUrl gceInstance gaeApp awsEc2Instance awsElbLoadBalancer + // The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptimeUrl gceInstance gaeApp awsEc2Instance aws_elb_load_balancer k8sService servicedirectoryService // Structure is documented below. MonitoredResource *UptimeCheckConfigMonitoredResource `pulumi:"monitoredResource"` // How often, in seconds, the uptime check is performed. Currently, the only supported values are 60s (1 minute), 300s (5 minutes), 600s (10 minutes), and 900s (15 minutes). Optional, defaults to 300s. @@ -348,7 +362,7 @@ type UptimeCheckConfigArgs struct { // Contains information needed to make an HTTP or HTTPS check. // Structure is documented below. HttpCheck UptimeCheckConfigHttpCheckPtrInput - // The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptimeUrl gceInstance gaeApp awsEc2Instance awsElbLoadBalancer + // The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptimeUrl gceInstance gaeApp awsEc2Instance aws_elb_load_balancer k8sService servicedirectoryService // Structure is documented below. MonitoredResource UptimeCheckConfigMonitoredResourcePtrInput // How often, in seconds, the uptime check is performed. Currently, the only supported values are 60s (1 minute), 300s (5 minutes), 600s (10 minutes), and 900s (15 minutes). Optional, defaults to 300s. @@ -478,7 +492,7 @@ func (o UptimeCheckConfigOutput) HttpCheck() UptimeCheckConfigHttpCheckPtrOutput return o.ApplyT(func(v *UptimeCheckConfig) UptimeCheckConfigHttpCheckPtrOutput { return v.HttpCheck }).(UptimeCheckConfigHttpCheckPtrOutput) } -// The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptimeUrl gceInstance gaeApp awsEc2Instance awsElbLoadBalancer +// The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptimeUrl gceInstance gaeApp awsEc2Instance aws_elb_load_balancer k8sService servicedirectoryService // Structure is documented below. func (o UptimeCheckConfigOutput) MonitoredResource() UptimeCheckConfigMonitoredResourcePtrOutput { return o.ApplyT(func(v *UptimeCheckConfig) UptimeCheckConfigMonitoredResourcePtrOutput { return v.MonitoredResource }).(UptimeCheckConfigMonitoredResourcePtrOutput) diff --git a/sdk/go/gcp/sql/pulumiTypes.go b/sdk/go/gcp/sql/pulumiTypes.go index 1596829c6d..205ca6564a 100644 --- a/sdk/go/gcp/sql/pulumiTypes.go +++ b/sdk/go/gcp/sql/pulumiTypes.go @@ -2995,6 +2995,154 @@ func (o DatabaseInstanceSettingsMaintenanceWindowPtrOutput) UpdateTrack() pulumi }).(pulumi.StringPtrOutput) } +type UserSqlServerUserDetails struct { + Disabled *bool `pulumi:"disabled"` + ServerRoles []string `pulumi:"serverRoles"` +} + +// UserSqlServerUserDetailsInput is an input type that accepts UserSqlServerUserDetailsArgs and UserSqlServerUserDetailsOutput values. +// You can construct a concrete instance of `UserSqlServerUserDetailsInput` via: +// +// UserSqlServerUserDetailsArgs{...} +type UserSqlServerUserDetailsInput interface { + pulumi.Input + + ToUserSqlServerUserDetailsOutput() UserSqlServerUserDetailsOutput + ToUserSqlServerUserDetailsOutputWithContext(context.Context) UserSqlServerUserDetailsOutput +} + +type UserSqlServerUserDetailsArgs struct { + Disabled pulumi.BoolPtrInput `pulumi:"disabled"` + ServerRoles pulumi.StringArrayInput `pulumi:"serverRoles"` +} + +func (UserSqlServerUserDetailsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*UserSqlServerUserDetails)(nil)).Elem() +} + +func (i UserSqlServerUserDetailsArgs) ToUserSqlServerUserDetailsOutput() UserSqlServerUserDetailsOutput { + return i.ToUserSqlServerUserDetailsOutputWithContext(context.Background()) +} + +func (i UserSqlServerUserDetailsArgs) ToUserSqlServerUserDetailsOutputWithContext(ctx context.Context) UserSqlServerUserDetailsOutput { + return pulumi.ToOutputWithContext(ctx, i).(UserSqlServerUserDetailsOutput) +} + +func (i UserSqlServerUserDetailsArgs) ToUserSqlServerUserDetailsPtrOutput() UserSqlServerUserDetailsPtrOutput { + return i.ToUserSqlServerUserDetailsPtrOutputWithContext(context.Background()) +} + +func (i UserSqlServerUserDetailsArgs) ToUserSqlServerUserDetailsPtrOutputWithContext(ctx context.Context) UserSqlServerUserDetailsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(UserSqlServerUserDetailsOutput).ToUserSqlServerUserDetailsPtrOutputWithContext(ctx) +} + +// UserSqlServerUserDetailsPtrInput is an input type that accepts UserSqlServerUserDetailsArgs, UserSqlServerUserDetailsPtr and UserSqlServerUserDetailsPtrOutput values. +// You can construct a concrete instance of `UserSqlServerUserDetailsPtrInput` via: +// +// UserSqlServerUserDetailsArgs{...} +// +// or: +// +// nil +type UserSqlServerUserDetailsPtrInput interface { + pulumi.Input + + ToUserSqlServerUserDetailsPtrOutput() UserSqlServerUserDetailsPtrOutput + ToUserSqlServerUserDetailsPtrOutputWithContext(context.Context) UserSqlServerUserDetailsPtrOutput +} + +type userSqlServerUserDetailsPtrType UserSqlServerUserDetailsArgs + +func UserSqlServerUserDetailsPtr(v *UserSqlServerUserDetailsArgs) UserSqlServerUserDetailsPtrInput { + return (*userSqlServerUserDetailsPtrType)(v) +} + +func (*userSqlServerUserDetailsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**UserSqlServerUserDetails)(nil)).Elem() +} + +func (i *userSqlServerUserDetailsPtrType) ToUserSqlServerUserDetailsPtrOutput() UserSqlServerUserDetailsPtrOutput { + return i.ToUserSqlServerUserDetailsPtrOutputWithContext(context.Background()) +} + +func (i *userSqlServerUserDetailsPtrType) ToUserSqlServerUserDetailsPtrOutputWithContext(ctx context.Context) UserSqlServerUserDetailsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(UserSqlServerUserDetailsPtrOutput) +} + +type UserSqlServerUserDetailsOutput struct{ *pulumi.OutputState } + +func (UserSqlServerUserDetailsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*UserSqlServerUserDetails)(nil)).Elem() +} + +func (o UserSqlServerUserDetailsOutput) ToUserSqlServerUserDetailsOutput() UserSqlServerUserDetailsOutput { + return o +} + +func (o UserSqlServerUserDetailsOutput) ToUserSqlServerUserDetailsOutputWithContext(ctx context.Context) UserSqlServerUserDetailsOutput { + return o +} + +func (o UserSqlServerUserDetailsOutput) ToUserSqlServerUserDetailsPtrOutput() UserSqlServerUserDetailsPtrOutput { + return o.ToUserSqlServerUserDetailsPtrOutputWithContext(context.Background()) +} + +func (o UserSqlServerUserDetailsOutput) ToUserSqlServerUserDetailsPtrOutputWithContext(ctx context.Context) UserSqlServerUserDetailsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v UserSqlServerUserDetails) *UserSqlServerUserDetails { + return &v + }).(UserSqlServerUserDetailsPtrOutput) +} + +func (o UserSqlServerUserDetailsOutput) Disabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v UserSqlServerUserDetails) *bool { return v.Disabled }).(pulumi.BoolPtrOutput) +} + +func (o UserSqlServerUserDetailsOutput) ServerRoles() pulumi.StringArrayOutput { + return o.ApplyT(func(v UserSqlServerUserDetails) []string { return v.ServerRoles }).(pulumi.StringArrayOutput) +} + +type UserSqlServerUserDetailsPtrOutput struct{ *pulumi.OutputState } + +func (UserSqlServerUserDetailsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**UserSqlServerUserDetails)(nil)).Elem() +} + +func (o UserSqlServerUserDetailsPtrOutput) ToUserSqlServerUserDetailsPtrOutput() UserSqlServerUserDetailsPtrOutput { + return o +} + +func (o UserSqlServerUserDetailsPtrOutput) ToUserSqlServerUserDetailsPtrOutputWithContext(ctx context.Context) UserSqlServerUserDetailsPtrOutput { + return o +} + +func (o UserSqlServerUserDetailsPtrOutput) Elem() UserSqlServerUserDetailsOutput { + return o.ApplyT(func(v *UserSqlServerUserDetails) UserSqlServerUserDetails { + if v != nil { + return *v + } + var ret UserSqlServerUserDetails + return ret + }).(UserSqlServerUserDetailsOutput) +} + +func (o UserSqlServerUserDetailsPtrOutput) Disabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *UserSqlServerUserDetails) *bool { + if v == nil { + return nil + } + return v.Disabled + }).(pulumi.BoolPtrOutput) +} + +func (o UserSqlServerUserDetailsPtrOutput) ServerRoles() pulumi.StringArrayOutput { + return o.ApplyT(func(v *UserSqlServerUserDetails) []string { + if v == nil { + return nil + } + return v.ServerRoles + }).(pulumi.StringArrayOutput) +} + type GetCaCertsCert struct { // The CA certificate used to connect to the SQL instance via SSL. Cert string `pulumi:"cert"` @@ -4940,6 +5088,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*DatabaseInstanceSettingsLocationPreferencePtrInput)(nil)).Elem(), DatabaseInstanceSettingsLocationPreferenceArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*DatabaseInstanceSettingsMaintenanceWindowInput)(nil)).Elem(), DatabaseInstanceSettingsMaintenanceWindowArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*DatabaseInstanceSettingsMaintenanceWindowPtrInput)(nil)).Elem(), DatabaseInstanceSettingsMaintenanceWindowArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*UserSqlServerUserDetailsInput)(nil)).Elem(), UserSqlServerUserDetailsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*UserSqlServerUserDetailsPtrInput)(nil)).Elem(), UserSqlServerUserDetailsArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetCaCertsCertInput)(nil)).Elem(), GetCaCertsCertArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetCaCertsCertArrayInput)(nil)).Elem(), GetCaCertsCertArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetDatabaseInstanceCloneInput)(nil)).Elem(), GetDatabaseInstanceCloneArgs{}) @@ -5002,6 +5152,8 @@ func init() { pulumi.RegisterOutputType(DatabaseInstanceSettingsLocationPreferencePtrOutput{}) pulumi.RegisterOutputType(DatabaseInstanceSettingsMaintenanceWindowOutput{}) pulumi.RegisterOutputType(DatabaseInstanceSettingsMaintenanceWindowPtrOutput{}) + pulumi.RegisterOutputType(UserSqlServerUserDetailsOutput{}) + pulumi.RegisterOutputType(UserSqlServerUserDetailsPtrOutput{}) pulumi.RegisterOutputType(GetCaCertsCertOutput{}) pulumi.RegisterOutputType(GetCaCertsCertArrayOutput{}) pulumi.RegisterOutputType(GetDatabaseInstanceCloneOutput{}) diff --git a/sdk/go/gcp/sql/user.go b/sdk/go/gcp/sql/user.go index c631353f25..512660e8e1 100644 --- a/sdk/go/gcp/sql/user.go +++ b/sdk/go/gcp/sql/user.go @@ -138,7 +138,8 @@ type User struct { Password pulumi.StringPtrOutput `pulumi:"password"` // 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"` + Project pulumi.StringOutput `pulumi:"project"` + SqlServerUserDetails UserSqlServerUserDetailsPtrOutput `pulumi:"sqlServerUserDetails"` // The user type. It determines the method to authenticate the // user during login. The default is the database's built-in user type. Flags // include "BUILT_IN", "CLOUD_IAM_USER", or "CLOUD_IAM_SERVICE_ACCOUNT". @@ -197,7 +198,8 @@ type userState struct { Password *string `pulumi:"password"` // The ID of the project in which the resource belongs. If it // is not provided, the provider project is used. - Project *string `pulumi:"project"` + Project *string `pulumi:"project"` + SqlServerUserDetails *UserSqlServerUserDetails `pulumi:"sqlServerUserDetails"` // The user type. It determines the method to authenticate the // user during login. The default is the database's built-in user type. Flags // include "BUILT_IN", "CLOUD_IAM_USER", or "CLOUD_IAM_SERVICE_ACCOUNT". @@ -225,7 +227,8 @@ type UserState struct { Password pulumi.StringPtrInput // The ID of the project in which the resource belongs. If it // is not provided, the provider project is used. - Project pulumi.StringPtrInput + Project pulumi.StringPtrInput + SqlServerUserDetails UserSqlServerUserDetailsPtrInput // The user type. It determines the method to authenticate the // user during login. The default is the database's built-in user type. Flags // include "BUILT_IN", "CLOUD_IAM_USER", or "CLOUD_IAM_SERVICE_ACCOUNT". @@ -257,7 +260,8 @@ type userArgs struct { Password *string `pulumi:"password"` // The ID of the project in which the resource belongs. If it // is not provided, the provider project is used. - Project *string `pulumi:"project"` + Project *string `pulumi:"project"` + SqlServerUserDetails *UserSqlServerUserDetails `pulumi:"sqlServerUserDetails"` // The user type. It determines the method to authenticate the // user during login. The default is the database's built-in user type. Flags // include "BUILT_IN", "CLOUD_IAM_USER", or "CLOUD_IAM_SERVICE_ACCOUNT". @@ -286,7 +290,8 @@ type UserArgs struct { Password pulumi.StringPtrInput // The ID of the project in which the resource belongs. If it // is not provided, the provider project is used. - Project pulumi.StringPtrInput + Project pulumi.StringPtrInput + SqlServerUserDetails UserSqlServerUserDetailsPtrInput // The user type. It determines the method to authenticate the // user during login. The default is the database's built-in user type. Flags // include "BUILT_IN", "CLOUD_IAM_USER", or "CLOUD_IAM_SERVICE_ACCOUNT". @@ -419,6 +424,10 @@ func (o UserOutput) Project() pulumi.StringOutput { return o.ApplyT(func(v *User) pulumi.StringOutput { return v.Project }).(pulumi.StringOutput) } +func (o UserOutput) SqlServerUserDetails() UserSqlServerUserDetailsPtrOutput { + return o.ApplyT(func(v *User) UserSqlServerUserDetailsPtrOutput { return v.SqlServerUserDetails }).(UserSqlServerUserDetailsPtrOutput) +} + // The user type. It determines the method to authenticate the // user during login. The default is the database's built-in user type. Flags // include "BUILT_IN", "CLOUD_IAM_USER", or "CLOUD_IAM_SERVICE_ACCOUNT". diff --git a/sdk/nodejs/clouddeploy/deliveryPipeline.ts b/sdk/nodejs/clouddeploy/deliveryPipeline.ts index bdfa9e9e3a..f0d45b902c 100644 --- a/sdk/nodejs/clouddeploy/deliveryPipeline.ts +++ b/sdk/nodejs/clouddeploy/deliveryPipeline.ts @@ -6,7 +6,7 @@ import { input as inputs, output as outputs } from "../types"; import * as utilities from "../utilities"; /** - * The Clouddeploy DeliveryPipeline resource + * The Cloud Deploy `DeliveryPipeline` resource * * ## Example Usage * ### Delivery_pipeline diff --git a/sdk/nodejs/clouddeploy/target.ts b/sdk/nodejs/clouddeploy/target.ts index 31da98441d..c328a64c16 100644 --- a/sdk/nodejs/clouddeploy/target.ts +++ b/sdk/nodejs/clouddeploy/target.ts @@ -6,7 +6,7 @@ import { input as inputs, output as outputs } from "../types"; import * as utilities from "../utilities"; /** - * The Clouddeploy Target resource + * The Cloud Deploy `Target` resource * * ## Example Usage * ### Target diff --git a/sdk/nodejs/cloudfunctionsv2/function.ts b/sdk/nodejs/cloudfunctionsv2/function.ts index 890e400ea9..bd6b6d0b86 100644 --- a/sdk/nodejs/cloudfunctionsv2/function.ts +++ b/sdk/nodejs/cloudfunctionsv2/function.ts @@ -53,6 +53,12 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * + * const account = new gcp.serviceaccount.Account("account", { + * accountId: "test-service-account", + * displayName: "Test Service Account", + * }, { + * provider: google_beta, + * }); * const sub = new gcp.pubsub.Topic("sub", {}, { * provider: google_beta, * }); @@ -94,12 +100,14 @@ import * as utilities from "../utilities"; * }, * ingressSettings: "ALLOW_INTERNAL_ONLY", * allTrafficOnLatestRevision: true, + * serviceAccountEmail: account.email, * }, * eventTrigger: { * triggerRegion: "us-central1", * eventType: "google.cloud.pubsub.topic.v1.messagePublished", * pubsubTopic: sub.id, * retryPolicy: "RETRY_POLICY_RETRY", + * serviceAccountEmail: account.email, * }, * }, { * provider: google_beta, diff --git a/sdk/nodejs/compute/backendService.ts b/sdk/nodejs/compute/backendService.ts index 8c74df9cf5..9855a64b9e 100644 --- a/sdk/nodejs/compute/backendService.ts +++ b/sdk/nodejs/compute/backendService.ts @@ -52,6 +52,31 @@ import * as utilities from "../utilities"; * }, * }); * ``` + * ### Backend Service Cache Include Named Cookies + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const defaultBackendService = new gcp.compute.BackendService("default", { + * cdnPolicy: { + * cacheKeyPolicy: { + * includeHost: true, + * includeNamedCookies: [ + * "__next_preview_data", + * "__prerender_bypass", + * ], + * includeProtocol: true, + * includeQueryString: true, + * }, + * cacheMode: "CACHE_ALL_STATIC", + * clientTtl: 7200, + * defaultTtl: 3600, + * maxTtl: 10800, + * }, + * enableCdn: true, + * }); + * ``` * ### Backend Service Cache * * ```typescript diff --git a/sdk/nodejs/compute/instanceGroup.ts b/sdk/nodejs/compute/instanceGroup.ts index b97adf5f7f..0f0364e277 100644 --- a/sdk/nodejs/compute/instanceGroup.ts +++ b/sdk/nodejs/compute/instanceGroup.ts @@ -148,9 +148,8 @@ export class InstanceGroup extends pulumi.CustomResource { */ public readonly description!: pulumi.Output; /** - * List of instances in the group. They should be given - * as either selfLink or id. When adding instances they must all be in the same - * network and zone as the instance group. + * The list of instances in the group, in `selfLink` format. + * When adding instances they must all be in the same network and zone as the instance group. */ public readonly instances!: pulumi.Output; /** @@ -236,9 +235,8 @@ export interface InstanceGroupState { */ description?: pulumi.Input; /** - * List of instances in the group. They should be given - * as either selfLink or id. When adding instances they must all be in the same - * network and zone as the instance group. + * The list of instances in the group, in `selfLink` format. + * When adding instances they must all be in the same network and zone as the instance group. */ instances?: pulumi.Input[]>; /** @@ -286,9 +284,8 @@ export interface InstanceGroupArgs { */ description?: pulumi.Input; /** - * List of instances in the group. They should be given - * as either selfLink or id. When adding instances they must all be in the same - * network and zone as the instance group. + * The list of instances in the group, in `selfLink` format. + * When adding instances they must all be in the same network and zone as the instance group. */ instances?: pulumi.Input[]>; /** diff --git a/sdk/nodejs/compute/network.ts b/sdk/nodejs/compute/network.ts index 6aa4255d9d..76d6ae30a8 100644 --- a/sdk/nodejs/compute/network.ts +++ b/sdk/nodejs/compute/network.ts @@ -97,10 +97,23 @@ export class Network extends pulumi.CustomResource { * recreated to modify this field. */ public readonly description!: pulumi.Output; + /** + * Enable ULA internal ipv6 on this network. Enabling this feature will assign + * a /48 from google defined ULA prefix fd20::/20. + */ + public readonly enableUlaInternalIpv6!: pulumi.Output; /** * The gateway address for default routing out of the network. This value is selected by GCP. */ public /*out*/ readonly gatewayIpv4!: pulumi.Output; + /** + * When enabling ula internal ipv6, caller optionally can specify the /48 range + * they want from the google defined ULA prefix fd20::/20. The input must be a + * valid /48 ULA IPv6 address and must be within the fd20::/20. Operation will + * fail if the speficied /48 is already in used by another resource. + * If the field is not speficied, then a /48 range will be randomly allocated from fd20::/20 and returned via this field. + */ + public readonly internalIpv6Range!: pulumi.Output; /** * Maximum Transmission Unit in bytes. The minimum value for this field is 1460 * and the maximum value is 1500 bytes. @@ -151,7 +164,9 @@ export class Network extends pulumi.CustomResource { resourceInputs["autoCreateSubnetworks"] = state ? state.autoCreateSubnetworks : undefined; resourceInputs["deleteDefaultRoutesOnCreate"] = state ? state.deleteDefaultRoutesOnCreate : undefined; resourceInputs["description"] = state ? state.description : undefined; + resourceInputs["enableUlaInternalIpv6"] = state ? state.enableUlaInternalIpv6 : undefined; resourceInputs["gatewayIpv4"] = state ? state.gatewayIpv4 : undefined; + resourceInputs["internalIpv6Range"] = state ? state.internalIpv6Range : undefined; resourceInputs["mtu"] = state ? state.mtu : undefined; resourceInputs["name"] = state ? state.name : undefined; resourceInputs["project"] = state ? state.project : undefined; @@ -162,6 +177,8 @@ export class Network extends pulumi.CustomResource { resourceInputs["autoCreateSubnetworks"] = args ? args.autoCreateSubnetworks : undefined; resourceInputs["deleteDefaultRoutesOnCreate"] = args ? args.deleteDefaultRoutesOnCreate : undefined; resourceInputs["description"] = args ? args.description : undefined; + resourceInputs["enableUlaInternalIpv6"] = args ? args.enableUlaInternalIpv6 : undefined; + resourceInputs["internalIpv6Range"] = args ? args.internalIpv6Range : undefined; resourceInputs["mtu"] = args ? args.mtu : undefined; resourceInputs["name"] = args ? args.name : undefined; resourceInputs["project"] = args ? args.project : undefined; @@ -196,10 +213,23 @@ export interface NetworkState { * recreated to modify this field. */ description?: pulumi.Input; + /** + * Enable ULA internal ipv6 on this network. Enabling this feature will assign + * a /48 from google defined ULA prefix fd20::/20. + */ + enableUlaInternalIpv6?: pulumi.Input; /** * The gateway address for default routing out of the network. This value is selected by GCP. */ gatewayIpv4?: pulumi.Input; + /** + * When enabling ula internal ipv6, caller optionally can specify the /48 range + * they want from the google defined ULA prefix fd20::/20. The input must be a + * valid /48 ULA IPv6 address and must be within the fd20::/20. Operation will + * fail if the speficied /48 is already in used by another resource. + * If the field is not speficied, then a /48 range will be randomly allocated from fd20::/20 and returned via this field. + */ + internalIpv6Range?: pulumi.Input; /** * Maximum Transmission Unit in bytes. The minimum value for this field is 1460 * and the maximum value is 1500 bytes. @@ -257,6 +287,19 @@ export interface NetworkArgs { * recreated to modify this field. */ description?: pulumi.Input; + /** + * Enable ULA internal ipv6 on this network. Enabling this feature will assign + * a /48 from google defined ULA prefix fd20::/20. + */ + enableUlaInternalIpv6?: pulumi.Input; + /** + * When enabling ula internal ipv6, caller optionally can specify the /48 range + * they want from the google defined ULA prefix fd20::/20. The input must be a + * valid /48 ULA IPv6 address and must be within the fd20::/20. Operation will + * fail if the speficied /48 is already in used by another resource. + * If the field is not speficied, then a /48 range will be randomly allocated from fd20::/20 and returned via this field. + */ + internalIpv6Range?: pulumi.Input; /** * Maximum Transmission Unit in bytes. The minimum value for this field is 1460 * and the maximum value is 1500 bytes. diff --git a/sdk/nodejs/compute/securityPolicy.ts b/sdk/nodejs/compute/securityPolicy.ts index 8a6808e69d..212b96c31b 100644 --- a/sdk/nodejs/compute/securityPolicy.ts +++ b/sdk/nodejs/compute/securityPolicy.ts @@ -76,6 +76,10 @@ export class SecurityPolicy extends pulumi.CustomResource { * Configuration for [Google Cloud Armor Adaptive Protection](https://cloud.google.com/armor/docs/adaptive-protection-overview?hl=en). Structure is documented below. */ public readonly adaptiveProtectionConfig!: pulumi.Output; + /** + * [Advanced Configuration Options](https://cloud.google.com/armor/docs/security-policy-overview#json-parsing). + */ + public readonly advancedOptionsConfig!: pulumi.Output; /** * An optional description of this rule. Max size is 64. */ @@ -122,6 +126,7 @@ export class SecurityPolicy extends pulumi.CustomResource { if (opts.id) { const state = argsOrState as SecurityPolicyState | undefined; resourceInputs["adaptiveProtectionConfig"] = state ? state.adaptiveProtectionConfig : undefined; + resourceInputs["advancedOptionsConfig"] = state ? state.advancedOptionsConfig : undefined; resourceInputs["description"] = state ? state.description : undefined; resourceInputs["fingerprint"] = state ? state.fingerprint : undefined; resourceInputs["name"] = state ? state.name : undefined; @@ -132,6 +137,7 @@ export class SecurityPolicy extends pulumi.CustomResource { } else { const args = argsOrState as SecurityPolicyArgs | undefined; resourceInputs["adaptiveProtectionConfig"] = args ? args.adaptiveProtectionConfig : undefined; + resourceInputs["advancedOptionsConfig"] = args ? args.advancedOptionsConfig : undefined; resourceInputs["description"] = args ? args.description : undefined; resourceInputs["name"] = args ? args.name : undefined; resourceInputs["project"] = args ? args.project : undefined; @@ -153,6 +159,10 @@ export interface SecurityPolicyState { * Configuration for [Google Cloud Armor Adaptive Protection](https://cloud.google.com/armor/docs/adaptive-protection-overview?hl=en). Structure is documented below. */ adaptiveProtectionConfig?: pulumi.Input; + /** + * [Advanced Configuration Options](https://cloud.google.com/armor/docs/security-policy-overview#json-parsing). + */ + advancedOptionsConfig?: pulumi.Input; /** * An optional description of this rule. Max size is 64. */ @@ -194,6 +204,10 @@ export interface SecurityPolicyArgs { * Configuration for [Google Cloud Armor Adaptive Protection](https://cloud.google.com/armor/docs/adaptive-protection-overview?hl=en). Structure is documented below. */ adaptiveProtectionConfig?: pulumi.Input; + /** + * [Advanced Configuration Options](https://cloud.google.com/armor/docs/security-policy-overview#json-parsing). + */ + advancedOptionsConfig?: pulumi.Input; /** * An optional description of this rule. Max size is 64. */ diff --git a/sdk/nodejs/compute/subnetwork.ts b/sdk/nodejs/compute/subnetwork.ts index 6aea6db752..462411715a 100644 --- a/sdk/nodejs/compute/subnetwork.ts +++ b/sdk/nodejs/compute/subnetwork.ts @@ -106,6 +106,24 @@ import * as utilities from "../utilities"; * network: custom_test.id, * }); * ``` + * ### Subnetwork Internal Ipv6 + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const custom_test = new gcp.compute.Network("custom-test", { + * autoCreateSubnetworks: false, + * enableUlaInternalIpv6: true, + * }); + * const subnetwork_internal_ipv6 = new gcp.compute.Subnetwork("subnetwork-internal-ipv6", { + * ipCidrRange: "10.0.0.0/22", + * region: "us-west2", + * stackType: "IPV4_IPV6", + * ipv6AccessType: "INTERNAL", + * network: custom_test.id, + * }); + * ``` * * ## Import * @@ -190,7 +208,7 @@ export class Subnetwork extends pulumi.CustomResource { * The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation * or the first time the subnet is updated into IPV4_IPV6 dual stack. If the ipv6Type is EXTERNAL then this subnet * cannot enable direct path. - * Possible values are `EXTERNAL`. + * Possible values are `EXTERNAL` and `INTERNAL`. */ public readonly ipv6AccessType!: pulumi.Output; /** @@ -378,7 +396,7 @@ export interface SubnetworkState { * The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation * or the first time the subnet is updated into IPV4_IPV6 dual stack. If the ipv6Type is EXTERNAL then this subnet * cannot enable direct path. - * Possible values are `EXTERNAL`. + * Possible values are `EXTERNAL` and `INTERNAL`. */ ipv6AccessType?: pulumi.Input; /** @@ -482,7 +500,7 @@ export interface SubnetworkArgs { * The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation * or the first time the subnet is updated into IPV4_IPV6 dual stack. If the ipv6Type is EXTERNAL then this subnet * cannot enable direct path. - * Possible values are `EXTERNAL`. + * Possible values are `EXTERNAL` and `INTERNAL`. */ ipv6AccessType?: pulumi.Input; /** diff --git a/sdk/nodejs/dns/managedZone.ts b/sdk/nodejs/dns/managedZone.ts index 1e700a7c02..54325d3309 100644 --- a/sdk/nodejs/dns/managedZone.ts +++ b/sdk/nodejs/dns/managedZone.ts @@ -192,6 +192,10 @@ export class ManagedZone extends pulumi.CustomResource { return obj['__pulumiType'] === ManagedZone.__pulumiType; } + /** + * The time that this resource was created on the server. This is in RFC3339 text format. + */ + public /*out*/ readonly creationTime!: pulumi.Output; /** * A textual description field. Defaults to 'Managed by Pulumi'. */ @@ -220,6 +224,10 @@ export class ManagedZone extends pulumi.CustomResource { * A set of key/value label pairs to assign to this ManagedZone. */ public readonly labels!: pulumi.Output<{[key: string]: string} | undefined>; + /** + * Unique identifier for the resource; defined by the server. + */ + public /*out*/ readonly managedZoneId!: pulumi.Output; /** * User assigned name for this resource. * Must be unique within the project. @@ -278,12 +286,14 @@ export class ManagedZone extends pulumi.CustomResource { opts = opts || {}; if (opts.id) { const state = argsOrState as ManagedZoneState | undefined; + resourceInputs["creationTime"] = state ? state.creationTime : undefined; resourceInputs["description"] = state ? state.description : undefined; resourceInputs["dnsName"] = state ? state.dnsName : undefined; resourceInputs["dnssecConfig"] = state ? state.dnssecConfig : undefined; resourceInputs["forceDestroy"] = state ? state.forceDestroy : undefined; resourceInputs["forwardingConfig"] = state ? state.forwardingConfig : undefined; resourceInputs["labels"] = state ? state.labels : undefined; + resourceInputs["managedZoneId"] = state ? state.managedZoneId : undefined; resourceInputs["name"] = state ? state.name : undefined; resourceInputs["nameServers"] = state ? state.nameServers : undefined; resourceInputs["peeringConfig"] = state ? state.peeringConfig : undefined; @@ -310,6 +320,8 @@ export class ManagedZone extends pulumi.CustomResource { resourceInputs["reverseLookup"] = args ? args.reverseLookup : undefined; resourceInputs["serviceDirectoryConfig"] = args ? args.serviceDirectoryConfig : undefined; resourceInputs["visibility"] = args ? args.visibility : undefined; + resourceInputs["creationTime"] = undefined /*out*/; + resourceInputs["managedZoneId"] = undefined /*out*/; resourceInputs["nameServers"] = undefined /*out*/; } opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); @@ -321,6 +333,10 @@ export class ManagedZone extends pulumi.CustomResource { * Input properties used for looking up and filtering ManagedZone resources. */ export interface ManagedZoneState { + /** + * The time that this resource was created on the server. This is in RFC3339 text format. + */ + creationTime?: pulumi.Input; /** * A textual description field. Defaults to 'Managed by Pulumi'. */ @@ -349,6 +365,10 @@ export interface ManagedZoneState { * A set of key/value label pairs to assign to this ManagedZone. */ labels?: pulumi.Input<{[key: string]: pulumi.Input}>; + /** + * Unique identifier for the resource; defined by the server. + */ + managedZoneId?: pulumi.Input; /** * User assigned name for this resource. * Must be unique within the project. diff --git a/sdk/nodejs/gkehub/feature.ts b/sdk/nodejs/gkehub/feature.ts index 134654a9b1..5daa825110 100644 --- a/sdk/nodejs/gkehub/feature.ts +++ b/sdk/nodejs/gkehub/feature.ts @@ -56,6 +56,16 @@ import * as utilities from "../utilities"; * provider: google_beta, * }); * ``` + * ### Enable Anthos Service Mesh + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const feature = new gcp.gkehub.Feature("feature", {location: "global"}, { + * provider: google_beta, + * }); + * ``` * * ## Import * diff --git a/sdk/nodejs/monitoring/customService.ts b/sdk/nodejs/monitoring/customService.ts index 4320f9e4d7..45d522315a 100644 --- a/sdk/nodejs/monitoring/customService.ts +++ b/sdk/nodejs/monitoring/customService.ts @@ -31,6 +31,10 @@ import * as utilities from "../utilities"; * telemetry: { * resourceName: "//product.googleapis.com/foo/foo/services/test", * }, + * userLabels: { + * my_key: "my_value", + * my_other_key: "my_other_value", + * }, * }); * ``` * @@ -93,6 +97,15 @@ export class CustomService extends pulumi.CustomResource { * Structure is documented below. */ public readonly telemetry!: pulumi.Output; + /** + * Labels which have been used to annotate the service. Label keys must start + * with a letter. Label keys and values may contain lowercase letters, + * numbers, underscores, and dashes. Label keys and values have a maximum + * length of 63 characters, and must be less than 128 bytes in size. Up to 64 + * label entries may be stored. For labels which do not have a semantic value, + * the empty string may be supplied for the label value. + */ + public readonly userLabels!: pulumi.Output<{[key: string]: string} | undefined>; /** * Create a CustomService resource with the given unique name, arguments, and options. @@ -112,12 +125,14 @@ export class CustomService extends pulumi.CustomResource { resourceInputs["project"] = state ? state.project : undefined; resourceInputs["serviceId"] = state ? state.serviceId : undefined; resourceInputs["telemetry"] = state ? state.telemetry : undefined; + resourceInputs["userLabels"] = state ? state.userLabels : undefined; } else { const args = argsOrState as CustomServiceArgs | undefined; resourceInputs["displayName"] = args ? args.displayName : undefined; resourceInputs["project"] = args ? args.project : undefined; resourceInputs["serviceId"] = args ? args.serviceId : undefined; resourceInputs["telemetry"] = args ? args.telemetry : undefined; + resourceInputs["userLabels"] = args ? args.userLabels : undefined; resourceInputs["name"] = undefined /*out*/; } opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); @@ -152,6 +167,15 @@ export interface CustomServiceState { * Structure is documented below. */ telemetry?: pulumi.Input; + /** + * Labels which have been used to annotate the service. Label keys must start + * with a letter. Label keys and values may contain lowercase letters, + * numbers, underscores, and dashes. Label keys and values have a maximum + * length of 63 characters, and must be less than 128 bytes in size. Up to 64 + * label entries may be stored. For labels which do not have a semantic value, + * the empty string may be supplied for the label value. + */ + userLabels?: pulumi.Input<{[key: string]: pulumi.Input}>; } /** @@ -177,4 +201,13 @@ export interface CustomServiceArgs { * Structure is documented below. */ telemetry?: pulumi.Input; + /** + * Labels which have been used to annotate the service. Label keys must start + * with a letter. Label keys and values may contain lowercase letters, + * numbers, underscores, and dashes. Label keys and values have a maximum + * length of 63 characters, and must be less than 128 bytes in size. Up to 64 + * label entries may be stored. For labels which do not have a semantic value, + * the empty string may be supplied for the label value. + */ + userLabels?: pulumi.Input<{[key: string]: pulumi.Input}>; } diff --git a/sdk/nodejs/monitoring/getAppEngineService.ts b/sdk/nodejs/monitoring/getAppEngineService.ts index 46d33e6970..9a0935b69c 100644 --- a/sdk/nodejs/monitoring/getAppEngineService.ts +++ b/sdk/nodejs/monitoring/getAppEngineService.ts @@ -96,6 +96,7 @@ export interface GetAppEngineServiceResult { readonly project?: string; readonly serviceId: string; readonly telemetries: outputs.monitoring.GetAppEngineServiceTelemetry[]; + readonly userLabels: {[key: string]: string}; } export function getAppEngineServiceOutput(args: GetAppEngineServiceOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output { diff --git a/sdk/nodejs/monitoring/getClusterIstioService.ts b/sdk/nodejs/monitoring/getClusterIstioService.ts index 3ec00965ad..c0d37655bc 100644 --- a/sdk/nodejs/monitoring/getClusterIstioService.ts +++ b/sdk/nodejs/monitoring/getClusterIstioService.ts @@ -99,6 +99,7 @@ export interface GetClusterIstioServiceResult { readonly serviceName: string; readonly serviceNamespace: string; readonly telemetries: outputs.monitoring.GetClusterIstioServiceTelemetry[]; + readonly userLabels: {[key: string]: string}; } export function getClusterIstioServiceOutput(args: GetClusterIstioServiceOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output { diff --git a/sdk/nodejs/monitoring/getIstioCanonicalService.ts b/sdk/nodejs/monitoring/getIstioCanonicalService.ts index 1d1c049057..3a87eacf9f 100644 --- a/sdk/nodejs/monitoring/getIstioCanonicalService.ts +++ b/sdk/nodejs/monitoring/getIstioCanonicalService.ts @@ -91,6 +91,7 @@ export interface GetIstioCanonicalServiceResult { readonly project?: string; readonly serviceId: string; readonly telemetries: outputs.monitoring.GetIstioCanonicalServiceTelemetry[]; + readonly userLabels: {[key: string]: string}; } export function getIstioCanonicalServiceOutput(args: GetIstioCanonicalServiceOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output { diff --git a/sdk/nodejs/monitoring/getMeshIstioService.ts b/sdk/nodejs/monitoring/getMeshIstioService.ts index d0ce94b0f1..9edea31773 100644 --- a/sdk/nodejs/monitoring/getMeshIstioService.ts +++ b/sdk/nodejs/monitoring/getMeshIstioService.ts @@ -91,6 +91,7 @@ export interface GetMeshIstioServiceResult { readonly serviceName: string; readonly serviceNamespace: string; readonly telemetries: outputs.monitoring.GetMeshIstioServiceTelemetry[]; + readonly userLabels: {[key: string]: string}; } export function getMeshIstioServiceOutput(args: GetMeshIstioServiceOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output { diff --git a/sdk/nodejs/monitoring/slo.ts b/sdk/nodejs/monitoring/slo.ts index afb2ac10d2..4741ecc32e 100644 --- a/sdk/nodejs/monitoring/slo.ts +++ b/sdk/nodejs/monitoring/slo.ts @@ -42,6 +42,10 @@ import * as utilities from "../utilities"; * threshold: "1s", * }, * }, + * userLabels: { + * my_key: "my_value", + * my_other_key: "my_other_value", + * }, * }); * ``` * ### Monitoring Slo Request Based @@ -166,6 +170,14 @@ export class Slo extends pulumi.CustomResource { * The id to use for this ServiceLevelObjective. If omitted, an id will be generated instead. */ public readonly sloId!: pulumi.Output; + /** + * This field is intended to be used for organizing and identifying the AlertPolicy + * objects.The field can contain up to 64 entries. Each key and value is limited + * to 63 Unicode characters or 128 bytes, whichever is smaller. Labels and values + * can contain only lowercase letters, numerals, underscores, and dashes. Keys + * must begin with a letter. + */ + public readonly userLabels!: pulumi.Output<{[key: string]: string} | undefined>; /** * A windows-based SLI defines the criteria for time windows. * goodService is defined based off the count of these time windows @@ -202,6 +214,7 @@ export class Slo extends pulumi.CustomResource { resourceInputs["rollingPeriodDays"] = state ? state.rollingPeriodDays : undefined; resourceInputs["service"] = state ? state.service : undefined; resourceInputs["sloId"] = state ? state.sloId : undefined; + resourceInputs["userLabels"] = state ? state.userLabels : undefined; resourceInputs["windowsBasedSli"] = state ? state.windowsBasedSli : undefined; } else { const args = argsOrState as SloArgs | undefined; @@ -220,6 +233,7 @@ export class Slo extends pulumi.CustomResource { resourceInputs["rollingPeriodDays"] = args ? args.rollingPeriodDays : undefined; resourceInputs["service"] = args ? args.service : undefined; resourceInputs["sloId"] = args ? args.sloId : undefined; + resourceInputs["userLabels"] = args ? args.userLabels : undefined; resourceInputs["windowsBasedSli"] = args ? args.windowsBasedSli : undefined; resourceInputs["name"] = undefined /*out*/; } @@ -291,6 +305,14 @@ export interface SloState { * The id to use for this ServiceLevelObjective. If omitted, an id will be generated instead. */ sloId?: pulumi.Input; + /** + * This field is intended to be used for organizing and identifying the AlertPolicy + * objects.The field can contain up to 64 entries. Each key and value is limited + * to 63 Unicode characters or 128 bytes, whichever is smaller. Labels and values + * can contain only lowercase letters, numerals, underscores, and dashes. Keys + * must begin with a letter. + */ + userLabels?: pulumi.Input<{[key: string]: pulumi.Input}>; /** * A windows-based SLI defines the criteria for time windows. * goodService is defined based off the count of these time windows @@ -363,6 +385,14 @@ export interface SloArgs { * The id to use for this ServiceLevelObjective. If omitted, an id will be generated instead. */ sloId?: pulumi.Input; + /** + * This field is intended to be used for organizing and identifying the AlertPolicy + * objects.The field can contain up to 64 entries. Each key and value is limited + * to 63 Unicode characters or 128 bytes, whichever is smaller. Labels and values + * can contain only lowercase letters, numerals, underscores, and dashes. Keys + * must begin with a letter. + */ + userLabels?: pulumi.Input<{[key: string]: pulumi.Input}>; /** * A windows-based SLI defines the criteria for time windows. * goodService is defined based off the count of these time windows diff --git a/sdk/nodejs/monitoring/uptimeCheckConfig.ts b/sdk/nodejs/monitoring/uptimeCheckConfig.ts index f02026d40f..6ecfa05c1a 100644 --- a/sdk/nodejs/monitoring/uptimeCheckConfig.ts +++ b/sdk/nodejs/monitoring/uptimeCheckConfig.ts @@ -27,7 +27,12 @@ import * as utilities from "../utilities"; * const http = new gcp.monitoring.UptimeCheckConfig("http", { * checkerType: "STATIC_IP_CHECKERS", * contentMatchers: [{ - * content: "example", + * content: "\"example\"", + * jsonPathMatcher: { + * jsonMatcher: "EXACT_MATCH", + * jsonPath: "$.path", + * }, + * matcher: "MATCHES_JSON_PATH", * }], * displayName: "http-uptime-check", * httpCheck: { @@ -56,6 +61,11 @@ import * as utilities from "../utilities"; * const https = new gcp.monitoring.UptimeCheckConfig("https", { * contentMatchers: [{ * content: "example", + * jsonPathMatcher: { + * jsonMatcher: "REGEX_MATCH", + * jsonPath: "$.path", + * }, + * matcher: "MATCHES_JSON_PATH", * }], * displayName: "https-uptime-check", * httpCheck: { @@ -153,7 +163,7 @@ export class UptimeCheckConfig extends pulumi.CustomResource { */ public readonly httpCheck!: pulumi.Output; /** - * The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptimeUrl gceInstance gaeApp awsEc2Instance awsElbLoadBalancer + * The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptimeUrl gceInstance gaeApp awsEc2Instance aws_elb_load_balancer k8sService servicedirectoryService * Structure is documented below. */ public readonly monitoredResource!: pulumi.Output; @@ -271,7 +281,7 @@ export interface UptimeCheckConfigState { */ httpCheck?: pulumi.Input; /** - * The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptimeUrl gceInstance gaeApp awsEc2Instance awsElbLoadBalancer + * The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptimeUrl gceInstance gaeApp awsEc2Instance aws_elb_load_balancer k8sService servicedirectoryService * Structure is documented below. */ monitoredResource?: pulumi.Input; @@ -337,7 +347,7 @@ export interface UptimeCheckConfigArgs { */ httpCheck?: pulumi.Input; /** - * The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptimeUrl gceInstance gaeApp awsEc2Instance awsElbLoadBalancer + * The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptimeUrl gceInstance gaeApp awsEc2Instance aws_elb_load_balancer k8sService servicedirectoryService * Structure is documented below. */ monitoredResource?: pulumi.Input; diff --git a/sdk/nodejs/sql/user.ts b/sdk/nodejs/sql/user.ts index ff4aa22dd7..b9c60334d5 100644 --- a/sdk/nodejs/sql/user.ts +++ b/sdk/nodejs/sql/user.ts @@ -2,6 +2,7 @@ // *** Do not edit by hand unless you're certain you know what you are doing! *** import * as pulumi from "@pulumi/pulumi"; +import { input as inputs, output as outputs } from "../types"; import * as utilities from "../utilities"; /** @@ -129,6 +130,7 @@ export class User extends pulumi.CustomResource { * is not provided, the provider project is used. */ public readonly project!: pulumi.Output; + public readonly sqlServerUserDetails!: pulumi.Output; /** * The user type. It determines the method to authenticate the * user during login. The default is the database's built-in user type. Flags @@ -155,6 +157,7 @@ export class User extends pulumi.CustomResource { resourceInputs["name"] = state ? state.name : undefined; resourceInputs["password"] = state ? state.password : undefined; resourceInputs["project"] = state ? state.project : undefined; + resourceInputs["sqlServerUserDetails"] = state ? state.sqlServerUserDetails : undefined; resourceInputs["type"] = state ? state.type : undefined; } else { const args = argsOrState as UserArgs | undefined; @@ -167,6 +170,7 @@ export class User extends pulumi.CustomResource { resourceInputs["name"] = args ? args.name : undefined; resourceInputs["password"] = args ? args.password : undefined; resourceInputs["project"] = args ? args.project : undefined; + resourceInputs["sqlServerUserDetails"] = args ? args.sqlServerUserDetails : undefined; resourceInputs["type"] = args ? args.type : undefined; } opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); @@ -211,6 +215,7 @@ export interface UserState { * is not provided, the provider project is used. */ project?: pulumi.Input; + sqlServerUserDetails?: pulumi.Input; /** * The user type. It determines the method to authenticate the * user during login. The default is the database's built-in user type. Flags @@ -256,6 +261,7 @@ export interface UserArgs { * is not provided, the provider project is used. */ project?: pulumi.Input; + sqlServerUserDetails?: pulumi.Input; /** * The user type. It determines the method to authenticate the * user during login. The default is the database's built-in user type. Flags diff --git a/sdk/nodejs/types/input.ts b/sdk/nodejs/types/input.ts index 9340a04944..d868969265 100644 --- a/sdk/nodejs/types/input.ts +++ b/sdk/nodejs/types/input.ts @@ -3331,6 +3331,13 @@ export namespace bigquery { * Valid values are "NONE" or "GZIP". */ compression?: pulumi.Input; + /** + * The connection specifying the credentials to be used to read + * external storage, such as Azure Blob, Cloud Storage, or S3. The `connectionId` can have + * the form `{{project}}.{{location}}.{{connection_id}}` + * or `projects/{{project}}/locations/{{location}}/connections/{{connection_id}}`. + */ + connectionId?: pulumi.Input; /** * Additional properties to set if * `sourceFormat` is set to "CSV". Structure is documented below. @@ -6579,7 +6586,6 @@ export namespace cloudfunctionsv2 { */ retryPolicy?: pulumi.Input; /** - * - * The email of the service account for this function. */ serviceAccountEmail?: pulumi.Input; @@ -6638,7 +6644,6 @@ export namespace cloudfunctionsv2 { */ service?: pulumi.Input; /** - * - * The email of the service account for this function. */ serviceAccountEmail?: pulumi.Input; @@ -8468,6 +8473,10 @@ export namespace compute { * If true requests to different hosts will be cached separately. */ includeHost?: pulumi.Input; + /** + * Names of cookies to include in cache keys. + */ + includeNamedCookies?: pulumi.Input[]>; /** * If true, http and https requests will be cached separately. */ @@ -11247,6 +11256,10 @@ export namespace compute { * If true requests to different hosts will be cached separately. */ includeHost?: pulumi.Input; + /** + * Names of cookies to include in cache keys. + */ + includeNamedCookies?: pulumi.Input[]>; /** * If true, http and https requests will be cached separately. */ @@ -13926,6 +13939,21 @@ export namespace compute { ruleVisibility?: pulumi.Input; } + export interface SecurityPolicyAdvancedOptionsConfig { + /** + * Whether or not to JSON parse the payload body. Defaults to `DISABLED`. + * * DISABLED - Don't parse JSON payloads in POST bodies. + * * STANDARD - Parse JSON payloads in POST bodies. + */ + jsonParsing?: pulumi.Input; + /** + * Log level to use. Defaults to `NORMAL`. + * * NORMAL - Normal log level. + * * VERBOSE - Verbose log level. + */ + logLevel?: pulumi.Input; + } + export interface SecurityPolicyRule { /** * Action to take when `match` matches the request. Valid values: @@ -17126,7 +17154,7 @@ export namespace container { export interface ClusterLoggingConfig { /** - * The GKE components exposing logs. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. + * The GKE components exposing metrics. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. (`WORKLOADS` is deprecated and removed in GKE 1.24.) */ enableComponents: pulumi.Input[]>; } @@ -17212,9 +17240,21 @@ export namespace container { export interface ClusterMonitoringConfig { /** - * The GKE components exposing logs. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. + * The GKE components exposing metrics. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. (`WORKLOADS` is deprecated and removed in GKE 1.24.) */ - enableComponents: pulumi.Input[]>; + enableComponents?: pulumi.Input[]>; + /** + * Configuration for Managed Service for Prometheus. Structure is documented below. + */ + managedPrometheus?: pulumi.Input; + } + + export interface ClusterMonitoringConfigManagedPrometheus { + /** + * Enable the PodSecurityPolicy controller for this cluster. + * If enabled, pods must be valid under a PodSecurityPolicy to be created. + */ + enabled: pulumi.Input; } export interface ClusterNetworkPolicy { @@ -17333,10 +17373,6 @@ export namespace container { * for more information. Defaults to false. */ preemptible?: pulumi.Input; - /** - * [GKE Sandbox](https://cloud.google.com/kubernetes-engine/docs/how-to/sandbox-pods) configuration. When enabling this feature you must specify `imageType = "COS_CONTAINERD"` and `nodeVersion = "1.12.7-gke.17"` or later to use it. - * Structure is documented below. - */ sandboxConfig?: pulumi.Input; /** * The service account to be used by the Node VMs. @@ -17348,8 +17384,8 @@ export namespace container { */ shieldedInstanceConfig?: pulumi.Input; /** - * ) A boolean - * that represents whether the underlying node VMs are spot. See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) + * A boolean that represents whether the underlying node VMs are spot. + * See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) * for more information. Defaults to false. */ spot?: pulumi.Input; @@ -17665,10 +17701,6 @@ export namespace container { * for more information. Defaults to false. */ preemptible?: pulumi.Input; - /** - * [GKE Sandbox](https://cloud.google.com/kubernetes-engine/docs/how-to/sandbox-pods) configuration. When enabling this feature you must specify `imageType = "COS_CONTAINERD"` and `nodeVersion = "1.12.7-gke.17"` or later to use it. - * Structure is documented below. - */ sandboxConfig?: pulumi.Input; /** * The service account to be used by the Node VMs. @@ -17680,8 +17712,8 @@ export namespace container { */ shieldedInstanceConfig?: pulumi.Input; /** - * ) A boolean - * that represents whether the underlying node VMs are spot. See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) + * A boolean that represents whether the underlying node VMs are spot. + * See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) * for more information. Defaults to false. */ spot?: pulumi.Input; @@ -22936,6 +22968,10 @@ export namespace gkehub { * (Optional) Structure is documented below. */ git?: pulumi.Input; + /** + * Supported from ACM versions 1.10.0 onwards. Set to true to enable the Config Sync admission webhook to prevent drifts. If set to "false", disables the Config Sync admission webhook and does not prevent drifts. + */ + preventDrift?: pulumi.Input; /** * Specifies whether the Config Sync Repo is in "hierarchical" or "unstructured" mode. */ @@ -25384,14 +25420,32 @@ export namespace monitoring { * String or regex content to match (max 1024 bytes) */ content: pulumi.Input; + /** + * Information needed to perform a JSONPath content match. Used for `ContentMatcherOption::MATCHES_JSON_PATH` and `ContentMatcherOption::NOT_MATCHES_JSON_PATH`. + * Structure is documented below. + */ + jsonPathMatcher?: pulumi.Input; /** * The type of content matcher that will be applied to the server output, compared to the content string when the check is run. * Default value is `CONTAINS_STRING`. - * Possible values are `CONTAINS_STRING`, `NOT_CONTAINS_STRING`, `MATCHES_REGEX`, and `NOT_MATCHES_REGEX`. + * Possible values are `CONTAINS_STRING`, `NOT_CONTAINS_STRING`, `MATCHES_REGEX`, `NOT_MATCHES_REGEX`, `MATCHES_JSON_PATH`, and `NOT_MATCHES_JSON_PATH`. */ matcher?: pulumi.Input; } + export interface UptimeCheckConfigContentMatcherJsonPathMatcher { + /** + * Options to perform JSONPath content matching. + * Default value is `EXACT_MATCH`. + * Possible values are `EXACT_MATCH` and `REGEX_MATCH`. + */ + jsonMatcher?: pulumi.Input; + /** + * JSONPath within the response output pointing to the expected `ContentMatcher::content` to match against. + */ + jsonPath: pulumi.Input; + } + export interface UptimeCheckConfigHttpCheck { /** * The authentication information. Optional when creating an HTTP check; defaults to empty. @@ -25480,6 +25534,7 @@ export namespace monitoring { */ port: pulumi.Input; } + } export namespace networkconnectivity { @@ -29868,6 +29923,10 @@ export namespace sql { updateTrack?: pulumi.Input; } + export interface UserSqlServerUserDetails { + disabled?: pulumi.Input; + serverRoles?: pulumi.Input[]>; + } } export namespace storage { diff --git a/sdk/nodejs/types/output.ts b/sdk/nodejs/types/output.ts index 817dc395df..5ca238bb00 100644 --- a/sdk/nodejs/types/output.ts +++ b/sdk/nodejs/types/output.ts @@ -3331,6 +3331,13 @@ export namespace bigquery { * Valid values are "NONE" or "GZIP". */ compression?: string; + /** + * The connection specifying the credentials to be used to read + * external storage, such as Azure Blob, Cloud Storage, or S3. The `connectionId` can have + * the form `{{project}}.{{location}}.{{connection_id}}` + * or `projects/{{project}}/locations/{{location}}/connections/{{connection_id}}`. + */ + connectionId?: string; /** * Additional properties to set if * `sourceFormat` is set to "CSV". Structure is documented below. @@ -6736,7 +6743,6 @@ export namespace cloudfunctionsv2 { */ retryPolicy?: string; /** - * - * The email of the service account for this function. */ serviceAccountEmail: string; @@ -6795,7 +6801,6 @@ export namespace cloudfunctionsv2 { */ service: string; /** - * - * The email of the service account for this function. */ serviceAccountEmail: string; @@ -9005,6 +9010,10 @@ export namespace compute { * If true requests to different hosts will be cached separately. */ includeHost?: boolean; + /** + * Names of cookies to include in cache keys. + */ + includeNamedCookies?: string[]; /** * If true, http and https requests will be cached separately. */ @@ -9580,6 +9589,7 @@ export namespace compute { export interface GetBackendServiceCdnPolicyCacheKeyPolicy { includeHost: boolean; + includeNamedCookies: string[]; includeProtocol: boolean; includeQueryString: boolean; queryStringBlacklists: string[]; @@ -12733,6 +12743,10 @@ export namespace compute { * If true requests to different hosts will be cached separately. */ includeHost?: boolean; + /** + * Names of cookies to include in cache keys. + */ + includeNamedCookies?: string[]; /** * If true, http and https requests will be cached separately. */ @@ -15470,6 +15484,21 @@ export namespace compute { ruleVisibility?: string; } + export interface SecurityPolicyAdvancedOptionsConfig { + /** + * Whether or not to JSON parse the payload body. Defaults to `DISABLED`. + * * DISABLED - Don't parse JSON payloads in POST bodies. + * * STANDARD - Parse JSON payloads in POST bodies. + */ + jsonParsing: string; + /** + * Log level to use. Defaults to `NORMAL`. + * * NORMAL - Normal log level. + * * VERBOSE - Verbose log level. + */ + logLevel: string; + } + export interface SecurityPolicyRule { /** * Action to take when `match` matches the request. Valid values: @@ -17764,7 +17793,6 @@ export namespace compute { */ service: string; } - } export namespace config { @@ -18676,7 +18704,7 @@ export namespace container { export interface ClusterLoggingConfig { /** - * The GKE components exposing logs. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. + * The GKE components exposing metrics. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. (`WORKLOADS` is deprecated and removed in GKE 1.24.) */ enableComponents: string[]; } @@ -18762,9 +18790,21 @@ export namespace container { export interface ClusterMonitoringConfig { /** - * The GKE components exposing logs. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. + * The GKE components exposing metrics. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. (`WORKLOADS` is deprecated and removed in GKE 1.24.) */ enableComponents: string[]; + /** + * Configuration for Managed Service for Prometheus. Structure is documented below. + */ + managedPrometheus: outputs.container.ClusterMonitoringConfigManagedPrometheus; + } + + export interface ClusterMonitoringConfigManagedPrometheus { + /** + * Enable the PodSecurityPolicy controller for this cluster. + * If enabled, pods must be valid under a PodSecurityPolicy to be created. + */ + enabled: boolean; } export interface ClusterNetworkPolicy { @@ -18883,10 +18923,6 @@ export namespace container { * for more information. Defaults to false. */ preemptible?: boolean; - /** - * [GKE Sandbox](https://cloud.google.com/kubernetes-engine/docs/how-to/sandbox-pods) configuration. When enabling this feature you must specify `imageType = "COS_CONTAINERD"` and `nodeVersion = "1.12.7-gke.17"` or later to use it. - * Structure is documented below. - */ sandboxConfig?: outputs.container.ClusterNodeConfigSandboxConfig; /** * The service account to be used by the Node VMs. @@ -18898,8 +18934,8 @@ export namespace container { */ shieldedInstanceConfig: outputs.container.ClusterNodeConfigShieldedInstanceConfig; /** - * ) A boolean - * that represents whether the underlying node VMs are spot. See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) + * A boolean that represents whether the underlying node VMs are spot. + * See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) * for more information. Defaults to false. */ spot?: boolean; @@ -19215,10 +19251,6 @@ export namespace container { * for more information. Defaults to false. */ preemptible?: boolean; - /** - * [GKE Sandbox](https://cloud.google.com/kubernetes-engine/docs/how-to/sandbox-pods) configuration. When enabling this feature you must specify `imageType = "COS_CONTAINERD"` and `nodeVersion = "1.12.7-gke.17"` or later to use it. - * Structure is documented below. - */ sandboxConfig?: outputs.container.ClusterNodePoolNodeConfigSandboxConfig; /** * The service account to be used by the Node VMs. @@ -19230,8 +19262,8 @@ export namespace container { */ shieldedInstanceConfig: outputs.container.ClusterNodePoolNodeConfigShieldedInstanceConfig; /** - * ) A boolean - * that represents whether the underlying node VMs are spot. See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) + * A boolean that represents whether the underlying node VMs are spot. + * See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) * for more information. Defaults to false. */ spot?: boolean; @@ -19686,6 +19718,11 @@ export namespace container { export interface GetClusterMonitoringConfig { enableComponents: string[]; + managedPrometheuses: outputs.container.GetClusterMonitoringConfigManagedPrometheus[]; + } + + export interface GetClusterMonitoringConfigManagedPrometheus { + enabled: boolean; } export interface GetClusterNetworkPolicy { @@ -20070,7 +20107,6 @@ export namespace container { */ maxUnavailable: number; } - } export namespace containeranalysis { @@ -25058,6 +25094,10 @@ export namespace gkehub { * (Optional) Structure is documented below. */ git?: outputs.gkehub.FeatureMembershipConfigmanagementConfigSyncGit; + /** + * Supported from ACM versions 1.10.0 onwards. Set to true to enable the Config Sync admission webhook to prevent drifts. If set to "false", disables the Config Sync admission webhook and does not prevent drifts. + */ + preventDrift: boolean; /** * Specifies whether the Config Sync Repo is in "hierarchical" or "unstructured" mode. */ @@ -27603,14 +27643,32 @@ export namespace monitoring { * String or regex content to match (max 1024 bytes) */ content: string; + /** + * Information needed to perform a JSONPath content match. Used for `ContentMatcherOption::MATCHES_JSON_PATH` and `ContentMatcherOption::NOT_MATCHES_JSON_PATH`. + * Structure is documented below. + */ + jsonPathMatcher?: outputs.monitoring.UptimeCheckConfigContentMatcherJsonPathMatcher; /** * The type of content matcher that will be applied to the server output, compared to the content string when the check is run. * Default value is `CONTAINS_STRING`. - * Possible values are `CONTAINS_STRING`, `NOT_CONTAINS_STRING`, `MATCHES_REGEX`, and `NOT_MATCHES_REGEX`. + * Possible values are `CONTAINS_STRING`, `NOT_CONTAINS_STRING`, `MATCHES_REGEX`, `NOT_MATCHES_REGEX`, `MATCHES_JSON_PATH`, and `NOT_MATCHES_JSON_PATH`. */ matcher?: string; } + export interface UptimeCheckConfigContentMatcherJsonPathMatcher { + /** + * Options to perform JSONPath content matching. + * Default value is `EXACT_MATCH`. + * Possible values are `EXACT_MATCH` and `REGEX_MATCH`. + */ + jsonMatcher?: string; + /** + * JSONPath within the response output pointing to the expected `ContentMatcher::content` to match against. + */ + jsonPath: string; + } + export interface UptimeCheckConfigHttpCheck { /** * The authentication information. Optional when creating an HTTP check; defaults to empty. @@ -27699,7 +27757,6 @@ export namespace monitoring { */ port: number; } - } export namespace networkconnectivity { @@ -32357,6 +32414,11 @@ export namespace sql { updateTrack: string; } + export interface UserSqlServerUserDetails { + disabled?: boolean; + serverRoles?: string[]; + } + } export namespace storage { diff --git a/sdk/python/pulumi_gcp/bigquery/_inputs.py b/sdk/python/pulumi_gcp/bigquery/_inputs.py index f38c389ed2..b185424473 100644 --- a/sdk/python/pulumi_gcp/bigquery/_inputs.py +++ b/sdk/python/pulumi_gcp/bigquery/_inputs.py @@ -3081,6 +3081,7 @@ def __init__(__self__, *, source_format: pulumi.Input[str], source_uris: pulumi.Input[Sequence[pulumi.Input[str]]], compression: Optional[pulumi.Input[str]] = None, + connection_id: Optional[pulumi.Input[str]] = None, csv_options: Optional[pulumi.Input['TableExternalDataConfigurationCsvOptionsArgs']] = None, google_sheets_options: Optional[pulumi.Input['TableExternalDataConfigurationGoogleSheetsOptionsArgs']] = None, hive_partitioning_options: Optional[pulumi.Input['TableExternalDataConfigurationHivePartitioningOptionsArgs']] = None, @@ -3099,6 +3100,10 @@ def __init__(__self__, *, your data in Google Cloud. :param pulumi.Input[str] compression: The compression type of the data source. Valid values are "NONE" or "GZIP". + :param pulumi.Input[str] connection_id: The connection specifying the credentials to be used to read + external storage, such as Azure Blob, Cloud Storage, or S3. The `connection_id` can have + the form `{{project}}.{{location}}.{{connection_id}}` + or `projects/{{project}}/locations/{{location}}/connections/{{connection_id}}`. :param pulumi.Input['TableExternalDataConfigurationCsvOptionsArgs'] csv_options: Additional properties to set if `source_format` is set to "CSV". Structure is documented below. :param pulumi.Input['TableExternalDataConfigurationGoogleSheetsOptionsArgs'] google_sheets_options: Additional options if @@ -3133,6 +3138,8 @@ def __init__(__self__, *, pulumi.set(__self__, "source_uris", source_uris) if compression is not None: pulumi.set(__self__, "compression", compression) + if connection_id is not None: + pulumi.set(__self__, "connection_id", connection_id) if csv_options is not None: pulumi.set(__self__, "csv_options", csv_options) if google_sheets_options is not None: @@ -3201,6 +3208,21 @@ def compression(self) -> Optional[pulumi.Input[str]]: def compression(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "compression", value) + @property + @pulumi.getter(name="connectionId") + def connection_id(self) -> Optional[pulumi.Input[str]]: + """ + The connection specifying the credentials to be used to read + external storage, such as Azure Blob, Cloud Storage, or S3. The `connection_id` can have + the form `{{project}}.{{location}}.{{connection_id}}` + or `projects/{{project}}/locations/{{location}}/connections/{{connection_id}}`. + """ + return pulumi.get(self, "connection_id") + + @connection_id.setter + def connection_id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "connection_id", value) + @property @pulumi.getter(name="csvOptions") def csv_options(self) -> Optional[pulumi.Input['TableExternalDataConfigurationCsvOptionsArgs']]: diff --git a/sdk/python/pulumi_gcp/bigquery/outputs.py b/sdk/python/pulumi_gcp/bigquery/outputs.py index fc8d64924c..607346b166 100644 --- a/sdk/python/pulumi_gcp/bigquery/outputs.py +++ b/sdk/python/pulumi_gcp/bigquery/outputs.py @@ -3245,6 +3245,8 @@ def __key_warning(key: str): suggest = "source_format" elif key == "sourceUris": suggest = "source_uris" + elif key == "connectionId": + suggest = "connection_id" elif key == "csvOptions": suggest = "csv_options" elif key == "googleSheetsOptions": @@ -3272,6 +3274,7 @@ def __init__(__self__, *, source_format: str, source_uris: Sequence[str], compression: Optional[str] = None, + connection_id: Optional[str] = None, csv_options: Optional['outputs.TableExternalDataConfigurationCsvOptions'] = None, google_sheets_options: Optional['outputs.TableExternalDataConfigurationGoogleSheetsOptions'] = None, hive_partitioning_options: Optional['outputs.TableExternalDataConfigurationHivePartitioningOptions'] = None, @@ -3290,6 +3293,10 @@ def __init__(__self__, *, your data in Google Cloud. :param str compression: The compression type of the data source. Valid values are "NONE" or "GZIP". + :param str connection_id: The connection specifying the credentials to be used to read + external storage, such as Azure Blob, Cloud Storage, or S3. The `connection_id` can have + the form `{{project}}.{{location}}.{{connection_id}}` + or `projects/{{project}}/locations/{{location}}/connections/{{connection_id}}`. :param 'TableExternalDataConfigurationCsvOptionsArgs' csv_options: Additional properties to set if `source_format` is set to "CSV". Structure is documented below. :param 'TableExternalDataConfigurationGoogleSheetsOptionsArgs' google_sheets_options: Additional options if @@ -3324,6 +3331,8 @@ def __init__(__self__, *, pulumi.set(__self__, "source_uris", source_uris) if compression is not None: pulumi.set(__self__, "compression", compression) + if connection_id is not None: + pulumi.set(__self__, "connection_id", connection_id) if csv_options is not None: pulumi.set(__self__, "csv_options", csv_options) if google_sheets_options is not None: @@ -3376,6 +3385,17 @@ def compression(self) -> Optional[str]: """ return pulumi.get(self, "compression") + @property + @pulumi.getter(name="connectionId") + def connection_id(self) -> Optional[str]: + """ + The connection specifying the credentials to be used to read + external storage, such as Azure Blob, Cloud Storage, or S3. The `connection_id` can have + the form `{{project}}.{{location}}.{{connection_id}}` + or `projects/{{project}}/locations/{{location}}/connections/{{connection_id}}`. + """ + return pulumi.get(self, "connection_id") + @property @pulumi.getter(name="csvOptions") def csv_options(self) -> Optional['outputs.TableExternalDataConfigurationCsvOptions']: diff --git a/sdk/python/pulumi_gcp/clouddeploy/delivery_pipeline.py b/sdk/python/pulumi_gcp/clouddeploy/delivery_pipeline.py index 72eedf300f..f88b32bf5e 100644 --- a/sdk/python/pulumi_gcp/clouddeploy/delivery_pipeline.py +++ b/sdk/python/pulumi_gcp/clouddeploy/delivery_pipeline.py @@ -347,7 +347,7 @@ def __init__(__self__, serial_pipeline: Optional[pulumi.Input[pulumi.InputType['DeliveryPipelineSerialPipelineArgs']]] = None, __props__=None): """ - The Clouddeploy DeliveryPipeline resource + The Cloud Deploy `DeliveryPipeline` resource ## Example Usage ### Delivery_pipeline @@ -418,7 +418,7 @@ def __init__(__self__, args: DeliveryPipelineArgs, opts: Optional[pulumi.ResourceOptions] = None): """ - The Clouddeploy DeliveryPipeline resource + The Cloud Deploy `DeliveryPipeline` resource ## Example Usage ### Delivery_pipeline diff --git a/sdk/python/pulumi_gcp/clouddeploy/target.py b/sdk/python/pulumi_gcp/clouddeploy/target.py index d701a033f0..136f42d7f5 100644 --- a/sdk/python/pulumi_gcp/clouddeploy/target.py +++ b/sdk/python/pulumi_gcp/clouddeploy/target.py @@ -446,7 +446,7 @@ def __init__(__self__, require_approval: Optional[pulumi.Input[bool]] = None, __props__=None): """ - The Clouddeploy Target resource + The Cloud Deploy `Target` resource ## Example Usage ### Target @@ -509,7 +509,7 @@ def __init__(__self__, args: TargetArgs, opts: Optional[pulumi.ResourceOptions] = None): """ - The Clouddeploy Target resource + The Cloud Deploy `Target` resource ## Example Usage ### Target diff --git a/sdk/python/pulumi_gcp/cloudfunctionsv2/_inputs.py b/sdk/python/pulumi_gcp/cloudfunctionsv2/_inputs.py index 6930d84cc4..04e83059ad 100644 --- a/sdk/python/pulumi_gcp/cloudfunctionsv2/_inputs.py +++ b/sdk/python/pulumi_gcp/cloudfunctionsv2/_inputs.py @@ -391,8 +391,7 @@ def __init__(__self__, *, :param pulumi.Input[str] retry_policy: Describes the retry policy in case of function's execution failure. Retried execution is charged as any other execution. Possible values are `RETRY_POLICY_UNSPECIFIED`, `RETRY_POLICY_DO_NOT_RETRY`, and `RETRY_POLICY_RETRY`. - :param pulumi.Input[str] service_account_email: - - The email of the service account for this function. + :param pulumi.Input[str] service_account_email: The email of the service account for this function. :param pulumi.Input[str] trigger: - The resource name of the Eventarc trigger. :param pulumi.Input[str] trigger_region: The region that the trigger will be in. The trigger will only receive @@ -456,7 +455,6 @@ def retry_policy(self, value: Optional[pulumi.Input[str]]): @pulumi.getter(name="serviceAccountEmail") def service_account_email(self) -> Optional[pulumi.Input[str]]: """ - - The email of the service account for this function. """ return pulumi.get(self, "service_account_email") @@ -526,8 +524,7 @@ def __init__(__self__, *, :param pulumi.Input[int] min_instance_count: The limit on the minimum number of function instances that may coexist at a given time. :param pulumi.Input[str] service: Name of the service associated with a Function. - :param pulumi.Input[str] service_account_email: - - The email of the service account for this function. + :param pulumi.Input[str] service_account_email: The email of the service account for this function. :param pulumi.Input[int] timeout_seconds: The function execution timeout. Execution is considered failed and can be terminated if the function is not completed at the end of the timeout period. Defaults to 60 seconds. @@ -671,7 +668,6 @@ def service(self, value: Optional[pulumi.Input[str]]): @pulumi.getter(name="serviceAccountEmail") def service_account_email(self) -> Optional[pulumi.Input[str]]: """ - - The email of the service account for this function. """ return pulumi.get(self, "service_account_email") diff --git a/sdk/python/pulumi_gcp/cloudfunctionsv2/function.py b/sdk/python/pulumi_gcp/cloudfunctionsv2/function.py index 3ebaf69531..621d6078f6 100644 --- a/sdk/python/pulumi_gcp/cloudfunctionsv2/function.py +++ b/sdk/python/pulumi_gcp/cloudfunctionsv2/function.py @@ -416,6 +416,10 @@ def __init__(__self__, import pulumi import pulumi_gcp as gcp + account = gcp.service_account.Account("account", + account_id="test-service-account", + display_name="Test Service Account", + opts=pulumi.ResourceOptions(provider=google_beta)) sub = gcp.pubsub.Topic("sub", opts=pulumi.ResourceOptions(provider=google_beta)) bucket = gcp.storage.Bucket("bucket", location="US", @@ -451,12 +455,14 @@ def __init__(__self__, }, ingress_settings="ALLOW_INTERNAL_ONLY", all_traffic_on_latest_revision=True, + service_account_email=account.email, ), event_trigger=gcp.cloudfunctionsv2.FunctionEventTriggerArgs( trigger_region="us-central1", event_type="google.cloud.pubsub.topic.v1.messagePublished", pubsub_topic=sub.id, retry_policy="RETRY_POLICY_RETRY", + service_account_email=account.email, ), opts=pulumi.ResourceOptions(provider=google_beta)) ``` @@ -543,6 +549,10 @@ def __init__(__self__, import pulumi import pulumi_gcp as gcp + account = gcp.service_account.Account("account", + account_id="test-service-account", + display_name="Test Service Account", + opts=pulumi.ResourceOptions(provider=google_beta)) sub = gcp.pubsub.Topic("sub", opts=pulumi.ResourceOptions(provider=google_beta)) bucket = gcp.storage.Bucket("bucket", location="US", @@ -578,12 +588,14 @@ def __init__(__self__, }, ingress_settings="ALLOW_INTERNAL_ONLY", all_traffic_on_latest_revision=True, + service_account_email=account.email, ), event_trigger=gcp.cloudfunctionsv2.FunctionEventTriggerArgs( trigger_region="us-central1", event_type="google.cloud.pubsub.topic.v1.messagePublished", pubsub_topic=sub.id, retry_policy="RETRY_POLICY_RETRY", + service_account_email=account.email, ), opts=pulumi.ResourceOptions(provider=google_beta)) ``` diff --git a/sdk/python/pulumi_gcp/cloudfunctionsv2/outputs.py b/sdk/python/pulumi_gcp/cloudfunctionsv2/outputs.py index 296bdf3681..af4cf0b6ae 100644 --- a/sdk/python/pulumi_gcp/cloudfunctionsv2/outputs.py +++ b/sdk/python/pulumi_gcp/cloudfunctionsv2/outputs.py @@ -410,8 +410,7 @@ def __init__(__self__, *, :param str retry_policy: Describes the retry policy in case of function's execution failure. Retried execution is charged as any other execution. Possible values are `RETRY_POLICY_UNSPECIFIED`, `RETRY_POLICY_DO_NOT_RETRY`, and `RETRY_POLICY_RETRY`. - :param str service_account_email: - - The email of the service account for this function. + :param str service_account_email: The email of the service account for this function. :param str trigger: - The resource name of the Eventarc trigger. :param str trigger_region: The region that the trigger will be in. The trigger will only receive @@ -463,7 +462,6 @@ def retry_policy(self) -> Optional[str]: @pulumi.getter(name="serviceAccountEmail") def service_account_email(self) -> Optional[str]: """ - - The email of the service account for this function. """ return pulumi.get(self, "service_account_email") @@ -558,8 +556,7 @@ def __init__(__self__, *, :param int min_instance_count: The limit on the minimum number of function instances that may coexist at a given time. :param str service: Name of the service associated with a Function. - :param str service_account_email: - - The email of the service account for this function. + :param str service_account_email: The email of the service account for this function. :param int timeout_seconds: The function execution timeout. Execution is considered failed and can be terminated if the function is not completed at the end of the timeout period. Defaults to 60 seconds. @@ -671,7 +668,6 @@ def service(self) -> Optional[str]: @pulumi.getter(name="serviceAccountEmail") def service_account_email(self) -> Optional[str]: """ - - The email of the service account for this function. """ return pulumi.get(self, "service_account_email") diff --git a/sdk/python/pulumi_gcp/compute/_inputs.py b/sdk/python/pulumi_gcp/compute/_inputs.py index 112983fb21..aafcaa636a 100644 --- a/sdk/python/pulumi_gcp/compute/_inputs.py +++ b/sdk/python/pulumi_gcp/compute/_inputs.py @@ -306,6 +306,7 @@ 'RouterPeerBfdArgs', 'SecurityPolicyAdaptiveProtectionConfigArgs', 'SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigArgs', + 'SecurityPolicyAdvancedOptionsConfigArgs', 'SecurityPolicyRuleArgs', 'SecurityPolicyRuleMatchArgs', 'SecurityPolicyRuleMatchConfigArgs', @@ -2631,12 +2632,14 @@ def signed_url_cache_max_age_sec(self, value: Optional[pulumi.Input[int]]): class BackendServiceCdnPolicyCacheKeyPolicyArgs: def __init__(__self__, *, include_host: Optional[pulumi.Input[bool]] = None, + include_named_cookies: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, include_protocol: Optional[pulumi.Input[bool]] = None, include_query_string: Optional[pulumi.Input[bool]] = None, query_string_blacklists: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, query_string_whitelists: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None): """ :param pulumi.Input[bool] include_host: If true requests to different hosts will be cached separately. + :param pulumi.Input[Sequence[pulumi.Input[str]]] include_named_cookies: Names of cookies to include in cache keys. :param pulumi.Input[bool] include_protocol: If true, http and https requests will be cached separately. :param pulumi.Input[bool] include_query_string: If true, include query string parameters in the cache key according to query_string_whitelist and @@ -2657,6 +2660,8 @@ def __init__(__self__, *, """ if include_host is not None: pulumi.set(__self__, "include_host", include_host) + if include_named_cookies is not None: + pulumi.set(__self__, "include_named_cookies", include_named_cookies) if include_protocol is not None: pulumi.set(__self__, "include_protocol", include_protocol) if include_query_string is not None: @@ -2678,6 +2683,18 @@ def include_host(self) -> Optional[pulumi.Input[bool]]: def include_host(self, value: Optional[pulumi.Input[bool]]): pulumi.set(self, "include_host", value) + @property + @pulumi.getter(name="includeNamedCookies") + def include_named_cookies(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + Names of cookies to include in cache keys. + """ + return pulumi.get(self, "include_named_cookies") + + @include_named_cookies.setter + def include_named_cookies(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "include_named_cookies", value) + @property @pulumi.getter(name="includeProtocol") def include_protocol(self) -> Optional[pulumi.Input[bool]]: @@ -12618,12 +12635,14 @@ def signed_url_cache_max_age_sec(self, value: Optional[pulumi.Input[int]]): class RegionBackendServiceCdnPolicyCacheKeyPolicyArgs: def __init__(__self__, *, include_host: Optional[pulumi.Input[bool]] = None, + include_named_cookies: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, include_protocol: Optional[pulumi.Input[bool]] = None, include_query_string: Optional[pulumi.Input[bool]] = None, query_string_blacklists: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, query_string_whitelists: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None): """ :param pulumi.Input[bool] include_host: If true requests to different hosts will be cached separately. + :param pulumi.Input[Sequence[pulumi.Input[str]]] include_named_cookies: Names of cookies to include in cache keys. :param pulumi.Input[bool] include_protocol: If true, http and https requests will be cached separately. :param pulumi.Input[bool] include_query_string: If true, include query string parameters in the cache key according to query_string_whitelist and @@ -12644,6 +12663,8 @@ def __init__(__self__, *, """ if include_host is not None: pulumi.set(__self__, "include_host", include_host) + if include_named_cookies is not None: + pulumi.set(__self__, "include_named_cookies", include_named_cookies) if include_protocol is not None: pulumi.set(__self__, "include_protocol", include_protocol) if include_query_string is not None: @@ -12665,6 +12686,18 @@ def include_host(self) -> Optional[pulumi.Input[bool]]: def include_host(self, value: Optional[pulumi.Input[bool]]): pulumi.set(self, "include_host", value) + @property + @pulumi.getter(name="includeNamedCookies") + def include_named_cookies(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + Names of cookies to include in cache keys. + """ + return pulumi.get(self, "include_named_cookies") + + @include_named_cookies.setter + def include_named_cookies(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "include_named_cookies", value) + @property @pulumi.getter(name="includeProtocol") def include_protocol(self) -> Optional[pulumi.Input[bool]]: @@ -21120,6 +21153,53 @@ def rule_visibility(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "rule_visibility", value) +@pulumi.input_type +class SecurityPolicyAdvancedOptionsConfigArgs: + def __init__(__self__, *, + json_parsing: Optional[pulumi.Input[str]] = None, + log_level: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] json_parsing: Whether or not to JSON parse the payload body. Defaults to `DISABLED`. + * DISABLED - Don't parse JSON payloads in POST bodies. + * STANDARD - Parse JSON payloads in POST bodies. + :param pulumi.Input[str] log_level: Log level to use. Defaults to `NORMAL`. + * NORMAL - Normal log level. + * VERBOSE - Verbose log level. + """ + if json_parsing is not None: + pulumi.set(__self__, "json_parsing", json_parsing) + if log_level is not None: + pulumi.set(__self__, "log_level", log_level) + + @property + @pulumi.getter(name="jsonParsing") + def json_parsing(self) -> Optional[pulumi.Input[str]]: + """ + Whether or not to JSON parse the payload body. Defaults to `DISABLED`. + * DISABLED - Don't parse JSON payloads in POST bodies. + * STANDARD - Parse JSON payloads in POST bodies. + """ + return pulumi.get(self, "json_parsing") + + @json_parsing.setter + def json_parsing(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "json_parsing", value) + + @property + @pulumi.getter(name="logLevel") + def log_level(self) -> Optional[pulumi.Input[str]]: + """ + Log level to use. Defaults to `NORMAL`. + * NORMAL - Normal log level. + * VERBOSE - Verbose log level. + """ + return pulumi.get(self, "log_level") + + @log_level.setter + def log_level(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "log_level", value) + + @pulumi.input_type class SecurityPolicyRuleArgs: def __init__(__self__, *, diff --git a/sdk/python/pulumi_gcp/compute/backend_service.py b/sdk/python/pulumi_gcp/compute/backend_service.py index e195722e79..c40102518c 100644 --- a/sdk/python/pulumi_gcp/compute/backend_service.py +++ b/sdk/python/pulumi_gcp/compute/backend_service.py @@ -1190,6 +1190,30 @@ def __init__(__self__, signed_url_cache_max_age_sec=7200, )) ``` + ### Backend Service Cache Include Named Cookies + + ```python + import pulumi + import pulumi_gcp as gcp + + default = gcp.compute.BackendService("default", + cdn_policy=gcp.compute.BackendServiceCdnPolicyArgs( + cache_key_policy=gcp.compute.BackendServiceCdnPolicyCacheKeyPolicyArgs( + include_host=True, + include_named_cookies=[ + "__next_preview_data", + "__prerender_bypass", + ], + include_protocol=True, + include_query_string=True, + ), + cache_mode="CACHE_ALL_STATIC", + client_ttl=7200, + default_ttl=3600, + max_ttl=10800, + ), + enable_cdn=True) + ``` ### Backend Service Cache ```python @@ -1461,6 +1485,30 @@ def __init__(__self__, signed_url_cache_max_age_sec=7200, )) ``` + ### Backend Service Cache Include Named Cookies + + ```python + import pulumi + import pulumi_gcp as gcp + + default = gcp.compute.BackendService("default", + cdn_policy=gcp.compute.BackendServiceCdnPolicyArgs( + cache_key_policy=gcp.compute.BackendServiceCdnPolicyCacheKeyPolicyArgs( + include_host=True, + include_named_cookies=[ + "__next_preview_data", + "__prerender_bypass", + ], + include_protocol=True, + include_query_string=True, + ), + cache_mode="CACHE_ALL_STATIC", + client_ttl=7200, + default_ttl=3600, + max_ttl=10800, + ), + enable_cdn=True) + ``` ### Backend Service Cache ```python diff --git a/sdk/python/pulumi_gcp/compute/instance_group.py b/sdk/python/pulumi_gcp/compute/instance_group.py index ef4bd4dce3..bbbd78d298 100644 --- a/sdk/python/pulumi_gcp/compute/instance_group.py +++ b/sdk/python/pulumi_gcp/compute/instance_group.py @@ -26,9 +26,8 @@ def __init__(__self__, *, The set of arguments for constructing a InstanceGroup resource. :param pulumi.Input[str] description: An optional textual description of the instance group. - :param pulumi.Input[Sequence[pulumi.Input[str]]] instances: List of instances in the group. They should be given - as either self_link or id. When adding instances they must all be in the same - network and zone as the instance group. + :param pulumi.Input[Sequence[pulumi.Input[str]]] instances: The list of instances in the group, in `self_link` format. + When adding instances they must all be in the same network and zone as the instance group. :param pulumi.Input[str] name: The name which the port will be mapped to. :param pulumi.Input[Sequence[pulumi.Input['InstanceGroupNamedPortArgs']]] named_ports: The named port configuration. See the section below for details on configuration. Structure is documented below. @@ -72,9 +71,8 @@ def description(self, value: Optional[pulumi.Input[str]]): @pulumi.getter def instances(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: """ - List of instances in the group. They should be given - as either self_link or id. When adding instances they must all be in the same - network and zone as the instance group. + The list of instances in the group, in `self_link` format. + When adding instances they must all be in the same network and zone as the instance group. """ return pulumi.get(self, "instances") @@ -164,9 +162,8 @@ def __init__(__self__, *, Input properties used for looking up and filtering InstanceGroup resources. :param pulumi.Input[str] description: An optional textual description of the instance group. - :param pulumi.Input[Sequence[pulumi.Input[str]]] instances: List of instances in the group. They should be given - as either self_link or id. When adding instances they must all be in the same - network and zone as the instance group. + :param pulumi.Input[Sequence[pulumi.Input[str]]] instances: The list of instances in the group, in `self_link` format. + When adding instances they must all be in the same network and zone as the instance group. :param pulumi.Input[str] name: The name which the port will be mapped to. :param pulumi.Input[Sequence[pulumi.Input['InstanceGroupNamedPortArgs']]] named_ports: The named port configuration. See the section below for details on configuration. Structure is documented below. @@ -216,9 +213,8 @@ def description(self, value: Optional[pulumi.Input[str]]): @pulumi.getter def instances(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: """ - List of instances in the group. They should be given - as either self_link or id. When adding instances they must all be in the same - network and zone as the instance group. + The list of instances in the group, in `self_link` format. + When adding instances they must all be in the same network and zone as the instance group. """ return pulumi.get(self, "instances") @@ -435,9 +431,8 @@ def __init__(__self__, :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[str] description: An optional textual description of the instance group. - :param pulumi.Input[Sequence[pulumi.Input[str]]] instances: List of instances in the group. They should be given - as either self_link or id. When adding instances they must all be in the same - network and zone as the instance group. + :param pulumi.Input[Sequence[pulumi.Input[str]]] instances: The list of instances in the group, in `self_link` format. + When adding instances they must all be in the same network and zone as the instance group. :param pulumi.Input[str] name: The name which the port will be mapped to. :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['InstanceGroupNamedPortArgs']]]] named_ports: The named port configuration. See the section below for details on configuration. Structure is documented below. @@ -628,9 +623,8 @@ def get(resource_name: str, :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[str] description: An optional textual description of the instance group. - :param pulumi.Input[Sequence[pulumi.Input[str]]] instances: List of instances in the group. They should be given - as either self_link or id. When adding instances they must all be in the same - network and zone as the instance group. + :param pulumi.Input[Sequence[pulumi.Input[str]]] instances: The list of instances in the group, in `self_link` format. + When adding instances they must all be in the same network and zone as the instance group. :param pulumi.Input[str] name: The name which the port will be mapped to. :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['InstanceGroupNamedPortArgs']]]] named_ports: The named port configuration. See the section below for details on configuration. Structure is documented below. @@ -672,9 +666,8 @@ def description(self) -> pulumi.Output[Optional[str]]: @pulumi.getter def instances(self) -> pulumi.Output[Sequence[str]]: """ - List of instances in the group. They should be given - as either self_link or id. When adding instances they must all be in the same - network and zone as the instance group. + The list of instances in the group, in `self_link` format. + When adding instances they must all be in the same network and zone as the instance group. """ return pulumi.get(self, "instances") diff --git a/sdk/python/pulumi_gcp/compute/network.py b/sdk/python/pulumi_gcp/compute/network.py index cb563d0b54..d557c7c0a2 100644 --- a/sdk/python/pulumi_gcp/compute/network.py +++ b/sdk/python/pulumi_gcp/compute/network.py @@ -16,6 +16,8 @@ def __init__(__self__, *, auto_create_subnetworks: Optional[pulumi.Input[bool]] = None, delete_default_routes_on_create: Optional[pulumi.Input[bool]] = None, description: Optional[pulumi.Input[str]] = None, + enable_ula_internal_ipv6: Optional[pulumi.Input[bool]] = None, + internal_ipv6_range: Optional[pulumi.Input[str]] = None, mtu: Optional[pulumi.Input[int]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, @@ -31,6 +33,13 @@ def __init__(__self__, *, immediately after network creation. Defaults to `false`. :param pulumi.Input[str] description: An optional description of this resource. The resource must be recreated to modify this field. + :param pulumi.Input[bool] enable_ula_internal_ipv6: Enable ULA internal ipv6 on this network. Enabling this feature will assign + a /48 from google defined ULA prefix fd20::/20. + :param pulumi.Input[str] internal_ipv6_range: When enabling ula internal ipv6, caller optionally can specify the /48 range + they want from the google defined ULA prefix fd20::/20. The input must be a + valid /48 ULA IPv6 address and must be within the fd20::/20. Operation will + fail if the speficied /48 is already in used by another resource. + If the field is not speficied, then a /48 range will be randomly allocated from fd20::/20 and returned via this field. :param pulumi.Input[int] mtu: Maximum Transmission Unit in bytes. The minimum value for this field is 1460 and the maximum value is 1500 bytes. :param pulumi.Input[str] name: Name of the resource. Provided by the client when the resource is @@ -55,6 +64,10 @@ def __init__(__self__, *, pulumi.set(__self__, "delete_default_routes_on_create", delete_default_routes_on_create) if description is not None: pulumi.set(__self__, "description", description) + if enable_ula_internal_ipv6 is not None: + pulumi.set(__self__, "enable_ula_internal_ipv6", enable_ula_internal_ipv6) + if internal_ipv6_range is not None: + pulumi.set(__self__, "internal_ipv6_range", internal_ipv6_range) if mtu is not None: pulumi.set(__self__, "mtu", mtu) if name is not None: @@ -106,6 +119,35 @@ def description(self) -> Optional[pulumi.Input[str]]: def description(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "description", value) + @property + @pulumi.getter(name="enableUlaInternalIpv6") + def enable_ula_internal_ipv6(self) -> Optional[pulumi.Input[bool]]: + """ + Enable ULA internal ipv6 on this network. Enabling this feature will assign + a /48 from google defined ULA prefix fd20::/20. + """ + return pulumi.get(self, "enable_ula_internal_ipv6") + + @enable_ula_internal_ipv6.setter + def enable_ula_internal_ipv6(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "enable_ula_internal_ipv6", value) + + @property + @pulumi.getter(name="internalIpv6Range") + def internal_ipv6_range(self) -> Optional[pulumi.Input[str]]: + """ + When enabling ula internal ipv6, caller optionally can specify the /48 range + they want from the google defined ULA prefix fd20::/20. The input must be a + valid /48 ULA IPv6 address and must be within the fd20::/20. Operation will + fail if the speficied /48 is already in used by another resource. + If the field is not speficied, then a /48 range will be randomly allocated from fd20::/20 and returned via this field. + """ + return pulumi.get(self, "internal_ipv6_range") + + @internal_ipv6_range.setter + def internal_ipv6_range(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "internal_ipv6_range", value) + @property @pulumi.getter def mtu(self) -> Optional[pulumi.Input[int]]: @@ -174,7 +216,9 @@ def __init__(__self__, *, auto_create_subnetworks: Optional[pulumi.Input[bool]] = None, delete_default_routes_on_create: Optional[pulumi.Input[bool]] = None, description: Optional[pulumi.Input[str]] = None, + enable_ula_internal_ipv6: Optional[pulumi.Input[bool]] = None, gateway_ipv4: Optional[pulumi.Input[str]] = None, + internal_ipv6_range: Optional[pulumi.Input[str]] = None, mtu: Optional[pulumi.Input[int]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, @@ -191,7 +235,14 @@ def __init__(__self__, *, immediately after network creation. Defaults to `false`. :param pulumi.Input[str] description: An optional description of this resource. The resource must be recreated to modify this field. + :param pulumi.Input[bool] enable_ula_internal_ipv6: Enable ULA internal ipv6 on this network. Enabling this feature will assign + a /48 from google defined ULA prefix fd20::/20. :param pulumi.Input[str] gateway_ipv4: The gateway address for default routing out of the network. This value is selected by GCP. + :param pulumi.Input[str] internal_ipv6_range: When enabling ula internal ipv6, caller optionally can specify the /48 range + they want from the google defined ULA prefix fd20::/20. The input must be a + valid /48 ULA IPv6 address and must be within the fd20::/20. Operation will + fail if the speficied /48 is already in used by another resource. + If the field is not speficied, then a /48 range will be randomly allocated from fd20::/20 and returned via this field. :param pulumi.Input[int] mtu: Maximum Transmission Unit in bytes. The minimum value for this field is 1460 and the maximum value is 1500 bytes. :param pulumi.Input[str] name: Name of the resource. Provided by the client when the resource is @@ -217,8 +268,12 @@ def __init__(__self__, *, pulumi.set(__self__, "delete_default_routes_on_create", delete_default_routes_on_create) if description is not None: pulumi.set(__self__, "description", description) + if enable_ula_internal_ipv6 is not None: + pulumi.set(__self__, "enable_ula_internal_ipv6", enable_ula_internal_ipv6) if gateway_ipv4 is not None: pulumi.set(__self__, "gateway_ipv4", gateway_ipv4) + if internal_ipv6_range is not None: + pulumi.set(__self__, "internal_ipv6_range", internal_ipv6_range) if mtu is not None: pulumi.set(__self__, "mtu", mtu) if name is not None: @@ -272,6 +327,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="enableUlaInternalIpv6") + def enable_ula_internal_ipv6(self) -> Optional[pulumi.Input[bool]]: + """ + Enable ULA internal ipv6 on this network. Enabling this feature will assign + a /48 from google defined ULA prefix fd20::/20. + """ + return pulumi.get(self, "enable_ula_internal_ipv6") + + @enable_ula_internal_ipv6.setter + def enable_ula_internal_ipv6(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "enable_ula_internal_ipv6", value) + @property @pulumi.getter(name="gatewayIpv4") def gateway_ipv4(self) -> Optional[pulumi.Input[str]]: @@ -284,6 +352,22 @@ def gateway_ipv4(self) -> Optional[pulumi.Input[str]]: def gateway_ipv4(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "gateway_ipv4", value) + @property + @pulumi.getter(name="internalIpv6Range") + def internal_ipv6_range(self) -> Optional[pulumi.Input[str]]: + """ + When enabling ula internal ipv6, caller optionally can specify the /48 range + they want from the google defined ULA prefix fd20::/20. The input must be a + valid /48 ULA IPv6 address and must be within the fd20::/20. Operation will + fail if the speficied /48 is already in used by another resource. + If the field is not speficied, then a /48 range will be randomly allocated from fd20::/20 and returned via this field. + """ + return pulumi.get(self, "internal_ipv6_range") + + @internal_ipv6_range.setter + def internal_ipv6_range(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "internal_ipv6_range", value) + @property @pulumi.getter def mtu(self) -> Optional[pulumi.Input[int]]: @@ -366,6 +450,8 @@ def __init__(__self__, auto_create_subnetworks: Optional[pulumi.Input[bool]] = None, delete_default_routes_on_create: Optional[pulumi.Input[bool]] = None, description: Optional[pulumi.Input[str]] = None, + enable_ula_internal_ipv6: Optional[pulumi.Input[bool]] = None, + internal_ipv6_range: Optional[pulumi.Input[str]] = None, mtu: Optional[pulumi.Input[int]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, @@ -428,6 +514,13 @@ def __init__(__self__, immediately after network creation. Defaults to `false`. :param pulumi.Input[str] description: An optional description of this resource. The resource must be recreated to modify this field. + :param pulumi.Input[bool] enable_ula_internal_ipv6: Enable ULA internal ipv6 on this network. Enabling this feature will assign + a /48 from google defined ULA prefix fd20::/20. + :param pulumi.Input[str] internal_ipv6_range: When enabling ula internal ipv6, caller optionally can specify the /48 range + they want from the google defined ULA prefix fd20::/20. The input must be a + valid /48 ULA IPv6 address and must be within the fd20::/20. Operation will + fail if the speficied /48 is already in used by another resource. + If the field is not speficied, then a /48 range will be randomly allocated from fd20::/20 and returned via this field. :param pulumi.Input[int] mtu: Maximum Transmission Unit in bytes. The minimum value for this field is 1460 and the maximum value is 1500 bytes. :param pulumi.Input[str] name: Name of the resource. Provided by the client when the resource is @@ -516,6 +609,8 @@ def _internal_init(__self__, auto_create_subnetworks: Optional[pulumi.Input[bool]] = None, delete_default_routes_on_create: Optional[pulumi.Input[bool]] = None, description: Optional[pulumi.Input[str]] = None, + enable_ula_internal_ipv6: Optional[pulumi.Input[bool]] = None, + internal_ipv6_range: Optional[pulumi.Input[str]] = None, mtu: Optional[pulumi.Input[int]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, @@ -535,6 +630,8 @@ def _internal_init(__self__, __props__.__dict__["auto_create_subnetworks"] = auto_create_subnetworks __props__.__dict__["delete_default_routes_on_create"] = delete_default_routes_on_create __props__.__dict__["description"] = description + __props__.__dict__["enable_ula_internal_ipv6"] = enable_ula_internal_ipv6 + __props__.__dict__["internal_ipv6_range"] = internal_ipv6_range __props__.__dict__["mtu"] = mtu __props__.__dict__["name"] = name __props__.__dict__["project"] = project @@ -554,7 +651,9 @@ def get(resource_name: str, auto_create_subnetworks: Optional[pulumi.Input[bool]] = None, delete_default_routes_on_create: Optional[pulumi.Input[bool]] = None, description: Optional[pulumi.Input[str]] = None, + enable_ula_internal_ipv6: Optional[pulumi.Input[bool]] = None, gateway_ipv4: Optional[pulumi.Input[str]] = None, + internal_ipv6_range: Optional[pulumi.Input[str]] = None, mtu: Optional[pulumi.Input[int]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, @@ -576,7 +675,14 @@ def get(resource_name: str, immediately after network creation. Defaults to `false`. :param pulumi.Input[str] description: An optional description of this resource. The resource must be recreated to modify this field. + :param pulumi.Input[bool] enable_ula_internal_ipv6: Enable ULA internal ipv6 on this network. Enabling this feature will assign + a /48 from google defined ULA prefix fd20::/20. :param pulumi.Input[str] gateway_ipv4: The gateway address for default routing out of the network. This value is selected by GCP. + :param pulumi.Input[str] internal_ipv6_range: When enabling ula internal ipv6, caller optionally can specify the /48 range + they want from the google defined ULA prefix fd20::/20. The input must be a + valid /48 ULA IPv6 address and must be within the fd20::/20. Operation will + fail if the speficied /48 is already in used by another resource. + If the field is not speficied, then a /48 range will be randomly allocated from fd20::/20 and returned via this field. :param pulumi.Input[int] mtu: Maximum Transmission Unit in bytes. The minimum value for this field is 1460 and the maximum value is 1500 bytes. :param pulumi.Input[str] name: Name of the resource. Provided by the client when the resource is @@ -603,7 +709,9 @@ def get(resource_name: str, __props__.__dict__["auto_create_subnetworks"] = auto_create_subnetworks __props__.__dict__["delete_default_routes_on_create"] = delete_default_routes_on_create __props__.__dict__["description"] = description + __props__.__dict__["enable_ula_internal_ipv6"] = enable_ula_internal_ipv6 __props__.__dict__["gateway_ipv4"] = gateway_ipv4 + __props__.__dict__["internal_ipv6_range"] = internal_ipv6_range __props__.__dict__["mtu"] = mtu __props__.__dict__["name"] = name __props__.__dict__["project"] = project @@ -641,6 +749,15 @@ def description(self) -> pulumi.Output[Optional[str]]: """ return pulumi.get(self, "description") + @property + @pulumi.getter(name="enableUlaInternalIpv6") + def enable_ula_internal_ipv6(self) -> pulumi.Output[Optional[bool]]: + """ + Enable ULA internal ipv6 on this network. Enabling this feature will assign + a /48 from google defined ULA prefix fd20::/20. + """ + return pulumi.get(self, "enable_ula_internal_ipv6") + @property @pulumi.getter(name="gatewayIpv4") def gateway_ipv4(self) -> pulumi.Output[str]: @@ -649,6 +766,18 @@ def gateway_ipv4(self) -> pulumi.Output[str]: """ return pulumi.get(self, "gateway_ipv4") + @property + @pulumi.getter(name="internalIpv6Range") + def internal_ipv6_range(self) -> pulumi.Output[str]: + """ + When enabling ula internal ipv6, caller optionally can specify the /48 range + they want from the google defined ULA prefix fd20::/20. The input must be a + valid /48 ULA IPv6 address and must be within the fd20::/20. Operation will + fail if the speficied /48 is already in used by another resource. + If the field is not speficied, then a /48 range will be randomly allocated from fd20::/20 and returned via this field. + """ + return pulumi.get(self, "internal_ipv6_range") + @property @pulumi.getter def mtu(self) -> pulumi.Output[int]: diff --git a/sdk/python/pulumi_gcp/compute/outputs.py b/sdk/python/pulumi_gcp/compute/outputs.py index 2fe0d8c042..8faf2f386c 100644 --- a/sdk/python/pulumi_gcp/compute/outputs.py +++ b/sdk/python/pulumi_gcp/compute/outputs.py @@ -309,6 +309,7 @@ 'RouterStatusBestRoutesForRouterResult', 'SecurityPolicyAdaptiveProtectionConfig', 'SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig', + 'SecurityPolicyAdvancedOptionsConfig', 'SecurityPolicyRule', 'SecurityPolicyRuleMatch', 'SecurityPolicyRuleMatchConfig', @@ -2693,6 +2694,8 @@ def __key_warning(key: str): suggest = None if key == "includeHost": suggest = "include_host" + elif key == "includeNamedCookies": + suggest = "include_named_cookies" elif key == "includeProtocol": suggest = "include_protocol" elif key == "includeQueryString": @@ -2715,12 +2718,14 @@ def get(self, key: str, default = None) -> Any: def __init__(__self__, *, include_host: Optional[bool] = None, + include_named_cookies: Optional[Sequence[str]] = None, include_protocol: Optional[bool] = None, include_query_string: Optional[bool] = None, query_string_blacklists: Optional[Sequence[str]] = None, query_string_whitelists: Optional[Sequence[str]] = None): """ :param bool include_host: If true requests to different hosts will be cached separately. + :param Sequence[str] include_named_cookies: Names of cookies to include in cache keys. :param bool include_protocol: If true, http and https requests will be cached separately. :param bool include_query_string: If true, include query string parameters in the cache key according to query_string_whitelist and @@ -2741,6 +2746,8 @@ def __init__(__self__, *, """ if include_host is not None: pulumi.set(__self__, "include_host", include_host) + if include_named_cookies is not None: + pulumi.set(__self__, "include_named_cookies", include_named_cookies) if include_protocol is not None: pulumi.set(__self__, "include_protocol", include_protocol) if include_query_string is not None: @@ -2758,6 +2765,14 @@ def include_host(self) -> Optional[bool]: """ return pulumi.get(self, "include_host") + @property + @pulumi.getter(name="includeNamedCookies") + def include_named_cookies(self) -> Optional[Sequence[str]]: + """ + Names of cookies to include in cache keys. + """ + return pulumi.get(self, "include_named_cookies") + @property @pulumi.getter(name="includeProtocol") def include_protocol(self) -> Optional[bool]: @@ -12617,6 +12632,8 @@ def __key_warning(key: str): suggest = None if key == "includeHost": suggest = "include_host" + elif key == "includeNamedCookies": + suggest = "include_named_cookies" elif key == "includeProtocol": suggest = "include_protocol" elif key == "includeQueryString": @@ -12639,12 +12656,14 @@ def get(self, key: str, default = None) -> Any: def __init__(__self__, *, include_host: Optional[bool] = None, + include_named_cookies: Optional[Sequence[str]] = None, include_protocol: Optional[bool] = None, include_query_string: Optional[bool] = None, query_string_blacklists: Optional[Sequence[str]] = None, query_string_whitelists: Optional[Sequence[str]] = None): """ :param bool include_host: If true requests to different hosts will be cached separately. + :param Sequence[str] include_named_cookies: Names of cookies to include in cache keys. :param bool include_protocol: If true, http and https requests will be cached separately. :param bool include_query_string: If true, include query string parameters in the cache key according to query_string_whitelist and @@ -12665,6 +12684,8 @@ def __init__(__self__, *, """ if include_host is not None: pulumi.set(__self__, "include_host", include_host) + if include_named_cookies is not None: + pulumi.set(__self__, "include_named_cookies", include_named_cookies) if include_protocol is not None: pulumi.set(__self__, "include_protocol", include_protocol) if include_query_string is not None: @@ -12682,6 +12703,14 @@ def include_host(self) -> Optional[bool]: """ return pulumi.get(self, "include_host") + @property + @pulumi.getter(name="includeNamedCookies") + def include_named_cookies(self) -> Optional[Sequence[str]]: + """ + Names of cookies to include in cache keys. + """ + return pulumi.get(self, "include_named_cookies") + @property @pulumi.getter(name="includeProtocol") def include_protocol(self) -> Optional[bool]: @@ -21648,6 +21677,64 @@ def rule_visibility(self) -> Optional[str]: return pulumi.get(self, "rule_visibility") +@pulumi.output_type +class SecurityPolicyAdvancedOptionsConfig(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "jsonParsing": + suggest = "json_parsing" + elif key == "logLevel": + suggest = "log_level" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in SecurityPolicyAdvancedOptionsConfig. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + SecurityPolicyAdvancedOptionsConfig.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + SecurityPolicyAdvancedOptionsConfig.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + json_parsing: Optional[str] = None, + log_level: Optional[str] = None): + """ + :param str json_parsing: Whether or not to JSON parse the payload body. Defaults to `DISABLED`. + * DISABLED - Don't parse JSON payloads in POST bodies. + * STANDARD - Parse JSON payloads in POST bodies. + :param str log_level: Log level to use. Defaults to `NORMAL`. + * NORMAL - Normal log level. + * VERBOSE - Verbose log level. + """ + if json_parsing is not None: + pulumi.set(__self__, "json_parsing", json_parsing) + if log_level is not None: + pulumi.set(__self__, "log_level", log_level) + + @property + @pulumi.getter(name="jsonParsing") + def json_parsing(self) -> Optional[str]: + """ + Whether or not to JSON parse the payload body. Defaults to `DISABLED`. + * DISABLED - Don't parse JSON payloads in POST bodies. + * STANDARD - Parse JSON payloads in POST bodies. + """ + return pulumi.get(self, "json_parsing") + + @property + @pulumi.getter(name="logLevel") + def log_level(self) -> Optional[str]: + """ + Log level to use. Defaults to `NORMAL`. + * NORMAL - Normal log level. + * VERBOSE - Verbose log level. + """ + return pulumi.get(self, "log_level") + + @pulumi.output_type class SecurityPolicyRule(dict): @staticmethod @@ -29586,11 +29673,13 @@ def signed_url_cache_max_age_sec(self) -> int: class GetBackendServiceCdnPolicyCacheKeyPolicyResult(dict): def __init__(__self__, *, include_host: bool, + include_named_cookies: Sequence[str], include_protocol: bool, include_query_string: bool, query_string_blacklists: Sequence[str], query_string_whitelists: Sequence[str]): pulumi.set(__self__, "include_host", include_host) + pulumi.set(__self__, "include_named_cookies", include_named_cookies) pulumi.set(__self__, "include_protocol", include_protocol) pulumi.set(__self__, "include_query_string", include_query_string) pulumi.set(__self__, "query_string_blacklists", query_string_blacklists) @@ -29601,6 +29690,11 @@ def __init__(__self__, *, def include_host(self) -> bool: return pulumi.get(self, "include_host") + @property + @pulumi.getter(name="includeNamedCookies") + def include_named_cookies(self) -> Sequence[str]: + return pulumi.get(self, "include_named_cookies") + @property @pulumi.getter(name="includeProtocol") def include_protocol(self) -> bool: diff --git a/sdk/python/pulumi_gcp/compute/security_policy.py b/sdk/python/pulumi_gcp/compute/security_policy.py index f47b15d057..31a54d291a 100644 --- a/sdk/python/pulumi_gcp/compute/security_policy.py +++ b/sdk/python/pulumi_gcp/compute/security_policy.py @@ -16,6 +16,7 @@ class SecurityPolicyArgs: def __init__(__self__, *, adaptive_protection_config: Optional[pulumi.Input['SecurityPolicyAdaptiveProtectionConfigArgs']] = None, + advanced_options_config: Optional[pulumi.Input['SecurityPolicyAdvancedOptionsConfigArgs']] = None, description: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, @@ -24,6 +25,7 @@ def __init__(__self__, *, """ The set of arguments for constructing a SecurityPolicy resource. :param pulumi.Input['SecurityPolicyAdaptiveProtectionConfigArgs'] adaptive_protection_config: Configuration for [Google Cloud Armor Adaptive Protection](https://cloud.google.com/armor/docs/adaptive-protection-overview?hl=en). Structure is documented below. + :param pulumi.Input['SecurityPolicyAdvancedOptionsConfigArgs'] advanced_options_config: [Advanced Configuration Options](https://cloud.google.com/armor/docs/security-policy-overview#json-parsing). :param pulumi.Input[str] description: An optional description of this rule. Max size is 64. :param pulumi.Input[str] name: The name of the security policy. :param pulumi.Input[str] project: The project in which the resource belongs. If it @@ -35,6 +37,8 @@ def __init__(__self__, *, """ if adaptive_protection_config is not None: pulumi.set(__self__, "adaptive_protection_config", adaptive_protection_config) + if advanced_options_config is not None: + pulumi.set(__self__, "advanced_options_config", advanced_options_config) if description is not None: pulumi.set(__self__, "description", description) if name is not None: @@ -58,6 +62,18 @@ def adaptive_protection_config(self) -> Optional[pulumi.Input['SecurityPolicyAda def adaptive_protection_config(self, value: Optional[pulumi.Input['SecurityPolicyAdaptiveProtectionConfigArgs']]): pulumi.set(self, "adaptive_protection_config", value) + @property + @pulumi.getter(name="advancedOptionsConfig") + def advanced_options_config(self) -> Optional[pulumi.Input['SecurityPolicyAdvancedOptionsConfigArgs']]: + """ + [Advanced Configuration Options](https://cloud.google.com/armor/docs/security-policy-overview#json-parsing). + """ + return pulumi.get(self, "advanced_options_config") + + @advanced_options_config.setter + def advanced_options_config(self, value: Optional[pulumi.Input['SecurityPolicyAdvancedOptionsConfigArgs']]): + pulumi.set(self, "advanced_options_config", value) + @property @pulumi.getter def description(self) -> Optional[pulumi.Input[str]]: @@ -126,6 +142,7 @@ def type(self, value: Optional[pulumi.Input[str]]): class _SecurityPolicyState: def __init__(__self__, *, adaptive_protection_config: Optional[pulumi.Input['SecurityPolicyAdaptiveProtectionConfigArgs']] = None, + advanced_options_config: Optional[pulumi.Input['SecurityPolicyAdvancedOptionsConfigArgs']] = None, description: Optional[pulumi.Input[str]] = None, fingerprint: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, @@ -136,6 +153,7 @@ def __init__(__self__, *, """ Input properties used for looking up and filtering SecurityPolicy resources. :param pulumi.Input['SecurityPolicyAdaptiveProtectionConfigArgs'] adaptive_protection_config: Configuration for [Google Cloud Armor Adaptive Protection](https://cloud.google.com/armor/docs/adaptive-protection-overview?hl=en). Structure is documented below. + :param pulumi.Input['SecurityPolicyAdvancedOptionsConfigArgs'] advanced_options_config: [Advanced Configuration Options](https://cloud.google.com/armor/docs/security-policy-overview#json-parsing). :param pulumi.Input[str] description: An optional description of this rule. Max size is 64. :param pulumi.Input[str] fingerprint: Fingerprint of this resource. :param pulumi.Input[str] name: The name of the security policy. @@ -149,6 +167,8 @@ def __init__(__self__, *, """ if adaptive_protection_config is not None: pulumi.set(__self__, "adaptive_protection_config", adaptive_protection_config) + if advanced_options_config is not None: + pulumi.set(__self__, "advanced_options_config", advanced_options_config) if description is not None: pulumi.set(__self__, "description", description) if fingerprint is not None: @@ -176,6 +196,18 @@ def adaptive_protection_config(self) -> Optional[pulumi.Input['SecurityPolicyAda def adaptive_protection_config(self, value: Optional[pulumi.Input['SecurityPolicyAdaptiveProtectionConfigArgs']]): pulumi.set(self, "adaptive_protection_config", value) + @property + @pulumi.getter(name="advancedOptionsConfig") + def advanced_options_config(self) -> Optional[pulumi.Input['SecurityPolicyAdvancedOptionsConfigArgs']]: + """ + [Advanced Configuration Options](https://cloud.google.com/armor/docs/security-policy-overview#json-parsing). + """ + return pulumi.get(self, "advanced_options_config") + + @advanced_options_config.setter + def advanced_options_config(self, value: Optional[pulumi.Input['SecurityPolicyAdvancedOptionsConfigArgs']]): + pulumi.set(self, "advanced_options_config", value) + @property @pulumi.getter def description(self) -> Optional[pulumi.Input[str]]: @@ -270,6 +302,7 @@ def __init__(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, adaptive_protection_config: Optional[pulumi.Input[pulumi.InputType['SecurityPolicyAdaptiveProtectionConfigArgs']]] = None, + advanced_options_config: Optional[pulumi.Input[pulumi.InputType['SecurityPolicyAdvancedOptionsConfigArgs']]] = None, description: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, @@ -316,6 +349,7 @@ def __init__(__self__, :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[pulumi.InputType['SecurityPolicyAdaptiveProtectionConfigArgs']] adaptive_protection_config: Configuration for [Google Cloud Armor Adaptive Protection](https://cloud.google.com/armor/docs/adaptive-protection-overview?hl=en). Structure is documented below. + :param pulumi.Input[pulumi.InputType['SecurityPolicyAdvancedOptionsConfigArgs']] advanced_options_config: [Advanced Configuration Options](https://cloud.google.com/armor/docs/security-policy-overview#json-parsing). :param pulumi.Input[str] description: An optional description of this rule. Max size is 64. :param pulumi.Input[str] name: The name of the security policy. :param pulumi.Input[str] project: The project in which the resource belongs. If it @@ -384,6 +418,7 @@ def _internal_init(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, adaptive_protection_config: Optional[pulumi.Input[pulumi.InputType['SecurityPolicyAdaptiveProtectionConfigArgs']]] = None, + advanced_options_config: Optional[pulumi.Input[pulumi.InputType['SecurityPolicyAdvancedOptionsConfigArgs']]] = None, description: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, @@ -402,6 +437,7 @@ def _internal_init(__self__, __props__ = SecurityPolicyArgs.__new__(SecurityPolicyArgs) __props__.__dict__["adaptive_protection_config"] = adaptive_protection_config + __props__.__dict__["advanced_options_config"] = advanced_options_config __props__.__dict__["description"] = description __props__.__dict__["name"] = name __props__.__dict__["project"] = project @@ -420,6 +456,7 @@ def get(resource_name: str, id: pulumi.Input[str], opts: Optional[pulumi.ResourceOptions] = None, adaptive_protection_config: Optional[pulumi.Input[pulumi.InputType['SecurityPolicyAdaptiveProtectionConfigArgs']]] = None, + advanced_options_config: Optional[pulumi.Input[pulumi.InputType['SecurityPolicyAdvancedOptionsConfigArgs']]] = None, description: Optional[pulumi.Input[str]] = None, fingerprint: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, @@ -435,6 +472,7 @@ 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[pulumi.InputType['SecurityPolicyAdaptiveProtectionConfigArgs']] adaptive_protection_config: Configuration for [Google Cloud Armor Adaptive Protection](https://cloud.google.com/armor/docs/adaptive-protection-overview?hl=en). Structure is documented below. + :param pulumi.Input[pulumi.InputType['SecurityPolicyAdvancedOptionsConfigArgs']] advanced_options_config: [Advanced Configuration Options](https://cloud.google.com/armor/docs/security-policy-overview#json-parsing). :param pulumi.Input[str] description: An optional description of this rule. Max size is 64. :param pulumi.Input[str] fingerprint: Fingerprint of this resource. :param pulumi.Input[str] name: The name of the security policy. @@ -451,6 +489,7 @@ def get(resource_name: str, __props__ = _SecurityPolicyState.__new__(_SecurityPolicyState) __props__.__dict__["adaptive_protection_config"] = adaptive_protection_config + __props__.__dict__["advanced_options_config"] = advanced_options_config __props__.__dict__["description"] = description __props__.__dict__["fingerprint"] = fingerprint __props__.__dict__["name"] = name @@ -468,6 +507,14 @@ def adaptive_protection_config(self) -> pulumi.Output[Optional['outputs.Security """ return pulumi.get(self, "adaptive_protection_config") + @property + @pulumi.getter(name="advancedOptionsConfig") + def advanced_options_config(self) -> pulumi.Output['outputs.SecurityPolicyAdvancedOptionsConfig']: + """ + [Advanced Configuration Options](https://cloud.google.com/armor/docs/security-policy-overview#json-parsing). + """ + return pulumi.get(self, "advanced_options_config") + @property @pulumi.getter def description(self) -> pulumi.Output[Optional[str]]: diff --git a/sdk/python/pulumi_gcp/compute/subnetwork.py b/sdk/python/pulumi_gcp/compute/subnetwork.py index 91f6f0ad08..d68c616673 100644 --- a/sdk/python/pulumi_gcp/compute/subnetwork.py +++ b/sdk/python/pulumi_gcp/compute/subnetwork.py @@ -43,7 +43,7 @@ def __init__(__self__, *, :param pulumi.Input[str] ipv6_access_type: The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation or the first time the subnet is updated into IPV4_IPV6 dual stack. If the ipv6_type is EXTERNAL then this subnet cannot enable direct path. - Possible values are `EXTERNAL`. + Possible values are `EXTERNAL` and `INTERNAL`. :param pulumi.Input['SubnetworkLogConfigArgs'] log_config: Denotes the logging options for the subnetwork flow logs. If logging is enabled logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this subnetwork is `INTERNAL_HTTPS_LOAD_BALANCER` @@ -156,7 +156,7 @@ def ipv6_access_type(self) -> Optional[pulumi.Input[str]]: The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation or the first time the subnet is updated into IPV4_IPV6 dual stack. If the ipv6_type is EXTERNAL then this subnet cannot enable direct path. - Possible values are `EXTERNAL`. + Possible values are `EXTERNAL` and `INTERNAL`. """ return pulumi.get(self, "ipv6_access_type") @@ -349,7 +349,7 @@ def __init__(__self__, *, :param pulumi.Input[str] ipv6_access_type: The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation or the first time the subnet is updated into IPV4_IPV6 dual stack. If the ipv6_type is EXTERNAL then this subnet cannot enable direct path. - Possible values are `EXTERNAL`. + Possible values are `EXTERNAL` and `INTERNAL`. :param pulumi.Input[str] ipv6_cidr_range: The range of internal IPv6 addresses that are owned by this subnetwork. :param pulumi.Input['SubnetworkLogConfigArgs'] log_config: Denotes the logging options for the subnetwork flow logs. If logging is enabled logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this @@ -518,7 +518,7 @@ def ipv6_access_type(self) -> Optional[pulumi.Input[str]]: The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation or the first time the subnet is updated into IPV4_IPV6 dual stack. If the ipv6_type is EXTERNAL then this subnet cannot enable direct path. - Possible values are `EXTERNAL`. + Possible values are `EXTERNAL` and `INTERNAL`. """ return pulumi.get(self, "ipv6_access_type") @@ -824,6 +824,22 @@ def __init__(__self__, ipv6_access_type="EXTERNAL", network=custom_test.id) ``` + ### Subnetwork Internal Ipv6 + + ```python + import pulumi + import pulumi_gcp as gcp + + custom_test = gcp.compute.Network("custom-test", + auto_create_subnetworks=False, + enable_ula_internal_ipv6=True) + subnetwork_internal_ipv6 = gcp.compute.Subnetwork("subnetwork-internal-ipv6", + ip_cidr_range="10.0.0.0/22", + region="us-west2", + stack_type="IPV4_IPV6", + ipv6_access_type="INTERNAL", + network=custom_test.id) + ``` ## Import @@ -857,7 +873,7 @@ def __init__(__self__, :param pulumi.Input[str] ipv6_access_type: The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation or the first time the subnet is updated into IPV4_IPV6 dual stack. If the ipv6_type is EXTERNAL then this subnet cannot enable direct path. - Possible values are `EXTERNAL`. + Possible values are `EXTERNAL` and `INTERNAL`. :param pulumi.Input[pulumi.InputType['SubnetworkLogConfigArgs']] log_config: Denotes the logging options for the subnetwork flow logs. If logging is enabled logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this subnetwork is `INTERNAL_HTTPS_LOAD_BALANCER` @@ -997,6 +1013,22 @@ def __init__(__self__, ipv6_access_type="EXTERNAL", network=custom_test.id) ``` + ### Subnetwork Internal Ipv6 + + ```python + import pulumi + import pulumi_gcp as gcp + + custom_test = gcp.compute.Network("custom-test", + auto_create_subnetworks=False, + enable_ula_internal_ipv6=True) + subnetwork_internal_ipv6 = gcp.compute.Subnetwork("subnetwork-internal-ipv6", + ip_cidr_range="10.0.0.0/22", + region="us-west2", + stack_type="IPV4_IPV6", + ipv6_access_type="INTERNAL", + network=custom_test.id) + ``` ## Import @@ -1134,7 +1166,7 @@ def get(resource_name: str, :param pulumi.Input[str] ipv6_access_type: The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation or the first time the subnet is updated into IPV4_IPV6 dual stack. If the ipv6_type is EXTERNAL then this subnet cannot enable direct path. - Possible values are `EXTERNAL`. + Possible values are `EXTERNAL` and `INTERNAL`. :param pulumi.Input[str] ipv6_cidr_range: The range of internal IPv6 addresses that are owned by this subnetwork. :param pulumi.Input[pulumi.InputType['SubnetworkLogConfigArgs']] log_config: Denotes the logging options for the subnetwork flow logs. If logging is enabled logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this @@ -1261,7 +1293,7 @@ def ipv6_access_type(self) -> pulumi.Output[Optional[str]]: The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation or the first time the subnet is updated into IPV4_IPV6 dual stack. If the ipv6_type is EXTERNAL then this subnet cannot enable direct path. - Possible values are `EXTERNAL`. + Possible values are `EXTERNAL` and `INTERNAL`. """ return pulumi.get(self, "ipv6_access_type") diff --git a/sdk/python/pulumi_gcp/container/_inputs.py b/sdk/python/pulumi_gcp/container/_inputs.py index 192237b148..972eb67495 100644 --- a/sdk/python/pulumi_gcp/container/_inputs.py +++ b/sdk/python/pulumi_gcp/container/_inputs.py @@ -88,6 +88,7 @@ 'ClusterMasterAuthorizedNetworksConfigArgs', 'ClusterMasterAuthorizedNetworksConfigCidrBlockArgs', 'ClusterMonitoringConfigArgs', + 'ClusterMonitoringConfigManagedPrometheusArgs', 'ClusterNetworkPolicyArgs', 'ClusterNodeConfigArgs', 'ClusterNodeConfigEphemeralStorageConfigArgs', @@ -3242,7 +3243,7 @@ class ClusterLoggingConfigArgs: def __init__(__self__, *, enable_components: pulumi.Input[Sequence[pulumi.Input[str]]]): """ - :param pulumi.Input[Sequence[pulumi.Input[str]]] enable_components: The GKE components exposing logs. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. + :param pulumi.Input[Sequence[pulumi.Input[str]]] enable_components: The GKE components exposing metrics. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. (`WORKLOADS` is deprecated and removed in GKE 1.24.) """ pulumi.set(__self__, "enable_components", enable_components) @@ -3250,7 +3251,7 @@ def __init__(__self__, *, @pulumi.getter(name="enableComponents") def enable_components(self) -> pulumi.Input[Sequence[pulumi.Input[str]]]: """ - The GKE components exposing logs. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. + The GKE components exposing metrics. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. (`WORKLOADS` is deprecated and removed in GKE 1.24.) """ return pulumi.get(self, "enable_components") @@ -3604,24 +3605,65 @@ def display_name(self, value: Optional[pulumi.Input[str]]): @pulumi.input_type class ClusterMonitoringConfigArgs: def __init__(__self__, *, - enable_components: pulumi.Input[Sequence[pulumi.Input[str]]]): + enable_components: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + managed_prometheus: Optional[pulumi.Input['ClusterMonitoringConfigManagedPrometheusArgs']] = None): """ - :param pulumi.Input[Sequence[pulumi.Input[str]]] enable_components: The GKE components exposing logs. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. + :param pulumi.Input[Sequence[pulumi.Input[str]]] enable_components: The GKE components exposing metrics. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. (`WORKLOADS` is deprecated and removed in GKE 1.24.) + :param pulumi.Input['ClusterMonitoringConfigManagedPrometheusArgs'] managed_prometheus: Configuration for Managed Service for Prometheus. Structure is documented below. """ - pulumi.set(__self__, "enable_components", enable_components) + if enable_components is not None: + pulumi.set(__self__, "enable_components", enable_components) + if managed_prometheus is not None: + pulumi.set(__self__, "managed_prometheus", managed_prometheus) @property @pulumi.getter(name="enableComponents") - def enable_components(self) -> pulumi.Input[Sequence[pulumi.Input[str]]]: + def enable_components(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: """ - The GKE components exposing logs. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. + The GKE components exposing metrics. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. (`WORKLOADS` is deprecated and removed in GKE 1.24.) """ return pulumi.get(self, "enable_components") @enable_components.setter - def enable_components(self, value: pulumi.Input[Sequence[pulumi.Input[str]]]): + def enable_components(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): pulumi.set(self, "enable_components", value) + @property + @pulumi.getter(name="managedPrometheus") + def managed_prometheus(self) -> Optional[pulumi.Input['ClusterMonitoringConfigManagedPrometheusArgs']]: + """ + Configuration for Managed Service for Prometheus. Structure is documented below. + """ + return pulumi.get(self, "managed_prometheus") + + @managed_prometheus.setter + def managed_prometheus(self, value: Optional[pulumi.Input['ClusterMonitoringConfigManagedPrometheusArgs']]): + pulumi.set(self, "managed_prometheus", value) + + +@pulumi.input_type +class ClusterMonitoringConfigManagedPrometheusArgs: + def __init__(__self__, *, + enabled: pulumi.Input[bool]): + """ + :param pulumi.Input[bool] enabled: Enable the PodSecurityPolicy controller for this cluster. + If enabled, pods must be valid under a PodSecurityPolicy to be created. + """ + pulumi.set(__self__, "enabled", enabled) + + @property + @pulumi.getter + def enabled(self) -> pulumi.Input[bool]: + """ + Enable the PodSecurityPolicy controller for this cluster. + If enabled, pods must be valid under a PodSecurityPolicy to be created. + """ + return pulumi.get(self, "enabled") + + @enabled.setter + def enabled(self, value: pulumi.Input[bool]): + pulumi.set(self, "enabled", value) + @pulumi.input_type class ClusterNetworkPolicyArgs: @@ -3741,13 +3783,11 @@ def __init__(__self__, *, :param pulumi.Input[bool] preemptible: A boolean that represents whether or not the underlying node VMs are preemptible. See the [official documentation](https://cloud.google.com/container-engine/docs/preemptible-vm) for more information. Defaults to false. - :param pulumi.Input['ClusterNodeConfigSandboxConfigArgs'] sandbox_config: [GKE Sandbox](https://cloud.google.com/kubernetes-engine/docs/how-to/sandbox-pods) configuration. When enabling this feature you must specify `image_type = "COS_CONTAINERD"` and `node_version = "1.12.7-gke.17"` or later to use it. - Structure is documented below. :param pulumi.Input[str] service_account: The service account to be used by the Node VMs. If not specified, the "default" service account is used. :param pulumi.Input['ClusterNodeConfigShieldedInstanceConfigArgs'] shielded_instance_config: Shielded Instance options. Structure is documented below. - :param pulumi.Input[bool] spot: ) A boolean - that represents whether the underlying node VMs are spot. See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) + :param pulumi.Input[bool] spot: A boolean that represents whether the underlying node VMs are spot. + See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) for more information. Defaults to false. :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: The list of instance tags applied to all nodes. Tags are used to identify valid sources or targets for network firewalls. @@ -4063,10 +4103,6 @@ def preemptible(self, value: Optional[pulumi.Input[bool]]): @property @pulumi.getter(name="sandboxConfig") def sandbox_config(self) -> Optional[pulumi.Input['ClusterNodeConfigSandboxConfigArgs']]: - """ - [GKE Sandbox](https://cloud.google.com/kubernetes-engine/docs/how-to/sandbox-pods) configuration. When enabling this feature you must specify `image_type = "COS_CONTAINERD"` and `node_version = "1.12.7-gke.17"` or later to use it. - Structure is documented below. - """ return pulumi.get(self, "sandbox_config") @sandbox_config.setter @@ -4102,8 +4138,8 @@ def shielded_instance_config(self, value: Optional[pulumi.Input['ClusterNodeConf @pulumi.getter def spot(self) -> Optional[pulumi.Input[bool]]: """ - ) A boolean - that represents whether the underlying node VMs are spot. See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) + A boolean that represents whether the underlying node VMs are spot. + See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) for more information. Defaults to false. """ return pulumi.get(self, "spot") @@ -4941,13 +4977,11 @@ def __init__(__self__, *, :param pulumi.Input[bool] preemptible: A boolean that represents whether or not the underlying node VMs are preemptible. See the [official documentation](https://cloud.google.com/container-engine/docs/preemptible-vm) for more information. Defaults to false. - :param pulumi.Input['ClusterNodePoolNodeConfigSandboxConfigArgs'] sandbox_config: [GKE Sandbox](https://cloud.google.com/kubernetes-engine/docs/how-to/sandbox-pods) configuration. When enabling this feature you must specify `image_type = "COS_CONTAINERD"` and `node_version = "1.12.7-gke.17"` or later to use it. - Structure is documented below. :param pulumi.Input[str] service_account: The service account to be used by the Node VMs. If not specified, the "default" service account is used. :param pulumi.Input['ClusterNodePoolNodeConfigShieldedInstanceConfigArgs'] shielded_instance_config: Shielded Instance options. Structure is documented below. - :param pulumi.Input[bool] spot: ) A boolean - that represents whether the underlying node VMs are spot. See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) + :param pulumi.Input[bool] spot: A boolean that represents whether the underlying node VMs are spot. + See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) for more information. Defaults to false. :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: The list of instance tags applied to all nodes. Tags are used to identify valid sources or targets for network firewalls. @@ -5263,10 +5297,6 @@ def preemptible(self, value: Optional[pulumi.Input[bool]]): @property @pulumi.getter(name="sandboxConfig") def sandbox_config(self) -> Optional[pulumi.Input['ClusterNodePoolNodeConfigSandboxConfigArgs']]: - """ - [GKE Sandbox](https://cloud.google.com/kubernetes-engine/docs/how-to/sandbox-pods) configuration. When enabling this feature you must specify `image_type = "COS_CONTAINERD"` and `node_version = "1.12.7-gke.17"` or later to use it. - Structure is documented below. - """ return pulumi.get(self, "sandbox_config") @sandbox_config.setter @@ -5302,8 +5332,8 @@ def shielded_instance_config(self, value: Optional[pulumi.Input['ClusterNodePool @pulumi.getter def spot(self) -> Optional[pulumi.Input[bool]]: """ - ) A boolean - that represents whether the underlying node VMs are spot. See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) + A boolean that represents whether the underlying node VMs are spot. + See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) for more information. Defaults to false. """ return pulumi.get(self, "spot") diff --git a/sdk/python/pulumi_gcp/container/outputs.py b/sdk/python/pulumi_gcp/container/outputs.py index bf4f3ce191..2f193432a5 100644 --- a/sdk/python/pulumi_gcp/container/outputs.py +++ b/sdk/python/pulumi_gcp/container/outputs.py @@ -89,6 +89,7 @@ 'ClusterMasterAuthorizedNetworksConfig', 'ClusterMasterAuthorizedNetworksConfigCidrBlock', 'ClusterMonitoringConfig', + 'ClusterMonitoringConfigManagedPrometheus', 'ClusterNetworkPolicy', 'ClusterNodeConfig', 'ClusterNodeConfigEphemeralStorageConfig', @@ -178,6 +179,7 @@ 'GetClusterMasterAuthorizedNetworksConfigResult', 'GetClusterMasterAuthorizedNetworksConfigCidrBlockResult', 'GetClusterMonitoringConfigResult', + 'GetClusterMonitoringConfigManagedPrometheusResult', 'GetClusterNetworkPolicyResult', 'GetClusterNodeConfigResult', 'GetClusterNodeConfigEphemeralStorageConfigResult', @@ -3632,7 +3634,7 @@ def get(self, key: str, default = None) -> Any: def __init__(__self__, *, enable_components: Sequence[str]): """ - :param Sequence[str] enable_components: The GKE components exposing logs. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. + :param Sequence[str] enable_components: The GKE components exposing metrics. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. (`WORKLOADS` is deprecated and removed in GKE 1.24.) """ pulumi.set(__self__, "enable_components", enable_components) @@ -3640,7 +3642,7 @@ def __init__(__self__, *, @pulumi.getter(name="enableComponents") def enable_components(self) -> Sequence[str]: """ - The GKE components exposing logs. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. + The GKE components exposing metrics. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. (`WORKLOADS` is deprecated and removed in GKE 1.24.) """ return pulumi.get(self, "enable_components") @@ -4066,6 +4068,8 @@ def __key_warning(key: str): suggest = None if key == "enableComponents": suggest = "enable_components" + elif key == "managedPrometheus": + suggest = "managed_prometheus" if suggest: pulumi.log.warn(f"Key '{key}' not found in ClusterMonitoringConfig. Access the value via the '{suggest}' property getter instead.") @@ -4079,20 +4083,53 @@ def get(self, key: str, default = None) -> Any: return super().get(key, default) def __init__(__self__, *, - enable_components: Sequence[str]): + enable_components: Optional[Sequence[str]] = None, + managed_prometheus: Optional['outputs.ClusterMonitoringConfigManagedPrometheus'] = None): """ - :param Sequence[str] enable_components: The GKE components exposing logs. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. + :param Sequence[str] enable_components: The GKE components exposing metrics. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. (`WORKLOADS` is deprecated and removed in GKE 1.24.) + :param 'ClusterMonitoringConfigManagedPrometheusArgs' managed_prometheus: Configuration for Managed Service for Prometheus. Structure is documented below. """ - pulumi.set(__self__, "enable_components", enable_components) + if enable_components is not None: + pulumi.set(__self__, "enable_components", enable_components) + if managed_prometheus is not None: + pulumi.set(__self__, "managed_prometheus", managed_prometheus) @property @pulumi.getter(name="enableComponents") - def enable_components(self) -> Sequence[str]: + def enable_components(self) -> Optional[Sequence[str]]: """ - The GKE components exposing logs. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. + The GKE components exposing metrics. `SYSTEM_COMPONENTS` and in beta provider, both `SYSTEM_COMPONENTS` and `WORKLOADS` are supported. (`WORKLOADS` is deprecated and removed in GKE 1.24.) """ return pulumi.get(self, "enable_components") + @property + @pulumi.getter(name="managedPrometheus") + def managed_prometheus(self) -> Optional['outputs.ClusterMonitoringConfigManagedPrometheus']: + """ + Configuration for Managed Service for Prometheus. Structure is documented below. + """ + return pulumi.get(self, "managed_prometheus") + + +@pulumi.output_type +class ClusterMonitoringConfigManagedPrometheus(dict): + def __init__(__self__, *, + enabled: bool): + """ + :param bool enabled: Enable the PodSecurityPolicy controller for this cluster. + If enabled, pods must be valid under a PodSecurityPolicy to be created. + """ + pulumi.set(__self__, "enabled", enabled) + + @property + @pulumi.getter + def enabled(self) -> bool: + """ + Enable the PodSecurityPolicy controller for this cluster. + If enabled, pods must be valid under a PodSecurityPolicy to be created. + """ + return pulumi.get(self, "enabled") + @pulumi.output_type class ClusterNetworkPolicy(dict): @@ -4255,13 +4292,11 @@ def __init__(__self__, *, :param bool preemptible: A boolean that represents whether or not the underlying node VMs are preemptible. See the [official documentation](https://cloud.google.com/container-engine/docs/preemptible-vm) for more information. Defaults to false. - :param 'ClusterNodeConfigSandboxConfigArgs' sandbox_config: [GKE Sandbox](https://cloud.google.com/kubernetes-engine/docs/how-to/sandbox-pods) configuration. When enabling this feature you must specify `image_type = "COS_CONTAINERD"` and `node_version = "1.12.7-gke.17"` or later to use it. - Structure is documented below. :param str service_account: The service account to be used by the Node VMs. If not specified, the "default" service account is used. :param 'ClusterNodeConfigShieldedInstanceConfigArgs' shielded_instance_config: Shielded Instance options. Structure is documented below. - :param bool spot: ) A boolean - that represents whether the underlying node VMs are spot. See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) + :param bool spot: A boolean that represents whether the underlying node VMs are spot. + See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) for more information. Defaults to false. :param Sequence[str] tags: The list of instance tags applied to all nodes. Tags are used to identify valid sources or targets for network firewalls. @@ -4505,10 +4540,6 @@ def preemptible(self) -> Optional[bool]: @property @pulumi.getter(name="sandboxConfig") def sandbox_config(self) -> Optional['outputs.ClusterNodeConfigSandboxConfig']: - """ - [GKE Sandbox](https://cloud.google.com/kubernetes-engine/docs/how-to/sandbox-pods) configuration. When enabling this feature you must specify `image_type = "COS_CONTAINERD"` and `node_version = "1.12.7-gke.17"` or later to use it. - Structure is documented below. - """ return pulumi.get(self, "sandbox_config") @property @@ -4532,8 +4563,8 @@ def shielded_instance_config(self) -> Optional['outputs.ClusterNodeConfigShielde @pulumi.getter def spot(self) -> Optional[bool]: """ - ) A boolean - that represents whether the underlying node VMs are spot. See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) + A boolean that represents whether the underlying node VMs are spot. + See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) for more information. Defaults to false. """ return pulumi.get(self, "spot") @@ -5437,13 +5468,11 @@ def __init__(__self__, *, :param bool preemptible: A boolean that represents whether or not the underlying node VMs are preemptible. See the [official documentation](https://cloud.google.com/container-engine/docs/preemptible-vm) for more information. Defaults to false. - :param 'ClusterNodePoolNodeConfigSandboxConfigArgs' sandbox_config: [GKE Sandbox](https://cloud.google.com/kubernetes-engine/docs/how-to/sandbox-pods) configuration. When enabling this feature you must specify `image_type = "COS_CONTAINERD"` and `node_version = "1.12.7-gke.17"` or later to use it. - Structure is documented below. :param str service_account: The service account to be used by the Node VMs. If not specified, the "default" service account is used. :param 'ClusterNodePoolNodeConfigShieldedInstanceConfigArgs' shielded_instance_config: Shielded Instance options. Structure is documented below. - :param bool spot: ) A boolean - that represents whether the underlying node VMs are spot. See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) + :param bool spot: A boolean that represents whether the underlying node VMs are spot. + See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) for more information. Defaults to false. :param Sequence[str] tags: The list of instance tags applied to all nodes. Tags are used to identify valid sources or targets for network firewalls. @@ -5687,10 +5716,6 @@ def preemptible(self) -> Optional[bool]: @property @pulumi.getter(name="sandboxConfig") def sandbox_config(self) -> Optional['outputs.ClusterNodePoolNodeConfigSandboxConfig']: - """ - [GKE Sandbox](https://cloud.google.com/kubernetes-engine/docs/how-to/sandbox-pods) configuration. When enabling this feature you must specify `image_type = "COS_CONTAINERD"` and `node_version = "1.12.7-gke.17"` or later to use it. - Structure is documented below. - """ return pulumi.get(self, "sandbox_config") @property @@ -5714,8 +5739,8 @@ def shielded_instance_config(self) -> Optional['outputs.ClusterNodePoolNodeConfi @pulumi.getter def spot(self) -> Optional[bool]: """ - ) A boolean - that represents whether the underlying node VMs are spot. See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) + A boolean that represents whether the underlying node VMs are spot. + See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) for more information. Defaults to false. """ return pulumi.get(self, "spot") @@ -8039,14 +8064,33 @@ def display_name(self) -> str: @pulumi.output_type class GetClusterMonitoringConfigResult(dict): def __init__(__self__, *, - enable_components: Sequence[str]): + enable_components: Sequence[str], + managed_prometheuses: Sequence['outputs.GetClusterMonitoringConfigManagedPrometheusResult']): pulumi.set(__self__, "enable_components", enable_components) + pulumi.set(__self__, "managed_prometheuses", managed_prometheuses) @property @pulumi.getter(name="enableComponents") def enable_components(self) -> Sequence[str]: return pulumi.get(self, "enable_components") + @property + @pulumi.getter(name="managedPrometheuses") + def managed_prometheuses(self) -> Sequence['outputs.GetClusterMonitoringConfigManagedPrometheusResult']: + return pulumi.get(self, "managed_prometheuses") + + +@pulumi.output_type +class GetClusterMonitoringConfigManagedPrometheusResult(dict): + def __init__(__self__, *, + enabled: bool): + pulumi.set(__self__, "enabled", enabled) + + @property + @pulumi.getter + def enabled(self) -> bool: + return pulumi.get(self, "enabled") + @pulumi.output_type class GetClusterNetworkPolicyResult(dict): diff --git a/sdk/python/pulumi_gcp/dns/managed_zone.py b/sdk/python/pulumi_gcp/dns/managed_zone.py index b931e5977e..c4c6ab248a 100644 --- a/sdk/python/pulumi_gcp/dns/managed_zone.py +++ b/sdk/python/pulumi_gcp/dns/managed_zone.py @@ -264,12 +264,14 @@ def visibility(self, value: Optional[pulumi.Input[str]]): @pulumi.input_type class _ManagedZoneState: def __init__(__self__, *, + creation_time: Optional[pulumi.Input[str]] = None, description: Optional[pulumi.Input[str]] = None, dns_name: Optional[pulumi.Input[str]] = None, dnssec_config: Optional[pulumi.Input['ManagedZoneDnssecConfigArgs']] = None, force_destroy: Optional[pulumi.Input[bool]] = None, forwarding_config: Optional[pulumi.Input['ManagedZoneForwardingConfigArgs']] = None, labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + managed_zone_id: Optional[pulumi.Input[int]] = None, name: Optional[pulumi.Input[str]] = None, name_servers: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, peering_config: Optional[pulumi.Input['ManagedZonePeeringConfigArgs']] = None, @@ -280,6 +282,7 @@ def __init__(__self__, *, visibility: Optional[pulumi.Input[str]] = None): """ Input properties used for looking up and filtering ManagedZone resources. + :param pulumi.Input[str] creation_time: The time that this resource was created on the server. This is in RFC3339 text format. :param pulumi.Input[str] description: A textual description field. Defaults to 'Managed by Pulumi'. :param pulumi.Input[str] dns_name: The DNS name of this managed zone, for instance "example.com.". :param pulumi.Input['ManagedZoneDnssecConfigArgs'] dnssec_config: DNSSEC configuration @@ -290,6 +293,7 @@ def __init__(__self__, *, to forward to. Structure is documented below. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: A set of key/value label pairs to assign to this ManagedZone. + :param pulumi.Input[int] managed_zone_id: Unique identifier for the resource; defined by the server. :param pulumi.Input[str] name: User assigned name for this resource. Must be unique within the project. :param pulumi.Input[Sequence[pulumi.Input[str]]] name_servers: Delegate your managed_zone to these virtual name servers; defined by the server @@ -311,6 +315,8 @@ def __init__(__self__, *, Default value is `public`. Possible values are `private` and `public`. """ + if creation_time is not None: + pulumi.set(__self__, "creation_time", creation_time) if description is None: description = 'Managed by Pulumi' if description is not None: @@ -325,6 +331,8 @@ def __init__(__self__, *, pulumi.set(__self__, "forwarding_config", forwarding_config) if labels is not None: pulumi.set(__self__, "labels", labels) + if managed_zone_id is not None: + pulumi.set(__self__, "managed_zone_id", managed_zone_id) if name is not None: pulumi.set(__self__, "name", name) if name_servers is not None: @@ -342,6 +350,18 @@ def __init__(__self__, *, if visibility is not None: pulumi.set(__self__, "visibility", visibility) + @property + @pulumi.getter(name="creationTime") + def creation_time(self) -> Optional[pulumi.Input[str]]: + """ + The time that this resource was created on the server. This is in RFC3339 text format. + """ + return pulumi.get(self, "creation_time") + + @creation_time.setter + def creation_time(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "creation_time", value) + @property @pulumi.getter def description(self) -> Optional[pulumi.Input[str]]: @@ -418,6 +438,18 @@ def labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: def labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): pulumi.set(self, "labels", value) + @property + @pulumi.getter(name="managedZoneId") + def managed_zone_id(self) -> Optional[pulumi.Input[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: Optional[pulumi.Input[int]]): + pulumi.set(self, "managed_zone_id", value) + @property @pulumi.getter def name(self) -> Optional[pulumi.Input[str]]: @@ -941,6 +973,8 @@ def _internal_init(__self__, __props__.__dict__["reverse_lookup"] = reverse_lookup __props__.__dict__["service_directory_config"] = service_directory_config __props__.__dict__["visibility"] = visibility + __props__.__dict__["creation_time"] = None + __props__.__dict__["managed_zone_id"] = None __props__.__dict__["name_servers"] = None super(ManagedZone, __self__).__init__( 'gcp:dns/managedZone:ManagedZone', @@ -952,12 +986,14 @@ def _internal_init(__self__, def get(resource_name: str, id: pulumi.Input[str], opts: Optional[pulumi.ResourceOptions] = None, + creation_time: Optional[pulumi.Input[str]] = None, description: Optional[pulumi.Input[str]] = None, dns_name: Optional[pulumi.Input[str]] = None, dnssec_config: Optional[pulumi.Input[pulumi.InputType['ManagedZoneDnssecConfigArgs']]] = None, force_destroy: Optional[pulumi.Input[bool]] = None, forwarding_config: Optional[pulumi.Input[pulumi.InputType['ManagedZoneForwardingConfigArgs']]] = None, labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + managed_zone_id: Optional[pulumi.Input[int]] = None, name: Optional[pulumi.Input[str]] = None, name_servers: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, peering_config: Optional[pulumi.Input[pulumi.InputType['ManagedZonePeeringConfigArgs']]] = None, @@ -973,6 +1009,7 @@ def get(resource_name: str, :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] creation_time: The time that this resource was created on the server. This is in RFC3339 text format. :param pulumi.Input[str] description: A textual description field. Defaults to 'Managed by Pulumi'. :param pulumi.Input[str] dns_name: The DNS name of this managed zone, for instance "example.com.". :param pulumi.Input[pulumi.InputType['ManagedZoneDnssecConfigArgs']] dnssec_config: DNSSEC configuration @@ -983,6 +1020,7 @@ def get(resource_name: str, to forward to. Structure is documented below. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: A set of key/value label pairs to assign to this ManagedZone. + :param pulumi.Input[int] managed_zone_id: Unique identifier for the resource; defined by the server. :param pulumi.Input[str] name: User assigned name for this resource. Must be unique within the project. :param pulumi.Input[Sequence[pulumi.Input[str]]] name_servers: Delegate your managed_zone to these virtual name servers; defined by the server @@ -1008,12 +1046,14 @@ def get(resource_name: str, __props__ = _ManagedZoneState.__new__(_ManagedZoneState) + __props__.__dict__["creation_time"] = creation_time __props__.__dict__["description"] = description __props__.__dict__["dns_name"] = dns_name __props__.__dict__["dnssec_config"] = dnssec_config __props__.__dict__["force_destroy"] = force_destroy __props__.__dict__["forwarding_config"] = forwarding_config __props__.__dict__["labels"] = labels + __props__.__dict__["managed_zone_id"] = managed_zone_id __props__.__dict__["name"] = name __props__.__dict__["name_servers"] = name_servers __props__.__dict__["peering_config"] = peering_config @@ -1024,6 +1064,14 @@ def get(resource_name: str, __props__.__dict__["visibility"] = visibility return ManagedZone(resource_name, opts=opts, __props__=__props__) + @property + @pulumi.getter(name="creationTime") + def creation_time(self) -> pulumi.Output[str]: + """ + The time that this resource was created on the server. This is in RFC3339 text format. + """ + return pulumi.get(self, "creation_time") + @property @pulumi.getter def description(self) -> pulumi.Output[str]: @@ -1076,6 +1124,14 @@ def labels(self) -> pulumi.Output[Optional[Mapping[str, str]]]: """ return pulumi.get(self, "labels") + @property + @pulumi.getter(name="managedZoneId") + def managed_zone_id(self) -> pulumi.Output[int]: + """ + Unique identifier for the resource; defined by the server. + """ + return pulumi.get(self, "managed_zone_id") + @property @pulumi.getter def name(self) -> pulumi.Output[str]: diff --git a/sdk/python/pulumi_gcp/gkehub/_inputs.py b/sdk/python/pulumi_gcp/gkehub/_inputs.py index 4fc6e57ef5..571700a9d2 100644 --- a/sdk/python/pulumi_gcp/gkehub/_inputs.py +++ b/sdk/python/pulumi_gcp/gkehub/_inputs.py @@ -139,14 +139,18 @@ def enabled(self, value: Optional[pulumi.Input[bool]]): class FeatureMembershipConfigmanagementConfigSyncArgs: def __init__(__self__, *, git: Optional[pulumi.Input['FeatureMembershipConfigmanagementConfigSyncGitArgs']] = None, + prevent_drift: Optional[pulumi.Input[bool]] = None, source_format: Optional[pulumi.Input[str]] = None): """ :param pulumi.Input['FeatureMembershipConfigmanagementConfigSyncGitArgs'] git: - (Optional) Structure is documented below. + :param pulumi.Input[bool] prevent_drift: Supported from ACM versions 1.10.0 onwards. Set to true to enable the Config Sync admission webhook to prevent drifts. If set to "false", disables the Config Sync admission webhook and does not prevent drifts. :param pulumi.Input[str] source_format: Specifies whether the Config Sync Repo is in "hierarchical" or "unstructured" mode. """ if git is not None: pulumi.set(__self__, "git", git) + if prevent_drift is not None: + pulumi.set(__self__, "prevent_drift", prevent_drift) if source_format is not None: pulumi.set(__self__, "source_format", source_format) @@ -163,6 +167,18 @@ def git(self) -> Optional[pulumi.Input['FeatureMembershipConfigmanagementConfigS def git(self, value: Optional[pulumi.Input['FeatureMembershipConfigmanagementConfigSyncGitArgs']]): pulumi.set(self, "git", value) + @property + @pulumi.getter(name="preventDrift") + def prevent_drift(self) -> Optional[pulumi.Input[bool]]: + """ + Supported from ACM versions 1.10.0 onwards. Set to true to enable the Config Sync admission webhook to prevent drifts. If set to "false", disables the Config Sync admission webhook and does not prevent drifts. + """ + return pulumi.get(self, "prevent_drift") + + @prevent_drift.setter + def prevent_drift(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "prevent_drift", value) + @property @pulumi.getter(name="sourceFormat") def source_format(self) -> Optional[pulumi.Input[str]]: diff --git a/sdk/python/pulumi_gcp/gkehub/feature.py b/sdk/python/pulumi_gcp/gkehub/feature.py index 756c212325..27d2c41249 100644 --- a/sdk/python/pulumi_gcp/gkehub/feature.py +++ b/sdk/python/pulumi_gcp/gkehub/feature.py @@ -321,6 +321,15 @@ def __init__(__self__, }, opts=pulumi.ResourceOptions(provider=google_beta)) ``` + ### Enable Anthos Service Mesh + + ```python + import pulumi + import pulumi_gcp as gcp + + feature = gcp.gkehub.Feature("feature", location="global", + opts=pulumi.ResourceOptions(provider=google_beta)) + ``` ## Import @@ -395,6 +404,15 @@ def __init__(__self__, }, opts=pulumi.ResourceOptions(provider=google_beta)) ``` + ### Enable Anthos Service Mesh + + ```python + import pulumi + import pulumi_gcp as gcp + + feature = gcp.gkehub.Feature("feature", location="global", + opts=pulumi.ResourceOptions(provider=google_beta)) + ``` ## Import diff --git a/sdk/python/pulumi_gcp/gkehub/outputs.py b/sdk/python/pulumi_gcp/gkehub/outputs.py index 245658ac28..662c3634e2 100644 --- a/sdk/python/pulumi_gcp/gkehub/outputs.py +++ b/sdk/python/pulumi_gcp/gkehub/outputs.py @@ -138,7 +138,9 @@ class FeatureMembershipConfigmanagementConfigSync(dict): @staticmethod def __key_warning(key: str): suggest = None - if key == "sourceFormat": + if key == "preventDrift": + suggest = "prevent_drift" + elif key == "sourceFormat": suggest = "source_format" if suggest: @@ -154,14 +156,18 @@ def get(self, key: str, default = None) -> Any: def __init__(__self__, *, git: Optional['outputs.FeatureMembershipConfigmanagementConfigSyncGit'] = None, + prevent_drift: Optional[bool] = None, source_format: Optional[str] = None): """ :param 'FeatureMembershipConfigmanagementConfigSyncGitArgs' git: - (Optional) Structure is documented below. + :param bool prevent_drift: Supported from ACM versions 1.10.0 onwards. Set to true to enable the Config Sync admission webhook to prevent drifts. If set to "false", disables the Config Sync admission webhook and does not prevent drifts. :param str source_format: Specifies whether the Config Sync Repo is in "hierarchical" or "unstructured" mode. """ if git is not None: pulumi.set(__self__, "git", git) + if prevent_drift is not None: + pulumi.set(__self__, "prevent_drift", prevent_drift) if source_format is not None: pulumi.set(__self__, "source_format", source_format) @@ -174,6 +180,14 @@ def git(self) -> Optional['outputs.FeatureMembershipConfigmanagementConfigSyncGi """ return pulumi.get(self, "git") + @property + @pulumi.getter(name="preventDrift") + def prevent_drift(self) -> Optional[bool]: + """ + Supported from ACM versions 1.10.0 onwards. Set to true to enable the Config Sync admission webhook to prevent drifts. If set to "false", disables the Config Sync admission webhook and does not prevent drifts. + """ + return pulumi.get(self, "prevent_drift") + @property @pulumi.getter(name="sourceFormat") def source_format(self) -> Optional[str]: diff --git a/sdk/python/pulumi_gcp/monitoring/_inputs.py b/sdk/python/pulumi_gcp/monitoring/_inputs.py index 9d3625c91a..1c0ee0b103 100644 --- a/sdk/python/pulumi_gcp/monitoring/_inputs.py +++ b/sdk/python/pulumi_gcp/monitoring/_inputs.py @@ -49,6 +49,7 @@ 'SloWindowsBasedSliMetricSumInRangeArgs', 'SloWindowsBasedSliMetricSumInRangeRangeArgs', 'UptimeCheckConfigContentMatcherArgs', + 'UptimeCheckConfigContentMatcherJsonPathMatcherArgs', 'UptimeCheckConfigHttpCheckArgs', 'UptimeCheckConfigHttpCheckAuthInfoArgs', 'UptimeCheckConfigMonitoredResourceArgs', @@ -3125,14 +3126,19 @@ def min(self, value: Optional[pulumi.Input[float]]): class UptimeCheckConfigContentMatcherArgs: def __init__(__self__, *, content: pulumi.Input[str], + json_path_matcher: Optional[pulumi.Input['UptimeCheckConfigContentMatcherJsonPathMatcherArgs']] = None, matcher: Optional[pulumi.Input[str]] = None): """ :param pulumi.Input[str] content: String or regex content to match (max 1024 bytes) + :param pulumi.Input['UptimeCheckConfigContentMatcherJsonPathMatcherArgs'] json_path_matcher: Information needed to perform a JSONPath content match. Used for `ContentMatcherOption::MATCHES_JSON_PATH` and `ContentMatcherOption::NOT_MATCHES_JSON_PATH`. + Structure is documented below. :param pulumi.Input[str] matcher: The type of content matcher that will be applied to the server output, compared to the content string when the check is run. Default value is `CONTAINS_STRING`. - Possible values are `CONTAINS_STRING`, `NOT_CONTAINS_STRING`, `MATCHES_REGEX`, and `NOT_MATCHES_REGEX`. + Possible values are `CONTAINS_STRING`, `NOT_CONTAINS_STRING`, `MATCHES_REGEX`, `NOT_MATCHES_REGEX`, `MATCHES_JSON_PATH`, and `NOT_MATCHES_JSON_PATH`. """ pulumi.set(__self__, "content", content) + if json_path_matcher is not None: + pulumi.set(__self__, "json_path_matcher", json_path_matcher) if matcher is not None: pulumi.set(__self__, "matcher", matcher) @@ -3148,13 +3154,26 @@ def content(self) -> pulumi.Input[str]: def content(self, value: pulumi.Input[str]): pulumi.set(self, "content", value) + @property + @pulumi.getter(name="jsonPathMatcher") + def json_path_matcher(self) -> Optional[pulumi.Input['UptimeCheckConfigContentMatcherJsonPathMatcherArgs']]: + """ + Information needed to perform a JSONPath content match. Used for `ContentMatcherOption::MATCHES_JSON_PATH` and `ContentMatcherOption::NOT_MATCHES_JSON_PATH`. + Structure is documented below. + """ + return pulumi.get(self, "json_path_matcher") + + @json_path_matcher.setter + def json_path_matcher(self, value: Optional[pulumi.Input['UptimeCheckConfigContentMatcherJsonPathMatcherArgs']]): + pulumi.set(self, "json_path_matcher", value) + @property @pulumi.getter def matcher(self) -> Optional[pulumi.Input[str]]: """ The type of content matcher that will be applied to the server output, compared to the content string when the check is run. Default value is `CONTAINS_STRING`. - Possible values are `CONTAINS_STRING`, `NOT_CONTAINS_STRING`, `MATCHES_REGEX`, and `NOT_MATCHES_REGEX`. + Possible values are `CONTAINS_STRING`, `NOT_CONTAINS_STRING`, `MATCHES_REGEX`, `NOT_MATCHES_REGEX`, `MATCHES_JSON_PATH`, and `NOT_MATCHES_JSON_PATH`. """ return pulumi.get(self, "matcher") @@ -3163,6 +3182,48 @@ def matcher(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "matcher", value) +@pulumi.input_type +class UptimeCheckConfigContentMatcherJsonPathMatcherArgs: + def __init__(__self__, *, + json_path: pulumi.Input[str], + json_matcher: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] json_path: JSONPath within the response output pointing to the expected `ContentMatcher::content` to match against. + :param pulumi.Input[str] json_matcher: Options to perform JSONPath content matching. + Default value is `EXACT_MATCH`. + Possible values are `EXACT_MATCH` and `REGEX_MATCH`. + """ + pulumi.set(__self__, "json_path", json_path) + if json_matcher is not None: + pulumi.set(__self__, "json_matcher", json_matcher) + + @property + @pulumi.getter(name="jsonPath") + def json_path(self) -> pulumi.Input[str]: + """ + JSONPath within the response output pointing to the expected `ContentMatcher::content` to match against. + """ + return pulumi.get(self, "json_path") + + @json_path.setter + def json_path(self, value: pulumi.Input[str]): + pulumi.set(self, "json_path", value) + + @property + @pulumi.getter(name="jsonMatcher") + def json_matcher(self) -> Optional[pulumi.Input[str]]: + """ + Options to perform JSONPath content matching. + Default value is `EXACT_MATCH`. + Possible values are `EXACT_MATCH` and `REGEX_MATCH`. + """ + return pulumi.get(self, "json_matcher") + + @json_matcher.setter + def json_matcher(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "json_matcher", value) + + @pulumi.input_type class UptimeCheckConfigHttpCheckArgs: def __init__(__self__, *, diff --git a/sdk/python/pulumi_gcp/monitoring/custom_service.py b/sdk/python/pulumi_gcp/monitoring/custom_service.py index 0335a4995b..a1cd253a84 100644 --- a/sdk/python/pulumi_gcp/monitoring/custom_service.py +++ b/sdk/python/pulumi_gcp/monitoring/custom_service.py @@ -18,7 +18,8 @@ def __init__(__self__, *, display_name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, service_id: Optional[pulumi.Input[str]] = None, - telemetry: Optional[pulumi.Input['CustomServiceTelemetryArgs']] = None): + telemetry: Optional[pulumi.Input['CustomServiceTelemetryArgs']] = None, + user_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None): """ The set of arguments for constructing a CustomService resource. :param pulumi.Input[str] display_name: Name used for UI elements listing this Service. @@ -28,6 +29,12 @@ def __init__(__self__, *, service ID. :param pulumi.Input['CustomServiceTelemetryArgs'] telemetry: Configuration for how to query telemetry on a Service. Structure is documented below. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] user_labels: Labels which have been used to annotate the service. Label keys must start + with a letter. Label keys and values may contain lowercase letters, + numbers, underscores, and dashes. Label keys and values have a maximum + length of 63 characters, and must be less than 128 bytes in size. Up to 64 + label entries may be stored. For labels which do not have a semantic value, + the empty string may be supplied for the label value. """ if display_name is not None: pulumi.set(__self__, "display_name", display_name) @@ -37,6 +44,8 @@ def __init__(__self__, *, pulumi.set(__self__, "service_id", service_id) if telemetry is not None: pulumi.set(__self__, "telemetry", telemetry) + if user_labels is not None: + pulumi.set(__self__, "user_labels", user_labels) @property @pulumi.getter(name="displayName") @@ -89,6 +98,23 @@ def telemetry(self) -> Optional[pulumi.Input['CustomServiceTelemetryArgs']]: def telemetry(self, value: Optional[pulumi.Input['CustomServiceTelemetryArgs']]): pulumi.set(self, "telemetry", value) + @property + @pulumi.getter(name="userLabels") + def user_labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + Labels which have been used to annotate the service. Label keys must start + with a letter. Label keys and values may contain lowercase letters, + numbers, underscores, and dashes. Label keys and values have a maximum + length of 63 characters, and must be less than 128 bytes in size. Up to 64 + label entries may be stored. For labels which do not have a semantic value, + the empty string may be supplied for the label value. + """ + return pulumi.get(self, "user_labels") + + @user_labels.setter + def user_labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "user_labels", value) + @pulumi.input_type class _CustomServiceState: @@ -97,7 +123,8 @@ def __init__(__self__, *, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, service_id: Optional[pulumi.Input[str]] = None, - telemetry: Optional[pulumi.Input['CustomServiceTelemetryArgs']] = None): + telemetry: Optional[pulumi.Input['CustomServiceTelemetryArgs']] = None, + user_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None): """ Input properties used for looking up and filtering CustomService resources. :param pulumi.Input[str] display_name: Name used for UI elements listing this Service. @@ -108,6 +135,12 @@ def __init__(__self__, *, service ID. :param pulumi.Input['CustomServiceTelemetryArgs'] telemetry: Configuration for how to query telemetry on a Service. Structure is documented below. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] user_labels: Labels which have been used to annotate the service. Label keys must start + with a letter. Label keys and values may contain lowercase letters, + numbers, underscores, and dashes. Label keys and values have a maximum + length of 63 characters, and must be less than 128 bytes in size. Up to 64 + label entries may be stored. For labels which do not have a semantic value, + the empty string may be supplied for the label value. """ if display_name is not None: pulumi.set(__self__, "display_name", display_name) @@ -119,6 +152,8 @@ def __init__(__self__, *, pulumi.set(__self__, "service_id", service_id) if telemetry is not None: pulumi.set(__self__, "telemetry", telemetry) + if user_labels is not None: + pulumi.set(__self__, "user_labels", user_labels) @property @pulumi.getter(name="displayName") @@ -183,6 +218,23 @@ def telemetry(self) -> Optional[pulumi.Input['CustomServiceTelemetryArgs']]: def telemetry(self, value: Optional[pulumi.Input['CustomServiceTelemetryArgs']]): pulumi.set(self, "telemetry", value) + @property + @pulumi.getter(name="userLabels") + def user_labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + Labels which have been used to annotate the service. Label keys must start + with a letter. Label keys and values may contain lowercase letters, + numbers, underscores, and dashes. Label keys and values have a maximum + length of 63 characters, and must be less than 128 bytes in size. Up to 64 + label entries may be stored. For labels which do not have a semantic value, + the empty string may be supplied for the label value. + """ + return pulumi.get(self, "user_labels") + + @user_labels.setter + def user_labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "user_labels", value) + class CustomService(pulumi.CustomResource): @overload @@ -193,6 +245,7 @@ def __init__(__self__, project: Optional[pulumi.Input[str]] = None, service_id: Optional[pulumi.Input[str]] = None, telemetry: Optional[pulumi.Input[pulumi.InputType['CustomServiceTelemetryArgs']]] = None, + user_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, __props__=None): """ A Service is a discrete, autonomous, and network-accessible unit, @@ -219,7 +272,11 @@ def __init__(__self__, service_id="custom-srv", telemetry=gcp.monitoring.CustomServiceTelemetryArgs( resource_name="//product.googleapis.com/foo/foo/services/test", - )) + ), + user_labels={ + "my_key": "my_value", + "my_other_key": "my_other_value", + }) ``` ## Import @@ -239,6 +296,12 @@ def __init__(__self__, service ID. :param pulumi.Input[pulumi.InputType['CustomServiceTelemetryArgs']] telemetry: Configuration for how to query telemetry on a Service. Structure is documented below. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] user_labels: Labels which have been used to annotate the service. Label keys must start + with a letter. Label keys and values may contain lowercase letters, + numbers, underscores, and dashes. Label keys and values have a maximum + length of 63 characters, and must be less than 128 bytes in size. Up to 64 + label entries may be stored. For labels which do not have a semantic value, + the empty string may be supplied for the label value. """ ... @overload @@ -271,7 +334,11 @@ def __init__(__self__, service_id="custom-srv", telemetry=gcp.monitoring.CustomServiceTelemetryArgs( resource_name="//product.googleapis.com/foo/foo/services/test", - )) + ), + user_labels={ + "my_key": "my_value", + "my_other_key": "my_other_value", + }) ``` ## Import @@ -301,6 +368,7 @@ def _internal_init(__self__, project: Optional[pulumi.Input[str]] = None, service_id: Optional[pulumi.Input[str]] = None, telemetry: Optional[pulumi.Input[pulumi.InputType['CustomServiceTelemetryArgs']]] = None, + user_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, __props__=None): if opts is None: opts = pulumi.ResourceOptions() @@ -317,6 +385,7 @@ def _internal_init(__self__, __props__.__dict__["project"] = project __props__.__dict__["service_id"] = service_id __props__.__dict__["telemetry"] = telemetry + __props__.__dict__["user_labels"] = user_labels __props__.__dict__["name"] = None super(CustomService, __self__).__init__( 'gcp:monitoring/customService:CustomService', @@ -332,7 +401,8 @@ def get(resource_name: str, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, service_id: Optional[pulumi.Input[str]] = None, - telemetry: Optional[pulumi.Input[pulumi.InputType['CustomServiceTelemetryArgs']]] = None) -> 'CustomService': + telemetry: Optional[pulumi.Input[pulumi.InputType['CustomServiceTelemetryArgs']]] = None, + user_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None) -> 'CustomService': """ Get an existing CustomService resource's state with the given name, id, and optional extra properties used to qualify the lookup. @@ -348,6 +418,12 @@ def get(resource_name: str, service ID. :param pulumi.Input[pulumi.InputType['CustomServiceTelemetryArgs']] telemetry: Configuration for how to query telemetry on a Service. Structure is documented below. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] user_labels: Labels which have been used to annotate the service. Label keys must start + with a letter. Label keys and values may contain lowercase letters, + numbers, underscores, and dashes. Label keys and values have a maximum + length of 63 characters, and must be less than 128 bytes in size. Up to 64 + label entries may be stored. For labels which do not have a semantic value, + the empty string may be supplied for the label value. """ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) @@ -358,6 +434,7 @@ def get(resource_name: str, __props__.__dict__["project"] = project __props__.__dict__["service_id"] = service_id __props__.__dict__["telemetry"] = telemetry + __props__.__dict__["user_labels"] = user_labels return CustomService(resource_name, opts=opts, __props__=__props__) @property @@ -403,3 +480,16 @@ def telemetry(self) -> pulumi.Output[Optional['outputs.CustomServiceTelemetry']] """ return pulumi.get(self, "telemetry") + @property + @pulumi.getter(name="userLabels") + def user_labels(self) -> pulumi.Output[Optional[Mapping[str, str]]]: + """ + Labels which have been used to annotate the service. Label keys must start + with a letter. Label keys and values may contain lowercase letters, + numbers, underscores, and dashes. Label keys and values have a maximum + length of 63 characters, and must be less than 128 bytes in size. Up to 64 + label entries may be stored. For labels which do not have a semantic value, + the empty string may be supplied for the label value. + """ + return pulumi.get(self, "user_labels") + diff --git a/sdk/python/pulumi_gcp/monitoring/get_app_engine_service.py b/sdk/python/pulumi_gcp/monitoring/get_app_engine_service.py index 4e1d9f0403..105196ae40 100644 --- a/sdk/python/pulumi_gcp/monitoring/get_app_engine_service.py +++ b/sdk/python/pulumi_gcp/monitoring/get_app_engine_service.py @@ -21,7 +21,7 @@ class GetAppEngineServiceResult: """ A collection of values returned by getAppEngineService. """ - def __init__(__self__, display_name=None, id=None, module_id=None, name=None, project=None, service_id=None, telemetries=None): + def __init__(__self__, display_name=None, id=None, module_id=None, name=None, project=None, service_id=None, telemetries=None, user_labels=None): 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) @@ -43,6 +43,9 @@ def __init__(__self__, display_name=None, id=None, module_id=None, name=None, pr if telemetries and not isinstance(telemetries, list): raise TypeError("Expected argument 'telemetries' to be a list") pulumi.set(__self__, "telemetries", telemetries) + if user_labels and not isinstance(user_labels, dict): + raise TypeError("Expected argument 'user_labels' to be a dict") + pulumi.set(__self__, "user_labels", user_labels) @property @pulumi.getter(name="displayName") @@ -82,6 +85,11 @@ def service_id(self) -> str: def telemetries(self) -> Sequence['outputs.GetAppEngineServiceTelemetryResult']: return pulumi.get(self, "telemetries") + @property + @pulumi.getter(name="userLabels") + def user_labels(self) -> Mapping[str, str]: + return pulumi.get(self, "user_labels") + class AwaitableGetAppEngineServiceResult(GetAppEngineServiceResult): # pylint: disable=using-constant-test @@ -95,7 +103,8 @@ def __await__(self): name=self.name, project=self.project, service_id=self.service_id, - telemetries=self.telemetries) + telemetries=self.telemetries, + user_labels=self.user_labels) def get_app_engine_service(module_id: Optional[str] = None, @@ -168,7 +177,8 @@ def get_app_engine_service(module_id: Optional[str] = None, name=__ret__.name, project=__ret__.project, service_id=__ret__.service_id, - telemetries=__ret__.telemetries) + telemetries=__ret__.telemetries, + user_labels=__ret__.user_labels) @_utilities.lift_output_func(get_app_engine_service) diff --git a/sdk/python/pulumi_gcp/monitoring/get_cluster_istio_service.py b/sdk/python/pulumi_gcp/monitoring/get_cluster_istio_service.py index ab0101afdb..572e9ff9e2 100644 --- a/sdk/python/pulumi_gcp/monitoring/get_cluster_istio_service.py +++ b/sdk/python/pulumi_gcp/monitoring/get_cluster_istio_service.py @@ -21,7 +21,7 @@ class GetClusterIstioServiceResult: """ A collection of values returned by getClusterIstioService. """ - def __init__(__self__, cluster_name=None, display_name=None, id=None, location=None, name=None, project=None, service_id=None, service_name=None, service_namespace=None, telemetries=None): + def __init__(__self__, cluster_name=None, display_name=None, id=None, location=None, name=None, project=None, service_id=None, service_name=None, service_namespace=None, telemetries=None, user_labels=None): if cluster_name and not isinstance(cluster_name, str): raise TypeError("Expected argument 'cluster_name' to be a str") pulumi.set(__self__, "cluster_name", cluster_name) @@ -52,6 +52,9 @@ def __init__(__self__, cluster_name=None, display_name=None, id=None, location=N if telemetries and not isinstance(telemetries, list): raise TypeError("Expected argument 'telemetries' to be a list") pulumi.set(__self__, "telemetries", telemetries) + if user_labels and not isinstance(user_labels, dict): + raise TypeError("Expected argument 'user_labels' to be a dict") + pulumi.set(__self__, "user_labels", user_labels) @property @pulumi.getter(name="clusterName") @@ -106,6 +109,11 @@ def service_namespace(self) -> str: def telemetries(self) -> Sequence['outputs.GetClusterIstioServiceTelemetryResult']: return pulumi.get(self, "telemetries") + @property + @pulumi.getter(name="userLabels") + def user_labels(self) -> Mapping[str, str]: + return pulumi.get(self, "user_labels") + class AwaitableGetClusterIstioServiceResult(GetClusterIstioServiceResult): # pylint: disable=using-constant-test @@ -122,7 +130,8 @@ def __await__(self): service_id=self.service_id, service_name=self.service_name, service_namespace=self.service_namespace, - telemetries=self.telemetries) + telemetries=self.telemetries, + user_labels=self.user_labels) def get_cluster_istio_service(cluster_name: Optional[str] = None, @@ -193,7 +202,8 @@ def get_cluster_istio_service(cluster_name: Optional[str] = None, service_id=__ret__.service_id, service_name=__ret__.service_name, service_namespace=__ret__.service_namespace, - telemetries=__ret__.telemetries) + telemetries=__ret__.telemetries, + user_labels=__ret__.user_labels) @_utilities.lift_output_func(get_cluster_istio_service) diff --git a/sdk/python/pulumi_gcp/monitoring/get_istio_canonical_service.py b/sdk/python/pulumi_gcp/monitoring/get_istio_canonical_service.py index e90e486655..9bf20c5095 100644 --- a/sdk/python/pulumi_gcp/monitoring/get_istio_canonical_service.py +++ b/sdk/python/pulumi_gcp/monitoring/get_istio_canonical_service.py @@ -21,7 +21,7 @@ class GetIstioCanonicalServiceResult: """ A collection of values returned by getIstioCanonicalService. """ - def __init__(__self__, canonical_service=None, canonical_service_namespace=None, display_name=None, id=None, mesh_uid=None, name=None, project=None, service_id=None, telemetries=None): + def __init__(__self__, canonical_service=None, canonical_service_namespace=None, display_name=None, id=None, mesh_uid=None, name=None, project=None, service_id=None, telemetries=None, user_labels=None): if canonical_service and not isinstance(canonical_service, str): raise TypeError("Expected argument 'canonical_service' to be a str") pulumi.set(__self__, "canonical_service", canonical_service) @@ -49,6 +49,9 @@ def __init__(__self__, canonical_service=None, canonical_service_namespace=None, if telemetries and not isinstance(telemetries, list): raise TypeError("Expected argument 'telemetries' to be a list") pulumi.set(__self__, "telemetries", telemetries) + if user_labels and not isinstance(user_labels, dict): + raise TypeError("Expected argument 'user_labels' to be a dict") + pulumi.set(__self__, "user_labels", user_labels) @property @pulumi.getter(name="canonicalService") @@ -98,6 +101,11 @@ def service_id(self) -> str: def telemetries(self) -> Sequence['outputs.GetIstioCanonicalServiceTelemetryResult']: return pulumi.get(self, "telemetries") + @property + @pulumi.getter(name="userLabels") + def user_labels(self) -> Mapping[str, str]: + return pulumi.get(self, "user_labels") + class AwaitableGetIstioCanonicalServiceResult(GetIstioCanonicalServiceResult): # pylint: disable=using-constant-test @@ -113,7 +121,8 @@ def __await__(self): name=self.name, project=self.project, service_id=self.service_id, - telemetries=self.telemetries) + telemetries=self.telemetries, + user_labels=self.user_labels) def get_istio_canonical_service(canonical_service: Optional[str] = None, @@ -178,7 +187,8 @@ def get_istio_canonical_service(canonical_service: Optional[str] = None, name=__ret__.name, project=__ret__.project, service_id=__ret__.service_id, - telemetries=__ret__.telemetries) + telemetries=__ret__.telemetries, + user_labels=__ret__.user_labels) @_utilities.lift_output_func(get_istio_canonical_service) diff --git a/sdk/python/pulumi_gcp/monitoring/get_mesh_istio_service.py b/sdk/python/pulumi_gcp/monitoring/get_mesh_istio_service.py index 833fadbc99..8680d326d4 100644 --- a/sdk/python/pulumi_gcp/monitoring/get_mesh_istio_service.py +++ b/sdk/python/pulumi_gcp/monitoring/get_mesh_istio_service.py @@ -21,7 +21,7 @@ class GetMeshIstioServiceResult: """ A collection of values returned by getMeshIstioService. """ - def __init__(__self__, display_name=None, id=None, mesh_uid=None, name=None, project=None, service_id=None, service_name=None, service_namespace=None, telemetries=None): + def __init__(__self__, display_name=None, id=None, mesh_uid=None, name=None, project=None, service_id=None, service_name=None, service_namespace=None, telemetries=None, user_labels=None): 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) @@ -49,6 +49,9 @@ def __init__(__self__, display_name=None, id=None, mesh_uid=None, name=None, pro if telemetries and not isinstance(telemetries, list): raise TypeError("Expected argument 'telemetries' to be a list") pulumi.set(__self__, "telemetries", telemetries) + if user_labels and not isinstance(user_labels, dict): + raise TypeError("Expected argument 'user_labels' to be a dict") + pulumi.set(__self__, "user_labels", user_labels) @property @pulumi.getter(name="displayName") @@ -98,6 +101,11 @@ def service_namespace(self) -> str: def telemetries(self) -> Sequence['outputs.GetMeshIstioServiceTelemetryResult']: return pulumi.get(self, "telemetries") + @property + @pulumi.getter(name="userLabels") + def user_labels(self) -> Mapping[str, str]: + return pulumi.get(self, "user_labels") + class AwaitableGetMeshIstioServiceResult(GetMeshIstioServiceResult): # pylint: disable=using-constant-test @@ -113,7 +121,8 @@ def __await__(self): service_id=self.service_id, service_name=self.service_name, service_namespace=self.service_namespace, - telemetries=self.telemetries) + telemetries=self.telemetries, + user_labels=self.user_labels) def get_mesh_istio_service(mesh_uid: Optional[str] = None, @@ -178,7 +187,8 @@ def get_mesh_istio_service(mesh_uid: Optional[str] = None, service_id=__ret__.service_id, service_name=__ret__.service_name, service_namespace=__ret__.service_namespace, - telemetries=__ret__.telemetries) + telemetries=__ret__.telemetries, + user_labels=__ret__.user_labels) @_utilities.lift_output_func(get_mesh_istio_service) diff --git a/sdk/python/pulumi_gcp/monitoring/outputs.py b/sdk/python/pulumi_gcp/monitoring/outputs.py index 10b79d878d..9a2cf97eab 100644 --- a/sdk/python/pulumi_gcp/monitoring/outputs.py +++ b/sdk/python/pulumi_gcp/monitoring/outputs.py @@ -50,6 +50,7 @@ 'SloWindowsBasedSliMetricSumInRange', 'SloWindowsBasedSliMetricSumInRangeRange', 'UptimeCheckConfigContentMatcher', + 'UptimeCheckConfigContentMatcherJsonPathMatcher', 'UptimeCheckConfigHttpCheck', 'UptimeCheckConfigHttpCheckAuthInfo', 'UptimeCheckConfigMonitoredResource', @@ -3159,16 +3160,38 @@ def min(self) -> Optional[float]: @pulumi.output_type class UptimeCheckConfigContentMatcher(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "jsonPathMatcher": + suggest = "json_path_matcher" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in UptimeCheckConfigContentMatcher. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + UptimeCheckConfigContentMatcher.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + UptimeCheckConfigContentMatcher.__key_warning(key) + return super().get(key, default) + def __init__(__self__, *, content: str, + json_path_matcher: Optional['outputs.UptimeCheckConfigContentMatcherJsonPathMatcher'] = None, matcher: Optional[str] = None): """ :param str content: String or regex content to match (max 1024 bytes) + :param 'UptimeCheckConfigContentMatcherJsonPathMatcherArgs' json_path_matcher: Information needed to perform a JSONPath content match. Used for `ContentMatcherOption::MATCHES_JSON_PATH` and `ContentMatcherOption::NOT_MATCHES_JSON_PATH`. + Structure is documented below. :param str matcher: The type of content matcher that will be applied to the server output, compared to the content string when the check is run. Default value is `CONTAINS_STRING`. - Possible values are `CONTAINS_STRING`, `NOT_CONTAINS_STRING`, `MATCHES_REGEX`, and `NOT_MATCHES_REGEX`. + Possible values are `CONTAINS_STRING`, `NOT_CONTAINS_STRING`, `MATCHES_REGEX`, `NOT_MATCHES_REGEX`, `MATCHES_JSON_PATH`, and `NOT_MATCHES_JSON_PATH`. """ pulumi.set(__self__, "content", content) + if json_path_matcher is not None: + pulumi.set(__self__, "json_path_matcher", json_path_matcher) if matcher is not None: pulumi.set(__self__, "matcher", matcher) @@ -3180,17 +3203,79 @@ def content(self) -> str: """ return pulumi.get(self, "content") + @property + @pulumi.getter(name="jsonPathMatcher") + def json_path_matcher(self) -> Optional['outputs.UptimeCheckConfigContentMatcherJsonPathMatcher']: + """ + Information needed to perform a JSONPath content match. Used for `ContentMatcherOption::MATCHES_JSON_PATH` and `ContentMatcherOption::NOT_MATCHES_JSON_PATH`. + Structure is documented below. + """ + return pulumi.get(self, "json_path_matcher") + @property @pulumi.getter def matcher(self) -> Optional[str]: """ The type of content matcher that will be applied to the server output, compared to the content string when the check is run. Default value is `CONTAINS_STRING`. - Possible values are `CONTAINS_STRING`, `NOT_CONTAINS_STRING`, `MATCHES_REGEX`, and `NOT_MATCHES_REGEX`. + Possible values are `CONTAINS_STRING`, `NOT_CONTAINS_STRING`, `MATCHES_REGEX`, `NOT_MATCHES_REGEX`, `MATCHES_JSON_PATH`, and `NOT_MATCHES_JSON_PATH`. """ return pulumi.get(self, "matcher") +@pulumi.output_type +class UptimeCheckConfigContentMatcherJsonPathMatcher(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "jsonPath": + suggest = "json_path" + elif key == "jsonMatcher": + suggest = "json_matcher" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in UptimeCheckConfigContentMatcherJsonPathMatcher. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + UptimeCheckConfigContentMatcherJsonPathMatcher.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + UptimeCheckConfigContentMatcherJsonPathMatcher.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + json_path: str, + json_matcher: Optional[str] = None): + """ + :param str json_path: JSONPath within the response output pointing to the expected `ContentMatcher::content` to match against. + :param str json_matcher: Options to perform JSONPath content matching. + Default value is `EXACT_MATCH`. + Possible values are `EXACT_MATCH` and `REGEX_MATCH`. + """ + pulumi.set(__self__, "json_path", json_path) + if json_matcher is not None: + pulumi.set(__self__, "json_matcher", json_matcher) + + @property + @pulumi.getter(name="jsonPath") + def json_path(self) -> str: + """ + JSONPath within the response output pointing to the expected `ContentMatcher::content` to match against. + """ + return pulumi.get(self, "json_path") + + @property + @pulumi.getter(name="jsonMatcher") + def json_matcher(self) -> Optional[str]: + """ + Options to perform JSONPath content matching. + Default value is `EXACT_MATCH`. + Possible values are `EXACT_MATCH` and `REGEX_MATCH`. + """ + return pulumi.get(self, "json_matcher") + + @pulumi.output_type class UptimeCheckConfigHttpCheck(dict): @staticmethod diff --git a/sdk/python/pulumi_gcp/monitoring/slo.py b/sdk/python/pulumi_gcp/monitoring/slo.py index 0453f20be0..c392cb3e2f 100644 --- a/sdk/python/pulumi_gcp/monitoring/slo.py +++ b/sdk/python/pulumi_gcp/monitoring/slo.py @@ -24,6 +24,7 @@ def __init__(__self__, *, request_based_sli: Optional[pulumi.Input['SloRequestBasedSliArgs']] = None, rolling_period_days: Optional[pulumi.Input[int]] = None, slo_id: Optional[pulumi.Input[str]] = None, + user_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, windows_based_sli: Optional[pulumi.Input['SloWindowsBasedSliArgs']] = None): """ The set of arguments for constructing a Slo resource. @@ -54,6 +55,11 @@ def __init__(__self__, *, :param pulumi.Input[int] rolling_period_days: A rolling time period, semantically "in the past X days". Must be between 1 to 30 days, inclusive. :param pulumi.Input[str] slo_id: The id to use for this ServiceLevelObjective. If omitted, an id will be generated instead. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] user_labels: This field is intended to be used for organizing and identifying the AlertPolicy + objects.The field can contain up to 64 entries. Each key and value is limited + to 63 Unicode characters or 128 bytes, whichever is smaller. Labels and values + can contain only lowercase letters, numerals, underscores, and dashes. Keys + must begin with a letter. :param pulumi.Input['SloWindowsBasedSliArgs'] windows_based_sli: A windows-based SLI defines the criteria for time windows. good_service is defined based off the count of these time windows for which the provided service was of good quality. @@ -80,6 +86,8 @@ def __init__(__self__, *, pulumi.set(__self__, "rolling_period_days", rolling_period_days) if slo_id is not None: pulumi.set(__self__, "slo_id", slo_id) + if user_labels is not None: + pulumi.set(__self__, "user_labels", user_labels) if windows_based_sli is not None: pulumi.set(__self__, "windows_based_sli", windows_based_sli) @@ -209,6 +217,22 @@ def slo_id(self) -> Optional[pulumi.Input[str]]: def slo_id(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "slo_id", value) + @property + @pulumi.getter(name="userLabels") + def user_labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + This field is intended to be used for organizing and identifying the AlertPolicy + objects.The field can contain up to 64 entries. Each key and value is limited + to 63 Unicode characters or 128 bytes, whichever is smaller. Labels and values + can contain only lowercase letters, numerals, underscores, and dashes. Keys + must begin with a letter. + """ + return pulumi.get(self, "user_labels") + + @user_labels.setter + def user_labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "user_labels", value) + @property @pulumi.getter(name="windowsBasedSli") def windows_based_sli(self) -> Optional[pulumi.Input['SloWindowsBasedSliArgs']]: @@ -243,6 +267,7 @@ def __init__(__self__, *, rolling_period_days: Optional[pulumi.Input[int]] = None, service: Optional[pulumi.Input[str]] = None, slo_id: Optional[pulumi.Input[str]] = None, + user_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, windows_based_sli: Optional[pulumi.Input['SloWindowsBasedSliArgs']] = None): """ Input properties used for looking up and filtering Slo resources. @@ -275,6 +300,11 @@ def __init__(__self__, *, Must be between 1 to 30 days, inclusive. :param pulumi.Input[str] service: ID of the service to which this SLO belongs. :param pulumi.Input[str] slo_id: The id to use for this ServiceLevelObjective. If omitted, an id will be generated instead. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] user_labels: This field is intended to be used for organizing and identifying the AlertPolicy + objects.The field can contain up to 64 entries. Each key and value is limited + to 63 Unicode characters or 128 bytes, whichever is smaller. Labels and values + can contain only lowercase letters, numerals, underscores, and dashes. Keys + must begin with a letter. :param pulumi.Input['SloWindowsBasedSliArgs'] windows_based_sli: A windows-based SLI defines the criteria for time windows. good_service is defined based off the count of these time windows for which the provided service was of good quality. @@ -305,6 +335,8 @@ def __init__(__self__, *, pulumi.set(__self__, "service", service) if slo_id is not None: pulumi.set(__self__, "slo_id", slo_id) + if user_labels is not None: + pulumi.set(__self__, "user_labels", user_labels) if windows_based_sli is not None: pulumi.set(__self__, "windows_based_sli", windows_based_sli) @@ -447,6 +479,22 @@ def slo_id(self) -> Optional[pulumi.Input[str]]: def slo_id(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "slo_id", value) + @property + @pulumi.getter(name="userLabels") + def user_labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + This field is intended to be used for organizing and identifying the AlertPolicy + objects.The field can contain up to 64 entries. Each key and value is limited + to 63 Unicode characters or 128 bytes, whichever is smaller. Labels and values + can contain only lowercase letters, numerals, underscores, and dashes. Keys + must begin with a letter. + """ + return pulumi.get(self, "user_labels") + + @user_labels.setter + def user_labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "user_labels", value) + @property @pulumi.getter(name="windowsBasedSli") def windows_based_sli(self) -> Optional[pulumi.Input['SloWindowsBasedSliArgs']]: @@ -482,6 +530,7 @@ def __init__(__self__, rolling_period_days: Optional[pulumi.Input[int]] = None, service: Optional[pulumi.Input[str]] = None, slo_id: Optional[pulumi.Input[str]] = None, + user_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, windows_based_sli: Optional[pulumi.Input[pulumi.InputType['SloWindowsBasedSliArgs']]] = None, __props__=None): """ @@ -518,7 +567,11 @@ def __init__(__self__, latency=gcp.monitoring.SloBasicSliLatencyArgs( threshold="1s", ), - )) + ), + user_labels={ + "my_key": "my_value", + "my_other_key": "my_other_value", + }) ``` ### Monitoring Slo Request Based @@ -582,6 +635,11 @@ def __init__(__self__, Must be between 1 to 30 days, inclusive. :param pulumi.Input[str] service: ID of the service to which this SLO belongs. :param pulumi.Input[str] slo_id: The id to use for this ServiceLevelObjective. If omitted, an id will be generated instead. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] user_labels: This field is intended to be used for organizing and identifying the AlertPolicy + objects.The field can contain up to 64 entries. Each key and value is limited + to 63 Unicode characters or 128 bytes, whichever is smaller. Labels and values + can contain only lowercase letters, numerals, underscores, and dashes. Keys + must begin with a letter. :param pulumi.Input[pulumi.InputType['SloWindowsBasedSliArgs']] windows_based_sli: A windows-based SLI defines the criteria for time windows. good_service is defined based off the count of these time windows for which the provided service was of good quality. @@ -632,7 +690,11 @@ def __init__(__self__, latency=gcp.monitoring.SloBasicSliLatencyArgs( threshold="1s", ), - )) + ), + user_labels={ + "my_key": "my_value", + "my_other_key": "my_other_value", + }) ``` ### Monitoring Slo Request Based @@ -691,6 +753,7 @@ def _internal_init(__self__, rolling_period_days: Optional[pulumi.Input[int]] = None, service: Optional[pulumi.Input[str]] = None, slo_id: Optional[pulumi.Input[str]] = None, + user_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, windows_based_sli: Optional[pulumi.Input[pulumi.InputType['SloWindowsBasedSliArgs']]] = None, __props__=None): if opts is None: @@ -717,6 +780,7 @@ def _internal_init(__self__, raise TypeError("Missing required property 'service'") __props__.__dict__["service"] = service __props__.__dict__["slo_id"] = slo_id + __props__.__dict__["user_labels"] = user_labels __props__.__dict__["windows_based_sli"] = windows_based_sli __props__.__dict__["name"] = None super(Slo, __self__).__init__( @@ -739,6 +803,7 @@ def get(resource_name: str, rolling_period_days: Optional[pulumi.Input[int]] = None, service: Optional[pulumi.Input[str]] = None, slo_id: Optional[pulumi.Input[str]] = None, + user_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, windows_based_sli: Optional[pulumi.Input[pulumi.InputType['SloWindowsBasedSliArgs']]] = None) -> 'Slo': """ Get an existing Slo resource's state with the given name, id, and optional extra @@ -776,6 +841,11 @@ def get(resource_name: str, Must be between 1 to 30 days, inclusive. :param pulumi.Input[str] service: ID of the service to which this SLO belongs. :param pulumi.Input[str] slo_id: The id to use for this ServiceLevelObjective. If omitted, an id will be generated instead. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] user_labels: This field is intended to be used for organizing and identifying the AlertPolicy + objects.The field can contain up to 64 entries. Each key and value is limited + to 63 Unicode characters or 128 bytes, whichever is smaller. Labels and values + can contain only lowercase letters, numerals, underscores, and dashes. Keys + must begin with a letter. :param pulumi.Input[pulumi.InputType['SloWindowsBasedSliArgs']] windows_based_sli: A windows-based SLI defines the criteria for time windows. good_service is defined based off the count of these time windows for which the provided service was of good quality. @@ -800,6 +870,7 @@ def get(resource_name: str, __props__.__dict__["rolling_period_days"] = rolling_period_days __props__.__dict__["service"] = service __props__.__dict__["slo_id"] = slo_id + __props__.__dict__["user_labels"] = user_labels __props__.__dict__["windows_based_sli"] = windows_based_sli return Slo(resource_name, opts=opts, __props__=__props__) @@ -902,6 +973,18 @@ def slo_id(self) -> pulumi.Output[str]: """ return pulumi.get(self, "slo_id") + @property + @pulumi.getter(name="userLabels") + def user_labels(self) -> pulumi.Output[Optional[Mapping[str, str]]]: + """ + This field is intended to be used for organizing and identifying the AlertPolicy + objects.The field can contain up to 64 entries. Each key and value is limited + to 63 Unicode characters or 128 bytes, whichever is smaller. Labels and values + can contain only lowercase letters, numerals, underscores, and dashes. Keys + must begin with a letter. + """ + return pulumi.get(self, "user_labels") + @property @pulumi.getter(name="windowsBasedSli") def windows_based_sli(self) -> pulumi.Output[Optional['outputs.SloWindowsBasedSli']]: diff --git a/sdk/python/pulumi_gcp/monitoring/uptime_check_config.py b/sdk/python/pulumi_gcp/monitoring/uptime_check_config.py index b48344acc5..eea208891d 100644 --- a/sdk/python/pulumi_gcp/monitoring/uptime_check_config.py +++ b/sdk/python/pulumi_gcp/monitoring/uptime_check_config.py @@ -36,7 +36,7 @@ def __init__(__self__, *, Structure is documented below. :param pulumi.Input['UptimeCheckConfigHttpCheckArgs'] http_check: Contains information needed to make an HTTP or HTTPS check. Structure is documented below. - :param pulumi.Input['UptimeCheckConfigMonitoredResourceArgs'] monitored_resource: The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptime_url gce_instance gae_app aws_ec2_instance aws_elb_load_balancer + :param pulumi.Input['UptimeCheckConfigMonitoredResourceArgs'] monitored_resource: The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptime_url gce_instance gae_app aws_ec2_instance aws_elb_load_balancer k8s_service servicedirectory_service Structure is documented below. :param pulumi.Input[str] period: How often, in seconds, the uptime check is performed. Currently, the only supported values are 60s (1 minute), 300s (5 minutes), 600s (10 minutes), and 900s (15 minutes). Optional, defaults to 300s. :param pulumi.Input[str] project: The ID of the project in which the resource belongs. @@ -135,7 +135,7 @@ def http_check(self, value: Optional[pulumi.Input['UptimeCheckConfigHttpCheckArg @pulumi.getter(name="monitoredResource") def monitored_resource(self) -> Optional[pulumi.Input['UptimeCheckConfigMonitoredResourceArgs']]: """ - The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptime_url gce_instance gae_app aws_ec2_instance aws_elb_load_balancer + The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptime_url gce_instance gae_app aws_ec2_instance aws_elb_load_balancer k8s_service servicedirectory_service Structure is documented below. """ return pulumi.get(self, "monitored_resource") @@ -233,7 +233,7 @@ def __init__(__self__, *, :param pulumi.Input[str] display_name: A human-friendly name for the uptime check configuration. The display name should be unique within a Stackdriver Workspace in order to make it easier to identify; however, uniqueness is not enforced. :param pulumi.Input['UptimeCheckConfigHttpCheckArgs'] http_check: Contains information needed to make an HTTP or HTTPS check. Structure is documented below. - :param pulumi.Input['UptimeCheckConfigMonitoredResourceArgs'] monitored_resource: The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptime_url gce_instance gae_app aws_ec2_instance aws_elb_load_balancer + :param pulumi.Input['UptimeCheckConfigMonitoredResourceArgs'] monitored_resource: The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptime_url gce_instance gae_app aws_ec2_instance aws_elb_load_balancer k8s_service servicedirectory_service Structure is documented below. :param pulumi.Input[str] name: A unique resource name for this UptimeCheckConfig. The format is projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]. @@ -330,7 +330,7 @@ def http_check(self, value: Optional[pulumi.Input['UptimeCheckConfigHttpCheckArg @pulumi.getter(name="monitoredResource") def monitored_resource(self) -> Optional[pulumi.Input['UptimeCheckConfigMonitoredResourceArgs']]: """ - The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptime_url gce_instance gae_app aws_ec2_instance aws_elb_load_balancer + The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptime_url gce_instance gae_app aws_ec2_instance aws_elb_load_balancer k8s_service servicedirectory_service Structure is documented below. """ return pulumi.get(self, "monitored_resource") @@ -479,7 +479,12 @@ def __init__(__self__, http = gcp.monitoring.UptimeCheckConfig("http", checker_type="STATIC_IP_CHECKERS", content_matchers=[gcp.monitoring.UptimeCheckConfigContentMatcherArgs( - content="example", + content="\"example\"", + json_path_matcher=gcp.monitoring.UptimeCheckConfigContentMatcherJsonPathMatcherArgs( + json_matcher="EXACT_MATCH", + json_path="$.path", + ), + matcher="MATCHES_JSON_PATH", )], display_name="http-uptime-check", http_check=gcp.monitoring.UptimeCheckConfigHttpCheckArgs( @@ -507,6 +512,11 @@ def __init__(__self__, https = gcp.monitoring.UptimeCheckConfig("https", content_matchers=[gcp.monitoring.UptimeCheckConfigContentMatcherArgs( content="example", + json_path_matcher=gcp.monitoring.UptimeCheckConfigContentMatcherJsonPathMatcherArgs( + json_matcher="REGEX_MATCH", + json_path="$.path", + ), + matcher="MATCHES_JSON_PATH", )], display_name="https-uptime-check", http_check=gcp.monitoring.UptimeCheckConfigHttpCheckArgs( @@ -562,7 +572,7 @@ def __init__(__self__, :param pulumi.Input[str] display_name: A human-friendly name for the uptime check configuration. The display name should be unique within a Stackdriver Workspace in order to make it easier to identify; however, uniqueness is not enforced. :param pulumi.Input[pulumi.InputType['UptimeCheckConfigHttpCheckArgs']] http_check: Contains information needed to make an HTTP or HTTPS check. Structure is documented below. - :param pulumi.Input[pulumi.InputType['UptimeCheckConfigMonitoredResourceArgs']] monitored_resource: The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptime_url gce_instance gae_app aws_ec2_instance aws_elb_load_balancer + :param pulumi.Input[pulumi.InputType['UptimeCheckConfigMonitoredResourceArgs']] monitored_resource: The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptime_url gce_instance gae_app aws_ec2_instance aws_elb_load_balancer k8s_service servicedirectory_service Structure is documented below. :param pulumi.Input[str] period: How often, in seconds, the uptime check is performed. Currently, the only supported values are 60s (1 minute), 300s (5 minutes), 600s (10 minutes), and 900s (15 minutes). Optional, defaults to 300s. :param pulumi.Input[str] project: The ID of the project in which the resource belongs. @@ -602,7 +612,12 @@ def __init__(__self__, http = gcp.monitoring.UptimeCheckConfig("http", checker_type="STATIC_IP_CHECKERS", content_matchers=[gcp.monitoring.UptimeCheckConfigContentMatcherArgs( - content="example", + content="\"example\"", + json_path_matcher=gcp.monitoring.UptimeCheckConfigContentMatcherJsonPathMatcherArgs( + json_matcher="EXACT_MATCH", + json_path="$.path", + ), + matcher="MATCHES_JSON_PATH", )], display_name="http-uptime-check", http_check=gcp.monitoring.UptimeCheckConfigHttpCheckArgs( @@ -630,6 +645,11 @@ def __init__(__self__, https = gcp.monitoring.UptimeCheckConfig("https", content_matchers=[gcp.monitoring.UptimeCheckConfigContentMatcherArgs( content="example", + json_path_matcher=gcp.monitoring.UptimeCheckConfigContentMatcherJsonPathMatcherArgs( + json_matcher="REGEX_MATCH", + json_path="$.path", + ), + matcher="MATCHES_JSON_PATH", )], display_name="https-uptime-check", http_check=gcp.monitoring.UptimeCheckConfigHttpCheckArgs( @@ -768,7 +788,7 @@ def get(resource_name: str, :param pulumi.Input[str] display_name: A human-friendly name for the uptime check configuration. The display name should be unique within a Stackdriver Workspace in order to make it easier to identify; however, uniqueness is not enforced. :param pulumi.Input[pulumi.InputType['UptimeCheckConfigHttpCheckArgs']] http_check: Contains information needed to make an HTTP or HTTPS check. Structure is documented below. - :param pulumi.Input[pulumi.InputType['UptimeCheckConfigMonitoredResourceArgs']] monitored_resource: The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptime_url gce_instance gae_app aws_ec2_instance aws_elb_load_balancer + :param pulumi.Input[pulumi.InputType['UptimeCheckConfigMonitoredResourceArgs']] monitored_resource: The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptime_url gce_instance gae_app aws_ec2_instance aws_elb_load_balancer k8s_service servicedirectory_service Structure is documented below. :param pulumi.Input[str] name: A unique resource name for this UptimeCheckConfig. The format is projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]. @@ -841,7 +861,7 @@ def http_check(self) -> pulumi.Output[Optional['outputs.UptimeCheckConfigHttpChe @pulumi.getter(name="monitoredResource") def monitored_resource(self) -> pulumi.Output[Optional['outputs.UptimeCheckConfigMonitoredResource']]: """ - The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptime_url gce_instance gae_app aws_ec2_instance aws_elb_load_balancer + The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for uptime checks: uptime_url gce_instance gae_app aws_ec2_instance aws_elb_load_balancer k8s_service servicedirectory_service Structure is documented below. """ return pulumi.get(self, "monitored_resource") diff --git a/sdk/python/pulumi_gcp/sql/_inputs.py b/sdk/python/pulumi_gcp/sql/_inputs.py index 2e498a1a25..adf6481822 100644 --- a/sdk/python/pulumi_gcp/sql/_inputs.py +++ b/sdk/python/pulumi_gcp/sql/_inputs.py @@ -24,6 +24,7 @@ 'DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs', 'DatabaseInstanceSettingsLocationPreferenceArgs', 'DatabaseInstanceSettingsMaintenanceWindowArgs', + 'UserSqlServerUserDetailsArgs', ] @pulumi.input_type @@ -1277,3 +1278,32 @@ def update_track(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "update_track", value) +@pulumi.input_type +class UserSqlServerUserDetailsArgs: + def __init__(__self__, *, + disabled: Optional[pulumi.Input[bool]] = None, + server_roles: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None): + if disabled is not None: + pulumi.set(__self__, "disabled", disabled) + if server_roles is not None: + pulumi.set(__self__, "server_roles", server_roles) + + @property + @pulumi.getter + def disabled(self) -> Optional[pulumi.Input[bool]]: + return pulumi.get(self, "disabled") + + @disabled.setter + def disabled(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "disabled", value) + + @property + @pulumi.getter(name="serverRoles") + def server_roles(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + return pulumi.get(self, "server_roles") + + @server_roles.setter + def server_roles(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "server_roles", value) + + diff --git a/sdk/python/pulumi_gcp/sql/outputs.py b/sdk/python/pulumi_gcp/sql/outputs.py index 43ccd5efbc..65a4506d5a 100644 --- a/sdk/python/pulumi_gcp/sql/outputs.py +++ b/sdk/python/pulumi_gcp/sql/outputs.py @@ -25,6 +25,7 @@ 'DatabaseInstanceSettingsIpConfigurationAuthorizedNetwork', 'DatabaseInstanceSettingsLocationPreference', 'DatabaseInstanceSettingsMaintenanceWindow', + 'UserSqlServerUserDetails', 'GetCaCertsCertResult', 'GetDatabaseInstanceCloneResult', 'GetDatabaseInstanceIpAddressResult', @@ -1309,6 +1310,44 @@ def update_track(self) -> Optional[str]: return pulumi.get(self, "update_track") +@pulumi.output_type +class UserSqlServerUserDetails(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "serverRoles": + suggest = "server_roles" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in UserSqlServerUserDetails. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + UserSqlServerUserDetails.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + UserSqlServerUserDetails.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + disabled: Optional[bool] = None, + server_roles: Optional[Sequence[str]] = None): + if disabled is not None: + pulumi.set(__self__, "disabled", disabled) + if server_roles is not None: + pulumi.set(__self__, "server_roles", server_roles) + + @property + @pulumi.getter + def disabled(self) -> Optional[bool]: + return pulumi.get(self, "disabled") + + @property + @pulumi.getter(name="serverRoles") + def server_roles(self) -> Optional[Sequence[str]]: + return pulumi.get(self, "server_roles") + + @pulumi.output_type class GetCaCertsCertResult(dict): def __init__(__self__, *, diff --git a/sdk/python/pulumi_gcp/sql/user.py b/sdk/python/pulumi_gcp/sql/user.py index 432ba2001d..dc7aae555e 100644 --- a/sdk/python/pulumi_gcp/sql/user.py +++ b/sdk/python/pulumi_gcp/sql/user.py @@ -7,6 +7,8 @@ import pulumi.runtime from typing import Any, Mapping, Optional, Sequence, Union, overload from .. import _utilities +from . import outputs +from ._inputs import * __all__ = ['UserArgs', 'User'] @@ -19,6 +21,7 @@ def __init__(__self__, *, name: Optional[pulumi.Input[str]] = None, password: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, + sql_server_user_details: Optional[pulumi.Input['UserSqlServerUserDetailsArgs']] = None, type: Optional[pulumi.Input[str]] = None): """ The set of arguments for constructing a User resource. @@ -52,6 +55,8 @@ def __init__(__self__, *, pulumi.set(__self__, "password", password) if project is not None: pulumi.set(__self__, "project", project) + if sql_server_user_details is not None: + pulumi.set(__self__, "sql_server_user_details", sql_server_user_details) if type is not None: pulumi.set(__self__, "type", type) @@ -136,6 +141,15 @@ def project(self) -> Optional[pulumi.Input[str]]: def project(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "project", value) + @property + @pulumi.getter(name="sqlServerUserDetails") + def sql_server_user_details(self) -> Optional[pulumi.Input['UserSqlServerUserDetailsArgs']]: + return pulumi.get(self, "sql_server_user_details") + + @sql_server_user_details.setter + def sql_server_user_details(self, value: Optional[pulumi.Input['UserSqlServerUserDetailsArgs']]): + pulumi.set(self, "sql_server_user_details", value) + @property @pulumi.getter def type(self) -> Optional[pulumi.Input[str]]: @@ -160,6 +174,7 @@ def __init__(__self__, *, name: Optional[pulumi.Input[str]] = None, password: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, + sql_server_user_details: Optional[pulumi.Input['UserSqlServerUserDetailsArgs']] = None, type: Optional[pulumi.Input[str]] = None): """ Input properties used for looking up and filtering User resources. @@ -194,6 +209,8 @@ def __init__(__self__, *, pulumi.set(__self__, "password", password) if project is not None: pulumi.set(__self__, "project", project) + if sql_server_user_details is not None: + pulumi.set(__self__, "sql_server_user_details", sql_server_user_details) if type is not None: pulumi.set(__self__, "type", type) @@ -278,6 +295,15 @@ def project(self) -> Optional[pulumi.Input[str]]: def project(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "project", value) + @property + @pulumi.getter(name="sqlServerUserDetails") + def sql_server_user_details(self) -> Optional[pulumi.Input['UserSqlServerUserDetailsArgs']]: + return pulumi.get(self, "sql_server_user_details") + + @sql_server_user_details.setter + def sql_server_user_details(self, value: Optional[pulumi.Input['UserSqlServerUserDetailsArgs']]): + pulumi.set(self, "sql_server_user_details", value) + @property @pulumi.getter def type(self) -> Optional[pulumi.Input[str]]: @@ -304,6 +330,7 @@ def __init__(__self__, name: Optional[pulumi.Input[str]] = None, password: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, + sql_server_user_details: Optional[pulumi.Input[pulumi.InputType['UserSqlServerUserDetailsArgs']]] = None, type: Optional[pulumi.Input[str]] = None, __props__=None): """ @@ -474,6 +501,7 @@ def _internal_init(__self__, name: Optional[pulumi.Input[str]] = None, password: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, + sql_server_user_details: Optional[pulumi.Input[pulumi.InputType['UserSqlServerUserDetailsArgs']]] = None, type: Optional[pulumi.Input[str]] = None, __props__=None): if opts is None: @@ -495,6 +523,7 @@ def _internal_init(__self__, __props__.__dict__["name"] = name __props__.__dict__["password"] = password __props__.__dict__["project"] = project + __props__.__dict__["sql_server_user_details"] = sql_server_user_details __props__.__dict__["type"] = type super(User, __self__).__init__( 'gcp:sql/user:User', @@ -512,6 +541,7 @@ def get(resource_name: str, name: Optional[pulumi.Input[str]] = None, password: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, + sql_server_user_details: Optional[pulumi.Input[pulumi.InputType['UserSqlServerUserDetailsArgs']]] = None, type: Optional[pulumi.Input[str]] = None) -> 'User': """ Get an existing User resource's state with the given name, id, and optional extra @@ -549,6 +579,7 @@ def get(resource_name: str, __props__.__dict__["name"] = name __props__.__dict__["password"] = password __props__.__dict__["project"] = project + __props__.__dict__["sql_server_user_details"] = sql_server_user_details __props__.__dict__["type"] = type return User(resource_name, opts=opts, __props__=__props__) @@ -609,6 +640,11 @@ def project(self) -> pulumi.Output[str]: """ return pulumi.get(self, "project") + @property + @pulumi.getter(name="sqlServerUserDetails") + def sql_server_user_details(self) -> pulumi.Output[Optional['outputs.UserSqlServerUserDetails']]: + return pulumi.get(self, "sql_server_user_details") + @property @pulumi.getter def type(self) -> pulumi.Output[Optional[str]]: