pulumi-gcp 7.24.0a1716588893__py3-none-any.whl → 7.25.0__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 +88 -0
- pulumi_gcp/accesscontextmanager/service_perimeter_egress_policy.py +0 -64
- pulumi_gcp/accesscontextmanager/service_perimeter_ingress_policy.py +0 -70
- pulumi_gcp/alloydb/backup.py +50 -42
- pulumi_gcp/alloydb/cluster.py +56 -48
- pulumi_gcp/alloydb/instance.py +50 -42
- pulumi_gcp/alloydb/user.py +32 -24
- pulumi_gcp/apigateway/api_config.py +0 -114
- pulumi_gcp/apigateway/gateway.py +0 -44
- pulumi_gcp/apigee/addons_config.py +14 -4
- pulumi_gcp/apigee/endpoint_attachment.py +4 -2
- pulumi_gcp/apigee/env_group.py +4 -2
- pulumi_gcp/apigee/environment.py +4 -2
- pulumi_gcp/apigee/instance.py +22 -8
- pulumi_gcp/apigee/keystores_aliases_self_signed_cert.py +26 -10
- pulumi_gcp/apigee/nat_address.py +10 -2
- pulumi_gcp/apigee/organization.py +18 -6
- pulumi_gcp/apigee/sync_authorization.py +8 -4
- pulumi_gcp/apigee/target_server.py +26 -10
- pulumi_gcp/appengine/_inputs.py +18 -0
- pulumi_gcp/appengine/domain_mapping.py +1 -1
- pulumi_gcp/appengine/outputs.py +16 -0
- pulumi_gcp/apphub/service.py +40 -20
- pulumi_gcp/apphub/service_project_attachment.py +16 -8
- pulumi_gcp/apphub/workload.py +0 -418
- pulumi_gcp/applicationintegration/auth_config.py +4 -2
- pulumi_gcp/artifactregistry/repository.py +14 -12
- pulumi_gcp/backupdisasterrecovery/management_server.py +4 -2
- pulumi_gcp/bigquery/_inputs.py +286 -2
- pulumi_gcp/bigquery/data_transfer_config.py +8 -4
- pulumi_gcp/bigquery/job.py +22 -16
- pulumi_gcp/bigquery/outputs.py +289 -2
- pulumi_gcp/bigquery/table.py +77 -35
- pulumi_gcp/certificateauthority/authority.py +10 -2
- pulumi_gcp/certificateauthority/certificate.py +8 -4
- pulumi_gcp/certificatemanager/certificate.py +84 -80
- pulumi_gcp/certificatemanager/certificate_issuance_config.py +32 -30
- pulumi_gcp/cloudbuild/bitbucket_server_config.py +12 -6
- pulumi_gcp/cloudbuild/trigger.py +22 -14
- pulumi_gcp/cloudbuild/worker_pool.py +12 -6
- pulumi_gcp/cloudbuildv2/connection.py +10 -2
- pulumi_gcp/cloudbuildv2/repository.py +10 -2
- pulumi_gcp/cloudfunctionsv2/function.py +110 -66
- pulumi_gcp/cloudids/endpoint.py +4 -2
- pulumi_gcp/cloudrun/_inputs.py +80 -4
- pulumi_gcp/cloudrun/outputs.py +137 -4
- pulumi_gcp/cloudrunv2/job.py +32 -20
- pulumi_gcp/cloudrunv2/service.py +28 -20
- pulumi_gcp/composer/user_workloads_secret.py +4 -4
- pulumi_gcp/compute/__init__.py +1 -0
- pulumi_gcp/compute/_inputs.py +398 -176
- pulumi_gcp/compute/forwarding_rule.py +225 -817
- pulumi_gcp/compute/get_subnetworks.py +157 -0
- pulumi_gcp/compute/global_forwarding_rule.py +0 -766
- pulumi_gcp/compute/instance_group.py +0 -100
- pulumi_gcp/compute/instance_group_membership.py +2 -2
- pulumi_gcp/compute/interconnect_attachment.py +82 -0
- pulumi_gcp/compute/network_endpoint.py +2 -2
- pulumi_gcp/compute/network_endpoint_list.py +2 -2
- pulumi_gcp/compute/outputs.py +609 -161
- pulumi_gcp/compute/packet_mirroring.py +4 -2
- pulumi_gcp/compute/region_security_policy_rule.py +4 -2
- pulumi_gcp/compute/region_ssl_certificate.py +0 -188
- pulumi_gcp/compute/region_ssl_policy.py +39 -40
- pulumi_gcp/compute/route.py +10 -2
- pulumi_gcp/compute/security_policy_rule.py +55 -1
- pulumi_gcp/compute/ssl_certificate.py +0 -166
- pulumi_gcp/compute/target_instance.py +4 -2
- pulumi_gcp/compute/vpn_gateway.py +12 -2
- pulumi_gcp/compute/vpn_tunnel.py +26 -16
- pulumi_gcp/container/_inputs.py +560 -0
- pulumi_gcp/container/outputs.py +1106 -51
- pulumi_gcp/databasemigrationservice/connection_profile.py +32 -16
- pulumi_gcp/datacatalog/policy_tag.py +4 -2
- pulumi_gcp/datafusion/instance.py +14 -12
- pulumi_gcp/dataplex/__init__.py +10 -0
- pulumi_gcp/dataplex/_inputs.py +160 -0
- pulumi_gcp/dataplex/aspect_type.py +1077 -0
- pulumi_gcp/dataplex/aspect_type_iam_binding.py +765 -0
- pulumi_gcp/dataplex/aspect_type_iam_member.py +765 -0
- pulumi_gcp/dataplex/aspect_type_iam_policy.py +604 -0
- pulumi_gcp/dataplex/asset.py +4 -2
- pulumi_gcp/dataplex/datascan.py +16 -14
- pulumi_gcp/dataplex/entry_group.py +722 -0
- pulumi_gcp/dataplex/entry_group_iam_binding.py +765 -0
- pulumi_gcp/dataplex/entry_group_iam_member.py +765 -0
- pulumi_gcp/dataplex/entry_group_iam_policy.py +604 -0
- pulumi_gcp/dataplex/get_aspect_type_iam_policy.py +164 -0
- pulumi_gcp/dataplex/get_entry_group_iam_policy.py +164 -0
- pulumi_gcp/dataplex/outputs.py +112 -0
- pulumi_gcp/datastore/data_store_index.py +4 -2
- pulumi_gcp/datastream/connection_profile.py +47 -0
- pulumi_gcp/datastream/private_connection.py +47 -0
- pulumi_gcp/datastream/stream.py +63 -10
- pulumi_gcp/diagflow/cx_test_case.py +4 -4
- pulumi_gcp/diagflow/entity_type.py +4 -2
- pulumi_gcp/diagflow/fulfillment.py +4 -2
- pulumi_gcp/diagflow/intent.py +8 -4
- pulumi_gcp/dns/get_managed_zone.py +3 -3
- pulumi_gcp/dns/managed_zone.py +7 -7
- pulumi_gcp/dns/outputs.py +2 -2
- pulumi_gcp/edgecontainer/node_pool.py +4 -2
- pulumi_gcp/edgecontainer/vpn_connection.py +4 -2
- pulumi_gcp/eventarc/channel.py +4 -2
- pulumi_gcp/eventarc/google_channel_config.py +4 -2
- pulumi_gcp/firebase/app_check_app_attest_config.py +16 -8
- pulumi_gcp/firebase/app_check_debug_token.py +8 -4
- pulumi_gcp/firebase/app_check_device_check_config.py +8 -4
- pulumi_gcp/firebase/app_check_play_integrity_config.py +16 -8
- pulumi_gcp/firebase/app_check_recaptcha_enterprise_config.py +8 -4
- pulumi_gcp/firebase/app_check_recaptcha_v3_config.py +8 -4
- pulumi_gcp/firebase/app_check_service_config.py +12 -6
- pulumi_gcp/firebase/database_instance.py +4 -2
- pulumi_gcp/firebaserules/release.py +0 -98
- pulumi_gcp/firestore/database.py +24 -20
- pulumi_gcp/firestore/document.py +24 -12
- pulumi_gcp/folder/access_approval_settings.py +4 -2
- pulumi_gcp/gkehub/membership_binding.py +14 -4
- pulumi_gcp/gkehub/membership_rbac_role_binding.py +8 -4
- pulumi_gcp/gkehub/namespace.py +4 -2
- pulumi_gcp/gkehub/scope_rbac_role_binding.py +4 -2
- pulumi_gcp/integrationconnectors/connection.py +4 -2
- pulumi_gcp/integrationconnectors/managed_zone.py +18 -6
- pulumi_gcp/kms/__init__.py +2 -0
- pulumi_gcp/kms/autokey_config.py +366 -0
- pulumi_gcp/kms/key_handle.py +548 -0
- pulumi_gcp/logging/folder_settings.py +12 -10
- pulumi_gcp/logging/linked_dataset.py +4 -2
- pulumi_gcp/logging/organization_settings.py +12 -10
- pulumi_gcp/logging/project_bucket_config.py +4 -2
- pulumi_gcp/looker/instance.py +12 -10
- pulumi_gcp/netapp/volume_replication.py +4 -2
- pulumi_gcp/netapp/volume_snapshot.py +4 -2
- pulumi_gcp/networkconnectivity/internal_range.py +14 -12
- pulumi_gcp/networksecurity/gateway_security_policy.py +16 -4
- pulumi_gcp/networksecurity/tls_inspection_policy.py +22 -4
- pulumi_gcp/networkservices/__init__.py +1 -0
- pulumi_gcp/networkservices/_inputs.py +245 -27
- pulumi_gcp/networkservices/gateway.py +12 -6
- pulumi_gcp/networkservices/lb_route_extension.py +663 -0
- pulumi_gcp/networkservices/lb_traffic_extension.py +28 -540
- pulumi_gcp/networkservices/outputs.py +251 -20
- pulumi_gcp/organizations/access_approval_settings.py +4 -2
- pulumi_gcp/orgpolicy/policy.py +2 -2
- pulumi_gcp/parallelstore/instance.py +20 -18
- pulumi_gcp/projects/access_approval_settings.py +4 -2
- pulumi_gcp/pubsub/_inputs.py +16 -0
- pulumi_gcp/pubsub/outputs.py +25 -0
- pulumi_gcp/pubsub/schema.py +4 -2
- pulumi_gcp/pubsub/subscription.py +102 -66
- pulumi_gcp/pubsub/topic.py +4 -2
- pulumi_gcp/pulumi-plugin.json +1 -1
- pulumi_gcp/redis/cluster.py +30 -28
- pulumi_gcp/redis/instance.py +4 -2
- pulumi_gcp/secretmanager/secret.py +4 -2
- pulumi_gcp/securesourcemanager/instance.py +20 -8
- pulumi_gcp/securitycenter/instance_iam_binding.py +14 -12
- pulumi_gcp/securitycenter/instance_iam_member.py +14 -12
- pulumi_gcp/securitycenter/instance_iam_policy.py +14 -12
- pulumi_gcp/serviceaccount/key.py +2 -2
- pulumi_gcp/sql/database_instance.py +4 -2
- pulumi_gcp/sql/user.py +4 -4
- pulumi_gcp/storage/get_project_service_account.py +4 -2
- pulumi_gcp/storage/insights_report_config.py +12 -10
- pulumi_gcp/storage/notification.py +18 -16
- pulumi_gcp/storage/transfer_agent_pool.py +4 -2
- pulumi_gcp/storage/transfer_job.py +14 -4
- pulumi_gcp/tpu/_inputs.py +2 -2
- pulumi_gcp/tpu/outputs.py +2 -2
- pulumi_gcp/tpu/v2_vm.py +10 -6
- pulumi_gcp/vertex/ai_endpoint.py +24 -22
- pulumi_gcp/vertex/ai_index_endpoint.py +20 -18
- pulumi_gcp/vertex/ai_tensorboard.py +14 -12
- pulumi_gcp/vmwareengine/external_address.py +4 -2
- pulumi_gcp/vmwareengine/network.py +8 -4
- {pulumi_gcp-7.24.0a1716588893.dist-info → pulumi_gcp-7.25.0.dist-info}/METADATA +1 -1
- {pulumi_gcp-7.24.0a1716588893.dist-info → pulumi_gcp-7.25.0.dist-info}/RECORD +179 -165
- {pulumi_gcp-7.24.0a1716588893.dist-info → pulumi_gcp-7.25.0.dist-info}/WHEEL +0 -0
- {pulumi_gcp-7.24.0a1716588893.dist-info → pulumi_gcp-7.25.0.dist-info}/top_level.txt +0 -0
@@ -73,6 +73,9 @@ __all__ = [
|
|
73
73
|
'HttpRouteRuleMatchHeader',
|
74
74
|
'HttpRouteRuleMatchHeaderRangeMatch',
|
75
75
|
'HttpRouteRuleMatchQueryParameter',
|
76
|
+
'LbRouteExtensionExtensionChain',
|
77
|
+
'LbRouteExtensionExtensionChainExtension',
|
78
|
+
'LbRouteExtensionExtensionChainMatchCondition',
|
76
79
|
'LbTrafficExtensionExtensionChain',
|
77
80
|
'LbTrafficExtensionExtensionChainExtension',
|
78
81
|
'LbTrafficExtensionExtensionChainMatchCondition',
|
@@ -4500,6 +4503,232 @@ class HttpRouteRuleMatchQueryParameter(dict):
|
|
4500
4503
|
return pulumi.get(self, "regex_match")
|
4501
4504
|
|
4502
4505
|
|
4506
|
+
@pulumi.output_type
|
4507
|
+
class LbRouteExtensionExtensionChain(dict):
|
4508
|
+
@staticmethod
|
4509
|
+
def __key_warning(key: str):
|
4510
|
+
suggest = None
|
4511
|
+
if key == "matchCondition":
|
4512
|
+
suggest = "match_condition"
|
4513
|
+
|
4514
|
+
if suggest:
|
4515
|
+
pulumi.log.warn(f"Key '{key}' not found in LbRouteExtensionExtensionChain. Access the value via the '{suggest}' property getter instead.")
|
4516
|
+
|
4517
|
+
def __getitem__(self, key: str) -> Any:
|
4518
|
+
LbRouteExtensionExtensionChain.__key_warning(key)
|
4519
|
+
return super().__getitem__(key)
|
4520
|
+
|
4521
|
+
def get(self, key: str, default = None) -> Any:
|
4522
|
+
LbRouteExtensionExtensionChain.__key_warning(key)
|
4523
|
+
return super().get(key, default)
|
4524
|
+
|
4525
|
+
def __init__(__self__, *,
|
4526
|
+
extensions: Sequence['outputs.LbRouteExtensionExtensionChainExtension'],
|
4527
|
+
match_condition: 'outputs.LbRouteExtensionExtensionChainMatchCondition',
|
4528
|
+
name: str):
|
4529
|
+
"""
|
4530
|
+
:param Sequence['LbRouteExtensionExtensionChainExtensionArgs'] extensions: A set of extensions to execute for the matching request.
|
4531
|
+
At least one extension is required. Up to 3 extensions can be defined for each extension chain for
|
4532
|
+
LbTrafficExtension resource. LbRouteExtension chains are limited to 1 extension per extension chain.
|
4533
|
+
Structure is documented below.
|
4534
|
+
:param 'LbRouteExtensionExtensionChainMatchConditionArgs' match_condition: Conditions under which this chain is invoked for a request.
|
4535
|
+
Structure is documented below.
|
4536
|
+
:param str name: The name for this extension chain. The name is logged as part of the HTTP request logs.
|
4537
|
+
The name must conform with RFC-1034, is restricted to lower-cased letters, numbers and hyphens,
|
4538
|
+
and can have a maximum length of 63 characters. Additionally, the first character must be a letter
|
4539
|
+
and the last character must be a letter or a number.
|
4540
|
+
"""
|
4541
|
+
pulumi.set(__self__, "extensions", extensions)
|
4542
|
+
pulumi.set(__self__, "match_condition", match_condition)
|
4543
|
+
pulumi.set(__self__, "name", name)
|
4544
|
+
|
4545
|
+
@property
|
4546
|
+
@pulumi.getter
|
4547
|
+
def extensions(self) -> Sequence['outputs.LbRouteExtensionExtensionChainExtension']:
|
4548
|
+
"""
|
4549
|
+
A set of extensions to execute for the matching request.
|
4550
|
+
At least one extension is required. Up to 3 extensions can be defined for each extension chain for
|
4551
|
+
LbTrafficExtension resource. LbRouteExtension chains are limited to 1 extension per extension chain.
|
4552
|
+
Structure is documented below.
|
4553
|
+
"""
|
4554
|
+
return pulumi.get(self, "extensions")
|
4555
|
+
|
4556
|
+
@property
|
4557
|
+
@pulumi.getter(name="matchCondition")
|
4558
|
+
def match_condition(self) -> 'outputs.LbRouteExtensionExtensionChainMatchCondition':
|
4559
|
+
"""
|
4560
|
+
Conditions under which this chain is invoked for a request.
|
4561
|
+
Structure is documented below.
|
4562
|
+
"""
|
4563
|
+
return pulumi.get(self, "match_condition")
|
4564
|
+
|
4565
|
+
@property
|
4566
|
+
@pulumi.getter
|
4567
|
+
def name(self) -> str:
|
4568
|
+
"""
|
4569
|
+
The name for this extension chain. The name is logged as part of the HTTP request logs.
|
4570
|
+
The name must conform with RFC-1034, is restricted to lower-cased letters, numbers and hyphens,
|
4571
|
+
and can have a maximum length of 63 characters. Additionally, the first character must be a letter
|
4572
|
+
and the last character must be a letter or a number.
|
4573
|
+
"""
|
4574
|
+
return pulumi.get(self, "name")
|
4575
|
+
|
4576
|
+
|
4577
|
+
@pulumi.output_type
|
4578
|
+
class LbRouteExtensionExtensionChainExtension(dict):
|
4579
|
+
@staticmethod
|
4580
|
+
def __key_warning(key: str):
|
4581
|
+
suggest = None
|
4582
|
+
if key == "failOpen":
|
4583
|
+
suggest = "fail_open"
|
4584
|
+
elif key == "forwardHeaders":
|
4585
|
+
suggest = "forward_headers"
|
4586
|
+
|
4587
|
+
if suggest:
|
4588
|
+
pulumi.log.warn(f"Key '{key}' not found in LbRouteExtensionExtensionChainExtension. Access the value via the '{suggest}' property getter instead.")
|
4589
|
+
|
4590
|
+
def __getitem__(self, key: str) -> Any:
|
4591
|
+
LbRouteExtensionExtensionChainExtension.__key_warning(key)
|
4592
|
+
return super().__getitem__(key)
|
4593
|
+
|
4594
|
+
def get(self, key: str, default = None) -> Any:
|
4595
|
+
LbRouteExtensionExtensionChainExtension.__key_warning(key)
|
4596
|
+
return super().get(key, default)
|
4597
|
+
|
4598
|
+
def __init__(__self__, *,
|
4599
|
+
name: str,
|
4600
|
+
service: str,
|
4601
|
+
authority: Optional[str] = None,
|
4602
|
+
fail_open: Optional[bool] = None,
|
4603
|
+
forward_headers: Optional[Sequence[str]] = None,
|
4604
|
+
timeout: Optional[str] = None):
|
4605
|
+
"""
|
4606
|
+
:param str name: The name for this extension. The name is logged as part of the HTTP request logs.
|
4607
|
+
The name must conform with RFC-1034, is restricted to lower-cased letters, numbers and hyphens,
|
4608
|
+
and can have a maximum length of 63 characters. Additionally, the first character must be a letter
|
4609
|
+
and the last a letter or a number.
|
4610
|
+
:param str service: The reference to the service that runs the extension. Must be a reference to a backend service
|
4611
|
+
:param str authority: The :authority header in the gRPC request sent from Envoy to the extension service.
|
4612
|
+
:param bool fail_open: Determines how the proxy behaves if the call to the extension fails or times out.
|
4613
|
+
When set to TRUE, request or response processing continues without error.
|
4614
|
+
Any subsequent extensions in the extension chain are also executed.
|
4615
|
+
When set to FALSE: * If response headers have not been delivered to the downstream client,
|
4616
|
+
a generic 500 error is returned to the client. The error response can be tailored by
|
4617
|
+
configuring a custom error response in the load balancer.
|
4618
|
+
:param Sequence[str] forward_headers: List of the HTTP headers to forward to the extension (from the client or backend).
|
4619
|
+
If omitted, all headers are sent. Each element is a string indicating the header name.
|
4620
|
+
|
4621
|
+
- - -
|
4622
|
+
:param str timeout: Specifies the timeout for each individual message on the stream. The timeout must be between 10-1000 milliseconds.
|
4623
|
+
A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".
|
4624
|
+
"""
|
4625
|
+
pulumi.set(__self__, "name", name)
|
4626
|
+
pulumi.set(__self__, "service", service)
|
4627
|
+
if authority is not None:
|
4628
|
+
pulumi.set(__self__, "authority", authority)
|
4629
|
+
if fail_open is not None:
|
4630
|
+
pulumi.set(__self__, "fail_open", fail_open)
|
4631
|
+
if forward_headers is not None:
|
4632
|
+
pulumi.set(__self__, "forward_headers", forward_headers)
|
4633
|
+
if timeout is not None:
|
4634
|
+
pulumi.set(__self__, "timeout", timeout)
|
4635
|
+
|
4636
|
+
@property
|
4637
|
+
@pulumi.getter
|
4638
|
+
def name(self) -> str:
|
4639
|
+
"""
|
4640
|
+
The name for this extension. The name is logged as part of the HTTP request logs.
|
4641
|
+
The name must conform with RFC-1034, is restricted to lower-cased letters, numbers and hyphens,
|
4642
|
+
and can have a maximum length of 63 characters. Additionally, the first character must be a letter
|
4643
|
+
and the last a letter or a number.
|
4644
|
+
"""
|
4645
|
+
return pulumi.get(self, "name")
|
4646
|
+
|
4647
|
+
@property
|
4648
|
+
@pulumi.getter
|
4649
|
+
def service(self) -> str:
|
4650
|
+
"""
|
4651
|
+
The reference to the service that runs the extension. Must be a reference to a backend service
|
4652
|
+
"""
|
4653
|
+
return pulumi.get(self, "service")
|
4654
|
+
|
4655
|
+
@property
|
4656
|
+
@pulumi.getter
|
4657
|
+
def authority(self) -> Optional[str]:
|
4658
|
+
"""
|
4659
|
+
The :authority header in the gRPC request sent from Envoy to the extension service.
|
4660
|
+
"""
|
4661
|
+
return pulumi.get(self, "authority")
|
4662
|
+
|
4663
|
+
@property
|
4664
|
+
@pulumi.getter(name="failOpen")
|
4665
|
+
def fail_open(self) -> Optional[bool]:
|
4666
|
+
"""
|
4667
|
+
Determines how the proxy behaves if the call to the extension fails or times out.
|
4668
|
+
When set to TRUE, request or response processing continues without error.
|
4669
|
+
Any subsequent extensions in the extension chain are also executed.
|
4670
|
+
When set to FALSE: * If response headers have not been delivered to the downstream client,
|
4671
|
+
a generic 500 error is returned to the client. The error response can be tailored by
|
4672
|
+
configuring a custom error response in the load balancer.
|
4673
|
+
"""
|
4674
|
+
return pulumi.get(self, "fail_open")
|
4675
|
+
|
4676
|
+
@property
|
4677
|
+
@pulumi.getter(name="forwardHeaders")
|
4678
|
+
def forward_headers(self) -> Optional[Sequence[str]]:
|
4679
|
+
"""
|
4680
|
+
List of the HTTP headers to forward to the extension (from the client or backend).
|
4681
|
+
If omitted, all headers are sent. Each element is a string indicating the header name.
|
4682
|
+
|
4683
|
+
- - -
|
4684
|
+
"""
|
4685
|
+
return pulumi.get(self, "forward_headers")
|
4686
|
+
|
4687
|
+
@property
|
4688
|
+
@pulumi.getter
|
4689
|
+
def timeout(self) -> Optional[str]:
|
4690
|
+
"""
|
4691
|
+
Specifies the timeout for each individual message on the stream. The timeout must be between 10-1000 milliseconds.
|
4692
|
+
A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".
|
4693
|
+
"""
|
4694
|
+
return pulumi.get(self, "timeout")
|
4695
|
+
|
4696
|
+
|
4697
|
+
@pulumi.output_type
|
4698
|
+
class LbRouteExtensionExtensionChainMatchCondition(dict):
|
4699
|
+
@staticmethod
|
4700
|
+
def __key_warning(key: str):
|
4701
|
+
suggest = None
|
4702
|
+
if key == "celExpression":
|
4703
|
+
suggest = "cel_expression"
|
4704
|
+
|
4705
|
+
if suggest:
|
4706
|
+
pulumi.log.warn(f"Key '{key}' not found in LbRouteExtensionExtensionChainMatchCondition. Access the value via the '{suggest}' property getter instead.")
|
4707
|
+
|
4708
|
+
def __getitem__(self, key: str) -> Any:
|
4709
|
+
LbRouteExtensionExtensionChainMatchCondition.__key_warning(key)
|
4710
|
+
return super().__getitem__(key)
|
4711
|
+
|
4712
|
+
def get(self, key: str, default = None) -> Any:
|
4713
|
+
LbRouteExtensionExtensionChainMatchCondition.__key_warning(key)
|
4714
|
+
return super().get(key, default)
|
4715
|
+
|
4716
|
+
def __init__(__self__, *,
|
4717
|
+
cel_expression: str):
|
4718
|
+
"""
|
4719
|
+
:param str cel_expression: A Common Expression Language (CEL) expression that is used to match requests for which the extension chain is executed.
|
4720
|
+
"""
|
4721
|
+
pulumi.set(__self__, "cel_expression", cel_expression)
|
4722
|
+
|
4723
|
+
@property
|
4724
|
+
@pulumi.getter(name="celExpression")
|
4725
|
+
def cel_expression(self) -> str:
|
4726
|
+
"""
|
4727
|
+
A Common Expression Language (CEL) expression that is used to match requests for which the extension chain is executed.
|
4728
|
+
"""
|
4729
|
+
return pulumi.get(self, "cel_expression")
|
4730
|
+
|
4731
|
+
|
4503
4732
|
@pulumi.output_type
|
4504
4733
|
class LbTrafficExtensionExtensionChain(dict):
|
4505
4734
|
@staticmethod
|
@@ -4595,22 +4824,20 @@ class LbTrafficExtensionExtensionChainExtension(dict):
|
|
4595
4824
|
return super().get(key, default)
|
4596
4825
|
|
4597
4826
|
def __init__(__self__, *,
|
4598
|
-
authority: str,
|
4599
4827
|
name: str,
|
4600
4828
|
service: str,
|
4601
|
-
|
4829
|
+
authority: Optional[str] = None,
|
4602
4830
|
fail_open: Optional[bool] = None,
|
4603
4831
|
forward_headers: Optional[Sequence[str]] = None,
|
4604
|
-
supported_events: Optional[Sequence[str]] = None
|
4832
|
+
supported_events: Optional[Sequence[str]] = None,
|
4833
|
+
timeout: Optional[str] = None):
|
4605
4834
|
"""
|
4606
|
-
:param str authority: The :authority header in the gRPC request sent from Envoy to the extension service.
|
4607
4835
|
:param str name: The name for this extension. The name is logged as part of the HTTP request logs.
|
4608
4836
|
The name must conform with RFC-1034, is restricted to lower-cased letters, numbers and hyphens,
|
4609
4837
|
and can have a maximum length of 63 characters. Additionally, the first character must be a letter
|
4610
4838
|
and the last a letter or a number.
|
4611
4839
|
:param str service: The reference to the service that runs the extension. Must be a reference to a backend service
|
4612
|
-
:param str
|
4613
|
-
A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".
|
4840
|
+
:param str authority: The :authority header in the gRPC request sent from Envoy to the extension service.
|
4614
4841
|
:param bool fail_open: Determines how the proxy behaves if the call to the extension fails or times out.
|
4615
4842
|
When set to TRUE, request or response processing continues without error.
|
4616
4843
|
Any subsequent extensions in the extension chain are also executed.
|
@@ -4625,25 +4852,21 @@ class LbTrafficExtensionExtensionChainExtension(dict):
|
|
4625
4852
|
`RESPONSE_BODY`, `RESPONSE_BODY` and `RESPONSE_BODY`.
|
4626
4853
|
|
4627
4854
|
- - -
|
4855
|
+
:param str timeout: Specifies the timeout for each individual message on the stream. The timeout must be between 10-1000 milliseconds.
|
4856
|
+
A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".
|
4628
4857
|
"""
|
4629
|
-
pulumi.set(__self__, "authority", authority)
|
4630
4858
|
pulumi.set(__self__, "name", name)
|
4631
4859
|
pulumi.set(__self__, "service", service)
|
4632
|
-
|
4860
|
+
if authority is not None:
|
4861
|
+
pulumi.set(__self__, "authority", authority)
|
4633
4862
|
if fail_open is not None:
|
4634
4863
|
pulumi.set(__self__, "fail_open", fail_open)
|
4635
4864
|
if forward_headers is not None:
|
4636
4865
|
pulumi.set(__self__, "forward_headers", forward_headers)
|
4637
4866
|
if supported_events is not None:
|
4638
4867
|
pulumi.set(__self__, "supported_events", supported_events)
|
4639
|
-
|
4640
|
-
|
4641
|
-
@pulumi.getter
|
4642
|
-
def authority(self) -> str:
|
4643
|
-
"""
|
4644
|
-
The :authority header in the gRPC request sent from Envoy to the extension service.
|
4645
|
-
"""
|
4646
|
-
return pulumi.get(self, "authority")
|
4868
|
+
if timeout is not None:
|
4869
|
+
pulumi.set(__self__, "timeout", timeout)
|
4647
4870
|
|
4648
4871
|
@property
|
4649
4872
|
@pulumi.getter
|
@@ -4666,12 +4889,11 @@ class LbTrafficExtensionExtensionChainExtension(dict):
|
|
4666
4889
|
|
4667
4890
|
@property
|
4668
4891
|
@pulumi.getter
|
4669
|
-
def
|
4892
|
+
def authority(self) -> Optional[str]:
|
4670
4893
|
"""
|
4671
|
-
|
4672
|
-
A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".
|
4894
|
+
The :authority header in the gRPC request sent from Envoy to the extension service.
|
4673
4895
|
"""
|
4674
|
-
return pulumi.get(self, "
|
4896
|
+
return pulumi.get(self, "authority")
|
4675
4897
|
|
4676
4898
|
@property
|
4677
4899
|
@pulumi.getter(name="failOpen")
|
@@ -4708,6 +4930,15 @@ class LbTrafficExtensionExtensionChainExtension(dict):
|
|
4708
4930
|
"""
|
4709
4931
|
return pulumi.get(self, "supported_events")
|
4710
4932
|
|
4933
|
+
@property
|
4934
|
+
@pulumi.getter
|
4935
|
+
def timeout(self) -> Optional[str]:
|
4936
|
+
"""
|
4937
|
+
Specifies the timeout for each individual message on the stream. The timeout must be between 10-1000 milliseconds.
|
4938
|
+
A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".
|
4939
|
+
"""
|
4940
|
+
return pulumi.get(self, "timeout")
|
4941
|
+
|
4711
4942
|
|
4712
4943
|
@pulumi.output_type
|
4713
4944
|
class LbTrafficExtensionExtensionChainMatchCondition(dict):
|
@@ -324,7 +324,8 @@ class AccessApprovalSettings(pulumi.CustomResource):
|
|
324
324
|
active_key_version=crypto_key_version.name,
|
325
325
|
enrolled_services=[gcp.organizations.AccessApprovalSettingsEnrolledServiceArgs(
|
326
326
|
cloud_product="all",
|
327
|
-
)]
|
327
|
+
)],
|
328
|
+
opts=pulumi.ResourceOptions(depends_on=[iam]))
|
328
329
|
```
|
329
330
|
|
330
331
|
## Import
|
@@ -428,7 +429,8 @@ class AccessApprovalSettings(pulumi.CustomResource):
|
|
428
429
|
active_key_version=crypto_key_version.name,
|
429
430
|
enrolled_services=[gcp.organizations.AccessApprovalSettingsEnrolledServiceArgs(
|
430
431
|
cloud_product="all",
|
431
|
-
)]
|
432
|
+
)],
|
433
|
+
opts=pulumi.ResourceOptions(depends_on=[iam]))
|
432
434
|
```
|
433
435
|
|
434
436
|
## Import
|
pulumi_gcp/orgpolicy/policy.py
CHANGED
@@ -297,7 +297,7 @@ class Policy(pulumi.CustomResource):
|
|
297
297
|
import pulumi_gcp as gcp
|
298
298
|
|
299
299
|
constraint = gcp.orgpolicy.CustomConstraint("constraint",
|
300
|
-
name="custom.
|
300
|
+
name="custom.disableGkeAutoUpgrade_2067",
|
301
301
|
parent="organizations/123456789",
|
302
302
|
display_name="Disable GKE auto upgrade",
|
303
303
|
description="Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.",
|
@@ -449,7 +449,7 @@ class Policy(pulumi.CustomResource):
|
|
449
449
|
import pulumi_gcp as gcp
|
450
450
|
|
451
451
|
constraint = gcp.orgpolicy.CustomConstraint("constraint",
|
452
|
-
name="custom.
|
452
|
+
name="custom.disableGkeAutoUpgrade_2067",
|
453
453
|
parent="organizations/123456789",
|
454
454
|
display_name="Disable GKE auto upgrade",
|
455
455
|
description="Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.",
|
@@ -607,15 +607,6 @@ class Instance(pulumi.CustomResource):
|
|
607
607
|
name="network",
|
608
608
|
auto_create_subnetworks=True,
|
609
609
|
mtu=8896)
|
610
|
-
instance = gcp.parallelstore.Instance("instance",
|
611
|
-
instance_id="instance",
|
612
|
-
location="us-central1-a",
|
613
|
-
description="test instance",
|
614
|
-
capacity_gib="12000",
|
615
|
-
network=network.name,
|
616
|
-
labels={
|
617
|
-
"test": "value",
|
618
|
-
})
|
619
610
|
# Create an IP address
|
620
611
|
private_ip_alloc = gcp.compute.GlobalAddress("private_ip_alloc",
|
621
612
|
name="address",
|
@@ -628,6 +619,16 @@ class Instance(pulumi.CustomResource):
|
|
628
619
|
network=network.id,
|
629
620
|
service="servicenetworking.googleapis.com",
|
630
621
|
reserved_peering_ranges=[private_ip_alloc.name])
|
622
|
+
instance = gcp.parallelstore.Instance("instance",
|
623
|
+
instance_id="instance",
|
624
|
+
location="us-central1-a",
|
625
|
+
description="test instance",
|
626
|
+
capacity_gib="12000",
|
627
|
+
network=network.name,
|
628
|
+
labels={
|
629
|
+
"test": "value",
|
630
|
+
},
|
631
|
+
opts=pulumi.ResourceOptions(depends_on=[default]))
|
631
632
|
```
|
632
633
|
|
633
634
|
## Import
|
@@ -717,15 +718,6 @@ class Instance(pulumi.CustomResource):
|
|
717
718
|
name="network",
|
718
719
|
auto_create_subnetworks=True,
|
719
720
|
mtu=8896)
|
720
|
-
instance = gcp.parallelstore.Instance("instance",
|
721
|
-
instance_id="instance",
|
722
|
-
location="us-central1-a",
|
723
|
-
description="test instance",
|
724
|
-
capacity_gib="12000",
|
725
|
-
network=network.name,
|
726
|
-
labels={
|
727
|
-
"test": "value",
|
728
|
-
})
|
729
721
|
# Create an IP address
|
730
722
|
private_ip_alloc = gcp.compute.GlobalAddress("private_ip_alloc",
|
731
723
|
name="address",
|
@@ -738,6 +730,16 @@ class Instance(pulumi.CustomResource):
|
|
738
730
|
network=network.id,
|
739
731
|
service="servicenetworking.googleapis.com",
|
740
732
|
reserved_peering_ranges=[private_ip_alloc.name])
|
733
|
+
instance = gcp.parallelstore.Instance("instance",
|
734
|
+
instance_id="instance",
|
735
|
+
location="us-central1-a",
|
736
|
+
description="test instance",
|
737
|
+
capacity_gib="12000",
|
738
|
+
network=network.name,
|
739
|
+
labels={
|
740
|
+
"test": "value",
|
741
|
+
},
|
742
|
+
opts=pulumi.ResourceOptions(depends_on=[default]))
|
741
743
|
```
|
742
744
|
|
743
745
|
## Import
|
@@ -366,7 +366,8 @@ class AccessApprovalSettings(pulumi.CustomResource):
|
|
366
366
|
active_key_version=crypto_key_version.name,
|
367
367
|
enrolled_services=[gcp.projects.AccessApprovalSettingsEnrolledServiceArgs(
|
368
368
|
cloud_product="all",
|
369
|
-
)]
|
369
|
+
)],
|
370
|
+
opts=pulumi.ResourceOptions(depends_on=[iam]))
|
370
371
|
```
|
371
372
|
|
372
373
|
## Import
|
@@ -463,7 +464,8 @@ class AccessApprovalSettings(pulumi.CustomResource):
|
|
463
464
|
active_key_version=crypto_key_version.name,
|
464
465
|
enrolled_services=[gcp.projects.AccessApprovalSettingsEnrolledServiceArgs(
|
465
466
|
cloud_product="all",
|
466
|
-
)]
|
467
|
+
)],
|
468
|
+
opts=pulumi.ResourceOptions(depends_on=[iam]))
|
467
469
|
```
|
468
470
|
|
469
471
|
## Import
|
pulumi_gcp/pubsub/_inputs.py
CHANGED
@@ -387,6 +387,7 @@ class SubscriptionCloudStorageConfigArgs:
|
|
387
387
|
def __init__(__self__, *,
|
388
388
|
bucket: pulumi.Input[str],
|
389
389
|
avro_config: Optional[pulumi.Input['SubscriptionCloudStorageConfigAvroConfigArgs']] = None,
|
390
|
+
filename_datetime_format: Optional[pulumi.Input[str]] = None,
|
390
391
|
filename_prefix: Optional[pulumi.Input[str]] = None,
|
391
392
|
filename_suffix: Optional[pulumi.Input[str]] = None,
|
392
393
|
max_bytes: Optional[pulumi.Input[int]] = None,
|
@@ -396,6 +397,7 @@ class SubscriptionCloudStorageConfigArgs:
|
|
396
397
|
:param pulumi.Input[str] bucket: User-provided name for the Cloud Storage bucket. The bucket must be created by the user. The bucket name must be without any prefix like "gs://".
|
397
398
|
:param pulumi.Input['SubscriptionCloudStorageConfigAvroConfigArgs'] avro_config: If set, message data will be written to Cloud Storage in Avro format.
|
398
399
|
Structure is documented below.
|
400
|
+
:param pulumi.Input[str] filename_datetime_format: User-provided format string specifying how to represent datetimes in Cloud Storage filenames.
|
399
401
|
:param pulumi.Input[str] filename_prefix: User-provided prefix for Cloud Storage filename.
|
400
402
|
:param pulumi.Input[str] filename_suffix: User-provided suffix for Cloud Storage filename. Must not end in "/".
|
401
403
|
:param pulumi.Input[int] max_bytes: The maximum bytes that can be written to a Cloud Storage file before a new file is created. Min 1 KB, max 10 GiB.
|
@@ -409,6 +411,8 @@ class SubscriptionCloudStorageConfigArgs:
|
|
409
411
|
pulumi.set(__self__, "bucket", bucket)
|
410
412
|
if avro_config is not None:
|
411
413
|
pulumi.set(__self__, "avro_config", avro_config)
|
414
|
+
if filename_datetime_format is not None:
|
415
|
+
pulumi.set(__self__, "filename_datetime_format", filename_datetime_format)
|
412
416
|
if filename_prefix is not None:
|
413
417
|
pulumi.set(__self__, "filename_prefix", filename_prefix)
|
414
418
|
if filename_suffix is not None:
|
@@ -445,6 +449,18 @@ class SubscriptionCloudStorageConfigArgs:
|
|
445
449
|
def avro_config(self, value: Optional[pulumi.Input['SubscriptionCloudStorageConfigAvroConfigArgs']]):
|
446
450
|
pulumi.set(self, "avro_config", value)
|
447
451
|
|
452
|
+
@property
|
453
|
+
@pulumi.getter(name="filenameDatetimeFormat")
|
454
|
+
def filename_datetime_format(self) -> Optional[pulumi.Input[str]]:
|
455
|
+
"""
|
456
|
+
User-provided format string specifying how to represent datetimes in Cloud Storage filenames.
|
457
|
+
"""
|
458
|
+
return pulumi.get(self, "filename_datetime_format")
|
459
|
+
|
460
|
+
@filename_datetime_format.setter
|
461
|
+
def filename_datetime_format(self, value: Optional[pulumi.Input[str]]):
|
462
|
+
pulumi.set(self, "filename_datetime_format", value)
|
463
|
+
|
448
464
|
@property
|
449
465
|
@pulumi.getter(name="filenamePrefix")
|
450
466
|
def filename_prefix(self) -> Optional[pulumi.Input[str]]:
|
pulumi_gcp/pubsub/outputs.py
CHANGED
@@ -420,6 +420,8 @@ class SubscriptionCloudStorageConfig(dict):
|
|
420
420
|
suggest = None
|
421
421
|
if key == "avroConfig":
|
422
422
|
suggest = "avro_config"
|
423
|
+
elif key == "filenameDatetimeFormat":
|
424
|
+
suggest = "filename_datetime_format"
|
423
425
|
elif key == "filenamePrefix":
|
424
426
|
suggest = "filename_prefix"
|
425
427
|
elif key == "filenameSuffix":
|
@@ -443,6 +445,7 @@ class SubscriptionCloudStorageConfig(dict):
|
|
443
445
|
def __init__(__self__, *,
|
444
446
|
bucket: str,
|
445
447
|
avro_config: Optional['outputs.SubscriptionCloudStorageConfigAvroConfig'] = None,
|
448
|
+
filename_datetime_format: Optional[str] = None,
|
446
449
|
filename_prefix: Optional[str] = None,
|
447
450
|
filename_suffix: Optional[str] = None,
|
448
451
|
max_bytes: Optional[int] = None,
|
@@ -452,6 +455,7 @@ class SubscriptionCloudStorageConfig(dict):
|
|
452
455
|
:param str bucket: User-provided name for the Cloud Storage bucket. The bucket must be created by the user. The bucket name must be without any prefix like "gs://".
|
453
456
|
:param 'SubscriptionCloudStorageConfigAvroConfigArgs' avro_config: If set, message data will be written to Cloud Storage in Avro format.
|
454
457
|
Structure is documented below.
|
458
|
+
:param str filename_datetime_format: User-provided format string specifying how to represent datetimes in Cloud Storage filenames.
|
455
459
|
:param str filename_prefix: User-provided prefix for Cloud Storage filename.
|
456
460
|
:param str filename_suffix: User-provided suffix for Cloud Storage filename. Must not end in "/".
|
457
461
|
:param int max_bytes: The maximum bytes that can be written to a Cloud Storage file before a new file is created. Min 1 KB, max 10 GiB.
|
@@ -465,6 +469,8 @@ class SubscriptionCloudStorageConfig(dict):
|
|
465
469
|
pulumi.set(__self__, "bucket", bucket)
|
466
470
|
if avro_config is not None:
|
467
471
|
pulumi.set(__self__, "avro_config", avro_config)
|
472
|
+
if filename_datetime_format is not None:
|
473
|
+
pulumi.set(__self__, "filename_datetime_format", filename_datetime_format)
|
468
474
|
if filename_prefix is not None:
|
469
475
|
pulumi.set(__self__, "filename_prefix", filename_prefix)
|
470
476
|
if filename_suffix is not None:
|
@@ -493,6 +499,14 @@ class SubscriptionCloudStorageConfig(dict):
|
|
493
499
|
"""
|
494
500
|
return pulumi.get(self, "avro_config")
|
495
501
|
|
502
|
+
@property
|
503
|
+
@pulumi.getter(name="filenameDatetimeFormat")
|
504
|
+
def filename_datetime_format(self) -> Optional[str]:
|
505
|
+
"""
|
506
|
+
User-provided format string specifying how to represent datetimes in Cloud Storage filenames.
|
507
|
+
"""
|
508
|
+
return pulumi.get(self, "filename_datetime_format")
|
509
|
+
|
496
510
|
@property
|
497
511
|
@pulumi.getter(name="filenamePrefix")
|
498
512
|
def filename_prefix(self) -> Optional[str]:
|
@@ -1353,6 +1367,7 @@ class GetSubscriptionCloudStorageConfigResult(dict):
|
|
1353
1367
|
def __init__(__self__, *,
|
1354
1368
|
avro_configs: Sequence['outputs.GetSubscriptionCloudStorageConfigAvroConfigResult'],
|
1355
1369
|
bucket: str,
|
1370
|
+
filename_datetime_format: str,
|
1356
1371
|
filename_prefix: str,
|
1357
1372
|
filename_suffix: str,
|
1358
1373
|
max_bytes: int,
|
@@ -1361,6 +1376,7 @@ class GetSubscriptionCloudStorageConfigResult(dict):
|
|
1361
1376
|
"""
|
1362
1377
|
:param Sequence['GetSubscriptionCloudStorageConfigAvroConfigArgs'] avro_configs: If set, message data will be written to Cloud Storage in Avro format.
|
1363
1378
|
:param str bucket: User-provided name for the Cloud Storage bucket. The bucket must be created by the user. The bucket name must be without any prefix like "gs://".
|
1379
|
+
:param str filename_datetime_format: User-provided format string specifying how to represent datetimes in Cloud Storage filenames.
|
1364
1380
|
:param str filename_prefix: User-provided prefix for Cloud Storage filename.
|
1365
1381
|
:param str filename_suffix: User-provided suffix for Cloud Storage filename. Must not end in "/".
|
1366
1382
|
:param int max_bytes: The maximum bytes that can be written to a Cloud Storage file before a new file is created. Min 1 KB, max 10 GiB.
|
@@ -1372,6 +1388,7 @@ class GetSubscriptionCloudStorageConfigResult(dict):
|
|
1372
1388
|
"""
|
1373
1389
|
pulumi.set(__self__, "avro_configs", avro_configs)
|
1374
1390
|
pulumi.set(__self__, "bucket", bucket)
|
1391
|
+
pulumi.set(__self__, "filename_datetime_format", filename_datetime_format)
|
1375
1392
|
pulumi.set(__self__, "filename_prefix", filename_prefix)
|
1376
1393
|
pulumi.set(__self__, "filename_suffix", filename_suffix)
|
1377
1394
|
pulumi.set(__self__, "max_bytes", max_bytes)
|
@@ -1394,6 +1411,14 @@ class GetSubscriptionCloudStorageConfigResult(dict):
|
|
1394
1411
|
"""
|
1395
1412
|
return pulumi.get(self, "bucket")
|
1396
1413
|
|
1414
|
+
@property
|
1415
|
+
@pulumi.getter(name="filenameDatetimeFormat")
|
1416
|
+
def filename_datetime_format(self) -> str:
|
1417
|
+
"""
|
1418
|
+
User-provided format string specifying how to represent datetimes in Cloud Storage filenames.
|
1419
|
+
"""
|
1420
|
+
return pulumi.get(self, "filename_datetime_format")
|
1421
|
+
|
1397
1422
|
@property
|
1398
1423
|
@pulumi.getter(name="filenamePrefix")
|
1399
1424
|
def filename_prefix(self) -> str:
|
pulumi_gcp/pubsub/schema.py
CHANGED
@@ -271,7 +271,8 @@ class Schema(pulumi.CustomResource):
|
|
271
271
|
schema_settings=gcp.pubsub.TopicSchemaSettingsArgs(
|
272
272
|
schema="projects/my-project-name/schemas/example",
|
273
273
|
encoding="JSON",
|
274
|
-
)
|
274
|
+
),
|
275
|
+
opts=pulumi.ResourceOptions(depends_on=[example]))
|
275
276
|
```
|
276
277
|
|
277
278
|
## Import
|
@@ -381,7 +382,8 @@ class Schema(pulumi.CustomResource):
|
|
381
382
|
schema_settings=gcp.pubsub.TopicSchemaSettingsArgs(
|
382
383
|
schema="projects/my-project-name/schemas/example",
|
383
384
|
encoding="JSON",
|
384
|
-
)
|
385
|
+
),
|
386
|
+
opts=pulumi.ResourceOptions(depends_on=[example]))
|
385
387
|
```
|
386
388
|
|
387
389
|
## Import
|