pulumi-gcp 7.24.0a1716510380__py3-none-any.whl → 7.24.0a1716588893__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pulumi_gcp/__init__.py +16 -0
- pulumi_gcp/accesscontextmanager/access_policy_iam_binding.py +12 -12
- pulumi_gcp/accesscontextmanager/access_policy_iam_member.py +12 -12
- pulumi_gcp/accesscontextmanager/access_policy_iam_policy.py +12 -12
- pulumi_gcp/apigateway/api_config_iam_binding.py +8 -8
- pulumi_gcp/apigateway/api_config_iam_member.py +8 -8
- pulumi_gcp/apigateway/api_config_iam_policy.py +8 -8
- pulumi_gcp/apigateway/api_iam_binding.py +8 -8
- pulumi_gcp/apigateway/api_iam_member.py +8 -8
- pulumi_gcp/apigateway/api_iam_policy.py +8 -8
- pulumi_gcp/apigateway/gateway_iam_binding.py +8 -8
- pulumi_gcp/apigateway/gateway_iam_member.py +8 -8
- pulumi_gcp/apigateway/gateway_iam_policy.py +8 -8
- pulumi_gcp/apigee/environment_iam_binding.py +12 -12
- pulumi_gcp/apigee/environment_iam_member.py +12 -12
- pulumi_gcp/apigee/environment_iam_policy.py +12 -12
- pulumi_gcp/artifactregistry/repository_iam_binding.py +12 -12
- pulumi_gcp/artifactregistry/repository_iam_member.py +12 -12
- pulumi_gcp/artifactregistry/repository_iam_policy.py +12 -12
- pulumi_gcp/bigquery/connection.py +126 -0
- pulumi_gcp/bigquery/connection_iam_binding.py +12 -12
- pulumi_gcp/bigquery/connection_iam_member.py +12 -12
- pulumi_gcp/bigquery/connection_iam_policy.py +12 -12
- pulumi_gcp/bigquery/dataset_iam_binding.py +12 -12
- pulumi_gcp/bigquery/dataset_iam_member.py +12 -12
- pulumi_gcp/bigquery/dataset_iam_policy.py +12 -12
- pulumi_gcp/bigquery/iam_binding.py +12 -12
- pulumi_gcp/bigquery/iam_member.py +12 -12
- pulumi_gcp/bigquery/iam_policy.py +12 -12
- pulumi_gcp/bigquery/routine.py +2 -2
- pulumi_gcp/bigqueryanalyticshub/data_exchange_iam_binding.py +12 -12
- pulumi_gcp/bigqueryanalyticshub/data_exchange_iam_member.py +12 -12
- pulumi_gcp/bigqueryanalyticshub/data_exchange_iam_policy.py +12 -12
- pulumi_gcp/bigqueryanalyticshub/listing_iam_binding.py +12 -12
- pulumi_gcp/bigqueryanalyticshub/listing_iam_member.py +12 -12
- pulumi_gcp/bigqueryanalyticshub/listing_iam_policy.py +12 -12
- pulumi_gcp/bigquerydatapolicy/data_policy_iam_binding.py +12 -12
- pulumi_gcp/bigquerydatapolicy/data_policy_iam_member.py +12 -12
- pulumi_gcp/bigquerydatapolicy/data_policy_iam_policy.py +12 -12
- pulumi_gcp/bigtable/instance_iam_binding.py +12 -12
- pulumi_gcp/bigtable/instance_iam_member.py +12 -12
- pulumi_gcp/bigtable/instance_iam_policy.py +12 -12
- pulumi_gcp/bigtable/table_iam_binding.py +12 -12
- pulumi_gcp/bigtable/table_iam_member.py +12 -12
- pulumi_gcp/bigtable/table_iam_policy.py +12 -12
- pulumi_gcp/billing/account_iam_binding.py +12 -12
- pulumi_gcp/billing/account_iam_member.py +12 -12
- pulumi_gcp/billing/account_iam_policy.py +12 -12
- pulumi_gcp/billing/project_info.py +4 -4
- pulumi_gcp/binaryauthorization/attestor_iam_binding.py +12 -12
- pulumi_gcp/binaryauthorization/attestor_iam_member.py +12 -12
- pulumi_gcp/binaryauthorization/attestor_iam_policy.py +12 -12
- pulumi_gcp/certificateauthority/ca_pool_iam_binding.py +12 -12
- pulumi_gcp/certificateauthority/ca_pool_iam_member.py +12 -12
- pulumi_gcp/certificateauthority/ca_pool_iam_policy.py +12 -12
- pulumi_gcp/certificateauthority/certificate_template_iam_binding.py +12 -12
- pulumi_gcp/certificateauthority/certificate_template_iam_member.py +12 -12
- pulumi_gcp/certificateauthority/certificate_template_iam_policy.py +12 -12
- pulumi_gcp/cloudasset/__init__.py +1 -0
- pulumi_gcp/cloudasset/get_search_all_resources.py +197 -0
- pulumi_gcp/cloudasset/outputs.py +184 -0
- pulumi_gcp/cloudbuildv2/connection_iam_binding.py +12 -12
- pulumi_gcp/cloudbuildv2/connection_iam_member.py +12 -12
- pulumi_gcp/cloudbuildv2/connection_iam_policy.py +12 -12
- pulumi_gcp/cloudfunctions/function_iam_binding.py +12 -12
- pulumi_gcp/cloudfunctions/function_iam_member.py +12 -12
- pulumi_gcp/cloudfunctions/function_iam_policy.py +12 -12
- pulumi_gcp/cloudfunctionsv2/function_iam_binding.py +12 -12
- pulumi_gcp/cloudfunctionsv2/function_iam_member.py +12 -12
- pulumi_gcp/cloudfunctionsv2/function_iam_policy.py +12 -12
- pulumi_gcp/cloudrun/iam_binding.py +12 -12
- pulumi_gcp/cloudrun/iam_member.py +12 -12
- pulumi_gcp/cloudrun/iam_policy.py +12 -12
- pulumi_gcp/cloudrunv2/job_iam_binding.py +12 -12
- pulumi_gcp/cloudrunv2/job_iam_member.py +12 -12
- pulumi_gcp/cloudrunv2/job_iam_policy.py +12 -12
- pulumi_gcp/cloudrunv2/service_iam_binding.py +12 -12
- pulumi_gcp/cloudrunv2/service_iam_member.py +12 -12
- pulumi_gcp/cloudrunv2/service_iam_policy.py +12 -12
- pulumi_gcp/cloudtasks/queue_iam_binding.py +12 -12
- pulumi_gcp/cloudtasks/queue_iam_member.py +12 -12
- pulumi_gcp/cloudtasks/queue_iam_policy.py +12 -12
- pulumi_gcp/compute/__init__.py +1 -0
- pulumi_gcp/compute/_inputs.py +401 -0
- pulumi_gcp/compute/disk_iam_binding.py +12 -12
- pulumi_gcp/compute/disk_iam_member.py +12 -12
- pulumi_gcp/compute/disk_iam_policy.py +12 -12
- pulumi_gcp/compute/forwarding_rule.py +6 -6
- pulumi_gcp/compute/get_network_endpoint_group.py +2 -2
- pulumi_gcp/compute/get_region_network_endpoint_group.py +2 -2
- pulumi_gcp/compute/get_router_nat.py +11 -1
- pulumi_gcp/compute/get_snapshot.py +2 -0
- pulumi_gcp/compute/image_iam_binding.py +12 -12
- pulumi_gcp/compute/image_iam_member.py +12 -12
- pulumi_gcp/compute/image_iam_policy.py +12 -12
- pulumi_gcp/compute/instance_iam_binding.py +12 -12
- pulumi_gcp/compute/instance_iam_member.py +12 -12
- pulumi_gcp/compute/instance_iam_policy.py +12 -12
- pulumi_gcp/compute/interconnect.py +1683 -0
- pulumi_gcp/compute/machine_image_iam_binding.py +8 -8
- pulumi_gcp/compute/machine_image_iam_member.py +8 -8
- pulumi_gcp/compute/machine_image_iam_policy.py +8 -8
- pulumi_gcp/compute/outputs.py +413 -0
- pulumi_gcp/compute/region_disk_iam_binding.py +12 -12
- pulumi_gcp/compute/region_disk_iam_member.py +12 -12
- pulumi_gcp/compute/region_disk_iam_policy.py +12 -12
- pulumi_gcp/compute/router_nat.py +68 -0
- pulumi_gcp/compute/snapshot_iam_binding.py +12 -12
- pulumi_gcp/compute/snapshot_iam_member.py +12 -12
- pulumi_gcp/compute/snapshot_iam_policy.py +12 -12
- pulumi_gcp/compute/subnetwork_iam_binding.py +12 -12
- pulumi_gcp/compute/subnetwork_iam_member.py +12 -12
- pulumi_gcp/compute/subnetwork_iam_policy.py +12 -12
- pulumi_gcp/compute/target_instance.py +4 -4
- pulumi_gcp/compute/target_pool.py +21 -21
- pulumi_gcp/container/_inputs.py +2 -2
- pulumi_gcp/container/outputs.py +4 -4
- pulumi_gcp/containeranalysis/note_iam_binding.py +12 -12
- pulumi_gcp/containeranalysis/note_iam_member.py +12 -12
- pulumi_gcp/containeranalysis/note_iam_policy.py +12 -12
- pulumi_gcp/databasemigrationservice/connection_profile.py +6 -6
- pulumi_gcp/datacatalog/entry_group_iam_binding.py +12 -12
- pulumi_gcp/datacatalog/entry_group_iam_member.py +12 -12
- pulumi_gcp/datacatalog/entry_group_iam_policy.py +12 -12
- pulumi_gcp/datacatalog/policy_tag_iam_binding.py +12 -12
- pulumi_gcp/datacatalog/policy_tag_iam_member.py +12 -12
- pulumi_gcp/datacatalog/policy_tag_iam_policy.py +12 -12
- pulumi_gcp/datacatalog/tag_template_iam_binding.py +12 -12
- pulumi_gcp/datacatalog/tag_template_iam_member.py +12 -12
- pulumi_gcp/datacatalog/tag_template_iam_policy.py +12 -12
- pulumi_gcp/datacatalog/taxonomy_iam_binding.py +12 -12
- pulumi_gcp/datacatalog/taxonomy_iam_member.py +12 -12
- pulumi_gcp/datacatalog/taxonomy_iam_policy.py +12 -12
- pulumi_gcp/dataloss/_inputs.py +420 -13
- pulumi_gcp/dataloss/outputs.py +439 -13
- pulumi_gcp/dataplex/asset_iam_binding.py +12 -12
- pulumi_gcp/dataplex/asset_iam_member.py +12 -12
- pulumi_gcp/dataplex/asset_iam_policy.py +12 -12
- pulumi_gcp/dataplex/datascan_iam_binding.py +12 -12
- pulumi_gcp/dataplex/datascan_iam_member.py +12 -12
- pulumi_gcp/dataplex/datascan_iam_policy.py +12 -12
- pulumi_gcp/dataplex/lake_iam_binding.py +12 -12
- pulumi_gcp/dataplex/lake_iam_member.py +12 -12
- pulumi_gcp/dataplex/lake_iam_policy.py +12 -12
- pulumi_gcp/dataplex/task.py +16 -16
- pulumi_gcp/dataplex/task_iam_binding.py +12 -12
- pulumi_gcp/dataplex/task_iam_member.py +12 -12
- pulumi_gcp/dataplex/task_iam_policy.py +12 -12
- pulumi_gcp/dataplex/zone_iam_binding.py +12 -12
- pulumi_gcp/dataplex/zone_iam_member.py +12 -12
- pulumi_gcp/dataplex/zone_iam_policy.py +12 -12
- pulumi_gcp/dataproc/_inputs.py +70 -0
- pulumi_gcp/dataproc/autoscaling_policy_iam_binding.py +12 -12
- pulumi_gcp/dataproc/autoscaling_policy_iam_member.py +12 -12
- pulumi_gcp/dataproc/autoscaling_policy_iam_policy.py +12 -12
- pulumi_gcp/dataproc/cluster_iam_binding.py +12 -12
- pulumi_gcp/dataproc/cluster_iam_member.py +12 -12
- pulumi_gcp/dataproc/cluster_iam_policy.py +12 -12
- pulumi_gcp/dataproc/get_metastore_federation_iam_policy.py +26 -2
- pulumi_gcp/dataproc/job_iam_binding.py +12 -12
- pulumi_gcp/dataproc/job_iam_member.py +12 -12
- pulumi_gcp/dataproc/job_iam_policy.py +12 -12
- pulumi_gcp/dataproc/metastore_federation.py +4 -0
- pulumi_gcp/dataproc/metastore_federation_iam_binding.py +208 -0
- pulumi_gcp/dataproc/metastore_federation_iam_member.py +208 -0
- pulumi_gcp/dataproc/metastore_federation_iam_policy.py +208 -0
- pulumi_gcp/dataproc/metastore_service_iam_binding.py +12 -12
- pulumi_gcp/dataproc/metastore_service_iam_member.py +12 -12
- pulumi_gcp/dataproc/metastore_service_iam_policy.py +12 -12
- pulumi_gcp/dataproc/outputs.py +62 -0
- pulumi_gcp/datastream/_inputs.py +1789 -820
- pulumi_gcp/datastream/connection_profile.py +163 -3
- pulumi_gcp/datastream/outputs.py +864 -5
- pulumi_gcp/datastream/stream.py +174 -0
- pulumi_gcp/dns/dns_managed_zone_iam_binding.py +12 -12
- pulumi_gcp/dns/dns_managed_zone_iam_member.py +12 -12
- pulumi_gcp/dns/dns_managed_zone_iam_policy.py +12 -12
- pulumi_gcp/endpoints/service_iam_binding.py +12 -12
- pulumi_gcp/endpoints/service_iam_member.py +12 -12
- pulumi_gcp/endpoints/service_iam_policy.py +12 -12
- pulumi_gcp/firestore/field.py +4 -4
- pulumi_gcp/folder/iam_audit_config.py +23 -23
- pulumi_gcp/folder/iam_member.py +16 -16
- pulumi_gcp/folder/iam_policy.py +16 -16
- pulumi_gcp/gkebackup/backup_plan_iam_binding.py +12 -12
- pulumi_gcp/gkebackup/backup_plan_iam_member.py +12 -12
- pulumi_gcp/gkebackup/backup_plan_iam_policy.py +12 -12
- pulumi_gcp/gkehub/feature_iam_binding.py +12 -12
- pulumi_gcp/gkehub/feature_iam_member.py +12 -12
- pulumi_gcp/gkehub/feature_iam_policy.py +12 -12
- pulumi_gcp/gkehub/membership_binding.py +6 -6
- pulumi_gcp/gkehub/membership_iam_binding.py +12 -12
- pulumi_gcp/gkehub/membership_iam_member.py +12 -12
- pulumi_gcp/gkehub/membership_iam_policy.py +12 -12
- pulumi_gcp/gkehub/membership_rbac_role_binding.py +4 -4
- pulumi_gcp/gkehub/namespace.py +4 -4
- pulumi_gcp/gkehub/scope_iam_binding.py +12 -12
- pulumi_gcp/gkehub/scope_iam_member.py +12 -12
- pulumi_gcp/gkehub/scope_iam_policy.py +12 -12
- pulumi_gcp/gkehub/scope_rbac_role_binding.py +4 -4
- pulumi_gcp/healthcare/consent_store_iam_binding.py +12 -12
- pulumi_gcp/healthcare/consent_store_iam_member.py +12 -12
- pulumi_gcp/healthcare/consent_store_iam_policy.py +12 -12
- pulumi_gcp/healthcare/dataset_iam_binding.py +12 -12
- pulumi_gcp/healthcare/dataset_iam_member.py +12 -12
- pulumi_gcp/healthcare/dataset_iam_policy.py +12 -12
- pulumi_gcp/healthcare/dicom_store_iam_binding.py +12 -12
- pulumi_gcp/healthcare/dicom_store_iam_member.py +12 -12
- pulumi_gcp/healthcare/dicom_store_iam_policy.py +12 -12
- pulumi_gcp/healthcare/fhir_store_iam_binding.py +12 -12
- pulumi_gcp/healthcare/fhir_store_iam_member.py +12 -12
- pulumi_gcp/healthcare/fhir_store_iam_policy.py +12 -12
- pulumi_gcp/healthcare/hl7_store_iam_binding.py +12 -12
- pulumi_gcp/healthcare/hl7_store_iam_member.py +12 -12
- pulumi_gcp/healthcare/hl7_store_iam_policy.py +12 -12
- pulumi_gcp/iap/app_engine_service_iam_binding.py +12 -12
- pulumi_gcp/iap/app_engine_service_iam_member.py +12 -12
- pulumi_gcp/iap/app_engine_service_iam_policy.py +12 -12
- pulumi_gcp/iap/app_engine_version_iam_binding.py +12 -12
- pulumi_gcp/iap/app_engine_version_iam_member.py +12 -12
- pulumi_gcp/iap/app_engine_version_iam_policy.py +12 -12
- pulumi_gcp/iap/tunnel_dest_group.py +2 -2
- pulumi_gcp/iap/tunnel_dest_group_iam_binding.py +12 -12
- pulumi_gcp/iap/tunnel_dest_group_iam_member.py +12 -12
- pulumi_gcp/iap/tunnel_dest_group_iam_policy.py +12 -12
- pulumi_gcp/iap/tunnel_iam_binding.py +12 -12
- pulumi_gcp/iap/tunnel_iam_member.py +12 -12
- pulumi_gcp/iap/tunnel_iam_policy.py +12 -12
- pulumi_gcp/iap/tunnel_instance_iam_binding.py +12 -12
- pulumi_gcp/iap/tunnel_instance_iam_member.py +12 -12
- pulumi_gcp/iap/tunnel_instance_iam_policy.py +12 -12
- pulumi_gcp/iap/web_backend_service_iam_binding.py +12 -12
- pulumi_gcp/iap/web_backend_service_iam_member.py +12 -12
- pulumi_gcp/iap/web_backend_service_iam_policy.py +12 -12
- pulumi_gcp/iap/web_iam_binding.py +12 -12
- pulumi_gcp/iap/web_iam_member.py +12 -12
- pulumi_gcp/iap/web_iam_policy.py +12 -12
- pulumi_gcp/iap/web_region_backend_service_iam_binding.py +12 -12
- pulumi_gcp/iap/web_region_backend_service_iam_member.py +12 -12
- pulumi_gcp/iap/web_region_backend_service_iam_policy.py +12 -12
- pulumi_gcp/iap/web_type_app_enging_iam_binding.py +12 -12
- pulumi_gcp/iap/web_type_app_enging_iam_member.py +12 -12
- pulumi_gcp/iap/web_type_app_enging_iam_policy.py +12 -12
- pulumi_gcp/iap/web_type_compute_iam_binding.py +12 -12
- pulumi_gcp/iap/web_type_compute_iam_member.py +12 -12
- pulumi_gcp/iap/web_type_compute_iam_policy.py +12 -12
- pulumi_gcp/integrationconnectors/managed_zone.py +8 -8
- pulumi_gcp/kms/key_ring_iam_binding.py +12 -12
- pulumi_gcp/kms/key_ring_iam_member.py +12 -12
- pulumi_gcp/kms/key_ring_iam_policy.py +12 -12
- pulumi_gcp/netapp/storage_pool.py +7 -7
- pulumi_gcp/netapp/volume.py +4 -4
- pulumi_gcp/networksecurity/gateway_security_policy.py +4 -4
- pulumi_gcp/networksecurity/tls_inspection_policy.py +419 -5
- pulumi_gcp/networkservices/__init__.py +1 -0
- pulumi_gcp/networkservices/_inputs.py +236 -0
- pulumi_gcp/networkservices/lb_traffic_extension.py +1181 -0
- pulumi_gcp/networkservices/outputs.py +247 -0
- pulumi_gcp/notebooks/instance_iam_binding.py +12 -12
- pulumi_gcp/notebooks/instance_iam_member.py +12 -12
- pulumi_gcp/notebooks/instance_iam_policy.py +12 -12
- pulumi_gcp/notebooks/runtime_iam_binding.py +12 -12
- pulumi_gcp/notebooks/runtime_iam_member.py +12 -12
- pulumi_gcp/notebooks/runtime_iam_policy.py +12 -12
- pulumi_gcp/organizations/iam_member.py +16 -16
- pulumi_gcp/organizations/iam_policy.py +16 -16
- pulumi_gcp/orgpolicy/policy.py +2 -2
- pulumi_gcp/projects/iam_audit_config.py +23 -23
- pulumi_gcp/projects/iam_binding.py +23 -23
- pulumi_gcp/projects/iam_member.py +23 -23
- pulumi_gcp/projects/iam_policy.py +16 -16
- pulumi_gcp/projects/service.py +2 -43
- pulumi_gcp/pubsub/schema_iam_binding.py +12 -12
- pulumi_gcp/pubsub/schema_iam_member.py +12 -12
- pulumi_gcp/pubsub/schema_iam_policy.py +12 -12
- pulumi_gcp/pubsub/subscription.py +4 -4
- pulumi_gcp/pubsub/subscription_iam_binding.py +12 -12
- pulumi_gcp/pubsub/subscription_iam_member.py +12 -12
- pulumi_gcp/pubsub/subscription_iam_policy.py +12 -12
- pulumi_gcp/pubsub/topic_iam_binding.py +12 -12
- pulumi_gcp/pubsub/topic_iam_member.py +12 -12
- pulumi_gcp/pubsub/topic_iam_policy.py +12 -12
- pulumi_gcp/pulumi-plugin.json +1 -1
- pulumi_gcp/secretmanager/secret_iam_binding.py +12 -12
- pulumi_gcp/secretmanager/secret_iam_member.py +12 -12
- pulumi_gcp/secretmanager/secret_iam_policy.py +12 -12
- pulumi_gcp/servicedirectory/namespace_iam_binding.py +8 -8
- pulumi_gcp/servicedirectory/namespace_iam_member.py +8 -8
- pulumi_gcp/servicedirectory/namespace_iam_policy.py +8 -8
- pulumi_gcp/servicedirectory/service_iam_binding.py +8 -8
- pulumi_gcp/servicedirectory/service_iam_member.py +8 -8
- pulumi_gcp/servicedirectory/service_iam_policy.py +8 -8
- pulumi_gcp/sourcerepo/repository_iam_binding.py +12 -12
- pulumi_gcp/sourcerepo/repository_iam_member.py +12 -12
- pulumi_gcp/sourcerepo/repository_iam_policy.py +12 -12
- pulumi_gcp/spanner/database_iam_binding.py +12 -12
- pulumi_gcp/spanner/database_iam_member.py +12 -12
- pulumi_gcp/spanner/database_iam_policy.py +12 -12
- pulumi_gcp/spanner/instance_iam_binding.py +12 -12
- pulumi_gcp/spanner/instance_iam_member.py +12 -12
- pulumi_gcp/spanner/instance_iam_policy.py +12 -12
- pulumi_gcp/storage/_inputs.py +12 -10
- pulumi_gcp/storage/bucket.py +44 -0
- pulumi_gcp/storage/bucket_iam_binding.py +12 -12
- pulumi_gcp/storage/bucket_iam_member.py +12 -12
- pulumi_gcp/storage/bucket_iam_policy.py +12 -12
- pulumi_gcp/storage/outputs.py +12 -10
- pulumi_gcp/tags/tag_key_iam_binding.py +12 -12
- pulumi_gcp/tags/tag_key_iam_member.py +12 -12
- pulumi_gcp/tags/tag_key_iam_policy.py +12 -12
- pulumi_gcp/tags/tag_value_iam_binding.py +12 -12
- pulumi_gcp/tags/tag_value_iam_member.py +12 -12
- pulumi_gcp/tags/tag_value_iam_policy.py +12 -12
- {pulumi_gcp-7.24.0a1716510380.dist-info → pulumi_gcp-7.24.0a1716588893.dist-info}/METADATA +1 -1
- {pulumi_gcp-7.24.0a1716510380.dist-info → pulumi_gcp-7.24.0a1716588893.dist-info}/RECORD +317 -314
- {pulumi_gcp-7.24.0a1716510380.dist-info → pulumi_gcp-7.24.0a1716588893.dist-info}/WHEEL +0 -0
- {pulumi_gcp-7.24.0a1716510380.dist-info → pulumi_gcp-7.24.0a1716588893.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,1181 @@
|
|
1
|
+
# coding=utf-8
|
2
|
+
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
|
3
|
+
# *** Do not edit by hand unless you're certain you know what you are doing! ***
|
4
|
+
|
5
|
+
import copy
|
6
|
+
import warnings
|
7
|
+
import pulumi
|
8
|
+
import pulumi.runtime
|
9
|
+
from typing import Any, Mapping, Optional, Sequence, Union, overload
|
10
|
+
from .. import _utilities
|
11
|
+
from . import outputs
|
12
|
+
from ._inputs import *
|
13
|
+
|
14
|
+
__all__ = ['LbTrafficExtensionArgs', 'LbTrafficExtension']
|
15
|
+
|
16
|
+
@pulumi.input_type
|
17
|
+
class LbTrafficExtensionArgs:
|
18
|
+
def __init__(__self__, *,
|
19
|
+
extension_chains: pulumi.Input[Sequence[pulumi.Input['LbTrafficExtensionExtensionChainArgs']]],
|
20
|
+
forwarding_rules: pulumi.Input[Sequence[pulumi.Input[str]]],
|
21
|
+
location: pulumi.Input[str],
|
22
|
+
description: Optional[pulumi.Input[str]] = None,
|
23
|
+
labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
|
24
|
+
load_balancing_scheme: Optional[pulumi.Input[str]] = None,
|
25
|
+
name: Optional[pulumi.Input[str]] = None,
|
26
|
+
project: Optional[pulumi.Input[str]] = None):
|
27
|
+
"""
|
28
|
+
The set of arguments for constructing a LbTrafficExtension resource.
|
29
|
+
:param pulumi.Input[Sequence[pulumi.Input['LbTrafficExtensionExtensionChainArgs']]] extension_chains: A set of ordered extension chains that contain the match conditions and extensions to execute.
|
30
|
+
Match conditions for each extension chain are evaluated in sequence for a given request.
|
31
|
+
The first extension chain that has a condition that matches the request is executed.
|
32
|
+
Any subsequent extension chains do not execute. Limited to 5 extension chains per resource.
|
33
|
+
Structure is documented below.
|
34
|
+
:param pulumi.Input[Sequence[pulumi.Input[str]]] forwarding_rules: A list of references to the forwarding rules to which this service extension is attached to.
|
35
|
+
At least one forwarding rule is required. There can be only one LBTrafficExtension resource per forwarding rule.
|
36
|
+
:param pulumi.Input[str] location: The location of the traffic extension
|
37
|
+
:param pulumi.Input[str] description: A human-readable description of the resource.
|
38
|
+
:param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: Set of labels associated with the LbTrafficExtension resource. **Note**: This field is non-authoritative, and will only
|
39
|
+
manage the labels present in your configuration. Please refer to the field 'effective_labels' for all of the labels
|
40
|
+
present on the resource.
|
41
|
+
:param pulumi.Input[str] load_balancing_scheme: All backend services and forwarding rules referenced by this extension must share the same load balancing scheme. For
|
42
|
+
more information, refer to Choosing a load balancer. Possible values: ["LOAD_BALANCING_SCHEME_UNSPECIFIED",
|
43
|
+
"INTERNAL_MANAGED", "EXTERNAL_MANAGED"]
|
44
|
+
:param pulumi.Input[str] name: Name of the LbTrafficExtension resource in the following format: projects/{project}/locations/{location}/lbTrafficExtensions/{lbTrafficExtension}.
|
45
|
+
"""
|
46
|
+
pulumi.set(__self__, "extension_chains", extension_chains)
|
47
|
+
pulumi.set(__self__, "forwarding_rules", forwarding_rules)
|
48
|
+
pulumi.set(__self__, "location", location)
|
49
|
+
if description is not None:
|
50
|
+
pulumi.set(__self__, "description", description)
|
51
|
+
if labels is not None:
|
52
|
+
pulumi.set(__self__, "labels", labels)
|
53
|
+
if load_balancing_scheme is not None:
|
54
|
+
pulumi.set(__self__, "load_balancing_scheme", load_balancing_scheme)
|
55
|
+
if name is not None:
|
56
|
+
pulumi.set(__self__, "name", name)
|
57
|
+
if project is not None:
|
58
|
+
pulumi.set(__self__, "project", project)
|
59
|
+
|
60
|
+
@property
|
61
|
+
@pulumi.getter(name="extensionChains")
|
62
|
+
def extension_chains(self) -> pulumi.Input[Sequence[pulumi.Input['LbTrafficExtensionExtensionChainArgs']]]:
|
63
|
+
"""
|
64
|
+
A set of ordered extension chains that contain the match conditions and extensions to execute.
|
65
|
+
Match conditions for each extension chain are evaluated in sequence for a given request.
|
66
|
+
The first extension chain that has a condition that matches the request is executed.
|
67
|
+
Any subsequent extension chains do not execute. Limited to 5 extension chains per resource.
|
68
|
+
Structure is documented below.
|
69
|
+
"""
|
70
|
+
return pulumi.get(self, "extension_chains")
|
71
|
+
|
72
|
+
@extension_chains.setter
|
73
|
+
def extension_chains(self, value: pulumi.Input[Sequence[pulumi.Input['LbTrafficExtensionExtensionChainArgs']]]):
|
74
|
+
pulumi.set(self, "extension_chains", value)
|
75
|
+
|
76
|
+
@property
|
77
|
+
@pulumi.getter(name="forwardingRules")
|
78
|
+
def forwarding_rules(self) -> pulumi.Input[Sequence[pulumi.Input[str]]]:
|
79
|
+
"""
|
80
|
+
A list of references to the forwarding rules to which this service extension is attached to.
|
81
|
+
At least one forwarding rule is required. There can be only one LBTrafficExtension resource per forwarding rule.
|
82
|
+
"""
|
83
|
+
return pulumi.get(self, "forwarding_rules")
|
84
|
+
|
85
|
+
@forwarding_rules.setter
|
86
|
+
def forwarding_rules(self, value: pulumi.Input[Sequence[pulumi.Input[str]]]):
|
87
|
+
pulumi.set(self, "forwarding_rules", value)
|
88
|
+
|
89
|
+
@property
|
90
|
+
@pulumi.getter
|
91
|
+
def location(self) -> pulumi.Input[str]:
|
92
|
+
"""
|
93
|
+
The location of the traffic extension
|
94
|
+
"""
|
95
|
+
return pulumi.get(self, "location")
|
96
|
+
|
97
|
+
@location.setter
|
98
|
+
def location(self, value: pulumi.Input[str]):
|
99
|
+
pulumi.set(self, "location", value)
|
100
|
+
|
101
|
+
@property
|
102
|
+
@pulumi.getter
|
103
|
+
def description(self) -> Optional[pulumi.Input[str]]:
|
104
|
+
"""
|
105
|
+
A human-readable description of the resource.
|
106
|
+
"""
|
107
|
+
return pulumi.get(self, "description")
|
108
|
+
|
109
|
+
@description.setter
|
110
|
+
def description(self, value: Optional[pulumi.Input[str]]):
|
111
|
+
pulumi.set(self, "description", value)
|
112
|
+
|
113
|
+
@property
|
114
|
+
@pulumi.getter
|
115
|
+
def labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
|
116
|
+
"""
|
117
|
+
Set of labels associated with the LbTrafficExtension resource. **Note**: This field is non-authoritative, and will only
|
118
|
+
manage the labels present in your configuration. Please refer to the field 'effective_labels' for all of the labels
|
119
|
+
present on the resource.
|
120
|
+
"""
|
121
|
+
return pulumi.get(self, "labels")
|
122
|
+
|
123
|
+
@labels.setter
|
124
|
+
def labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
|
125
|
+
pulumi.set(self, "labels", value)
|
126
|
+
|
127
|
+
@property
|
128
|
+
@pulumi.getter(name="loadBalancingScheme")
|
129
|
+
def load_balancing_scheme(self) -> Optional[pulumi.Input[str]]:
|
130
|
+
"""
|
131
|
+
All backend services and forwarding rules referenced by this extension must share the same load balancing scheme. For
|
132
|
+
more information, refer to Choosing a load balancer. Possible values: ["LOAD_BALANCING_SCHEME_UNSPECIFIED",
|
133
|
+
"INTERNAL_MANAGED", "EXTERNAL_MANAGED"]
|
134
|
+
"""
|
135
|
+
return pulumi.get(self, "load_balancing_scheme")
|
136
|
+
|
137
|
+
@load_balancing_scheme.setter
|
138
|
+
def load_balancing_scheme(self, value: Optional[pulumi.Input[str]]):
|
139
|
+
pulumi.set(self, "load_balancing_scheme", value)
|
140
|
+
|
141
|
+
@property
|
142
|
+
@pulumi.getter
|
143
|
+
def name(self) -> Optional[pulumi.Input[str]]:
|
144
|
+
"""
|
145
|
+
Name of the LbTrafficExtension resource in the following format: projects/{project}/locations/{location}/lbTrafficExtensions/{lbTrafficExtension}.
|
146
|
+
"""
|
147
|
+
return pulumi.get(self, "name")
|
148
|
+
|
149
|
+
@name.setter
|
150
|
+
def name(self, value: Optional[pulumi.Input[str]]):
|
151
|
+
pulumi.set(self, "name", value)
|
152
|
+
|
153
|
+
@property
|
154
|
+
@pulumi.getter
|
155
|
+
def project(self) -> Optional[pulumi.Input[str]]:
|
156
|
+
return pulumi.get(self, "project")
|
157
|
+
|
158
|
+
@project.setter
|
159
|
+
def project(self, value: Optional[pulumi.Input[str]]):
|
160
|
+
pulumi.set(self, "project", value)
|
161
|
+
|
162
|
+
|
163
|
+
@pulumi.input_type
|
164
|
+
class _LbTrafficExtensionState:
|
165
|
+
def __init__(__self__, *,
|
166
|
+
description: Optional[pulumi.Input[str]] = None,
|
167
|
+
effective_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
|
168
|
+
extension_chains: Optional[pulumi.Input[Sequence[pulumi.Input['LbTrafficExtensionExtensionChainArgs']]]] = None,
|
169
|
+
forwarding_rules: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
|
170
|
+
labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
|
171
|
+
load_balancing_scheme: Optional[pulumi.Input[str]] = None,
|
172
|
+
location: Optional[pulumi.Input[str]] = None,
|
173
|
+
name: Optional[pulumi.Input[str]] = None,
|
174
|
+
project: Optional[pulumi.Input[str]] = None,
|
175
|
+
pulumi_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None):
|
176
|
+
"""
|
177
|
+
Input properties used for looking up and filtering LbTrafficExtension resources.
|
178
|
+
:param pulumi.Input[str] description: A human-readable description of the resource.
|
179
|
+
:param pulumi.Input[Mapping[str, pulumi.Input[str]]] effective_labels: All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
|
180
|
+
:param pulumi.Input[Sequence[pulumi.Input['LbTrafficExtensionExtensionChainArgs']]] extension_chains: A set of ordered extension chains that contain the match conditions and extensions to execute.
|
181
|
+
Match conditions for each extension chain are evaluated in sequence for a given request.
|
182
|
+
The first extension chain that has a condition that matches the request is executed.
|
183
|
+
Any subsequent extension chains do not execute. Limited to 5 extension chains per resource.
|
184
|
+
Structure is documented below.
|
185
|
+
:param pulumi.Input[Sequence[pulumi.Input[str]]] forwarding_rules: A list of references to the forwarding rules to which this service extension is attached to.
|
186
|
+
At least one forwarding rule is required. There can be only one LBTrafficExtension resource per forwarding rule.
|
187
|
+
:param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: Set of labels associated with the LbTrafficExtension resource. **Note**: This field is non-authoritative, and will only
|
188
|
+
manage the labels present in your configuration. Please refer to the field 'effective_labels' for all of the labels
|
189
|
+
present on the resource.
|
190
|
+
:param pulumi.Input[str] load_balancing_scheme: All backend services and forwarding rules referenced by this extension must share the same load balancing scheme. For
|
191
|
+
more information, refer to Choosing a load balancer. Possible values: ["LOAD_BALANCING_SCHEME_UNSPECIFIED",
|
192
|
+
"INTERNAL_MANAGED", "EXTERNAL_MANAGED"]
|
193
|
+
:param pulumi.Input[str] location: The location of the traffic extension
|
194
|
+
:param pulumi.Input[str] name: Name of the LbTrafficExtension resource in the following format: projects/{project}/locations/{location}/lbTrafficExtensions/{lbTrafficExtension}.
|
195
|
+
:param pulumi.Input[Mapping[str, pulumi.Input[str]]] pulumi_labels: The combination of labels configured directly on the resource
|
196
|
+
and default labels configured on the provider.
|
197
|
+
"""
|
198
|
+
if description is not None:
|
199
|
+
pulumi.set(__self__, "description", description)
|
200
|
+
if effective_labels is not None:
|
201
|
+
pulumi.set(__self__, "effective_labels", effective_labels)
|
202
|
+
if extension_chains is not None:
|
203
|
+
pulumi.set(__self__, "extension_chains", extension_chains)
|
204
|
+
if forwarding_rules is not None:
|
205
|
+
pulumi.set(__self__, "forwarding_rules", forwarding_rules)
|
206
|
+
if labels is not None:
|
207
|
+
pulumi.set(__self__, "labels", labels)
|
208
|
+
if load_balancing_scheme is not None:
|
209
|
+
pulumi.set(__self__, "load_balancing_scheme", load_balancing_scheme)
|
210
|
+
if location is not None:
|
211
|
+
pulumi.set(__self__, "location", location)
|
212
|
+
if name is not None:
|
213
|
+
pulumi.set(__self__, "name", name)
|
214
|
+
if project is not None:
|
215
|
+
pulumi.set(__self__, "project", project)
|
216
|
+
if pulumi_labels is not None:
|
217
|
+
pulumi.set(__self__, "pulumi_labels", pulumi_labels)
|
218
|
+
|
219
|
+
@property
|
220
|
+
@pulumi.getter
|
221
|
+
def description(self) -> Optional[pulumi.Input[str]]:
|
222
|
+
"""
|
223
|
+
A human-readable description of the resource.
|
224
|
+
"""
|
225
|
+
return pulumi.get(self, "description")
|
226
|
+
|
227
|
+
@description.setter
|
228
|
+
def description(self, value: Optional[pulumi.Input[str]]):
|
229
|
+
pulumi.set(self, "description", value)
|
230
|
+
|
231
|
+
@property
|
232
|
+
@pulumi.getter(name="effectiveLabels")
|
233
|
+
def effective_labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
|
234
|
+
"""
|
235
|
+
All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
|
236
|
+
"""
|
237
|
+
return pulumi.get(self, "effective_labels")
|
238
|
+
|
239
|
+
@effective_labels.setter
|
240
|
+
def effective_labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
|
241
|
+
pulumi.set(self, "effective_labels", value)
|
242
|
+
|
243
|
+
@property
|
244
|
+
@pulumi.getter(name="extensionChains")
|
245
|
+
def extension_chains(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['LbTrafficExtensionExtensionChainArgs']]]]:
|
246
|
+
"""
|
247
|
+
A set of ordered extension chains that contain the match conditions and extensions to execute.
|
248
|
+
Match conditions for each extension chain are evaluated in sequence for a given request.
|
249
|
+
The first extension chain that has a condition that matches the request is executed.
|
250
|
+
Any subsequent extension chains do not execute. Limited to 5 extension chains per resource.
|
251
|
+
Structure is documented below.
|
252
|
+
"""
|
253
|
+
return pulumi.get(self, "extension_chains")
|
254
|
+
|
255
|
+
@extension_chains.setter
|
256
|
+
def extension_chains(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['LbTrafficExtensionExtensionChainArgs']]]]):
|
257
|
+
pulumi.set(self, "extension_chains", value)
|
258
|
+
|
259
|
+
@property
|
260
|
+
@pulumi.getter(name="forwardingRules")
|
261
|
+
def forwarding_rules(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
|
262
|
+
"""
|
263
|
+
A list of references to the forwarding rules to which this service extension is attached to.
|
264
|
+
At least one forwarding rule is required. There can be only one LBTrafficExtension resource per forwarding rule.
|
265
|
+
"""
|
266
|
+
return pulumi.get(self, "forwarding_rules")
|
267
|
+
|
268
|
+
@forwarding_rules.setter
|
269
|
+
def forwarding_rules(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
|
270
|
+
pulumi.set(self, "forwarding_rules", value)
|
271
|
+
|
272
|
+
@property
|
273
|
+
@pulumi.getter
|
274
|
+
def labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
|
275
|
+
"""
|
276
|
+
Set of labels associated with the LbTrafficExtension resource. **Note**: This field is non-authoritative, and will only
|
277
|
+
manage the labels present in your configuration. Please refer to the field 'effective_labels' for all of the labels
|
278
|
+
present on the resource.
|
279
|
+
"""
|
280
|
+
return pulumi.get(self, "labels")
|
281
|
+
|
282
|
+
@labels.setter
|
283
|
+
def labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
|
284
|
+
pulumi.set(self, "labels", value)
|
285
|
+
|
286
|
+
@property
|
287
|
+
@pulumi.getter(name="loadBalancingScheme")
|
288
|
+
def load_balancing_scheme(self) -> Optional[pulumi.Input[str]]:
|
289
|
+
"""
|
290
|
+
All backend services and forwarding rules referenced by this extension must share the same load balancing scheme. For
|
291
|
+
more information, refer to Choosing a load balancer. Possible values: ["LOAD_BALANCING_SCHEME_UNSPECIFIED",
|
292
|
+
"INTERNAL_MANAGED", "EXTERNAL_MANAGED"]
|
293
|
+
"""
|
294
|
+
return pulumi.get(self, "load_balancing_scheme")
|
295
|
+
|
296
|
+
@load_balancing_scheme.setter
|
297
|
+
def load_balancing_scheme(self, value: Optional[pulumi.Input[str]]):
|
298
|
+
pulumi.set(self, "load_balancing_scheme", value)
|
299
|
+
|
300
|
+
@property
|
301
|
+
@pulumi.getter
|
302
|
+
def location(self) -> Optional[pulumi.Input[str]]:
|
303
|
+
"""
|
304
|
+
The location of the traffic extension
|
305
|
+
"""
|
306
|
+
return pulumi.get(self, "location")
|
307
|
+
|
308
|
+
@location.setter
|
309
|
+
def location(self, value: Optional[pulumi.Input[str]]):
|
310
|
+
pulumi.set(self, "location", value)
|
311
|
+
|
312
|
+
@property
|
313
|
+
@pulumi.getter
|
314
|
+
def name(self) -> Optional[pulumi.Input[str]]:
|
315
|
+
"""
|
316
|
+
Name of the LbTrafficExtension resource in the following format: projects/{project}/locations/{location}/lbTrafficExtensions/{lbTrafficExtension}.
|
317
|
+
"""
|
318
|
+
return pulumi.get(self, "name")
|
319
|
+
|
320
|
+
@name.setter
|
321
|
+
def name(self, value: Optional[pulumi.Input[str]]):
|
322
|
+
pulumi.set(self, "name", value)
|
323
|
+
|
324
|
+
@property
|
325
|
+
@pulumi.getter
|
326
|
+
def project(self) -> Optional[pulumi.Input[str]]:
|
327
|
+
return pulumi.get(self, "project")
|
328
|
+
|
329
|
+
@project.setter
|
330
|
+
def project(self, value: Optional[pulumi.Input[str]]):
|
331
|
+
pulumi.set(self, "project", value)
|
332
|
+
|
333
|
+
@property
|
334
|
+
@pulumi.getter(name="pulumiLabels")
|
335
|
+
def pulumi_labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
|
336
|
+
"""
|
337
|
+
The combination of labels configured directly on the resource
|
338
|
+
and default labels configured on the provider.
|
339
|
+
"""
|
340
|
+
return pulumi.get(self, "pulumi_labels")
|
341
|
+
|
342
|
+
@pulumi_labels.setter
|
343
|
+
def pulumi_labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
|
344
|
+
pulumi.set(self, "pulumi_labels", value)
|
345
|
+
|
346
|
+
|
347
|
+
class LbTrafficExtension(pulumi.CustomResource):
|
348
|
+
@overload
|
349
|
+
def __init__(__self__,
|
350
|
+
resource_name: str,
|
351
|
+
opts: Optional[pulumi.ResourceOptions] = None,
|
352
|
+
description: Optional[pulumi.Input[str]] = None,
|
353
|
+
extension_chains: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['LbTrafficExtensionExtensionChainArgs']]]]] = None,
|
354
|
+
forwarding_rules: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
|
355
|
+
labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
|
356
|
+
load_balancing_scheme: Optional[pulumi.Input[str]] = None,
|
357
|
+
location: Optional[pulumi.Input[str]] = None,
|
358
|
+
name: Optional[pulumi.Input[str]] = None,
|
359
|
+
project: Optional[pulumi.Input[str]] = None,
|
360
|
+
__props__=None):
|
361
|
+
"""
|
362
|
+
LbTrafficExtension is a resource that lets the extension service modify the headers and payloads of both requests and responses without impacting the choice of backend services or any other security policies associated with the backend service.
|
363
|
+
|
364
|
+
To get more information about LbTrafficExtension, see:
|
365
|
+
|
366
|
+
* [API documentation](https://cloud.google.com/service-extensions/docs/reference/rest/v1beta1/projects.locations.lbTrafficExtensions)
|
367
|
+
* How-to Guides
|
368
|
+
* [Configure a traffic extension](https://cloud.google.com/service-extensions/docs/configure-callout#configure_a_traffic_extension)
|
369
|
+
|
370
|
+
## Example Usage
|
371
|
+
|
372
|
+
### Network Services Lb Traffic Extension Basic
|
373
|
+
|
374
|
+
```python
|
375
|
+
import pulumi
|
376
|
+
import pulumi_gcp as gcp
|
377
|
+
|
378
|
+
# Internal HTTP load balancer with a managed instance group backend
|
379
|
+
# VPC network
|
380
|
+
ilb_network = gcp.compute.Network("ilb_network",
|
381
|
+
name="l7-ilb-network",
|
382
|
+
auto_create_subnetworks=False)
|
383
|
+
# proxy-only subnet
|
384
|
+
proxy_subnet = gcp.compute.Subnetwork("proxy_subnet",
|
385
|
+
name="l7-ilb-proxy-subnet",
|
386
|
+
ip_cidr_range="10.0.0.0/24",
|
387
|
+
region="us-west1",
|
388
|
+
purpose="REGIONAL_MANAGED_PROXY",
|
389
|
+
role="ACTIVE",
|
390
|
+
network=ilb_network.id)
|
391
|
+
# backend subnet
|
392
|
+
ilb_subnet = gcp.compute.Subnetwork("ilb_subnet",
|
393
|
+
name="l7-ilb-subnet",
|
394
|
+
ip_cidr_range="10.0.1.0/24",
|
395
|
+
region="us-west1",
|
396
|
+
network=ilb_network.id)
|
397
|
+
# health check
|
398
|
+
default_region_health_check = gcp.compute.RegionHealthCheck("default",
|
399
|
+
name="l7-ilb-hc",
|
400
|
+
region="us-west1",
|
401
|
+
http_health_check=gcp.compute.RegionHealthCheckHttpHealthCheckArgs(
|
402
|
+
port_specification="USE_SERVING_PORT",
|
403
|
+
))
|
404
|
+
# instance template
|
405
|
+
instance_template = gcp.compute.InstanceTemplate("instance_template",
|
406
|
+
network_interfaces=[gcp.compute.InstanceTemplateNetworkInterfaceArgs(
|
407
|
+
access_configs=[gcp.compute.InstanceTemplateNetworkInterfaceAccessConfigArgs()],
|
408
|
+
network=ilb_network.id,
|
409
|
+
subnetwork=ilb_subnet.id,
|
410
|
+
)],
|
411
|
+
name="l7-ilb-mig-template",
|
412
|
+
machine_type="e2-small",
|
413
|
+
tags=["http-server"],
|
414
|
+
disks=[gcp.compute.InstanceTemplateDiskArgs(
|
415
|
+
source_image="debian-cloud/debian-10",
|
416
|
+
auto_delete=True,
|
417
|
+
boot=True,
|
418
|
+
)],
|
419
|
+
metadata={
|
420
|
+
"startup-script": \"\"\"#! /bin/bash
|
421
|
+
set -euo pipefail
|
422
|
+
|
423
|
+
export DEBIAN_FRONTEND=noninteractive
|
424
|
+
apt-get update
|
425
|
+
apt-get install -y nginx-light jq
|
426
|
+
|
427
|
+
NAME=$(curl -H "Metadata-Flavor: Google" "http://metadata.google.internal/computeMetadata/v1/instance/hostname")
|
428
|
+
IP=$(curl -H "Metadata-Flavor: Google" "http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/ip")
|
429
|
+
METADATA=$(curl -f -H "Metadata-Flavor: Google" "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=True" | jq 'del(.["startup-script"])')
|
430
|
+
|
431
|
+
cat <<EOF > /var/www/html/index.html
|
432
|
+
<pre>
|
433
|
+
Name: $NAME
|
434
|
+
IP: $IP
|
435
|
+
Metadata: $METADATA
|
436
|
+
</pre>
|
437
|
+
EOF
|
438
|
+
\"\"\",
|
439
|
+
})
|
440
|
+
# MIG
|
441
|
+
mig = gcp.compute.RegionInstanceGroupManager("mig",
|
442
|
+
name="l7-ilb-mig1",
|
443
|
+
region="us-west1",
|
444
|
+
base_instance_name="vm",
|
445
|
+
target_size=2,
|
446
|
+
versions=[gcp.compute.RegionInstanceGroupManagerVersionArgs(
|
447
|
+
instance_template=instance_template.id,
|
448
|
+
name="primary",
|
449
|
+
)])
|
450
|
+
# backend service
|
451
|
+
default_region_backend_service = gcp.compute.RegionBackendService("default",
|
452
|
+
name="l7-ilb-backend-subnet",
|
453
|
+
region="us-west1",
|
454
|
+
protocol="HTTP",
|
455
|
+
load_balancing_scheme="INTERNAL_MANAGED",
|
456
|
+
timeout_sec=10,
|
457
|
+
health_checks=default_region_health_check.id,
|
458
|
+
backends=[gcp.compute.RegionBackendServiceBackendArgs(
|
459
|
+
group=mig.instance_group,
|
460
|
+
balancing_mode="UTILIZATION",
|
461
|
+
capacity_scaler=1,
|
462
|
+
)])
|
463
|
+
# URL map
|
464
|
+
default_region_url_map = gcp.compute.RegionUrlMap("default",
|
465
|
+
name="l7-ilb-regional-url-map",
|
466
|
+
region="us-west1",
|
467
|
+
default_service=default_region_backend_service.id)
|
468
|
+
# HTTP target proxy
|
469
|
+
default_region_target_http_proxy = gcp.compute.RegionTargetHttpProxy("default",
|
470
|
+
name="l7-ilb-target-http-proxy",
|
471
|
+
region="us-west1",
|
472
|
+
url_map=default_region_url_map.id)
|
473
|
+
# forwarding rule
|
474
|
+
default = gcp.compute.ForwardingRule("default",
|
475
|
+
name="l7-ilb-forwarding-rule",
|
476
|
+
region="us-west1",
|
477
|
+
ip_protocol="TCP",
|
478
|
+
load_balancing_scheme="INTERNAL_MANAGED",
|
479
|
+
port_range="80",
|
480
|
+
target=default_region_target_http_proxy.id,
|
481
|
+
network=ilb_network.id,
|
482
|
+
subnetwork=ilb_subnet.id,
|
483
|
+
network_tier="PREMIUM")
|
484
|
+
# allow all access from IAP and health check ranges
|
485
|
+
fw_iap = gcp.compute.Firewall("fw_iap",
|
486
|
+
name="l7-ilb-fw-allow-iap-hc",
|
487
|
+
direction="INGRESS",
|
488
|
+
network=ilb_network.id,
|
489
|
+
source_ranges=[
|
490
|
+
"130.211.0.0/22",
|
491
|
+
"35.191.0.0/16",
|
492
|
+
"35.235.240.0/20",
|
493
|
+
],
|
494
|
+
allows=[gcp.compute.FirewallAllowArgs(
|
495
|
+
protocol="tcp",
|
496
|
+
)])
|
497
|
+
# allow http from proxy subnet to backends
|
498
|
+
fw_ilb_to_backends = gcp.compute.Firewall("fw_ilb_to_backends",
|
499
|
+
name="l7-ilb-fw-allow-ilb-to-backends",
|
500
|
+
direction="INGRESS",
|
501
|
+
network=ilb_network.id,
|
502
|
+
source_ranges=["10.0.0.0/24"],
|
503
|
+
target_tags=["http-server"],
|
504
|
+
allows=[gcp.compute.FirewallAllowArgs(
|
505
|
+
protocol="tcp",
|
506
|
+
ports=[
|
507
|
+
"80",
|
508
|
+
"443",
|
509
|
+
"8080",
|
510
|
+
],
|
511
|
+
)])
|
512
|
+
# Traffic Extension Backend Instance
|
513
|
+
callouts_instance = gcp.compute.Instance("callouts_instance",
|
514
|
+
network_interfaces=[gcp.compute.InstanceNetworkInterfaceArgs(
|
515
|
+
access_configs=[gcp.compute.InstanceNetworkInterfaceAccessConfigArgs()],
|
516
|
+
network=ilb_network.id,
|
517
|
+
subnetwork=ilb_subnet.id,
|
518
|
+
)],
|
519
|
+
name="l7-ilb-callouts-ins",
|
520
|
+
zone="us-west1-a",
|
521
|
+
machine_type="e2-small",
|
522
|
+
labels={
|
523
|
+
"container-vm": "cos-stable-109-17800-147-54",
|
524
|
+
},
|
525
|
+
tags=[
|
526
|
+
"allow-ssh",
|
527
|
+
"load-balanced-backend",
|
528
|
+
],
|
529
|
+
boot_disk=gcp.compute.InstanceBootDiskArgs(
|
530
|
+
auto_delete=True,
|
531
|
+
initialize_params=gcp.compute.InstanceBootDiskInitializeParamsArgs(
|
532
|
+
type="pd-standard",
|
533
|
+
size=10,
|
534
|
+
image="https://www.googleapis.com/compute/v1/projects/cos-cloud/global/images/cos-stable-109-17800-147-54",
|
535
|
+
),
|
536
|
+
),
|
537
|
+
metadata={
|
538
|
+
"gce-container-declaration": \"\"\"# DISCLAIMER:
|
539
|
+
# This container declaration format is not a public API and may change without
|
540
|
+
# notice. Please use gcloud command-line tool or Google Cloud Console to run
|
541
|
+
# Containers on Google Compute Engine.
|
542
|
+
|
543
|
+
spec:
|
544
|
+
containers:
|
545
|
+
- image: us-docker.pkg.dev/service-extensions/ext-proc/service-callout-basic-example-python:latest
|
546
|
+
name: callouts-vm
|
547
|
+
securityContext:
|
548
|
+
privileged: false
|
549
|
+
stdin: false
|
550
|
+
tty: false
|
551
|
+
volumeMounts: []
|
552
|
+
restartPolicy: Always
|
553
|
+
volumes: []
|
554
|
+
\"\"\",
|
555
|
+
"google-logging-enabled": "true",
|
556
|
+
},
|
557
|
+
deletion_protection=False)
|
558
|
+
# callouts instance group
|
559
|
+
callouts_instance_group = gcp.compute.InstanceGroup("callouts_instance_group",
|
560
|
+
name="l7-ilb-callouts-ins-group",
|
561
|
+
description="Terraform test instance group",
|
562
|
+
zone="us-west1-a",
|
563
|
+
instances=[callouts_instance.id],
|
564
|
+
named_ports=[
|
565
|
+
gcp.compute.InstanceGroupNamedPortArgs(
|
566
|
+
name="http",
|
567
|
+
port=80,
|
568
|
+
),
|
569
|
+
gcp.compute.InstanceGroupNamedPortArgs(
|
570
|
+
name="grpc",
|
571
|
+
port=443,
|
572
|
+
),
|
573
|
+
])
|
574
|
+
# callout health check
|
575
|
+
callouts_health_check = gcp.compute.RegionHealthCheck("callouts_health_check",
|
576
|
+
name="l7-ilb-callouts-hc",
|
577
|
+
region="us-west1",
|
578
|
+
http_health_check=gcp.compute.RegionHealthCheckHttpHealthCheckArgs(
|
579
|
+
port=80,
|
580
|
+
))
|
581
|
+
# callout backend service
|
582
|
+
callouts_backend = gcp.compute.RegionBackendService("callouts_backend",
|
583
|
+
name="l7-ilb-callouts-backend",
|
584
|
+
region="us-west1",
|
585
|
+
protocol="HTTP2",
|
586
|
+
load_balancing_scheme="INTERNAL_MANAGED",
|
587
|
+
timeout_sec=10,
|
588
|
+
port_name="grpc",
|
589
|
+
health_checks=callouts_health_check.id,
|
590
|
+
backends=[gcp.compute.RegionBackendServiceBackendArgs(
|
591
|
+
group=callouts_instance_group.id,
|
592
|
+
balancing_mode="UTILIZATION",
|
593
|
+
capacity_scaler=1,
|
594
|
+
)])
|
595
|
+
default_lb_traffic_extension = gcp.networkservices.LbTrafficExtension("default",
|
596
|
+
name="l7-ilb-traffic-ext",
|
597
|
+
description="my traffic extension",
|
598
|
+
location="us-west1",
|
599
|
+
load_balancing_scheme="INTERNAL_MANAGED",
|
600
|
+
forwarding_rules=[default.self_link],
|
601
|
+
extension_chains=[gcp.networkservices.LbTrafficExtensionExtensionChainArgs(
|
602
|
+
name="chain1",
|
603
|
+
match_condition=gcp.networkservices.LbTrafficExtensionExtensionChainMatchConditionArgs(
|
604
|
+
cel_expression="request.host == 'example.com'",
|
605
|
+
),
|
606
|
+
extensions=[gcp.networkservices.LbTrafficExtensionExtensionChainExtensionArgs(
|
607
|
+
name="ext11",
|
608
|
+
authority="ext11.com",
|
609
|
+
service=callouts_backend.self_link,
|
610
|
+
timeout="0.1s",
|
611
|
+
fail_open=False,
|
612
|
+
supported_events=["REQUEST_HEADERS"],
|
613
|
+
forward_headers=["custom-header"],
|
614
|
+
)],
|
615
|
+
)],
|
616
|
+
labels={
|
617
|
+
"foo": "bar",
|
618
|
+
})
|
619
|
+
# test instance
|
620
|
+
vm_test = gcp.compute.Instance("vm_test",
|
621
|
+
name="l7-ilb-test-vm",
|
622
|
+
zone="us-west1-b",
|
623
|
+
machine_type="e2-small",
|
624
|
+
network_interfaces=[gcp.compute.InstanceNetworkInterfaceArgs(
|
625
|
+
network=ilb_network.id,
|
626
|
+
subnetwork=ilb_subnet.id,
|
627
|
+
)],
|
628
|
+
boot_disk=gcp.compute.InstanceBootDiskArgs(
|
629
|
+
initialize_params=gcp.compute.InstanceBootDiskInitializeParamsArgs(
|
630
|
+
image="debian-cloud/debian-11",
|
631
|
+
),
|
632
|
+
))
|
633
|
+
```
|
634
|
+
|
635
|
+
## Import
|
636
|
+
|
637
|
+
LbTrafficExtension can be imported using any of these accepted formats:
|
638
|
+
|
639
|
+
* `projects/{{project}}/locations/{{location}}/lbTrafficExtensions/{{name}}`
|
640
|
+
|
641
|
+
* `{{project}}/{{location}}/{{name}}`
|
642
|
+
|
643
|
+
* `{{location}}/{{name}}`
|
644
|
+
|
645
|
+
When using the `pulumi import` command, LbTrafficExtension can be imported using one of the formats above. For example:
|
646
|
+
|
647
|
+
```sh
|
648
|
+
$ pulumi import gcp:networkservices/lbTrafficExtension:LbTrafficExtension default projects/{{project}}/locations/{{location}}/lbTrafficExtensions/{{name}}
|
649
|
+
```
|
650
|
+
|
651
|
+
```sh
|
652
|
+
$ pulumi import gcp:networkservices/lbTrafficExtension:LbTrafficExtension default {{project}}/{{location}}/{{name}}
|
653
|
+
```
|
654
|
+
|
655
|
+
```sh
|
656
|
+
$ pulumi import gcp:networkservices/lbTrafficExtension:LbTrafficExtension default {{location}}/{{name}}
|
657
|
+
```
|
658
|
+
|
659
|
+
:param str resource_name: The name of the resource.
|
660
|
+
:param pulumi.ResourceOptions opts: Options for the resource.
|
661
|
+
:param pulumi.Input[str] description: A human-readable description of the resource.
|
662
|
+
:param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['LbTrafficExtensionExtensionChainArgs']]]] extension_chains: A set of ordered extension chains that contain the match conditions and extensions to execute.
|
663
|
+
Match conditions for each extension chain are evaluated in sequence for a given request.
|
664
|
+
The first extension chain that has a condition that matches the request is executed.
|
665
|
+
Any subsequent extension chains do not execute. Limited to 5 extension chains per resource.
|
666
|
+
Structure is documented below.
|
667
|
+
:param pulumi.Input[Sequence[pulumi.Input[str]]] forwarding_rules: A list of references to the forwarding rules to which this service extension is attached to.
|
668
|
+
At least one forwarding rule is required. There can be only one LBTrafficExtension resource per forwarding rule.
|
669
|
+
:param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: Set of labels associated with the LbTrafficExtension resource. **Note**: This field is non-authoritative, and will only
|
670
|
+
manage the labels present in your configuration. Please refer to the field 'effective_labels' for all of the labels
|
671
|
+
present on the resource.
|
672
|
+
:param pulumi.Input[str] load_balancing_scheme: All backend services and forwarding rules referenced by this extension must share the same load balancing scheme. For
|
673
|
+
more information, refer to Choosing a load balancer. Possible values: ["LOAD_BALANCING_SCHEME_UNSPECIFIED",
|
674
|
+
"INTERNAL_MANAGED", "EXTERNAL_MANAGED"]
|
675
|
+
:param pulumi.Input[str] location: The location of the traffic extension
|
676
|
+
:param pulumi.Input[str] name: Name of the LbTrafficExtension resource in the following format: projects/{project}/locations/{location}/lbTrafficExtensions/{lbTrafficExtension}.
|
677
|
+
"""
|
678
|
+
...
|
679
|
+
@overload
|
680
|
+
def __init__(__self__,
|
681
|
+
resource_name: str,
|
682
|
+
args: LbTrafficExtensionArgs,
|
683
|
+
opts: Optional[pulumi.ResourceOptions] = None):
|
684
|
+
"""
|
685
|
+
LbTrafficExtension is a resource that lets the extension service modify the headers and payloads of both requests and responses without impacting the choice of backend services or any other security policies associated with the backend service.
|
686
|
+
|
687
|
+
To get more information about LbTrafficExtension, see:
|
688
|
+
|
689
|
+
* [API documentation](https://cloud.google.com/service-extensions/docs/reference/rest/v1beta1/projects.locations.lbTrafficExtensions)
|
690
|
+
* How-to Guides
|
691
|
+
* [Configure a traffic extension](https://cloud.google.com/service-extensions/docs/configure-callout#configure_a_traffic_extension)
|
692
|
+
|
693
|
+
## Example Usage
|
694
|
+
|
695
|
+
### Network Services Lb Traffic Extension Basic
|
696
|
+
|
697
|
+
```python
|
698
|
+
import pulumi
|
699
|
+
import pulumi_gcp as gcp
|
700
|
+
|
701
|
+
# Internal HTTP load balancer with a managed instance group backend
|
702
|
+
# VPC network
|
703
|
+
ilb_network = gcp.compute.Network("ilb_network",
|
704
|
+
name="l7-ilb-network",
|
705
|
+
auto_create_subnetworks=False)
|
706
|
+
# proxy-only subnet
|
707
|
+
proxy_subnet = gcp.compute.Subnetwork("proxy_subnet",
|
708
|
+
name="l7-ilb-proxy-subnet",
|
709
|
+
ip_cidr_range="10.0.0.0/24",
|
710
|
+
region="us-west1",
|
711
|
+
purpose="REGIONAL_MANAGED_PROXY",
|
712
|
+
role="ACTIVE",
|
713
|
+
network=ilb_network.id)
|
714
|
+
# backend subnet
|
715
|
+
ilb_subnet = gcp.compute.Subnetwork("ilb_subnet",
|
716
|
+
name="l7-ilb-subnet",
|
717
|
+
ip_cidr_range="10.0.1.0/24",
|
718
|
+
region="us-west1",
|
719
|
+
network=ilb_network.id)
|
720
|
+
# health check
|
721
|
+
default_region_health_check = gcp.compute.RegionHealthCheck("default",
|
722
|
+
name="l7-ilb-hc",
|
723
|
+
region="us-west1",
|
724
|
+
http_health_check=gcp.compute.RegionHealthCheckHttpHealthCheckArgs(
|
725
|
+
port_specification="USE_SERVING_PORT",
|
726
|
+
))
|
727
|
+
# instance template
|
728
|
+
instance_template = gcp.compute.InstanceTemplate("instance_template",
|
729
|
+
network_interfaces=[gcp.compute.InstanceTemplateNetworkInterfaceArgs(
|
730
|
+
access_configs=[gcp.compute.InstanceTemplateNetworkInterfaceAccessConfigArgs()],
|
731
|
+
network=ilb_network.id,
|
732
|
+
subnetwork=ilb_subnet.id,
|
733
|
+
)],
|
734
|
+
name="l7-ilb-mig-template",
|
735
|
+
machine_type="e2-small",
|
736
|
+
tags=["http-server"],
|
737
|
+
disks=[gcp.compute.InstanceTemplateDiskArgs(
|
738
|
+
source_image="debian-cloud/debian-10",
|
739
|
+
auto_delete=True,
|
740
|
+
boot=True,
|
741
|
+
)],
|
742
|
+
metadata={
|
743
|
+
"startup-script": \"\"\"#! /bin/bash
|
744
|
+
set -euo pipefail
|
745
|
+
|
746
|
+
export DEBIAN_FRONTEND=noninteractive
|
747
|
+
apt-get update
|
748
|
+
apt-get install -y nginx-light jq
|
749
|
+
|
750
|
+
NAME=$(curl -H "Metadata-Flavor: Google" "http://metadata.google.internal/computeMetadata/v1/instance/hostname")
|
751
|
+
IP=$(curl -H "Metadata-Flavor: Google" "http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/ip")
|
752
|
+
METADATA=$(curl -f -H "Metadata-Flavor: Google" "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=True" | jq 'del(.["startup-script"])')
|
753
|
+
|
754
|
+
cat <<EOF > /var/www/html/index.html
|
755
|
+
<pre>
|
756
|
+
Name: $NAME
|
757
|
+
IP: $IP
|
758
|
+
Metadata: $METADATA
|
759
|
+
</pre>
|
760
|
+
EOF
|
761
|
+
\"\"\",
|
762
|
+
})
|
763
|
+
# MIG
|
764
|
+
mig = gcp.compute.RegionInstanceGroupManager("mig",
|
765
|
+
name="l7-ilb-mig1",
|
766
|
+
region="us-west1",
|
767
|
+
base_instance_name="vm",
|
768
|
+
target_size=2,
|
769
|
+
versions=[gcp.compute.RegionInstanceGroupManagerVersionArgs(
|
770
|
+
instance_template=instance_template.id,
|
771
|
+
name="primary",
|
772
|
+
)])
|
773
|
+
# backend service
|
774
|
+
default_region_backend_service = gcp.compute.RegionBackendService("default",
|
775
|
+
name="l7-ilb-backend-subnet",
|
776
|
+
region="us-west1",
|
777
|
+
protocol="HTTP",
|
778
|
+
load_balancing_scheme="INTERNAL_MANAGED",
|
779
|
+
timeout_sec=10,
|
780
|
+
health_checks=default_region_health_check.id,
|
781
|
+
backends=[gcp.compute.RegionBackendServiceBackendArgs(
|
782
|
+
group=mig.instance_group,
|
783
|
+
balancing_mode="UTILIZATION",
|
784
|
+
capacity_scaler=1,
|
785
|
+
)])
|
786
|
+
# URL map
|
787
|
+
default_region_url_map = gcp.compute.RegionUrlMap("default",
|
788
|
+
name="l7-ilb-regional-url-map",
|
789
|
+
region="us-west1",
|
790
|
+
default_service=default_region_backend_service.id)
|
791
|
+
# HTTP target proxy
|
792
|
+
default_region_target_http_proxy = gcp.compute.RegionTargetHttpProxy("default",
|
793
|
+
name="l7-ilb-target-http-proxy",
|
794
|
+
region="us-west1",
|
795
|
+
url_map=default_region_url_map.id)
|
796
|
+
# forwarding rule
|
797
|
+
default = gcp.compute.ForwardingRule("default",
|
798
|
+
name="l7-ilb-forwarding-rule",
|
799
|
+
region="us-west1",
|
800
|
+
ip_protocol="TCP",
|
801
|
+
load_balancing_scheme="INTERNAL_MANAGED",
|
802
|
+
port_range="80",
|
803
|
+
target=default_region_target_http_proxy.id,
|
804
|
+
network=ilb_network.id,
|
805
|
+
subnetwork=ilb_subnet.id,
|
806
|
+
network_tier="PREMIUM")
|
807
|
+
# allow all access from IAP and health check ranges
|
808
|
+
fw_iap = gcp.compute.Firewall("fw_iap",
|
809
|
+
name="l7-ilb-fw-allow-iap-hc",
|
810
|
+
direction="INGRESS",
|
811
|
+
network=ilb_network.id,
|
812
|
+
source_ranges=[
|
813
|
+
"130.211.0.0/22",
|
814
|
+
"35.191.0.0/16",
|
815
|
+
"35.235.240.0/20",
|
816
|
+
],
|
817
|
+
allows=[gcp.compute.FirewallAllowArgs(
|
818
|
+
protocol="tcp",
|
819
|
+
)])
|
820
|
+
# allow http from proxy subnet to backends
|
821
|
+
fw_ilb_to_backends = gcp.compute.Firewall("fw_ilb_to_backends",
|
822
|
+
name="l7-ilb-fw-allow-ilb-to-backends",
|
823
|
+
direction="INGRESS",
|
824
|
+
network=ilb_network.id,
|
825
|
+
source_ranges=["10.0.0.0/24"],
|
826
|
+
target_tags=["http-server"],
|
827
|
+
allows=[gcp.compute.FirewallAllowArgs(
|
828
|
+
protocol="tcp",
|
829
|
+
ports=[
|
830
|
+
"80",
|
831
|
+
"443",
|
832
|
+
"8080",
|
833
|
+
],
|
834
|
+
)])
|
835
|
+
# Traffic Extension Backend Instance
|
836
|
+
callouts_instance = gcp.compute.Instance("callouts_instance",
|
837
|
+
network_interfaces=[gcp.compute.InstanceNetworkInterfaceArgs(
|
838
|
+
access_configs=[gcp.compute.InstanceNetworkInterfaceAccessConfigArgs()],
|
839
|
+
network=ilb_network.id,
|
840
|
+
subnetwork=ilb_subnet.id,
|
841
|
+
)],
|
842
|
+
name="l7-ilb-callouts-ins",
|
843
|
+
zone="us-west1-a",
|
844
|
+
machine_type="e2-small",
|
845
|
+
labels={
|
846
|
+
"container-vm": "cos-stable-109-17800-147-54",
|
847
|
+
},
|
848
|
+
tags=[
|
849
|
+
"allow-ssh",
|
850
|
+
"load-balanced-backend",
|
851
|
+
],
|
852
|
+
boot_disk=gcp.compute.InstanceBootDiskArgs(
|
853
|
+
auto_delete=True,
|
854
|
+
initialize_params=gcp.compute.InstanceBootDiskInitializeParamsArgs(
|
855
|
+
type="pd-standard",
|
856
|
+
size=10,
|
857
|
+
image="https://www.googleapis.com/compute/v1/projects/cos-cloud/global/images/cos-stable-109-17800-147-54",
|
858
|
+
),
|
859
|
+
),
|
860
|
+
metadata={
|
861
|
+
"gce-container-declaration": \"\"\"# DISCLAIMER:
|
862
|
+
# This container declaration format is not a public API and may change without
|
863
|
+
# notice. Please use gcloud command-line tool or Google Cloud Console to run
|
864
|
+
# Containers on Google Compute Engine.
|
865
|
+
|
866
|
+
spec:
|
867
|
+
containers:
|
868
|
+
- image: us-docker.pkg.dev/service-extensions/ext-proc/service-callout-basic-example-python:latest
|
869
|
+
name: callouts-vm
|
870
|
+
securityContext:
|
871
|
+
privileged: false
|
872
|
+
stdin: false
|
873
|
+
tty: false
|
874
|
+
volumeMounts: []
|
875
|
+
restartPolicy: Always
|
876
|
+
volumes: []
|
877
|
+
\"\"\",
|
878
|
+
"google-logging-enabled": "true",
|
879
|
+
},
|
880
|
+
deletion_protection=False)
|
881
|
+
# callouts instance group
|
882
|
+
callouts_instance_group = gcp.compute.InstanceGroup("callouts_instance_group",
|
883
|
+
name="l7-ilb-callouts-ins-group",
|
884
|
+
description="Terraform test instance group",
|
885
|
+
zone="us-west1-a",
|
886
|
+
instances=[callouts_instance.id],
|
887
|
+
named_ports=[
|
888
|
+
gcp.compute.InstanceGroupNamedPortArgs(
|
889
|
+
name="http",
|
890
|
+
port=80,
|
891
|
+
),
|
892
|
+
gcp.compute.InstanceGroupNamedPortArgs(
|
893
|
+
name="grpc",
|
894
|
+
port=443,
|
895
|
+
),
|
896
|
+
])
|
897
|
+
# callout health check
|
898
|
+
callouts_health_check = gcp.compute.RegionHealthCheck("callouts_health_check",
|
899
|
+
name="l7-ilb-callouts-hc",
|
900
|
+
region="us-west1",
|
901
|
+
http_health_check=gcp.compute.RegionHealthCheckHttpHealthCheckArgs(
|
902
|
+
port=80,
|
903
|
+
))
|
904
|
+
# callout backend service
|
905
|
+
callouts_backend = gcp.compute.RegionBackendService("callouts_backend",
|
906
|
+
name="l7-ilb-callouts-backend",
|
907
|
+
region="us-west1",
|
908
|
+
protocol="HTTP2",
|
909
|
+
load_balancing_scheme="INTERNAL_MANAGED",
|
910
|
+
timeout_sec=10,
|
911
|
+
port_name="grpc",
|
912
|
+
health_checks=callouts_health_check.id,
|
913
|
+
backends=[gcp.compute.RegionBackendServiceBackendArgs(
|
914
|
+
group=callouts_instance_group.id,
|
915
|
+
balancing_mode="UTILIZATION",
|
916
|
+
capacity_scaler=1,
|
917
|
+
)])
|
918
|
+
default_lb_traffic_extension = gcp.networkservices.LbTrafficExtension("default",
|
919
|
+
name="l7-ilb-traffic-ext",
|
920
|
+
description="my traffic extension",
|
921
|
+
location="us-west1",
|
922
|
+
load_balancing_scheme="INTERNAL_MANAGED",
|
923
|
+
forwarding_rules=[default.self_link],
|
924
|
+
extension_chains=[gcp.networkservices.LbTrafficExtensionExtensionChainArgs(
|
925
|
+
name="chain1",
|
926
|
+
match_condition=gcp.networkservices.LbTrafficExtensionExtensionChainMatchConditionArgs(
|
927
|
+
cel_expression="request.host == 'example.com'",
|
928
|
+
),
|
929
|
+
extensions=[gcp.networkservices.LbTrafficExtensionExtensionChainExtensionArgs(
|
930
|
+
name="ext11",
|
931
|
+
authority="ext11.com",
|
932
|
+
service=callouts_backend.self_link,
|
933
|
+
timeout="0.1s",
|
934
|
+
fail_open=False,
|
935
|
+
supported_events=["REQUEST_HEADERS"],
|
936
|
+
forward_headers=["custom-header"],
|
937
|
+
)],
|
938
|
+
)],
|
939
|
+
labels={
|
940
|
+
"foo": "bar",
|
941
|
+
})
|
942
|
+
# test instance
|
943
|
+
vm_test = gcp.compute.Instance("vm_test",
|
944
|
+
name="l7-ilb-test-vm",
|
945
|
+
zone="us-west1-b",
|
946
|
+
machine_type="e2-small",
|
947
|
+
network_interfaces=[gcp.compute.InstanceNetworkInterfaceArgs(
|
948
|
+
network=ilb_network.id,
|
949
|
+
subnetwork=ilb_subnet.id,
|
950
|
+
)],
|
951
|
+
boot_disk=gcp.compute.InstanceBootDiskArgs(
|
952
|
+
initialize_params=gcp.compute.InstanceBootDiskInitializeParamsArgs(
|
953
|
+
image="debian-cloud/debian-11",
|
954
|
+
),
|
955
|
+
))
|
956
|
+
```
|
957
|
+
|
958
|
+
## Import
|
959
|
+
|
960
|
+
LbTrafficExtension can be imported using any of these accepted formats:
|
961
|
+
|
962
|
+
* `projects/{{project}}/locations/{{location}}/lbTrafficExtensions/{{name}}`
|
963
|
+
|
964
|
+
* `{{project}}/{{location}}/{{name}}`
|
965
|
+
|
966
|
+
* `{{location}}/{{name}}`
|
967
|
+
|
968
|
+
When using the `pulumi import` command, LbTrafficExtension can be imported using one of the formats above. For example:
|
969
|
+
|
970
|
+
```sh
|
971
|
+
$ pulumi import gcp:networkservices/lbTrafficExtension:LbTrafficExtension default projects/{{project}}/locations/{{location}}/lbTrafficExtensions/{{name}}
|
972
|
+
```
|
973
|
+
|
974
|
+
```sh
|
975
|
+
$ pulumi import gcp:networkservices/lbTrafficExtension:LbTrafficExtension default {{project}}/{{location}}/{{name}}
|
976
|
+
```
|
977
|
+
|
978
|
+
```sh
|
979
|
+
$ pulumi import gcp:networkservices/lbTrafficExtension:LbTrafficExtension default {{location}}/{{name}}
|
980
|
+
```
|
981
|
+
|
982
|
+
:param str resource_name: The name of the resource.
|
983
|
+
:param LbTrafficExtensionArgs args: The arguments to use to populate this resource's properties.
|
984
|
+
:param pulumi.ResourceOptions opts: Options for the resource.
|
985
|
+
"""
|
986
|
+
...
|
987
|
+
def __init__(__self__, resource_name: str, *args, **kwargs):
|
988
|
+
resource_args, opts = _utilities.get_resource_args_opts(LbTrafficExtensionArgs, pulumi.ResourceOptions, *args, **kwargs)
|
989
|
+
if resource_args is not None:
|
990
|
+
__self__._internal_init(resource_name, opts, **resource_args.__dict__)
|
991
|
+
else:
|
992
|
+
__self__._internal_init(resource_name, *args, **kwargs)
|
993
|
+
|
994
|
+
def _internal_init(__self__,
|
995
|
+
resource_name: str,
|
996
|
+
opts: Optional[pulumi.ResourceOptions] = None,
|
997
|
+
description: Optional[pulumi.Input[str]] = None,
|
998
|
+
extension_chains: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['LbTrafficExtensionExtensionChainArgs']]]]] = None,
|
999
|
+
forwarding_rules: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
|
1000
|
+
labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
|
1001
|
+
load_balancing_scheme: Optional[pulumi.Input[str]] = None,
|
1002
|
+
location: Optional[pulumi.Input[str]] = None,
|
1003
|
+
name: Optional[pulumi.Input[str]] = None,
|
1004
|
+
project: Optional[pulumi.Input[str]] = None,
|
1005
|
+
__props__=None):
|
1006
|
+
opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
|
1007
|
+
if not isinstance(opts, pulumi.ResourceOptions):
|
1008
|
+
raise TypeError('Expected resource options to be a ResourceOptions instance')
|
1009
|
+
if opts.id is None:
|
1010
|
+
if __props__ is not None:
|
1011
|
+
raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
|
1012
|
+
__props__ = LbTrafficExtensionArgs.__new__(LbTrafficExtensionArgs)
|
1013
|
+
|
1014
|
+
__props__.__dict__["description"] = description
|
1015
|
+
if extension_chains is None and not opts.urn:
|
1016
|
+
raise TypeError("Missing required property 'extension_chains'")
|
1017
|
+
__props__.__dict__["extension_chains"] = extension_chains
|
1018
|
+
if forwarding_rules is None and not opts.urn:
|
1019
|
+
raise TypeError("Missing required property 'forwarding_rules'")
|
1020
|
+
__props__.__dict__["forwarding_rules"] = forwarding_rules
|
1021
|
+
__props__.__dict__["labels"] = labels
|
1022
|
+
__props__.__dict__["load_balancing_scheme"] = load_balancing_scheme
|
1023
|
+
if location is None and not opts.urn:
|
1024
|
+
raise TypeError("Missing required property 'location'")
|
1025
|
+
__props__.__dict__["location"] = location
|
1026
|
+
__props__.__dict__["name"] = name
|
1027
|
+
__props__.__dict__["project"] = project
|
1028
|
+
__props__.__dict__["effective_labels"] = None
|
1029
|
+
__props__.__dict__["pulumi_labels"] = None
|
1030
|
+
secret_opts = pulumi.ResourceOptions(additional_secret_outputs=["effectiveLabels", "pulumiLabels"])
|
1031
|
+
opts = pulumi.ResourceOptions.merge(opts, secret_opts)
|
1032
|
+
super(LbTrafficExtension, __self__).__init__(
|
1033
|
+
'gcp:networkservices/lbTrafficExtension:LbTrafficExtension',
|
1034
|
+
resource_name,
|
1035
|
+
__props__,
|
1036
|
+
opts)
|
1037
|
+
|
1038
|
+
@staticmethod
|
1039
|
+
def get(resource_name: str,
|
1040
|
+
id: pulumi.Input[str],
|
1041
|
+
opts: Optional[pulumi.ResourceOptions] = None,
|
1042
|
+
description: Optional[pulumi.Input[str]] = None,
|
1043
|
+
effective_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
|
1044
|
+
extension_chains: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['LbTrafficExtensionExtensionChainArgs']]]]] = None,
|
1045
|
+
forwarding_rules: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
|
1046
|
+
labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
|
1047
|
+
load_balancing_scheme: Optional[pulumi.Input[str]] = None,
|
1048
|
+
location: Optional[pulumi.Input[str]] = None,
|
1049
|
+
name: Optional[pulumi.Input[str]] = None,
|
1050
|
+
project: Optional[pulumi.Input[str]] = None,
|
1051
|
+
pulumi_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None) -> 'LbTrafficExtension':
|
1052
|
+
"""
|
1053
|
+
Get an existing LbTrafficExtension resource's state with the given name, id, and optional extra
|
1054
|
+
properties used to qualify the lookup.
|
1055
|
+
|
1056
|
+
:param str resource_name: The unique name of the resulting resource.
|
1057
|
+
:param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
|
1058
|
+
:param pulumi.ResourceOptions opts: Options for the resource.
|
1059
|
+
:param pulumi.Input[str] description: A human-readable description of the resource.
|
1060
|
+
:param pulumi.Input[Mapping[str, pulumi.Input[str]]] effective_labels: All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
|
1061
|
+
:param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['LbTrafficExtensionExtensionChainArgs']]]] extension_chains: A set of ordered extension chains that contain the match conditions and extensions to execute.
|
1062
|
+
Match conditions for each extension chain are evaluated in sequence for a given request.
|
1063
|
+
The first extension chain that has a condition that matches the request is executed.
|
1064
|
+
Any subsequent extension chains do not execute. Limited to 5 extension chains per resource.
|
1065
|
+
Structure is documented below.
|
1066
|
+
:param pulumi.Input[Sequence[pulumi.Input[str]]] forwarding_rules: A list of references to the forwarding rules to which this service extension is attached to.
|
1067
|
+
At least one forwarding rule is required. There can be only one LBTrafficExtension resource per forwarding rule.
|
1068
|
+
:param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: Set of labels associated with the LbTrafficExtension resource. **Note**: This field is non-authoritative, and will only
|
1069
|
+
manage the labels present in your configuration. Please refer to the field 'effective_labels' for all of the labels
|
1070
|
+
present on the resource.
|
1071
|
+
:param pulumi.Input[str] load_balancing_scheme: All backend services and forwarding rules referenced by this extension must share the same load balancing scheme. For
|
1072
|
+
more information, refer to Choosing a load balancer. Possible values: ["LOAD_BALANCING_SCHEME_UNSPECIFIED",
|
1073
|
+
"INTERNAL_MANAGED", "EXTERNAL_MANAGED"]
|
1074
|
+
:param pulumi.Input[str] location: The location of the traffic extension
|
1075
|
+
:param pulumi.Input[str] name: Name of the LbTrafficExtension resource in the following format: projects/{project}/locations/{location}/lbTrafficExtensions/{lbTrafficExtension}.
|
1076
|
+
:param pulumi.Input[Mapping[str, pulumi.Input[str]]] pulumi_labels: The combination of labels configured directly on the resource
|
1077
|
+
and default labels configured on the provider.
|
1078
|
+
"""
|
1079
|
+
opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
|
1080
|
+
|
1081
|
+
__props__ = _LbTrafficExtensionState.__new__(_LbTrafficExtensionState)
|
1082
|
+
|
1083
|
+
__props__.__dict__["description"] = description
|
1084
|
+
__props__.__dict__["effective_labels"] = effective_labels
|
1085
|
+
__props__.__dict__["extension_chains"] = extension_chains
|
1086
|
+
__props__.__dict__["forwarding_rules"] = forwarding_rules
|
1087
|
+
__props__.__dict__["labels"] = labels
|
1088
|
+
__props__.__dict__["load_balancing_scheme"] = load_balancing_scheme
|
1089
|
+
__props__.__dict__["location"] = location
|
1090
|
+
__props__.__dict__["name"] = name
|
1091
|
+
__props__.__dict__["project"] = project
|
1092
|
+
__props__.__dict__["pulumi_labels"] = pulumi_labels
|
1093
|
+
return LbTrafficExtension(resource_name, opts=opts, __props__=__props__)
|
1094
|
+
|
1095
|
+
@property
|
1096
|
+
@pulumi.getter
|
1097
|
+
def description(self) -> pulumi.Output[Optional[str]]:
|
1098
|
+
"""
|
1099
|
+
A human-readable description of the resource.
|
1100
|
+
"""
|
1101
|
+
return pulumi.get(self, "description")
|
1102
|
+
|
1103
|
+
@property
|
1104
|
+
@pulumi.getter(name="effectiveLabels")
|
1105
|
+
def effective_labels(self) -> pulumi.Output[Mapping[str, str]]:
|
1106
|
+
"""
|
1107
|
+
All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
|
1108
|
+
"""
|
1109
|
+
return pulumi.get(self, "effective_labels")
|
1110
|
+
|
1111
|
+
@property
|
1112
|
+
@pulumi.getter(name="extensionChains")
|
1113
|
+
def extension_chains(self) -> pulumi.Output[Sequence['outputs.LbTrafficExtensionExtensionChain']]:
|
1114
|
+
"""
|
1115
|
+
A set of ordered extension chains that contain the match conditions and extensions to execute.
|
1116
|
+
Match conditions for each extension chain are evaluated in sequence for a given request.
|
1117
|
+
The first extension chain that has a condition that matches the request is executed.
|
1118
|
+
Any subsequent extension chains do not execute. Limited to 5 extension chains per resource.
|
1119
|
+
Structure is documented below.
|
1120
|
+
"""
|
1121
|
+
return pulumi.get(self, "extension_chains")
|
1122
|
+
|
1123
|
+
@property
|
1124
|
+
@pulumi.getter(name="forwardingRules")
|
1125
|
+
def forwarding_rules(self) -> pulumi.Output[Sequence[str]]:
|
1126
|
+
"""
|
1127
|
+
A list of references to the forwarding rules to which this service extension is attached to.
|
1128
|
+
At least one forwarding rule is required. There can be only one LBTrafficExtension resource per forwarding rule.
|
1129
|
+
"""
|
1130
|
+
return pulumi.get(self, "forwarding_rules")
|
1131
|
+
|
1132
|
+
@property
|
1133
|
+
@pulumi.getter
|
1134
|
+
def labels(self) -> pulumi.Output[Optional[Mapping[str, str]]]:
|
1135
|
+
"""
|
1136
|
+
Set of labels associated with the LbTrafficExtension resource. **Note**: This field is non-authoritative, and will only
|
1137
|
+
manage the labels present in your configuration. Please refer to the field 'effective_labels' for all of the labels
|
1138
|
+
present on the resource.
|
1139
|
+
"""
|
1140
|
+
return pulumi.get(self, "labels")
|
1141
|
+
|
1142
|
+
@property
|
1143
|
+
@pulumi.getter(name="loadBalancingScheme")
|
1144
|
+
def load_balancing_scheme(self) -> pulumi.Output[Optional[str]]:
|
1145
|
+
"""
|
1146
|
+
All backend services and forwarding rules referenced by this extension must share the same load balancing scheme. For
|
1147
|
+
more information, refer to Choosing a load balancer. Possible values: ["LOAD_BALANCING_SCHEME_UNSPECIFIED",
|
1148
|
+
"INTERNAL_MANAGED", "EXTERNAL_MANAGED"]
|
1149
|
+
"""
|
1150
|
+
return pulumi.get(self, "load_balancing_scheme")
|
1151
|
+
|
1152
|
+
@property
|
1153
|
+
@pulumi.getter
|
1154
|
+
def location(self) -> pulumi.Output[str]:
|
1155
|
+
"""
|
1156
|
+
The location of the traffic extension
|
1157
|
+
"""
|
1158
|
+
return pulumi.get(self, "location")
|
1159
|
+
|
1160
|
+
@property
|
1161
|
+
@pulumi.getter
|
1162
|
+
def name(self) -> pulumi.Output[str]:
|
1163
|
+
"""
|
1164
|
+
Name of the LbTrafficExtension resource in the following format: projects/{project}/locations/{location}/lbTrafficExtensions/{lbTrafficExtension}.
|
1165
|
+
"""
|
1166
|
+
return pulumi.get(self, "name")
|
1167
|
+
|
1168
|
+
@property
|
1169
|
+
@pulumi.getter
|
1170
|
+
def project(self) -> pulumi.Output[str]:
|
1171
|
+
return pulumi.get(self, "project")
|
1172
|
+
|
1173
|
+
@property
|
1174
|
+
@pulumi.getter(name="pulumiLabels")
|
1175
|
+
def pulumi_labels(self) -> pulumi.Output[Mapping[str, str]]:
|
1176
|
+
"""
|
1177
|
+
The combination of labels configured directly on the resource
|
1178
|
+
and default labels configured on the provider.
|
1179
|
+
"""
|
1180
|
+
return pulumi.get(self, "pulumi_labels")
|
1181
|
+
|