pulumi-gcp 8.33.0a1749001887__py3-none-any.whl → 8.34.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.
Files changed (97) hide show
  1. pulumi_gcp/__init__.py +40 -0
  2. pulumi_gcp/alloydb/cluster.py +16 -64
  3. pulumi_gcp/apigee/_inputs.py +89 -0
  4. pulumi_gcp/apigee/environment.py +68 -2
  5. pulumi_gcp/apigee/outputs.py +88 -0
  6. pulumi_gcp/apihub/__init__.py +1 -0
  7. pulumi_gcp/apihub/_inputs.py +184 -0
  8. pulumi_gcp/apihub/curation.py +812 -0
  9. pulumi_gcp/apihub/outputs.py +165 -0
  10. pulumi_gcp/beyondcorp/get_security_gateway.py +12 -1
  11. pulumi_gcp/beyondcorp/security_gateway.py +28 -0
  12. pulumi_gcp/bigquery/__init__.py +1 -0
  13. pulumi_gcp/bigquery/get_datasets.py +131 -0
  14. pulumi_gcp/bigquery/outputs.py +52 -0
  15. pulumi_gcp/cloudrunv2/_inputs.py +463 -0
  16. pulumi_gcp/cloudrunv2/outputs.py +581 -1
  17. pulumi_gcp/cloudrunv2/worker_pool.py +0 -8
  18. pulumi_gcp/colab/_inputs.py +14 -1
  19. pulumi_gcp/colab/outputs.py +8 -1
  20. pulumi_gcp/colab/runtime_template.py +5 -27
  21. pulumi_gcp/compute/__init__.py +3 -0
  22. pulumi_gcp/compute/_inputs.py +1829 -3
  23. pulumi_gcp/compute/backend_service.py +18 -2
  24. pulumi_gcp/compute/get_region_instance_template.py +12 -1
  25. pulumi_gcp/compute/get_router_nat.py +23 -1
  26. pulumi_gcp/compute/interconnect.py +32 -0
  27. pulumi_gcp/compute/interconnect_attachment.py +304 -0
  28. pulumi_gcp/compute/interconnect_attachment_group.py +636 -0
  29. pulumi_gcp/compute/interconnect_group.py +586 -0
  30. pulumi_gcp/compute/outputs.py +1321 -2
  31. pulumi_gcp/compute/region_instance_template.py +28 -0
  32. pulumi_gcp/compute/router_nat.py +143 -0
  33. pulumi_gcp/compute/snapshot_settings.py +285 -0
  34. pulumi_gcp/compute/url_map.py +338 -0
  35. pulumi_gcp/container/_inputs.py +57 -24
  36. pulumi_gcp/container/cluster.py +47 -0
  37. pulumi_gcp/container/get_cluster.py +12 -1
  38. pulumi_gcp/container/outputs.py +75 -20
  39. pulumi_gcp/dataplex/__init__.py +1 -0
  40. pulumi_gcp/dataplex/_inputs.py +492 -0
  41. pulumi_gcp/dataplex/datascan.py +2 -0
  42. pulumi_gcp/dataplex/entry.py +1038 -0
  43. pulumi_gcp/dataplex/outputs.py +357 -1
  44. pulumi_gcp/datastream/_inputs.py +48 -6
  45. pulumi_gcp/datastream/outputs.py +46 -4
  46. pulumi_gcp/datastream/private_connection.py +205 -35
  47. pulumi_gcp/dns/_inputs.py +73 -0
  48. pulumi_gcp/dns/outputs.py +60 -0
  49. pulumi_gcp/dns/policy.py +54 -0
  50. pulumi_gcp/eventarc/_inputs.py +12 -5
  51. pulumi_gcp/eventarc/outputs.py +8 -3
  52. pulumi_gcp/eventarc/pipeline.py +0 -12
  53. pulumi_gcp/filestore/_inputs.py +44 -1
  54. pulumi_gcp/filestore/instance.py +7 -7
  55. pulumi_gcp/filestore/outputs.py +52 -2
  56. pulumi_gcp/gemini/data_sharing_with_google_setting.py +58 -9
  57. pulumi_gcp/gemini/data_sharing_with_google_setting_binding.py +11 -16
  58. pulumi_gcp/gemini/gemini_gcp_enablement_setting.py +51 -2
  59. pulumi_gcp/gemini/gemini_gcp_enablement_setting_binding.py +11 -16
  60. pulumi_gcp/gkehub/_inputs.py +84 -7
  61. pulumi_gcp/gkehub/feature.py +38 -0
  62. pulumi_gcp/gkehub/outputs.py +102 -7
  63. pulumi_gcp/gkehub/scope_rbac_role_binding.py +54 -2
  64. pulumi_gcp/gkeonprem/_inputs.py +54 -0
  65. pulumi_gcp/gkeonprem/outputs.py +49 -0
  66. pulumi_gcp/gkeonprem/vmware_admin_cluster.py +71 -0
  67. pulumi_gcp/iam/workload_identity_pool_namespace.py +4 -4
  68. pulumi_gcp/iap/tunnel_dest_group.py +2 -2
  69. pulumi_gcp/integrationconnectors/managed_zone.py +8 -8
  70. pulumi_gcp/managedkafka/connect_cluster.py +4 -4
  71. pulumi_gcp/managedkafka/connector.py +4 -4
  72. pulumi_gcp/memorystore/_inputs.py +6 -6
  73. pulumi_gcp/memorystore/outputs.py +8 -8
  74. pulumi_gcp/netapp/_inputs.py +113 -0
  75. pulumi_gcp/netapp/backup_vault.py +56 -0
  76. pulumi_gcp/netapp/outputs.py +92 -0
  77. pulumi_gcp/networkconnectivity/_inputs.py +9 -9
  78. pulumi_gcp/networkconnectivity/outputs.py +6 -6
  79. pulumi_gcp/networkconnectivity/spoke.py +14 -14
  80. pulumi_gcp/networksecurity/backend_authentication_config.py +64 -0
  81. pulumi_gcp/orgpolicy/policy.py +2 -2
  82. pulumi_gcp/pubsub/_inputs.py +392 -0
  83. pulumi_gcp/pubsub/get_subscription.py +12 -1
  84. pulumi_gcp/pubsub/get_topic.py +12 -1
  85. pulumi_gcp/pubsub/outputs.py +548 -0
  86. pulumi_gcp/pubsub/subscription.py +67 -6
  87. pulumi_gcp/pubsub/topic.py +61 -0
  88. pulumi_gcp/pulumi-plugin.json +1 -1
  89. pulumi_gcp/redis/_inputs.py +3 -6
  90. pulumi_gcp/redis/outputs.py +2 -4
  91. pulumi_gcp/storage/bucket_object.py +4 -4
  92. pulumi_gcp/vertex/ai_endpoint.py +4 -4
  93. pulumi_gcp/vertex/ai_feature_online_store_featureview.py +4 -4
  94. {pulumi_gcp-8.33.0a1749001887.dist-info → pulumi_gcp-8.34.0.dist-info}/METADATA +1 -1
  95. {pulumi_gcp-8.33.0a1749001887.dist-info → pulumi_gcp-8.34.0.dist-info}/RECORD +97 -91
  96. {pulumi_gcp-8.33.0a1749001887.dist-info → pulumi_gcp-8.34.0.dist-info}/WHEEL +0 -0
  97. {pulumi_gcp-8.33.0a1749001887.dist-info → pulumi_gcp-8.34.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,285 @@
1
+ # coding=utf-8
2
+ # *** WARNING: this file was generated by pulumi-language-python. ***
3
+ # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+
5
+ import builtins
6
+ import copy
7
+ import warnings
8
+ import sys
9
+ import pulumi
10
+ import pulumi.runtime
11
+ from typing import Any, Mapping, Optional, Sequence, Union, overload
12
+ if sys.version_info >= (3, 11):
13
+ from typing import NotRequired, TypedDict, TypeAlias
14
+ else:
15
+ from typing_extensions import NotRequired, TypedDict, TypeAlias
16
+ from .. import _utilities
17
+ from . import outputs
18
+ from ._inputs import *
19
+
20
+ __all__ = ['SnapshotSettingsArgs', 'SnapshotSettings']
21
+
22
+ @pulumi.input_type
23
+ class SnapshotSettingsArgs:
24
+ def __init__(__self__, *,
25
+ storage_location: pulumi.Input['SnapshotSettingsStorageLocationArgs'],
26
+ project: Optional[pulumi.Input[builtins.str]] = None):
27
+ """
28
+ The set of arguments for constructing a SnapshotSettings resource.
29
+ :param pulumi.Input['SnapshotSettingsStorageLocationArgs'] storage_location: Policy of which storage location is going to be resolved, and additional data
30
+ that particularizes how the policy is going to be carried out
31
+ Structure is documented below.
32
+ """
33
+ pulumi.set(__self__, "storage_location", storage_location)
34
+ if project is not None:
35
+ pulumi.set(__self__, "project", project)
36
+
37
+ @property
38
+ @pulumi.getter(name="storageLocation")
39
+ def storage_location(self) -> pulumi.Input['SnapshotSettingsStorageLocationArgs']:
40
+ """
41
+ Policy of which storage location is going to be resolved, and additional data
42
+ that particularizes how the policy is going to be carried out
43
+ Structure is documented below.
44
+ """
45
+ return pulumi.get(self, "storage_location")
46
+
47
+ @storage_location.setter
48
+ def storage_location(self, value: pulumi.Input['SnapshotSettingsStorageLocationArgs']):
49
+ pulumi.set(self, "storage_location", value)
50
+
51
+ @property
52
+ @pulumi.getter
53
+ def project(self) -> Optional[pulumi.Input[builtins.str]]:
54
+ return pulumi.get(self, "project")
55
+
56
+ @project.setter
57
+ def project(self, value: Optional[pulumi.Input[builtins.str]]):
58
+ pulumi.set(self, "project", value)
59
+
60
+
61
+ @pulumi.input_type
62
+ class _SnapshotSettingsState:
63
+ def __init__(__self__, *,
64
+ project: Optional[pulumi.Input[builtins.str]] = None,
65
+ storage_location: Optional[pulumi.Input['SnapshotSettingsStorageLocationArgs']] = None):
66
+ """
67
+ Input properties used for looking up and filtering SnapshotSettings resources.
68
+ :param pulumi.Input['SnapshotSettingsStorageLocationArgs'] storage_location: Policy of which storage location is going to be resolved, and additional data
69
+ that particularizes how the policy is going to be carried out
70
+ Structure is documented below.
71
+ """
72
+ if project is not None:
73
+ pulumi.set(__self__, "project", project)
74
+ if storage_location is not None:
75
+ pulumi.set(__self__, "storage_location", storage_location)
76
+
77
+ @property
78
+ @pulumi.getter
79
+ def project(self) -> Optional[pulumi.Input[builtins.str]]:
80
+ return pulumi.get(self, "project")
81
+
82
+ @project.setter
83
+ def project(self, value: Optional[pulumi.Input[builtins.str]]):
84
+ pulumi.set(self, "project", value)
85
+
86
+ @property
87
+ @pulumi.getter(name="storageLocation")
88
+ def storage_location(self) -> Optional[pulumi.Input['SnapshotSettingsStorageLocationArgs']]:
89
+ """
90
+ Policy of which storage location is going to be resolved, and additional data
91
+ that particularizes how the policy is going to be carried out
92
+ Structure is documented below.
93
+ """
94
+ return pulumi.get(self, "storage_location")
95
+
96
+ @storage_location.setter
97
+ def storage_location(self, value: Optional[pulumi.Input['SnapshotSettingsStorageLocationArgs']]):
98
+ pulumi.set(self, "storage_location", value)
99
+
100
+
101
+ @pulumi.type_token("gcp:compute/snapshotSettings:SnapshotSettings")
102
+ class SnapshotSettings(pulumi.CustomResource):
103
+ @overload
104
+ def __init__(__self__,
105
+ resource_name: str,
106
+ opts: Optional[pulumi.ResourceOptions] = None,
107
+ project: Optional[pulumi.Input[builtins.str]] = None,
108
+ storage_location: Optional[pulumi.Input[Union['SnapshotSettingsStorageLocationArgs', 'SnapshotSettingsStorageLocationArgsDict']]] = None,
109
+ __props__=None):
110
+ """
111
+ Updates your project's snapshot settings and sets a new default storage location for snapshots.
112
+
113
+ To get more information about SnapshotSettings, see:
114
+
115
+ * [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/snapshotSettings)
116
+ * How-to Guides
117
+ * [Official Documentation](https://cloud.google.com/compute/docs/disks/snapshot-settings#snapshot_settings_how_to_update)
118
+
119
+ ## Example Usage
120
+
121
+ ### Snapshot Settings Specific Locations
122
+
123
+ ```python
124
+ import pulumi
125
+ import pulumi_gcp as gcp
126
+
127
+ tf_test_snapshot_settings = gcp.compute.SnapshotSettings("tf-test-snapshot-settings", storage_location={
128
+ "policy": "SPECIFIC_LOCATIONS",
129
+ "locations": [{
130
+ "name": "us-central1",
131
+ "location": "us-central1",
132
+ }],
133
+ })
134
+ ```
135
+
136
+ ## Import
137
+
138
+ SnapshotSettings can be imported using any of these accepted formats:
139
+
140
+ * `projects/{{project}}/global/snapshotSettings/`
141
+
142
+ * `{{project}}`
143
+
144
+ When using the `pulumi import` command, SnapshotSettings can be imported using one of the formats above. For example:
145
+
146
+ ```sh
147
+ $ pulumi import gcp:compute/snapshotSettings:SnapshotSettings default projects/{{project}}/global/snapshotSettings/
148
+ ```
149
+
150
+ ```sh
151
+ $ pulumi import gcp:compute/snapshotSettings:SnapshotSettings default {{project}}
152
+ ```
153
+
154
+ :param str resource_name: The name of the resource.
155
+ :param pulumi.ResourceOptions opts: Options for the resource.
156
+ :param pulumi.Input[Union['SnapshotSettingsStorageLocationArgs', 'SnapshotSettingsStorageLocationArgsDict']] storage_location: Policy of which storage location is going to be resolved, and additional data
157
+ that particularizes how the policy is going to be carried out
158
+ Structure is documented below.
159
+ """
160
+ ...
161
+ @overload
162
+ def __init__(__self__,
163
+ resource_name: str,
164
+ args: SnapshotSettingsArgs,
165
+ opts: Optional[pulumi.ResourceOptions] = None):
166
+ """
167
+ Updates your project's snapshot settings and sets a new default storage location for snapshots.
168
+
169
+ To get more information about SnapshotSettings, see:
170
+
171
+ * [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/snapshotSettings)
172
+ * How-to Guides
173
+ * [Official Documentation](https://cloud.google.com/compute/docs/disks/snapshot-settings#snapshot_settings_how_to_update)
174
+
175
+ ## Example Usage
176
+
177
+ ### Snapshot Settings Specific Locations
178
+
179
+ ```python
180
+ import pulumi
181
+ import pulumi_gcp as gcp
182
+
183
+ tf_test_snapshot_settings = gcp.compute.SnapshotSettings("tf-test-snapshot-settings", storage_location={
184
+ "policy": "SPECIFIC_LOCATIONS",
185
+ "locations": [{
186
+ "name": "us-central1",
187
+ "location": "us-central1",
188
+ }],
189
+ })
190
+ ```
191
+
192
+ ## Import
193
+
194
+ SnapshotSettings can be imported using any of these accepted formats:
195
+
196
+ * `projects/{{project}}/global/snapshotSettings/`
197
+
198
+ * `{{project}}`
199
+
200
+ When using the `pulumi import` command, SnapshotSettings can be imported using one of the formats above. For example:
201
+
202
+ ```sh
203
+ $ pulumi import gcp:compute/snapshotSettings:SnapshotSettings default projects/{{project}}/global/snapshotSettings/
204
+ ```
205
+
206
+ ```sh
207
+ $ pulumi import gcp:compute/snapshotSettings:SnapshotSettings default {{project}}
208
+ ```
209
+
210
+ :param str resource_name: The name of the resource.
211
+ :param SnapshotSettingsArgs args: The arguments to use to populate this resource's properties.
212
+ :param pulumi.ResourceOptions opts: Options for the resource.
213
+ """
214
+ ...
215
+ def __init__(__self__, resource_name: str, *args, **kwargs):
216
+ resource_args, opts = _utilities.get_resource_args_opts(SnapshotSettingsArgs, pulumi.ResourceOptions, *args, **kwargs)
217
+ if resource_args is not None:
218
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
219
+ else:
220
+ __self__._internal_init(resource_name, *args, **kwargs)
221
+
222
+ def _internal_init(__self__,
223
+ resource_name: str,
224
+ opts: Optional[pulumi.ResourceOptions] = None,
225
+ project: Optional[pulumi.Input[builtins.str]] = None,
226
+ storage_location: Optional[pulumi.Input[Union['SnapshotSettingsStorageLocationArgs', 'SnapshotSettingsStorageLocationArgsDict']]] = None,
227
+ __props__=None):
228
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
229
+ if not isinstance(opts, pulumi.ResourceOptions):
230
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
231
+ if opts.id is None:
232
+ if __props__ is not None:
233
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
234
+ __props__ = SnapshotSettingsArgs.__new__(SnapshotSettingsArgs)
235
+
236
+ __props__.__dict__["project"] = project
237
+ if storage_location is None and not opts.urn:
238
+ raise TypeError("Missing required property 'storage_location'")
239
+ __props__.__dict__["storage_location"] = storage_location
240
+ super(SnapshotSettings, __self__).__init__(
241
+ 'gcp:compute/snapshotSettings:SnapshotSettings',
242
+ resource_name,
243
+ __props__,
244
+ opts)
245
+
246
+ @staticmethod
247
+ def get(resource_name: str,
248
+ id: pulumi.Input[str],
249
+ opts: Optional[pulumi.ResourceOptions] = None,
250
+ project: Optional[pulumi.Input[builtins.str]] = None,
251
+ storage_location: Optional[pulumi.Input[Union['SnapshotSettingsStorageLocationArgs', 'SnapshotSettingsStorageLocationArgsDict']]] = None) -> 'SnapshotSettings':
252
+ """
253
+ Get an existing SnapshotSettings resource's state with the given name, id, and optional extra
254
+ properties used to qualify the lookup.
255
+
256
+ :param str resource_name: The unique name of the resulting resource.
257
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
258
+ :param pulumi.ResourceOptions opts: Options for the resource.
259
+ :param pulumi.Input[Union['SnapshotSettingsStorageLocationArgs', 'SnapshotSettingsStorageLocationArgsDict']] storage_location: Policy of which storage location is going to be resolved, and additional data
260
+ that particularizes how the policy is going to be carried out
261
+ Structure is documented below.
262
+ """
263
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
264
+
265
+ __props__ = _SnapshotSettingsState.__new__(_SnapshotSettingsState)
266
+
267
+ __props__.__dict__["project"] = project
268
+ __props__.__dict__["storage_location"] = storage_location
269
+ return SnapshotSettings(resource_name, opts=opts, __props__=__props__)
270
+
271
+ @property
272
+ @pulumi.getter
273
+ def project(self) -> pulumi.Output[builtins.str]:
274
+ return pulumi.get(self, "project")
275
+
276
+ @property
277
+ @pulumi.getter(name="storageLocation")
278
+ def storage_location(self) -> pulumi.Output['outputs.SnapshotSettingsStorageLocation']:
279
+ """
280
+ Policy of which storage location is going to be resolved, and additional data
281
+ that particularizes how the policy is going to be carried out
282
+ Structure is documented below.
283
+ """
284
+ return pulumi.get(self, "storage_location")
285
+
@@ -1452,6 +1452,175 @@ class URLMap(pulumi.CustomResource):
1452
1452
  }],
1453
1453
  }])
1454
1454
  ```
1455
+ ### Url Map Http Filter Configs
1456
+
1457
+ ```python
1458
+ import pulumi
1459
+ import json
1460
+ import pulumi_gcp as gcp
1461
+
1462
+ default_health_check = gcp.compute.HealthCheck("default",
1463
+ name="health-check",
1464
+ http_health_check={
1465
+ "port": 80,
1466
+ })
1467
+ default = gcp.compute.BackendService("default",
1468
+ name="default-backend",
1469
+ port_name="http",
1470
+ protocol="HTTP",
1471
+ timeout_sec=10,
1472
+ load_balancing_scheme="INTERNAL_SELF_MANAGED",
1473
+ health_checks=default_health_check.id)
1474
+ service_a = gcp.compute.BackendService("service-a",
1475
+ name="service-a-backend",
1476
+ port_name="http",
1477
+ protocol="HTTP",
1478
+ timeout_sec=10,
1479
+ load_balancing_scheme="INTERNAL_SELF_MANAGED",
1480
+ health_checks=default_health_check.id)
1481
+ urlmap = gcp.compute.URLMap("urlmap",
1482
+ name="urlmap",
1483
+ description="Test for httpFilterConfigs in route rules",
1484
+ default_service=default.id,
1485
+ host_rules=[{
1486
+ "hosts": ["mysite.com"],
1487
+ "path_matcher": "allpaths",
1488
+ }],
1489
+ path_matchers=[{
1490
+ "name": "allpaths",
1491
+ "default_service": default.id,
1492
+ "route_rules": [{
1493
+ "priority": 1,
1494
+ "service": service_a.id,
1495
+ "match_rules": [{
1496
+ "prefix_match": "/",
1497
+ "ignore_case": True,
1498
+ }],
1499
+ "http_filter_configs": [{
1500
+ "filter_name": "envoy.wasm",
1501
+ "config_type_url": "type.googleapis.com/google.protobuf.Struct",
1502
+ "config": json.dumps({
1503
+ "name": "my-filter",
1504
+ "root_id": "my_root_id",
1505
+ "vm_config": {
1506
+ "vm_id": "my_vm_id",
1507
+ "runtime": "envoy.wasm.runtime.v8",
1508
+ "code": {
1509
+ "local": {
1510
+ "inline_string": "const WASM_BINARY = '...'",
1511
+ },
1512
+ },
1513
+ },
1514
+ }),
1515
+ }],
1516
+ }],
1517
+ }],
1518
+ tests=[{
1519
+ "service": default.id,
1520
+ "host": "mysite.com",
1521
+ "path": "/",
1522
+ }])
1523
+ ```
1524
+ ### Url Map Http Filter Metadata
1525
+
1526
+ ```python
1527
+ import pulumi
1528
+ import json
1529
+ import pulumi_gcp as gcp
1530
+
1531
+ default_health_check = gcp.compute.HealthCheck("default",
1532
+ name="health-check",
1533
+ http_health_check={
1534
+ "port": 80,
1535
+ })
1536
+ default = gcp.compute.BackendService("default",
1537
+ name="default-backend",
1538
+ port_name="http",
1539
+ protocol="HTTP",
1540
+ timeout_sec=10,
1541
+ load_balancing_scheme="INTERNAL_SELF_MANAGED",
1542
+ health_checks=default_health_check.id)
1543
+ service_a = gcp.compute.BackendService("service-a",
1544
+ name="service-a-backend",
1545
+ port_name="http",
1546
+ protocol="HTTP",
1547
+ timeout_sec=10,
1548
+ load_balancing_scheme="INTERNAL_SELF_MANAGED",
1549
+ health_checks=default_health_check.id)
1550
+ service_b = gcp.compute.BackendService("service-b",
1551
+ name="service-b-backend",
1552
+ port_name="http",
1553
+ protocol="HTTP",
1554
+ timeout_sec=10,
1555
+ load_balancing_scheme="INTERNAL_SELF_MANAGED",
1556
+ health_checks=default_health_check.id)
1557
+ urlmap = gcp.compute.URLMap("urlmap",
1558
+ name="urlmap",
1559
+ description="Test for httpFilterMetadata in route rules",
1560
+ default_service=default.id,
1561
+ host_rules=[{
1562
+ "hosts": ["mysite.com"],
1563
+ "path_matcher": "allpaths",
1564
+ }],
1565
+ path_matchers=[{
1566
+ "name": "allpaths",
1567
+ "default_service": default.id,
1568
+ "route_rules": [
1569
+ {
1570
+ "priority": 1,
1571
+ "service": service_a.id,
1572
+ "match_rules": [{
1573
+ "prefix_match": "/",
1574
+ "ignore_case": True,
1575
+ }],
1576
+ "http_filter_metadatas": [{
1577
+ "filter_name": "envoy.wasm",
1578
+ "config_type_url": "type.googleapis.com/google.protobuf.Struct",
1579
+ "config": json.dumps({
1580
+ "fields": {
1581
+ "timeout": {
1582
+ "string_value": "30s",
1583
+ },
1584
+ "retries": {
1585
+ "number_value": 3,
1586
+ },
1587
+ "debug": {
1588
+ "bool_value": True,
1589
+ },
1590
+ },
1591
+ }),
1592
+ }],
1593
+ },
1594
+ {
1595
+ "priority": 2,
1596
+ "service": service_b.id,
1597
+ "match_rules": [{
1598
+ "prefix_match": "/api",
1599
+ "ignore_case": True,
1600
+ }],
1601
+ "http_filter_metadatas": [{
1602
+ "filter_name": "envoy.rate_limit",
1603
+ "config_type_url": "type.googleapis.com/google.protobuf.Struct",
1604
+ "config": json.dumps({
1605
+ "fields": {
1606
+ "requests_per_unit": {
1607
+ "number_value": 100,
1608
+ },
1609
+ "unit": {
1610
+ "string_value": "MINUTE",
1611
+ },
1612
+ },
1613
+ }),
1614
+ }],
1615
+ },
1616
+ ],
1617
+ }],
1618
+ tests=[{
1619
+ "service": default.id,
1620
+ "host": "mysite.com",
1621
+ "path": "/",
1622
+ }])
1623
+ ```
1455
1624
 
1456
1625
  ## Import
1457
1626
 
@@ -2376,6 +2545,175 @@ class URLMap(pulumi.CustomResource):
2376
2545
  }],
2377
2546
  }])
2378
2547
  ```
2548
+ ### Url Map Http Filter Configs
2549
+
2550
+ ```python
2551
+ import pulumi
2552
+ import json
2553
+ import pulumi_gcp as gcp
2554
+
2555
+ default_health_check = gcp.compute.HealthCheck("default",
2556
+ name="health-check",
2557
+ http_health_check={
2558
+ "port": 80,
2559
+ })
2560
+ default = gcp.compute.BackendService("default",
2561
+ name="default-backend",
2562
+ port_name="http",
2563
+ protocol="HTTP",
2564
+ timeout_sec=10,
2565
+ load_balancing_scheme="INTERNAL_SELF_MANAGED",
2566
+ health_checks=default_health_check.id)
2567
+ service_a = gcp.compute.BackendService("service-a",
2568
+ name="service-a-backend",
2569
+ port_name="http",
2570
+ protocol="HTTP",
2571
+ timeout_sec=10,
2572
+ load_balancing_scheme="INTERNAL_SELF_MANAGED",
2573
+ health_checks=default_health_check.id)
2574
+ urlmap = gcp.compute.URLMap("urlmap",
2575
+ name="urlmap",
2576
+ description="Test for httpFilterConfigs in route rules",
2577
+ default_service=default.id,
2578
+ host_rules=[{
2579
+ "hosts": ["mysite.com"],
2580
+ "path_matcher": "allpaths",
2581
+ }],
2582
+ path_matchers=[{
2583
+ "name": "allpaths",
2584
+ "default_service": default.id,
2585
+ "route_rules": [{
2586
+ "priority": 1,
2587
+ "service": service_a.id,
2588
+ "match_rules": [{
2589
+ "prefix_match": "/",
2590
+ "ignore_case": True,
2591
+ }],
2592
+ "http_filter_configs": [{
2593
+ "filter_name": "envoy.wasm",
2594
+ "config_type_url": "type.googleapis.com/google.protobuf.Struct",
2595
+ "config": json.dumps({
2596
+ "name": "my-filter",
2597
+ "root_id": "my_root_id",
2598
+ "vm_config": {
2599
+ "vm_id": "my_vm_id",
2600
+ "runtime": "envoy.wasm.runtime.v8",
2601
+ "code": {
2602
+ "local": {
2603
+ "inline_string": "const WASM_BINARY = '...'",
2604
+ },
2605
+ },
2606
+ },
2607
+ }),
2608
+ }],
2609
+ }],
2610
+ }],
2611
+ tests=[{
2612
+ "service": default.id,
2613
+ "host": "mysite.com",
2614
+ "path": "/",
2615
+ }])
2616
+ ```
2617
+ ### Url Map Http Filter Metadata
2618
+
2619
+ ```python
2620
+ import pulumi
2621
+ import json
2622
+ import pulumi_gcp as gcp
2623
+
2624
+ default_health_check = gcp.compute.HealthCheck("default",
2625
+ name="health-check",
2626
+ http_health_check={
2627
+ "port": 80,
2628
+ })
2629
+ default = gcp.compute.BackendService("default",
2630
+ name="default-backend",
2631
+ port_name="http",
2632
+ protocol="HTTP",
2633
+ timeout_sec=10,
2634
+ load_balancing_scheme="INTERNAL_SELF_MANAGED",
2635
+ health_checks=default_health_check.id)
2636
+ service_a = gcp.compute.BackendService("service-a",
2637
+ name="service-a-backend",
2638
+ port_name="http",
2639
+ protocol="HTTP",
2640
+ timeout_sec=10,
2641
+ load_balancing_scheme="INTERNAL_SELF_MANAGED",
2642
+ health_checks=default_health_check.id)
2643
+ service_b = gcp.compute.BackendService("service-b",
2644
+ name="service-b-backend",
2645
+ port_name="http",
2646
+ protocol="HTTP",
2647
+ timeout_sec=10,
2648
+ load_balancing_scheme="INTERNAL_SELF_MANAGED",
2649
+ health_checks=default_health_check.id)
2650
+ urlmap = gcp.compute.URLMap("urlmap",
2651
+ name="urlmap",
2652
+ description="Test for httpFilterMetadata in route rules",
2653
+ default_service=default.id,
2654
+ host_rules=[{
2655
+ "hosts": ["mysite.com"],
2656
+ "path_matcher": "allpaths",
2657
+ }],
2658
+ path_matchers=[{
2659
+ "name": "allpaths",
2660
+ "default_service": default.id,
2661
+ "route_rules": [
2662
+ {
2663
+ "priority": 1,
2664
+ "service": service_a.id,
2665
+ "match_rules": [{
2666
+ "prefix_match": "/",
2667
+ "ignore_case": True,
2668
+ }],
2669
+ "http_filter_metadatas": [{
2670
+ "filter_name": "envoy.wasm",
2671
+ "config_type_url": "type.googleapis.com/google.protobuf.Struct",
2672
+ "config": json.dumps({
2673
+ "fields": {
2674
+ "timeout": {
2675
+ "string_value": "30s",
2676
+ },
2677
+ "retries": {
2678
+ "number_value": 3,
2679
+ },
2680
+ "debug": {
2681
+ "bool_value": True,
2682
+ },
2683
+ },
2684
+ }),
2685
+ }],
2686
+ },
2687
+ {
2688
+ "priority": 2,
2689
+ "service": service_b.id,
2690
+ "match_rules": [{
2691
+ "prefix_match": "/api",
2692
+ "ignore_case": True,
2693
+ }],
2694
+ "http_filter_metadatas": [{
2695
+ "filter_name": "envoy.rate_limit",
2696
+ "config_type_url": "type.googleapis.com/google.protobuf.Struct",
2697
+ "config": json.dumps({
2698
+ "fields": {
2699
+ "requests_per_unit": {
2700
+ "number_value": 100,
2701
+ },
2702
+ "unit": {
2703
+ "string_value": "MINUTE",
2704
+ },
2705
+ },
2706
+ }),
2707
+ }],
2708
+ },
2709
+ ],
2710
+ }],
2711
+ tests=[{
2712
+ "service": default.id,
2713
+ "host": "mysite.com",
2714
+ "path": "/",
2715
+ }])
2716
+ ```
2379
2717
 
2380
2718
  ## Import
2381
2719