pulumi-gcp 8.29.0a1746115375__py3-none-any.whl → 8.30.0a1746254470__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 (65) hide show
  1. pulumi_gcp/__init__.py +24 -0
  2. pulumi_gcp/alloydb/instance.py +1 -1
  3. pulumi_gcp/apigee/organization.py +26 -0
  4. pulumi_gcp/beyondcorp/_inputs.py +129 -0
  5. pulumi_gcp/beyondcorp/application.py +106 -3
  6. pulumi_gcp/beyondcorp/outputs.py +93 -0
  7. pulumi_gcp/bigtable/__init__.py +2 -0
  8. pulumi_gcp/bigtable/logical_view.py +473 -0
  9. pulumi_gcp/bigtable/materialized_view.py +524 -0
  10. pulumi_gcp/certificateauthority/ca_pool.py +12 -0
  11. pulumi_gcp/certificatemanager/get_certificates.py +29 -0
  12. pulumi_gcp/clouddeploy/automation.py +66 -10
  13. pulumi_gcp/compute/_inputs.py +366 -55
  14. pulumi_gcp/compute/backend_service.py +6 -2
  15. pulumi_gcp/compute/get_region_disk.py +12 -1
  16. pulumi_gcp/compute/interconnect.py +25 -24
  17. pulumi_gcp/compute/outputs.py +380 -48
  18. pulumi_gcp/compute/region_disk.py +28 -0
  19. pulumi_gcp/compute/region_resize_request.py +2 -2
  20. pulumi_gcp/compute/region_security_policy.py +16 -0
  21. pulumi_gcp/compute/region_security_policy_rule.py +16 -0
  22. pulumi_gcp/compute/resize_request.py +2 -2
  23. pulumi_gcp/compute/resource_policy.py +0 -2
  24. pulumi_gcp/container/_inputs.py +69 -9
  25. pulumi_gcp/container/outputs.py +71 -7
  26. pulumi_gcp/dataplex/_inputs.py +219 -1
  27. pulumi_gcp/dataplex/datascan.py +20 -0
  28. pulumi_gcp/dataplex/outputs.py +168 -1
  29. pulumi_gcp/developerconnect/_inputs.py +6 -0
  30. pulumi_gcp/developerconnect/account_connector.py +56 -0
  31. pulumi_gcp/developerconnect/outputs.py +4 -0
  32. pulumi_gcp/dns/_inputs.py +34 -13
  33. pulumi_gcp/dns/outputs.py +25 -10
  34. pulumi_gcp/gkehub/_inputs.py +3 -3
  35. pulumi_gcp/gkehub/feature_membership.py +92 -0
  36. pulumi_gcp/gkehub/outputs.py +2 -2
  37. pulumi_gcp/identityplatform/_inputs.py +54 -0
  38. pulumi_gcp/identityplatform/oauth_idp_config.py +83 -5
  39. pulumi_gcp/identityplatform/outputs.py +49 -0
  40. pulumi_gcp/memcache/__init__.py +1 -0
  41. pulumi_gcp/memcache/get_instance.py +338 -0
  42. pulumi_gcp/memcache/outputs.py +363 -0
  43. pulumi_gcp/netapp/storage_pool.py +141 -0
  44. pulumi_gcp/networkservices/_inputs.py +35 -6
  45. pulumi_gcp/networkservices/lb_traffic_extension.py +7 -0
  46. pulumi_gcp/networkservices/outputs.py +22 -4
  47. pulumi_gcp/osconfig/__init__.py +1 -0
  48. pulumi_gcp/osconfig/_inputs.py +5400 -0
  49. pulumi_gcp/osconfig/outputs.py +3952 -0
  50. pulumi_gcp/osconfig/v2_policy_orchestrator_for_folder.py +1098 -0
  51. pulumi_gcp/pulumi-plugin.json +1 -1
  52. pulumi_gcp/spanner/instance_config.py +14 -14
  53. pulumi_gcp/sql/_inputs.py +83 -0
  54. pulumi_gcp/sql/database_instance.py +28 -0
  55. pulumi_gcp/sql/get_database_instance.py +12 -1
  56. pulumi_gcp/sql/outputs.py +146 -6
  57. pulumi_gcp/storage/_inputs.py +20 -0
  58. pulumi_gcp/storage/bucket.py +56 -0
  59. pulumi_gcp/storage/get_bucket.py +23 -1
  60. pulumi_gcp/storage/outputs.py +14 -0
  61. pulumi_gcp/vertex/ai_feature_online_store_featureview.py +2 -14
  62. {pulumi_gcp-8.29.0a1746115375.dist-info → pulumi_gcp-8.30.0a1746254470.dist-info}/METADATA +1 -1
  63. {pulumi_gcp-8.29.0a1746115375.dist-info → pulumi_gcp-8.30.0a1746254470.dist-info}/RECORD +65 -61
  64. {pulumi_gcp-8.29.0a1746115375.dist-info → pulumi_gcp-8.30.0a1746254470.dist-info}/WHEEL +1 -1
  65. {pulumi_gcp-8.29.0a1746115375.dist-info → pulumi_gcp-8.30.0a1746254470.dist-info}/top_level.txt +0 -0
pulumi_gcp/__init__.py CHANGED
@@ -1590,6 +1590,22 @@ _utilities.register(
1590
1590
  "gcp:bigtable/instanceIamPolicy:InstanceIamPolicy": "InstanceIamPolicy"
1591
1591
  }
1592
1592
  },
1593
+ {
1594
+ "pkg": "gcp",
1595
+ "mod": "bigtable/logicalView",
1596
+ "fqn": "pulumi_gcp.bigtable",
1597
+ "classes": {
1598
+ "gcp:bigtable/logicalView:LogicalView": "LogicalView"
1599
+ }
1600
+ },
1601
+ {
1602
+ "pkg": "gcp",
1603
+ "mod": "bigtable/materializedView",
1604
+ "fqn": "pulumi_gcp.bigtable",
1605
+ "classes": {
1606
+ "gcp:bigtable/materializedView:MaterializedView": "MaterializedView"
1607
+ }
1608
+ },
1593
1609
  {
1594
1610
  "pkg": "gcp",
1595
1611
  "mod": "bigtable/table",
@@ -7662,6 +7678,14 @@ _utilities.register(
7662
7678
  "gcp:osconfig/v2PolicyOrchestrator:V2PolicyOrchestrator": "V2PolicyOrchestrator"
7663
7679
  }
7664
7680
  },
7681
+ {
7682
+ "pkg": "gcp",
7683
+ "mod": "osconfig/v2PolicyOrchestratorForFolder",
7684
+ "fqn": "pulumi_gcp.osconfig",
7685
+ "classes": {
7686
+ "gcp:osconfig/v2PolicyOrchestratorForFolder:V2PolicyOrchestratorForFolder": "V2PolicyOrchestratorForFolder"
7687
+ }
7688
+ },
7665
7689
  {
7666
7690
  "pkg": "gcp",
7667
7691
  "mod": "osconfig/v2PolicyOrchestratorForOrganization",
@@ -1476,7 +1476,7 @@ class Instance(pulumi.CustomResource):
1476
1476
 
1477
1477
  @property
1478
1478
  @pulumi.getter(name="networkConfig")
1479
- def network_config(self) -> pulumi.Output[Optional['outputs.InstanceNetworkConfig']]:
1479
+ def network_config(self) -> pulumi.Output['outputs.InstanceNetworkConfig']:
1480
1480
  """
1481
1481
  Instance level network configuration.
1482
1482
  Structure is documented below.
@@ -673,6 +673,7 @@ class Organization(pulumi.CustomResource):
673
673
  * [API documentation](https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations)
674
674
  * How-to Guides
675
675
  * [Creating an API organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org)
676
+ * Setting a custom endpoint (required for data residency)
676
677
 
677
678
  ## Example Usage
678
679
 
@@ -713,6 +714,18 @@ class Organization(pulumi.CustomResource):
713
714
  project_id=current.project,
714
715
  disable_vpc_peering=True)
715
716
  ```
717
+ ### Apigee Organization Cloud Basic Data Residency
718
+
719
+ ```python
720
+ import pulumi
721
+ import pulumi_gcp as gcp
722
+
723
+ current = gcp.organizations.get_client_config()
724
+ org = gcp.apigee.Organization("org",
725
+ description="Terraform-provisioned basic Apigee Org under European Union hosting jurisdiction.",
726
+ project_id=current.project,
727
+ disable_vpc_peering=True)
728
+ ```
716
729
  ### Apigee Organization Cloud Full
717
730
 
718
731
  ```python
@@ -858,6 +871,7 @@ class Organization(pulumi.CustomResource):
858
871
  * [API documentation](https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations)
859
872
  * How-to Guides
860
873
  * [Creating an API organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org)
874
+ * Setting a custom endpoint (required for data residency)
861
875
 
862
876
  ## Example Usage
863
877
 
@@ -898,6 +912,18 @@ class Organization(pulumi.CustomResource):
898
912
  project_id=current.project,
899
913
  disable_vpc_peering=True)
900
914
  ```
915
+ ### Apigee Organization Cloud Basic Data Residency
916
+
917
+ ```python
918
+ import pulumi
919
+ import pulumi_gcp as gcp
920
+
921
+ current = gcp.organizations.get_client_config()
922
+ org = gcp.apigee.Organization("org",
923
+ description="Terraform-provisioned basic Apigee Org under European Union hosting jurisdiction.",
924
+ project_id=current.project,
925
+ disable_vpc_peering=True)
926
+ ```
901
927
  ### Apigee Organization Cloud Full
902
928
 
903
929
  ```python
@@ -32,6 +32,12 @@ __all__ = [
32
32
  'ApplicationIamBindingConditionArgsDict',
33
33
  'ApplicationIamMemberConditionArgs',
34
34
  'ApplicationIamMemberConditionArgsDict',
35
+ 'ApplicationUpstreamArgs',
36
+ 'ApplicationUpstreamArgsDict',
37
+ 'ApplicationUpstreamEgressPolicyArgs',
38
+ 'ApplicationUpstreamEgressPolicyArgsDict',
39
+ 'ApplicationUpstreamNetworkArgs',
40
+ 'ApplicationUpstreamNetworkArgsDict',
35
41
  'SecurityGatewayHubArgs',
36
42
  'SecurityGatewayHubArgsDict',
37
43
  'SecurityGatewayHubInternetGatewayArgs',
@@ -509,6 +515,129 @@ class ApplicationIamMemberConditionArgs:
509
515
  pulumi.set(self, "description", value)
510
516
 
511
517
 
518
+ if not MYPY:
519
+ class ApplicationUpstreamArgsDict(TypedDict):
520
+ egress_policy: NotRequired[pulumi.Input['ApplicationUpstreamEgressPolicyArgsDict']]
521
+ """
522
+ Optional. Routing policy information.
523
+ Structure is documented below.
524
+ """
525
+ network: NotRequired[pulumi.Input['ApplicationUpstreamNetworkArgsDict']]
526
+ """
527
+ Network to forward traffic to.
528
+ Structure is documented below.
529
+ """
530
+ elif False:
531
+ ApplicationUpstreamArgsDict: TypeAlias = Mapping[str, Any]
532
+
533
+ @pulumi.input_type
534
+ class ApplicationUpstreamArgs:
535
+ def __init__(__self__, *,
536
+ egress_policy: Optional[pulumi.Input['ApplicationUpstreamEgressPolicyArgs']] = None,
537
+ network: Optional[pulumi.Input['ApplicationUpstreamNetworkArgs']] = None):
538
+ """
539
+ :param pulumi.Input['ApplicationUpstreamEgressPolicyArgs'] egress_policy: Optional. Routing policy information.
540
+ Structure is documented below.
541
+ :param pulumi.Input['ApplicationUpstreamNetworkArgs'] network: Network to forward traffic to.
542
+ Structure is documented below.
543
+ """
544
+ if egress_policy is not None:
545
+ pulumi.set(__self__, "egress_policy", egress_policy)
546
+ if network is not None:
547
+ pulumi.set(__self__, "network", network)
548
+
549
+ @property
550
+ @pulumi.getter(name="egressPolicy")
551
+ def egress_policy(self) -> Optional[pulumi.Input['ApplicationUpstreamEgressPolicyArgs']]:
552
+ """
553
+ Optional. Routing policy information.
554
+ Structure is documented below.
555
+ """
556
+ return pulumi.get(self, "egress_policy")
557
+
558
+ @egress_policy.setter
559
+ def egress_policy(self, value: Optional[pulumi.Input['ApplicationUpstreamEgressPolicyArgs']]):
560
+ pulumi.set(self, "egress_policy", value)
561
+
562
+ @property
563
+ @pulumi.getter
564
+ def network(self) -> Optional[pulumi.Input['ApplicationUpstreamNetworkArgs']]:
565
+ """
566
+ Network to forward traffic to.
567
+ Structure is documented below.
568
+ """
569
+ return pulumi.get(self, "network")
570
+
571
+ @network.setter
572
+ def network(self, value: Optional[pulumi.Input['ApplicationUpstreamNetworkArgs']]):
573
+ pulumi.set(self, "network", value)
574
+
575
+
576
+ if not MYPY:
577
+ class ApplicationUpstreamEgressPolicyArgsDict(TypedDict):
578
+ regions: pulumi.Input[Sequence[pulumi.Input[builtins.str]]]
579
+ """
580
+ Required. List of regions where the application sends traffic to.
581
+ """
582
+ elif False:
583
+ ApplicationUpstreamEgressPolicyArgsDict: TypeAlias = Mapping[str, Any]
584
+
585
+ @pulumi.input_type
586
+ class ApplicationUpstreamEgressPolicyArgs:
587
+ def __init__(__self__, *,
588
+ regions: pulumi.Input[Sequence[pulumi.Input[builtins.str]]]):
589
+ """
590
+ :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] regions: Required. List of regions where the application sends traffic to.
591
+ """
592
+ pulumi.set(__self__, "regions", regions)
593
+
594
+ @property
595
+ @pulumi.getter
596
+ def regions(self) -> pulumi.Input[Sequence[pulumi.Input[builtins.str]]]:
597
+ """
598
+ Required. List of regions where the application sends traffic to.
599
+ """
600
+ return pulumi.get(self, "regions")
601
+
602
+ @regions.setter
603
+ def regions(self, value: pulumi.Input[Sequence[pulumi.Input[builtins.str]]]):
604
+ pulumi.set(self, "regions", value)
605
+
606
+
607
+ if not MYPY:
608
+ class ApplicationUpstreamNetworkArgsDict(TypedDict):
609
+ name: pulumi.Input[builtins.str]
610
+ """
611
+ Required. Network name is of the format:
612
+ `projects/{project}/global/networks/{network}`
613
+ """
614
+ elif False:
615
+ ApplicationUpstreamNetworkArgsDict: TypeAlias = Mapping[str, Any]
616
+
617
+ @pulumi.input_type
618
+ class ApplicationUpstreamNetworkArgs:
619
+ def __init__(__self__, *,
620
+ name: pulumi.Input[builtins.str]):
621
+ """
622
+ :param pulumi.Input[builtins.str] name: Required. Network name is of the format:
623
+ `projects/{project}/global/networks/{network}`
624
+ """
625
+ pulumi.set(__self__, "name", name)
626
+
627
+ @property
628
+ @pulumi.getter
629
+ def name(self) -> pulumi.Input[builtins.str]:
630
+ """
631
+ Required. Network name is of the format:
632
+ `projects/{project}/global/networks/{network}`
633
+ """
634
+ return pulumi.get(self, "name")
635
+
636
+ @name.setter
637
+ def name(self, value: pulumi.Input[builtins.str]):
638
+ pulumi.set(self, "name", value)
639
+
640
+
512
641
  if not MYPY:
513
642
  class SecurityGatewayHubArgsDict(TypedDict):
514
643
  region: pulumi.Input[builtins.str]
@@ -26,7 +26,8 @@ class ApplicationArgs:
26
26
  endpoint_matchers: pulumi.Input[Sequence[pulumi.Input['ApplicationEndpointMatcherArgs']]],
27
27
  security_gateways_id: pulumi.Input[builtins.str],
28
28
  display_name: Optional[pulumi.Input[builtins.str]] = None,
29
- project: Optional[pulumi.Input[builtins.str]] = None):
29
+ project: Optional[pulumi.Input[builtins.str]] = None,
30
+ upstreams: Optional[pulumi.Input[Sequence[pulumi.Input['ApplicationUpstreamArgs']]]] = None):
30
31
  """
31
32
  The set of arguments for constructing a Application resource.
32
33
  :param pulumi.Input[builtins.str] application_id: Optional. User-settable Application resource ID.
@@ -47,6 +48,7 @@ class ApplicationArgs:
47
48
  Structure is documented below.
48
49
  :param pulumi.Input[builtins.str] security_gateways_id: Part of `parent`. See documentation of `projectsId`.
49
50
  :param pulumi.Input[builtins.str] display_name: Optional. An arbitrary user-provided name for the Application resource. Cannot exceed 64 characters.
51
+ :param pulumi.Input[Sequence[pulumi.Input['ApplicationUpstreamArgs']]] upstreams: Optional. List of which upstream resource(s) to forward traffic to.
50
52
  """
51
53
  pulumi.set(__self__, "application_id", application_id)
52
54
  pulumi.set(__self__, "endpoint_matchers", endpoint_matchers)
@@ -55,6 +57,8 @@ class ApplicationArgs:
55
57
  pulumi.set(__self__, "display_name", display_name)
56
58
  if project is not None:
57
59
  pulumi.set(__self__, "project", project)
60
+ if upstreams is not None:
61
+ pulumi.set(__self__, "upstreams", upstreams)
58
62
 
59
63
  @property
60
64
  @pulumi.getter(name="applicationId")
@@ -127,6 +131,18 @@ class ApplicationArgs:
127
131
  def project(self, value: Optional[pulumi.Input[builtins.str]]):
128
132
  pulumi.set(self, "project", value)
129
133
 
134
+ @property
135
+ @pulumi.getter
136
+ def upstreams(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ApplicationUpstreamArgs']]]]:
137
+ """
138
+ Optional. List of which upstream resource(s) to forward traffic to.
139
+ """
140
+ return pulumi.get(self, "upstreams")
141
+
142
+ @upstreams.setter
143
+ def upstreams(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ApplicationUpstreamArgs']]]]):
144
+ pulumi.set(self, "upstreams", value)
145
+
130
146
 
131
147
  @pulumi.input_type
132
148
  class _ApplicationState:
@@ -138,7 +154,8 @@ class _ApplicationState:
138
154
  name: Optional[pulumi.Input[builtins.str]] = None,
139
155
  project: Optional[pulumi.Input[builtins.str]] = None,
140
156
  security_gateways_id: Optional[pulumi.Input[builtins.str]] = None,
141
- update_time: Optional[pulumi.Input[builtins.str]] = None):
157
+ update_time: Optional[pulumi.Input[builtins.str]] = None,
158
+ upstreams: Optional[pulumi.Input[Sequence[pulumi.Input['ApplicationUpstreamArgs']]]] = None):
142
159
  """
143
160
  Input properties used for looking up and filtering Application resources.
144
161
  :param pulumi.Input[builtins.str] application_id: Optional. User-settable Application resource ID.
@@ -162,6 +179,7 @@ class _ApplicationState:
162
179
  :param pulumi.Input[builtins.str] name: Identifier. Name of the resource.
163
180
  :param pulumi.Input[builtins.str] security_gateways_id: Part of `parent`. See documentation of `projectsId`.
164
181
  :param pulumi.Input[builtins.str] update_time: Output only. Timestamp when the resource was last modified.
182
+ :param pulumi.Input[Sequence[pulumi.Input['ApplicationUpstreamArgs']]] upstreams: Optional. List of which upstream resource(s) to forward traffic to.
165
183
  """
166
184
  if application_id is not None:
167
185
  pulumi.set(__self__, "application_id", application_id)
@@ -179,6 +197,8 @@ class _ApplicationState:
179
197
  pulumi.set(__self__, "security_gateways_id", security_gateways_id)
180
198
  if update_time is not None:
181
199
  pulumi.set(__self__, "update_time", update_time)
200
+ if upstreams is not None:
201
+ pulumi.set(__self__, "upstreams", upstreams)
182
202
 
183
203
  @property
184
204
  @pulumi.getter(name="applicationId")
@@ -287,6 +307,18 @@ class _ApplicationState:
287
307
  def update_time(self, value: Optional[pulumi.Input[builtins.str]]):
288
308
  pulumi.set(self, "update_time", value)
289
309
 
310
+ @property
311
+ @pulumi.getter
312
+ def upstreams(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ApplicationUpstreamArgs']]]]:
313
+ """
314
+ Optional. List of which upstream resource(s) to forward traffic to.
315
+ """
316
+ return pulumi.get(self, "upstreams")
317
+
318
+ @upstreams.setter
319
+ def upstreams(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ApplicationUpstreamArgs']]]]):
320
+ pulumi.set(self, "upstreams", value)
321
+
290
322
 
291
323
  class Application(pulumi.CustomResource):
292
324
 
@@ -301,6 +333,7 @@ class Application(pulumi.CustomResource):
301
333
  endpoint_matchers: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ApplicationEndpointMatcherArgs', 'ApplicationEndpointMatcherArgsDict']]]]] = None,
302
334
  project: Optional[pulumi.Input[builtins.str]] = None,
303
335
  security_gateways_id: Optional[pulumi.Input[builtins.str]] = None,
336
+ upstreams: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ApplicationUpstreamArgs', 'ApplicationUpstreamArgsDict']]]]] = None,
304
337
  __props__=None):
305
338
  """
306
339
  Specifies application endpoint(s) to protect behind a Security Gateway.
@@ -326,6 +359,34 @@ class Application(pulumi.CustomResource):
326
359
  "hostname": "google.com",
327
360
  }])
328
361
  ```
362
+ ### Beyondcorp Security Gateway Application Vpc
363
+
364
+ ```python
365
+ import pulumi
366
+ import pulumi_gcp as gcp
367
+
368
+ project = gcp.organizations.get_project()
369
+ default = gcp.beyondcorp.SecurityGateway("default",
370
+ security_gateway_id="default",
371
+ display_name="My Security Gateway resource",
372
+ hubs=[{
373
+ "region": "us-central1",
374
+ }])
375
+ example = gcp.beyondcorp.Application("example",
376
+ security_gateways_id=default.security_gateway_id,
377
+ application_id="my-vm-service",
378
+ endpoint_matchers=[{
379
+ "hostname": "my-vm-service.com",
380
+ }],
381
+ upstreams=[{
382
+ "egress_policy": {
383
+ "regions": ["us-central1"],
384
+ },
385
+ "network": {
386
+ "name": f"projects/{project.project_id}/global/networks/default",
387
+ },
388
+ }])
389
+ ```
329
390
 
330
391
  ## Import
331
392
 
@@ -371,6 +432,7 @@ class Application(pulumi.CustomResource):
371
432
  Hostname and Ports - ("abc.com" and "22"), ("abc.com" and "22,33") etc
372
433
  Structure is documented below.
373
434
  :param pulumi.Input[builtins.str] security_gateways_id: Part of `parent`. See documentation of `projectsId`.
435
+ :param pulumi.Input[Sequence[pulumi.Input[Union['ApplicationUpstreamArgs', 'ApplicationUpstreamArgsDict']]]] upstreams: Optional. List of which upstream resource(s) to forward traffic to.
374
436
  """
375
437
  ...
376
438
  @overload
@@ -402,6 +464,34 @@ class Application(pulumi.CustomResource):
402
464
  "hostname": "google.com",
403
465
  }])
404
466
  ```
467
+ ### Beyondcorp Security Gateway Application Vpc
468
+
469
+ ```python
470
+ import pulumi
471
+ import pulumi_gcp as gcp
472
+
473
+ project = gcp.organizations.get_project()
474
+ default = gcp.beyondcorp.SecurityGateway("default",
475
+ security_gateway_id="default",
476
+ display_name="My Security Gateway resource",
477
+ hubs=[{
478
+ "region": "us-central1",
479
+ }])
480
+ example = gcp.beyondcorp.Application("example",
481
+ security_gateways_id=default.security_gateway_id,
482
+ application_id="my-vm-service",
483
+ endpoint_matchers=[{
484
+ "hostname": "my-vm-service.com",
485
+ }],
486
+ upstreams=[{
487
+ "egress_policy": {
488
+ "regions": ["us-central1"],
489
+ },
490
+ "network": {
491
+ "name": f"projects/{project.project_id}/global/networks/default",
492
+ },
493
+ }])
494
+ ```
405
495
 
406
496
  ## Import
407
497
 
@@ -447,6 +537,7 @@ class Application(pulumi.CustomResource):
447
537
  endpoint_matchers: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ApplicationEndpointMatcherArgs', 'ApplicationEndpointMatcherArgsDict']]]]] = None,
448
538
  project: Optional[pulumi.Input[builtins.str]] = None,
449
539
  security_gateways_id: Optional[pulumi.Input[builtins.str]] = None,
540
+ upstreams: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ApplicationUpstreamArgs', 'ApplicationUpstreamArgsDict']]]]] = None,
450
541
  __props__=None):
451
542
  opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
452
543
  if not isinstance(opts, pulumi.ResourceOptions):
@@ -467,6 +558,7 @@ class Application(pulumi.CustomResource):
467
558
  if security_gateways_id is None and not opts.urn:
468
559
  raise TypeError("Missing required property 'security_gateways_id'")
469
560
  __props__.__dict__["security_gateways_id"] = security_gateways_id
561
+ __props__.__dict__["upstreams"] = upstreams
470
562
  __props__.__dict__["create_time"] = None
471
563
  __props__.__dict__["name"] = None
472
564
  __props__.__dict__["update_time"] = None
@@ -487,7 +579,8 @@ class Application(pulumi.CustomResource):
487
579
  name: Optional[pulumi.Input[builtins.str]] = None,
488
580
  project: Optional[pulumi.Input[builtins.str]] = None,
489
581
  security_gateways_id: Optional[pulumi.Input[builtins.str]] = None,
490
- update_time: Optional[pulumi.Input[builtins.str]] = None) -> 'Application':
582
+ update_time: Optional[pulumi.Input[builtins.str]] = None,
583
+ upstreams: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ApplicationUpstreamArgs', 'ApplicationUpstreamArgsDict']]]]] = None) -> 'Application':
491
584
  """
492
585
  Get an existing Application resource's state with the given name, id, and optional extra
493
586
  properties used to qualify the lookup.
@@ -516,6 +609,7 @@ class Application(pulumi.CustomResource):
516
609
  :param pulumi.Input[builtins.str] name: Identifier. Name of the resource.
517
610
  :param pulumi.Input[builtins.str] security_gateways_id: Part of `parent`. See documentation of `projectsId`.
518
611
  :param pulumi.Input[builtins.str] update_time: Output only. Timestamp when the resource was last modified.
612
+ :param pulumi.Input[Sequence[pulumi.Input[Union['ApplicationUpstreamArgs', 'ApplicationUpstreamArgsDict']]]] upstreams: Optional. List of which upstream resource(s) to forward traffic to.
519
613
  """
520
614
  opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
521
615
 
@@ -529,6 +623,7 @@ class Application(pulumi.CustomResource):
529
623
  __props__.__dict__["project"] = project
530
624
  __props__.__dict__["security_gateways_id"] = security_gateways_id
531
625
  __props__.__dict__["update_time"] = update_time
626
+ __props__.__dict__["upstreams"] = upstreams
532
627
  return Application(resource_name, opts=opts, __props__=__props__)
533
628
 
534
629
  @property
@@ -606,3 +701,11 @@ class Application(pulumi.CustomResource):
606
701
  """
607
702
  return pulumi.get(self, "update_time")
608
703
 
704
+ @property
705
+ @pulumi.getter
706
+ def upstreams(self) -> pulumi.Output[Optional[Sequence['outputs.ApplicationUpstream']]]:
707
+ """
708
+ Optional. List of which upstream resource(s) to forward traffic to.
709
+ """
710
+ return pulumi.get(self, "upstreams")
711
+
@@ -25,6 +25,9 @@ __all__ = [
25
25
  'ApplicationEndpointMatcher',
26
26
  'ApplicationIamBindingCondition',
27
27
  'ApplicationIamMemberCondition',
28
+ 'ApplicationUpstream',
29
+ 'ApplicationUpstreamEgressPolicy',
30
+ 'ApplicationUpstreamNetwork',
28
31
  'SecurityGatewayHub',
29
32
  'SecurityGatewayHubInternetGateway',
30
33
  'SecurityGatewayIamBindingCondition',
@@ -367,6 +370,96 @@ class ApplicationIamMemberCondition(dict):
367
370
  return pulumi.get(self, "description")
368
371
 
369
372
 
373
+ @pulumi.output_type
374
+ class ApplicationUpstream(dict):
375
+ @staticmethod
376
+ def __key_warning(key: str):
377
+ suggest = None
378
+ if key == "egressPolicy":
379
+ suggest = "egress_policy"
380
+
381
+ if suggest:
382
+ pulumi.log.warn(f"Key '{key}' not found in ApplicationUpstream. Access the value via the '{suggest}' property getter instead.")
383
+
384
+ def __getitem__(self, key: str) -> Any:
385
+ ApplicationUpstream.__key_warning(key)
386
+ return super().__getitem__(key)
387
+
388
+ def get(self, key: str, default = None) -> Any:
389
+ ApplicationUpstream.__key_warning(key)
390
+ return super().get(key, default)
391
+
392
+ def __init__(__self__, *,
393
+ egress_policy: Optional['outputs.ApplicationUpstreamEgressPolicy'] = None,
394
+ network: Optional['outputs.ApplicationUpstreamNetwork'] = None):
395
+ """
396
+ :param 'ApplicationUpstreamEgressPolicyArgs' egress_policy: Optional. Routing policy information.
397
+ Structure is documented below.
398
+ :param 'ApplicationUpstreamNetworkArgs' network: Network to forward traffic to.
399
+ Structure is documented below.
400
+ """
401
+ if egress_policy is not None:
402
+ pulumi.set(__self__, "egress_policy", egress_policy)
403
+ if network is not None:
404
+ pulumi.set(__self__, "network", network)
405
+
406
+ @property
407
+ @pulumi.getter(name="egressPolicy")
408
+ def egress_policy(self) -> Optional['outputs.ApplicationUpstreamEgressPolicy']:
409
+ """
410
+ Optional. Routing policy information.
411
+ Structure is documented below.
412
+ """
413
+ return pulumi.get(self, "egress_policy")
414
+
415
+ @property
416
+ @pulumi.getter
417
+ def network(self) -> Optional['outputs.ApplicationUpstreamNetwork']:
418
+ """
419
+ Network to forward traffic to.
420
+ Structure is documented below.
421
+ """
422
+ return pulumi.get(self, "network")
423
+
424
+
425
+ @pulumi.output_type
426
+ class ApplicationUpstreamEgressPolicy(dict):
427
+ def __init__(__self__, *,
428
+ regions: Sequence[builtins.str]):
429
+ """
430
+ :param Sequence[builtins.str] regions: Required. List of regions where the application sends traffic to.
431
+ """
432
+ pulumi.set(__self__, "regions", regions)
433
+
434
+ @property
435
+ @pulumi.getter
436
+ def regions(self) -> Sequence[builtins.str]:
437
+ """
438
+ Required. List of regions where the application sends traffic to.
439
+ """
440
+ return pulumi.get(self, "regions")
441
+
442
+
443
+ @pulumi.output_type
444
+ class ApplicationUpstreamNetwork(dict):
445
+ def __init__(__self__, *,
446
+ name: builtins.str):
447
+ """
448
+ :param builtins.str name: Required. Network name is of the format:
449
+ `projects/{project}/global/networks/{network}`
450
+ """
451
+ pulumi.set(__self__, "name", name)
452
+
453
+ @property
454
+ @pulumi.getter
455
+ def name(self) -> builtins.str:
456
+ """
457
+ Required. Network name is of the format:
458
+ `projects/{project}/global/networks/{network}`
459
+ """
460
+ return pulumi.get(self, "name")
461
+
462
+
370
463
  @pulumi.output_type
371
464
  class SecurityGatewayHub(dict):
372
465
  @staticmethod
@@ -14,6 +14,8 @@ from .instance import *
14
14
  from .instance_iam_binding import *
15
15
  from .instance_iam_member import *
16
16
  from .instance_iam_policy import *
17
+ from .logical_view import *
18
+ from .materialized_view import *
17
19
  from .table import *
18
20
  from .table_iam_binding import *
19
21
  from .table_iam_member import *