pulumi-gcp 7.24.0a1716588893__py3-none-any.whl → 7.25.0a1717097889__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/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/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/data_transfer_config.py +8 -4
- pulumi_gcp/bigquery/job.py +22 -16
- 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 -62
- pulumi_gcp/cloudids/endpoint.py +4 -2
- pulumi_gcp/cloudrunv2/job.py +32 -20
- pulumi_gcp/cloudrunv2/service.py +28 -20
- pulumi_gcp/compute/forwarding_rule.py +225 -817
- pulumi_gcp/compute/global_forwarding_rule.py +0 -766
- pulumi_gcp/compute/instance_group.py +0 -100
- 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/route.py +10 -2
- 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/databasemigrationservice/connection_profile.py +32 -16
- pulumi_gcp/datacatalog/policy_tag.py +4 -2
- pulumi_gcp/datafusion/instance.py +14 -12
- pulumi_gcp/dataplex/asset.py +4 -2
- pulumi_gcp/dataplex/datascan.py +16 -14
- pulumi_gcp/datastore/data_store_index.py +4 -2
- pulumi_gcp/datastream/stream.py +16 -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/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/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/gateway.py +12 -6
- pulumi_gcp/networkservices/lb_traffic_extension.py +0 -526
- pulumi_gcp/organizations/access_approval_settings.py +4 -2
- pulumi_gcp/parallelstore/instance.py +20 -18
- pulumi_gcp/projects/access_approval_settings.py +4 -2
- pulumi_gcp/pubsub/schema.py +4 -2
- pulumi_gcp/pubsub/subscription.py +94 -62
- 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/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/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.0a1717097889.dist-info}/METADATA +1 -1
- {pulumi_gcp-7.24.0a1716588893.dist-info → pulumi_gcp-7.25.0a1717097889.dist-info}/RECORD +126 -126
- {pulumi_gcp-7.24.0a1716588893.dist-info → pulumi_gcp-7.25.0a1717097889.dist-info}/WHEEL +0 -0
- {pulumi_gcp-7.24.0a1716588893.dist-info → pulumi_gcp-7.25.0a1717097889.dist-info}/top_level.txt +0 -0
@@ -256,12 +256,14 @@ class AppCheckDebugToken(pulumi.CustomResource):
|
|
256
256
|
display_name="Web App for debug token")
|
257
257
|
# It takes a while for App Check to recognize the new app
|
258
258
|
# If your app already exists, you don't have to wait 30 seconds.
|
259
|
-
wait30s = time.index.Sleep("wait_30s", create_duration=30s
|
259
|
+
wait30s = time.index.Sleep("wait_30s", create_duration=30s,
|
260
|
+
opts=pulumi.ResourceOptions(depends_on=[default]))
|
260
261
|
default_app_check_debug_token = gcp.firebase.AppCheckDebugToken("default",
|
261
262
|
project="my-project-name",
|
262
263
|
app_id=default.app_id,
|
263
264
|
display_name="Debug Token",
|
264
|
-
token="00000000-AAAA-BBBB-CCCC-000000000000"
|
265
|
+
token="00000000-AAAA-BBBB-CCCC-000000000000",
|
266
|
+
opts=pulumi.ResourceOptions(depends_on=[wait30s]))
|
265
267
|
```
|
266
268
|
|
267
269
|
## Import
|
@@ -340,12 +342,14 @@ class AppCheckDebugToken(pulumi.CustomResource):
|
|
340
342
|
display_name="Web App for debug token")
|
341
343
|
# It takes a while for App Check to recognize the new app
|
342
344
|
# If your app already exists, you don't have to wait 30 seconds.
|
343
|
-
wait30s = time.index.Sleep("wait_30s", create_duration=30s
|
345
|
+
wait30s = time.index.Sleep("wait_30s", create_duration=30s,
|
346
|
+
opts=pulumi.ResourceOptions(depends_on=[default]))
|
344
347
|
default_app_check_debug_token = gcp.firebase.AppCheckDebugToken("default",
|
345
348
|
project="my-project-name",
|
346
349
|
app_id=default.app_id,
|
347
350
|
display_name="Debug Token",
|
348
|
-
token="00000000-AAAA-BBBB-CCCC-000000000000"
|
351
|
+
token="00000000-AAAA-BBBB-CCCC-000000000000",
|
352
|
+
opts=pulumi.ResourceOptions(depends_on=[wait30s]))
|
349
353
|
```
|
350
354
|
|
351
355
|
## Import
|
@@ -288,13 +288,15 @@ class AppCheckDeviceCheckConfig(pulumi.CustomResource):
|
|
288
288
|
team_id="9987654321")
|
289
289
|
# It takes a while for App Check to recognize the new app
|
290
290
|
# If your app already exists, you don't have to wait 30 seconds.
|
291
|
-
wait30s = time.index.Sleep("wait_30s", create_duration=30s
|
291
|
+
wait30s = time.index.Sleep("wait_30s", create_duration=30s,
|
292
|
+
opts=pulumi.ResourceOptions(depends_on=[default]))
|
292
293
|
default_app_check_device_check_config = gcp.firebase.AppCheckDeviceCheckConfig("default",
|
293
294
|
project="my-project-name",
|
294
295
|
app_id=default.app_id,
|
295
296
|
token_ttl="7200s",
|
296
297
|
key_id="Key ID",
|
297
|
-
private_key=std.file(input="path/to/private-key.p8").result
|
298
|
+
private_key=std.file(input="path/to/private-key.p8").result,
|
299
|
+
opts=pulumi.ResourceOptions(depends_on=[wait30s]))
|
298
300
|
```
|
299
301
|
|
300
302
|
## Import
|
@@ -370,13 +372,15 @@ class AppCheckDeviceCheckConfig(pulumi.CustomResource):
|
|
370
372
|
team_id="9987654321")
|
371
373
|
# It takes a while for App Check to recognize the new app
|
372
374
|
# If your app already exists, you don't have to wait 30 seconds.
|
373
|
-
wait30s = time.index.Sleep("wait_30s", create_duration=30s
|
375
|
+
wait30s = time.index.Sleep("wait_30s", create_duration=30s,
|
376
|
+
opts=pulumi.ResourceOptions(depends_on=[default]))
|
374
377
|
default_app_check_device_check_config = gcp.firebase.AppCheckDeviceCheckConfig("default",
|
375
378
|
project="my-project-name",
|
376
379
|
app_id=default.app_id,
|
377
380
|
token_ttl="7200s",
|
378
381
|
key_id="Key ID",
|
379
|
-
private_key=std.file(input="path/to/private-key.p8").result
|
382
|
+
private_key=std.file(input="path/to/private-key.p8").result,
|
383
|
+
opts=pulumi.ResourceOptions(depends_on=[wait30s]))
|
380
384
|
```
|
381
385
|
|
382
386
|
## Import
|
@@ -207,10 +207,12 @@ class AppCheckPlayIntegrityConfig(pulumi.CustomResource):
|
|
207
207
|
sha256_hashes=["2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc"])
|
208
208
|
# It takes a while for App Check to recognize the new app
|
209
209
|
# If your app already exists, you don't have to wait 30 seconds.
|
210
|
-
wait30s = time.index.Sleep("wait_30s", create_duration=30s
|
210
|
+
wait30s = time.index.Sleep("wait_30s", create_duration=30s,
|
211
|
+
opts=pulumi.ResourceOptions(depends_on=[default]))
|
211
212
|
default_app_check_play_integrity_config = gcp.firebase.AppCheckPlayIntegrityConfig("default",
|
212
213
|
project="my-project-name",
|
213
|
-
app_id=default.app_id
|
214
|
+
app_id=default.app_id,
|
215
|
+
opts=pulumi.ResourceOptions(depends_on=[wait30s]))
|
214
216
|
```
|
215
217
|
### Firebase App Check Play Integrity Config Full
|
216
218
|
|
@@ -232,11 +234,13 @@ class AppCheckPlayIntegrityConfig(pulumi.CustomResource):
|
|
232
234
|
sha256_hashes=["2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc"])
|
233
235
|
# It takes a while for App Check to recognize the new app
|
234
236
|
# If your app already exists, you don't have to wait 30 seconds.
|
235
|
-
wait30s = time.index.Sleep("wait_30s", create_duration=30s
|
237
|
+
wait30s = time.index.Sleep("wait_30s", create_duration=30s,
|
238
|
+
opts=pulumi.ResourceOptions(depends_on=[default]))
|
236
239
|
default_app_check_play_integrity_config = gcp.firebase.AppCheckPlayIntegrityConfig("default",
|
237
240
|
project="my-project-name",
|
238
241
|
app_id=default.app_id,
|
239
|
-
token_ttl="7200s"
|
242
|
+
token_ttl="7200s",
|
243
|
+
opts=pulumi.ResourceOptions(depends_on=[wait30s]))
|
240
244
|
```
|
241
245
|
|
242
246
|
## Import
|
@@ -314,10 +318,12 @@ class AppCheckPlayIntegrityConfig(pulumi.CustomResource):
|
|
314
318
|
sha256_hashes=["2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc"])
|
315
319
|
# It takes a while for App Check to recognize the new app
|
316
320
|
# If your app already exists, you don't have to wait 30 seconds.
|
317
|
-
wait30s = time.index.Sleep("wait_30s", create_duration=30s
|
321
|
+
wait30s = time.index.Sleep("wait_30s", create_duration=30s,
|
322
|
+
opts=pulumi.ResourceOptions(depends_on=[default]))
|
318
323
|
default_app_check_play_integrity_config = gcp.firebase.AppCheckPlayIntegrityConfig("default",
|
319
324
|
project="my-project-name",
|
320
|
-
app_id=default.app_id
|
325
|
+
app_id=default.app_id,
|
326
|
+
opts=pulumi.ResourceOptions(depends_on=[wait30s]))
|
321
327
|
```
|
322
328
|
### Firebase App Check Play Integrity Config Full
|
323
329
|
|
@@ -339,11 +345,13 @@ class AppCheckPlayIntegrityConfig(pulumi.CustomResource):
|
|
339
345
|
sha256_hashes=["2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc"])
|
340
346
|
# It takes a while for App Check to recognize the new app
|
341
347
|
# If your app already exists, you don't have to wait 30 seconds.
|
342
|
-
wait30s = time.index.Sleep("wait_30s", create_duration=30s
|
348
|
+
wait30s = time.index.Sleep("wait_30s", create_duration=30s,
|
349
|
+
opts=pulumi.ResourceOptions(depends_on=[default]))
|
343
350
|
default_app_check_play_integrity_config = gcp.firebase.AppCheckPlayIntegrityConfig("default",
|
344
351
|
project="my-project-name",
|
345
352
|
app_id=default.app_id,
|
346
|
-
token_ttl="7200s"
|
353
|
+
token_ttl="7200s",
|
354
|
+
opts=pulumi.ResourceOptions(depends_on=[wait30s]))
|
347
355
|
```
|
348
356
|
|
349
357
|
## Import
|
@@ -239,12 +239,14 @@ class AppCheckRecaptchaEnterpriseConfig(pulumi.CustomResource):
|
|
239
239
|
display_name="Web App for reCAPTCHA Enterprise")
|
240
240
|
# It takes a while for App Check to recognize the new app
|
241
241
|
# If your app already exists, you don't have to wait 30 seconds.
|
242
|
-
wait30s = time.index.Sleep("wait_30s", create_duration=30s
|
242
|
+
wait30s = time.index.Sleep("wait_30s", create_duration=30s,
|
243
|
+
opts=pulumi.ResourceOptions(depends_on=[default]))
|
243
244
|
default_app_check_recaptcha_enterprise_config = gcp.firebase.AppCheckRecaptchaEnterpriseConfig("default",
|
244
245
|
project="my-project-name",
|
245
246
|
app_id=default.app_id,
|
246
247
|
site_key="6LdpMXIpAAAAANkwWQPgEdjEhal7ugkH9RK9ytuw",
|
247
|
-
token_ttl="7200s"
|
248
|
+
token_ttl="7200s",
|
249
|
+
opts=pulumi.ResourceOptions(depends_on=[wait30s]))
|
248
250
|
```
|
249
251
|
|
250
252
|
## Import
|
@@ -320,12 +322,14 @@ class AppCheckRecaptchaEnterpriseConfig(pulumi.CustomResource):
|
|
320
322
|
display_name="Web App for reCAPTCHA Enterprise")
|
321
323
|
# It takes a while for App Check to recognize the new app
|
322
324
|
# If your app already exists, you don't have to wait 30 seconds.
|
323
|
-
wait30s = time.index.Sleep("wait_30s", create_duration=30s
|
325
|
+
wait30s = time.index.Sleep("wait_30s", create_duration=30s,
|
326
|
+
opts=pulumi.ResourceOptions(depends_on=[default]))
|
324
327
|
default_app_check_recaptcha_enterprise_config = gcp.firebase.AppCheckRecaptchaEnterpriseConfig("default",
|
325
328
|
project="my-project-name",
|
326
329
|
app_id=default.app_id,
|
327
330
|
site_key="6LdpMXIpAAAAANkwWQPgEdjEhal7ugkH9RK9ytuw",
|
328
|
-
token_ttl="7200s"
|
331
|
+
token_ttl="7200s",
|
332
|
+
opts=pulumi.ResourceOptions(depends_on=[wait30s]))
|
329
333
|
```
|
330
334
|
|
331
335
|
## Import
|
@@ -254,12 +254,14 @@ class AppCheckRecaptchaV3Config(pulumi.CustomResource):
|
|
254
254
|
display_name="Web App for reCAPTCHA V3")
|
255
255
|
# It takes a while for App Check to recognize the new app
|
256
256
|
# If your app already exists, you don't have to wait 30 seconds.
|
257
|
-
wait30s = time.index.Sleep("wait_30s", create_duration=30s
|
257
|
+
wait30s = time.index.Sleep("wait_30s", create_duration=30s,
|
258
|
+
opts=pulumi.ResourceOptions(depends_on=[default]))
|
258
259
|
default_app_check_recaptcha_v3_config = gcp.firebase.AppCheckRecaptchaV3Config("default",
|
259
260
|
project="my-project-name",
|
260
261
|
app_id=default.app_id,
|
261
262
|
site_secret="6Lf9YnQpAAAAAC3-MHmdAllTbPwTZxpUw5d34YzX",
|
262
|
-
token_ttl="7200s"
|
263
|
+
token_ttl="7200s",
|
264
|
+
opts=pulumi.ResourceOptions(depends_on=[wait30s]))
|
263
265
|
```
|
264
266
|
|
265
267
|
## Import
|
@@ -331,12 +333,14 @@ class AppCheckRecaptchaV3Config(pulumi.CustomResource):
|
|
331
333
|
display_name="Web App for reCAPTCHA V3")
|
332
334
|
# It takes a while for App Check to recognize the new app
|
333
335
|
# If your app already exists, you don't have to wait 30 seconds.
|
334
|
-
wait30s = time.index.Sleep("wait_30s", create_duration=30s
|
336
|
+
wait30s = time.index.Sleep("wait_30s", create_duration=30s,
|
337
|
+
opts=pulumi.ResourceOptions(depends_on=[default]))
|
335
338
|
default_app_check_recaptcha_v3_config = gcp.firebase.AppCheckRecaptchaV3Config("default",
|
336
339
|
project="my-project-name",
|
337
340
|
app_id=default.app_id,
|
338
341
|
site_secret="6Lf9YnQpAAAAAC3-MHmdAllTbPwTZxpUw5d34YzX",
|
339
|
-
token_ttl="7200s"
|
342
|
+
token_ttl="7200s",
|
343
|
+
opts=pulumi.ResourceOptions(depends_on=[wait30s]))
|
340
344
|
```
|
341
345
|
|
342
346
|
## Import
|
@@ -194,7 +194,8 @@ class AppCheckServiceConfig(pulumi.CustomResource):
|
|
194
194
|
disable_on_destroy=False)
|
195
195
|
default = gcp.firebase.AppCheckServiceConfig("default",
|
196
196
|
project="my-project-name",
|
197
|
-
service_id="firestore.googleapis.com"
|
197
|
+
service_id="firestore.googleapis.com",
|
198
|
+
opts=pulumi.ResourceOptions(depends_on=[appcheck]))
|
198
199
|
```
|
199
200
|
### Firebase App Check Service Config Enforced
|
200
201
|
|
@@ -209,7 +210,8 @@ class AppCheckServiceConfig(pulumi.CustomResource):
|
|
209
210
|
default = gcp.firebase.AppCheckServiceConfig("default",
|
210
211
|
project="my-project-name",
|
211
212
|
service_id="firebasestorage.googleapis.com",
|
212
|
-
enforcement_mode="ENFORCED"
|
213
|
+
enforcement_mode="ENFORCED",
|
214
|
+
opts=pulumi.ResourceOptions(depends_on=[appcheck]))
|
213
215
|
```
|
214
216
|
### Firebase App Check Service Config Unenforced
|
215
217
|
|
@@ -224,7 +226,8 @@ class AppCheckServiceConfig(pulumi.CustomResource):
|
|
224
226
|
default = gcp.firebase.AppCheckServiceConfig("default",
|
225
227
|
project="my-project-name",
|
226
228
|
service_id="identitytoolkit.googleapis.com",
|
227
|
-
enforcement_mode="UNENFORCED"
|
229
|
+
enforcement_mode="UNENFORCED",
|
230
|
+
opts=pulumi.ResourceOptions(depends_on=[appcheck]))
|
228
231
|
```
|
229
232
|
|
230
233
|
## Import
|
@@ -293,7 +296,8 @@ class AppCheckServiceConfig(pulumi.CustomResource):
|
|
293
296
|
disable_on_destroy=False)
|
294
297
|
default = gcp.firebase.AppCheckServiceConfig("default",
|
295
298
|
project="my-project-name",
|
296
|
-
service_id="firestore.googleapis.com"
|
299
|
+
service_id="firestore.googleapis.com",
|
300
|
+
opts=pulumi.ResourceOptions(depends_on=[appcheck]))
|
297
301
|
```
|
298
302
|
### Firebase App Check Service Config Enforced
|
299
303
|
|
@@ -308,7 +312,8 @@ class AppCheckServiceConfig(pulumi.CustomResource):
|
|
308
312
|
default = gcp.firebase.AppCheckServiceConfig("default",
|
309
313
|
project="my-project-name",
|
310
314
|
service_id="firebasestorage.googleapis.com",
|
311
|
-
enforcement_mode="ENFORCED"
|
315
|
+
enforcement_mode="ENFORCED",
|
316
|
+
opts=pulumi.ResourceOptions(depends_on=[appcheck]))
|
312
317
|
```
|
313
318
|
### Firebase App Check Service Config Unenforced
|
314
319
|
|
@@ -323,7 +328,8 @@ class AppCheckServiceConfig(pulumi.CustomResource):
|
|
323
328
|
default = gcp.firebase.AppCheckServiceConfig("default",
|
324
329
|
project="my-project-name",
|
325
330
|
service_id="identitytoolkit.googleapis.com",
|
326
|
-
enforcement_mode="UNENFORCED"
|
331
|
+
enforcement_mode="UNENFORCED",
|
332
|
+
opts=pulumi.ResourceOptions(depends_on=[appcheck]))
|
327
333
|
```
|
328
334
|
|
329
335
|
## Import
|
@@ -344,7 +344,8 @@ class DatabaseInstance(pulumi.CustomResource):
|
|
344
344
|
project=default_project.project,
|
345
345
|
region="us-central1",
|
346
346
|
instance_id="rtdb-project-default-rtdb",
|
347
|
-
type="DEFAULT_DATABASE"
|
347
|
+
type="DEFAULT_DATABASE",
|
348
|
+
opts=pulumi.ResourceOptions(depends_on=[firebase_database]))
|
348
349
|
```
|
349
350
|
|
350
351
|
## Import
|
@@ -450,7 +451,8 @@ class DatabaseInstance(pulumi.CustomResource):
|
|
450
451
|
project=default_project.project,
|
451
452
|
region="us-central1",
|
452
453
|
instance_id="rtdb-project-default-rtdb",
|
453
|
-
type="DEFAULT_DATABASE"
|
454
|
+
type="DEFAULT_DATABASE",
|
455
|
+
opts=pulumi.ResourceOptions(depends_on=[firebase_database]))
|
454
456
|
```
|
455
457
|
|
456
458
|
## Import
|
@@ -200,55 +200,6 @@ class Release(pulumi.CustomResource):
|
|
200
200
|
* [Get started with Firebase Security Rules](https://firebase.google.com/docs/rules/get-started)
|
201
201
|
## Example Usage
|
202
202
|
|
203
|
-
### Firestore_release
|
204
|
-
Creates a Firebase Rules Release to Cloud Firestore
|
205
|
-
```python
|
206
|
-
import pulumi
|
207
|
-
import pulumi_gcp as gcp
|
208
|
-
|
209
|
-
firestore = gcp.firebaserules.Ruleset("firestore",
|
210
|
-
source=gcp.firebaserules.RulesetSourceArgs(
|
211
|
-
files=[gcp.firebaserules.RulesetSourceFileArgs(
|
212
|
-
content="service cloud.firestore {match /databases/{database}/documents { match /{document=**} { allow read, write: if false; } } }",
|
213
|
-
name="firestore.rules",
|
214
|
-
)],
|
215
|
-
),
|
216
|
-
project="my-project-name")
|
217
|
-
primary = gcp.firebaserules.Release("primary",
|
218
|
-
name="cloud.firestore/database",
|
219
|
-
ruleset_name=firestore.name.apply(lambda name: f"projects/my-project-name/rulesets/{name}"),
|
220
|
-
project="my-project-name")
|
221
|
-
```
|
222
|
-
### Storage_release
|
223
|
-
Creates a Firebase Rules Release for a Storage bucket
|
224
|
-
```python
|
225
|
-
import pulumi
|
226
|
-
import pulumi_gcp as gcp
|
227
|
-
|
228
|
-
# Provision a non-default Cloud Storage bucket.
|
229
|
-
bucket = gcp.storage.Bucket("bucket",
|
230
|
-
project="my-project-name",
|
231
|
-
name="bucket",
|
232
|
-
location="us-west1")
|
233
|
-
# Create a ruleset of Firebase Security Rules from a local file.
|
234
|
-
storage = gcp.firebaserules.Ruleset("storage",
|
235
|
-
project="my-project-name",
|
236
|
-
source=gcp.firebaserules.RulesetSourceArgs(
|
237
|
-
files=[gcp.firebaserules.RulesetSourceFileArgs(
|
238
|
-
name="storage.rules",
|
239
|
-
content="service firebase.storage {match /b/{bucket}/o {match /{allPaths=**} {allow read, write: if request.auth != null;}}}",
|
240
|
-
)],
|
241
|
-
))
|
242
|
-
primary = gcp.firebaserules.Release("primary",
|
243
|
-
name=bucket.name.apply(lambda name: f"firebase.storage/{name}"),
|
244
|
-
ruleset_name=storage.name.apply(lambda name: f"projects/my-project-name/rulesets/{name}"),
|
245
|
-
project="my-project-name")
|
246
|
-
# Make the Storage bucket accessible for Firebase SDKs, authentication, and Firebase Security Rules.
|
247
|
-
bucket_storage_bucket = gcp.firebase.StorageBucket("bucket",
|
248
|
-
project="my-project-name",
|
249
|
-
bucket_id=bucket.name)
|
250
|
-
```
|
251
|
-
|
252
203
|
## Import
|
253
204
|
|
254
205
|
Release can be imported using any of these accepted formats:
|
@@ -281,55 +232,6 @@ class Release(pulumi.CustomResource):
|
|
281
232
|
* [Get started with Firebase Security Rules](https://firebase.google.com/docs/rules/get-started)
|
282
233
|
## Example Usage
|
283
234
|
|
284
|
-
### Firestore_release
|
285
|
-
Creates a Firebase Rules Release to Cloud Firestore
|
286
|
-
```python
|
287
|
-
import pulumi
|
288
|
-
import pulumi_gcp as gcp
|
289
|
-
|
290
|
-
firestore = gcp.firebaserules.Ruleset("firestore",
|
291
|
-
source=gcp.firebaserules.RulesetSourceArgs(
|
292
|
-
files=[gcp.firebaserules.RulesetSourceFileArgs(
|
293
|
-
content="service cloud.firestore {match /databases/{database}/documents { match /{document=**} { allow read, write: if false; } } }",
|
294
|
-
name="firestore.rules",
|
295
|
-
)],
|
296
|
-
),
|
297
|
-
project="my-project-name")
|
298
|
-
primary = gcp.firebaserules.Release("primary",
|
299
|
-
name="cloud.firestore/database",
|
300
|
-
ruleset_name=firestore.name.apply(lambda name: f"projects/my-project-name/rulesets/{name}"),
|
301
|
-
project="my-project-name")
|
302
|
-
```
|
303
|
-
### Storage_release
|
304
|
-
Creates a Firebase Rules Release for a Storage bucket
|
305
|
-
```python
|
306
|
-
import pulumi
|
307
|
-
import pulumi_gcp as gcp
|
308
|
-
|
309
|
-
# Provision a non-default Cloud Storage bucket.
|
310
|
-
bucket = gcp.storage.Bucket("bucket",
|
311
|
-
project="my-project-name",
|
312
|
-
name="bucket",
|
313
|
-
location="us-west1")
|
314
|
-
# Create a ruleset of Firebase Security Rules from a local file.
|
315
|
-
storage = gcp.firebaserules.Ruleset("storage",
|
316
|
-
project="my-project-name",
|
317
|
-
source=gcp.firebaserules.RulesetSourceArgs(
|
318
|
-
files=[gcp.firebaserules.RulesetSourceFileArgs(
|
319
|
-
name="storage.rules",
|
320
|
-
content="service firebase.storage {match /b/{bucket}/o {match /{allPaths=**} {allow read, write: if request.auth != null;}}}",
|
321
|
-
)],
|
322
|
-
))
|
323
|
-
primary = gcp.firebaserules.Release("primary",
|
324
|
-
name=bucket.name.apply(lambda name: f"firebase.storage/{name}"),
|
325
|
-
ruleset_name=storage.name.apply(lambda name: f"projects/my-project-name/rulesets/{name}"),
|
326
|
-
project="my-project-name")
|
327
|
-
# Make the Storage bucket accessible for Firebase SDKs, authentication, and Firebase Security Rules.
|
328
|
-
bucket_storage_bucket = gcp.firebase.StorageBucket("bucket",
|
329
|
-
project="my-project-name",
|
330
|
-
bucket_id=bucket.name)
|
331
|
-
```
|
332
|
-
|
333
235
|
## Import
|
334
236
|
|
335
237
|
Release can be imported using any of these accepted formats:
|
pulumi_gcp/firestore/database.py
CHANGED
@@ -635,6 +635,10 @@ class Database(pulumi.CustomResource):
|
|
635
635
|
name="kms-key",
|
636
636
|
key_ring=key_ring.id,
|
637
637
|
purpose="ENCRYPT_DECRYPT")
|
638
|
+
firestore_cmek_keyuser = gcp.kms.CryptoKeyIAMBinding("firestore_cmek_keyuser",
|
639
|
+
crypto_key_id=crypto_key.id,
|
640
|
+
role="roles/cloudkms.cryptoKeyEncrypterDecrypter",
|
641
|
+
members=[f"serviceAccount:service-{project.number}@gcp-sa-firestore.iam.gserviceaccount.com"])
|
638
642
|
database = gcp.firestore.Database("database",
|
639
643
|
project="my-project-name",
|
640
644
|
name="cmek-database-id",
|
@@ -647,11 +651,8 @@ class Database(pulumi.CustomResource):
|
|
647
651
|
deletion_policy="DELETE",
|
648
652
|
cmek_config=gcp.firestore.DatabaseCmekConfigArgs(
|
649
653
|
kms_key_name=crypto_key.id,
|
650
|
-
)
|
651
|
-
|
652
|
-
crypto_key_id=crypto_key.id,
|
653
|
-
role="roles/cloudkms.cryptoKeyEncrypterDecrypter",
|
654
|
-
members=[f"serviceAccount:service-{project.number}@gcp-sa-firestore.iam.gserviceaccount.com"])
|
654
|
+
),
|
655
|
+
opts=pulumi.ResourceOptions(depends_on=[firestore_cmek_keyuser]))
|
655
656
|
```
|
656
657
|
### Firestore Default Database In Datastore Mode
|
657
658
|
|
@@ -696,6 +697,10 @@ class Database(pulumi.CustomResource):
|
|
696
697
|
name="kms-key",
|
697
698
|
key_ring=key_ring.id,
|
698
699
|
purpose="ENCRYPT_DECRYPT")
|
700
|
+
firestore_cmek_keyuser = gcp.kms.CryptoKeyIAMBinding("firestore_cmek_keyuser",
|
701
|
+
crypto_key_id=crypto_key.id,
|
702
|
+
role="roles/cloudkms.cryptoKeyEncrypterDecrypter",
|
703
|
+
members=[f"serviceAccount:service-{project.number}@gcp-sa-firestore.iam.gserviceaccount.com"])
|
699
704
|
database = gcp.firestore.Database("database",
|
700
705
|
project="my-project-name",
|
701
706
|
name="cmek-database-id",
|
@@ -708,11 +713,8 @@ class Database(pulumi.CustomResource):
|
|
708
713
|
deletion_policy="DELETE",
|
709
714
|
cmek_config=gcp.firestore.DatabaseCmekConfigArgs(
|
710
715
|
kms_key_name=crypto_key.id,
|
711
|
-
)
|
712
|
-
|
713
|
-
crypto_key_id=crypto_key.id,
|
714
|
-
role="roles/cloudkms.cryptoKeyEncrypterDecrypter",
|
715
|
-
members=[f"serviceAccount:service-{project.number}@gcp-sa-firestore.iam.gserviceaccount.com"])
|
716
|
+
),
|
717
|
+
opts=pulumi.ResourceOptions(depends_on=[firestore_cmek_keyuser]))
|
716
718
|
```
|
717
719
|
|
718
720
|
## Import
|
@@ -840,6 +842,10 @@ class Database(pulumi.CustomResource):
|
|
840
842
|
name="kms-key",
|
841
843
|
key_ring=key_ring.id,
|
842
844
|
purpose="ENCRYPT_DECRYPT")
|
845
|
+
firestore_cmek_keyuser = gcp.kms.CryptoKeyIAMBinding("firestore_cmek_keyuser",
|
846
|
+
crypto_key_id=crypto_key.id,
|
847
|
+
role="roles/cloudkms.cryptoKeyEncrypterDecrypter",
|
848
|
+
members=[f"serviceAccount:service-{project.number}@gcp-sa-firestore.iam.gserviceaccount.com"])
|
843
849
|
database = gcp.firestore.Database("database",
|
844
850
|
project="my-project-name",
|
845
851
|
name="cmek-database-id",
|
@@ -852,11 +858,8 @@ class Database(pulumi.CustomResource):
|
|
852
858
|
deletion_policy="DELETE",
|
853
859
|
cmek_config=gcp.firestore.DatabaseCmekConfigArgs(
|
854
860
|
kms_key_name=crypto_key.id,
|
855
|
-
)
|
856
|
-
|
857
|
-
crypto_key_id=crypto_key.id,
|
858
|
-
role="roles/cloudkms.cryptoKeyEncrypterDecrypter",
|
859
|
-
members=[f"serviceAccount:service-{project.number}@gcp-sa-firestore.iam.gserviceaccount.com"])
|
861
|
+
),
|
862
|
+
opts=pulumi.ResourceOptions(depends_on=[firestore_cmek_keyuser]))
|
860
863
|
```
|
861
864
|
### Firestore Default Database In Datastore Mode
|
862
865
|
|
@@ -901,6 +904,10 @@ class Database(pulumi.CustomResource):
|
|
901
904
|
name="kms-key",
|
902
905
|
key_ring=key_ring.id,
|
903
906
|
purpose="ENCRYPT_DECRYPT")
|
907
|
+
firestore_cmek_keyuser = gcp.kms.CryptoKeyIAMBinding("firestore_cmek_keyuser",
|
908
|
+
crypto_key_id=crypto_key.id,
|
909
|
+
role="roles/cloudkms.cryptoKeyEncrypterDecrypter",
|
910
|
+
members=[f"serviceAccount:service-{project.number}@gcp-sa-firestore.iam.gserviceaccount.com"])
|
904
911
|
database = gcp.firestore.Database("database",
|
905
912
|
project="my-project-name",
|
906
913
|
name="cmek-database-id",
|
@@ -913,11 +920,8 @@ class Database(pulumi.CustomResource):
|
|
913
920
|
deletion_policy="DELETE",
|
914
921
|
cmek_config=gcp.firestore.DatabaseCmekConfigArgs(
|
915
922
|
kms_key_name=crypto_key.id,
|
916
|
-
)
|
917
|
-
|
918
|
-
crypto_key_id=crypto_key.id,
|
919
|
-
role="roles/cloudkms.cryptoKeyEncrypterDecrypter",
|
920
|
-
members=[f"serviceAccount:service-{project.number}@gcp-sa-firestore.iam.gserviceaccount.com"])
|
923
|
+
),
|
924
|
+
opts=pulumi.ResourceOptions(depends_on=[firestore_cmek_keyuser]))
|
921
925
|
```
|
922
926
|
|
923
927
|
## Import
|
pulumi_gcp/firestore/document.py
CHANGED
@@ -309,15 +309,18 @@ class Document(pulumi.CustomResource):
|
|
309
309
|
project_id="project-id",
|
310
310
|
name="project-id",
|
311
311
|
org_id="123456789")
|
312
|
-
wait60_seconds = time.index.Sleep("wait_60_seconds", create_duration=60s
|
312
|
+
wait60_seconds = time.index.Sleep("wait_60_seconds", create_duration=60s,
|
313
|
+
opts=pulumi.ResourceOptions(depends_on=[project]))
|
313
314
|
firestore = gcp.projects.Service("firestore",
|
314
315
|
project=project.project_id,
|
315
|
-
service="firestore.googleapis.com"
|
316
|
+
service="firestore.googleapis.com",
|
317
|
+
opts=pulumi.ResourceOptions(depends_on=[wait60_seconds]))
|
316
318
|
database = gcp.firestore.Database("database",
|
317
319
|
project=project.project_id,
|
318
320
|
name="(default)",
|
319
321
|
location_id="nam5",
|
320
|
-
type="FIRESTORE_NATIVE"
|
322
|
+
type="FIRESTORE_NATIVE",
|
323
|
+
opts=pulumi.ResourceOptions(depends_on=[firestore]))
|
321
324
|
mydoc = gcp.firestore.Document("mydoc",
|
322
325
|
project=project.project_id,
|
323
326
|
database=database.name,
|
@@ -336,15 +339,18 @@ class Document(pulumi.CustomResource):
|
|
336
339
|
project_id="project-id",
|
337
340
|
name="project-id",
|
338
341
|
org_id="123456789")
|
339
|
-
wait60_seconds = time.index.Sleep("wait_60_seconds", create_duration=60s
|
342
|
+
wait60_seconds = time.index.Sleep("wait_60_seconds", create_duration=60s,
|
343
|
+
opts=pulumi.ResourceOptions(depends_on=[project]))
|
340
344
|
firestore = gcp.projects.Service("firestore",
|
341
345
|
project=project.project_id,
|
342
|
-
service="firestore.googleapis.com"
|
346
|
+
service="firestore.googleapis.com",
|
347
|
+
opts=pulumi.ResourceOptions(depends_on=[wait60_seconds]))
|
343
348
|
database = gcp.firestore.Database("database",
|
344
349
|
project=project.project_id,
|
345
350
|
name="(default)",
|
346
351
|
location_id="nam5",
|
347
|
-
type="FIRESTORE_NATIVE"
|
352
|
+
type="FIRESTORE_NATIVE",
|
353
|
+
opts=pulumi.ResourceOptions(depends_on=[firestore]))
|
348
354
|
mydoc = gcp.firestore.Document("mydoc",
|
349
355
|
project=project.project_id,
|
350
356
|
database=database.name,
|
@@ -427,15 +433,18 @@ class Document(pulumi.CustomResource):
|
|
427
433
|
project_id="project-id",
|
428
434
|
name="project-id",
|
429
435
|
org_id="123456789")
|
430
|
-
wait60_seconds = time.index.Sleep("wait_60_seconds", create_duration=60s
|
436
|
+
wait60_seconds = time.index.Sleep("wait_60_seconds", create_duration=60s,
|
437
|
+
opts=pulumi.ResourceOptions(depends_on=[project]))
|
431
438
|
firestore = gcp.projects.Service("firestore",
|
432
439
|
project=project.project_id,
|
433
|
-
service="firestore.googleapis.com"
|
440
|
+
service="firestore.googleapis.com",
|
441
|
+
opts=pulumi.ResourceOptions(depends_on=[wait60_seconds]))
|
434
442
|
database = gcp.firestore.Database("database",
|
435
443
|
project=project.project_id,
|
436
444
|
name="(default)",
|
437
445
|
location_id="nam5",
|
438
|
-
type="FIRESTORE_NATIVE"
|
446
|
+
type="FIRESTORE_NATIVE",
|
447
|
+
opts=pulumi.ResourceOptions(depends_on=[firestore]))
|
439
448
|
mydoc = gcp.firestore.Document("mydoc",
|
440
449
|
project=project.project_id,
|
441
450
|
database=database.name,
|
@@ -454,15 +463,18 @@ class Document(pulumi.CustomResource):
|
|
454
463
|
project_id="project-id",
|
455
464
|
name="project-id",
|
456
465
|
org_id="123456789")
|
457
|
-
wait60_seconds = time.index.Sleep("wait_60_seconds", create_duration=60s
|
466
|
+
wait60_seconds = time.index.Sleep("wait_60_seconds", create_duration=60s,
|
467
|
+
opts=pulumi.ResourceOptions(depends_on=[project]))
|
458
468
|
firestore = gcp.projects.Service("firestore",
|
459
469
|
project=project.project_id,
|
460
|
-
service="firestore.googleapis.com"
|
470
|
+
service="firestore.googleapis.com",
|
471
|
+
opts=pulumi.ResourceOptions(depends_on=[wait60_seconds]))
|
461
472
|
database = gcp.firestore.Database("database",
|
462
473
|
project=project.project_id,
|
463
474
|
name="(default)",
|
464
475
|
location_id="nam5",
|
465
|
-
type="FIRESTORE_NATIVE"
|
476
|
+
type="FIRESTORE_NATIVE",
|
477
|
+
opts=pulumi.ResourceOptions(depends_on=[firestore]))
|
466
478
|
mydoc = gcp.firestore.Document("mydoc",
|
467
479
|
project=project.project_id,
|
468
480
|
database=database.name,
|
@@ -330,7 +330,8 @@ class AccessApprovalSettings(pulumi.CustomResource):
|
|
330
330
|
active_key_version=crypto_key_version.name,
|
331
331
|
enrolled_services=[gcp.folder.AccessApprovalSettingsEnrolledServiceArgs(
|
332
332
|
cloud_product="all",
|
333
|
-
)]
|
333
|
+
)],
|
334
|
+
opts=pulumi.ResourceOptions(depends_on=[iam]))
|
334
335
|
```
|
335
336
|
|
336
337
|
## Import
|
@@ -435,7 +436,8 @@ class AccessApprovalSettings(pulumi.CustomResource):
|
|
435
436
|
active_key_version=crypto_key_version.name,
|
436
437
|
enrolled_services=[gcp.folder.AccessApprovalSettingsEnrolledServiceArgs(
|
437
438
|
cloud_product="all",
|
438
|
-
)]
|
439
|
+
)],
|
440
|
+
opts=pulumi.ResourceOptions(depends_on=[iam]))
|
439
441
|
```
|
440
442
|
|
441
443
|
## Import
|
@@ -423,7 +423,8 @@ class MembershipBinding(pulumi.CustomResource):
|
|
423
423
|
gke_cluster=gcp.gkehub.MembershipEndpointGkeClusterArgs(
|
424
424
|
resource_link=primary.id.apply(lambda id: f"//container.googleapis.com/{id}"),
|
425
425
|
),
|
426
|
-
)
|
426
|
+
),
|
427
|
+
opts=pulumi.ResourceOptions(depends_on=[primary]))
|
427
428
|
scope = gcp.gkehub.Scope("scope", scope_id="tf-test-scope_39249")
|
428
429
|
membership_binding = gcp.gkehub.MembershipBinding("membership_binding",
|
429
430
|
membership_binding_id="tf-test-membership-binding_74391",
|
@@ -434,7 +435,11 @@ class MembershipBinding(pulumi.CustomResource):
|
|
434
435
|
"keyb": "valueb",
|
435
436
|
"keya": "valuea",
|
436
437
|
"keyc": "valuec",
|
437
|
-
}
|
438
|
+
},
|
439
|
+
opts=pulumi.ResourceOptions(depends_on=[
|
440
|
+
membership,
|
441
|
+
scope,
|
442
|
+
]))
|
438
443
|
```
|
439
444
|
|
440
445
|
## Import
|
@@ -514,7 +519,8 @@ class MembershipBinding(pulumi.CustomResource):
|
|
514
519
|
gke_cluster=gcp.gkehub.MembershipEndpointGkeClusterArgs(
|
515
520
|
resource_link=primary.id.apply(lambda id: f"//container.googleapis.com/{id}"),
|
516
521
|
),
|
517
|
-
)
|
522
|
+
),
|
523
|
+
opts=pulumi.ResourceOptions(depends_on=[primary]))
|
518
524
|
scope = gcp.gkehub.Scope("scope", scope_id="tf-test-scope_39249")
|
519
525
|
membership_binding = gcp.gkehub.MembershipBinding("membership_binding",
|
520
526
|
membership_binding_id="tf-test-membership-binding_74391",
|
@@ -525,7 +531,11 @@ class MembershipBinding(pulumi.CustomResource):
|
|
525
531
|
"keyb": "valueb",
|
526
532
|
"keya": "valuea",
|
527
533
|
"keyc": "valuec",
|
528
|
-
}
|
534
|
+
},
|
535
|
+
opts=pulumi.ResourceOptions(depends_on=[
|
536
|
+
membership,
|
537
|
+
scope,
|
538
|
+
]))
|
529
539
|
```
|
530
540
|
|
531
541
|
## Import
|