pulumi-gcp 7.15.0a1711038061__py3-none-any.whl → 7.16.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 (83) hide show
  1. pulumi_gcp/__init__.py +102 -0
  2. pulumi_gcp/accesscontextmanager/__init__.py +1 -0
  3. pulumi_gcp/accesscontextmanager/_inputs.py +74 -58
  4. pulumi_gcp/accesscontextmanager/outputs.py +74 -58
  5. pulumi_gcp/accesscontextmanager/service_perimeter.py +0 -2
  6. pulumi_gcp/accesscontextmanager/service_perimeter_dry_run_resource.py +345 -0
  7. pulumi_gcp/accesscontextmanager/service_perimeter_egress_policy.py +80 -0
  8. pulumi_gcp/accesscontextmanager/service_perimeter_ingress_policy.py +86 -0
  9. pulumi_gcp/accesscontextmanager/service_perimeter_resource.py +4 -2
  10. pulumi_gcp/apphub/__init__.py +15 -0
  11. pulumi_gcp/apphub/_inputs.py +1016 -0
  12. pulumi_gcp/apphub/application.py +775 -0
  13. pulumi_gcp/apphub/get_discovered_service.py +180 -0
  14. pulumi_gcp/apphub/get_discovered_workload.py +180 -0
  15. pulumi_gcp/apphub/outputs.py +1206 -0
  16. pulumi_gcp/apphub/service.py +1121 -0
  17. pulumi_gcp/apphub/service_project_attachment.py +516 -0
  18. pulumi_gcp/apphub/workload.py +1197 -0
  19. pulumi_gcp/cloudquota/__init__.py +10 -0
  20. pulumi_gcp/cloudquota/get_s_quota_info.py +322 -0
  21. pulumi_gcp/cloudquota/get_s_quota_infos.py +136 -0
  22. pulumi_gcp/cloudquota/outputs.py +375 -0
  23. pulumi_gcp/cloudrunv2/_inputs.py +85 -4
  24. pulumi_gcp/cloudrunv2/get_service.py +11 -1
  25. pulumi_gcp/cloudrunv2/outputs.py +165 -6
  26. pulumi_gcp/cloudrunv2/service.py +60 -6
  27. pulumi_gcp/composer/_inputs.py +16 -0
  28. pulumi_gcp/composer/outputs.py +23 -0
  29. pulumi_gcp/compute/_inputs.py +109 -11
  30. pulumi_gcp/compute/outputs.py +144 -13
  31. pulumi_gcp/compute/region_network_endpoint_group.py +30 -0
  32. pulumi_gcp/compute/region_url_map.py +152 -0
  33. pulumi_gcp/config/__init__.pyi +4 -0
  34. pulumi_gcp/config/vars.py +8 -0
  35. pulumi_gcp/dataform/repository.py +4 -74
  36. pulumi_gcp/firebase/__init__.py +1 -0
  37. pulumi_gcp/firebase/android_app.py +41 -40
  38. pulumi_gcp/firebase/app_check_device_check_config.py +572 -0
  39. pulumi_gcp/firestore/_inputs.py +69 -0
  40. pulumi_gcp/firestore/database.py +206 -0
  41. pulumi_gcp/firestore/index.py +34 -48
  42. pulumi_gcp/firestore/outputs.py +80 -0
  43. pulumi_gcp/gkeonprem/_inputs.py +1 -3
  44. pulumi_gcp/gkeonprem/outputs.py +1 -3
  45. pulumi_gcp/gkeonprem/v_mware_cluster.py +2 -0
  46. pulumi_gcp/iap/__init__.py +5 -0
  47. pulumi_gcp/iap/_inputs.py +100 -0
  48. pulumi_gcp/iap/get_tunnel_dest_group_iam_policy.py +172 -0
  49. pulumi_gcp/iap/outputs.py +76 -0
  50. pulumi_gcp/iap/tunnel_dest_group.py +524 -0
  51. pulumi_gcp/iap/tunnel_dest_group_iam_binding.py +858 -0
  52. pulumi_gcp/iap/tunnel_dest_group_iam_member.py +858 -0
  53. pulumi_gcp/iap/tunnel_dest_group_iam_policy.py +760 -0
  54. pulumi_gcp/kms/__init__.py +1 -0
  55. pulumi_gcp/kms/_inputs.py +246 -0
  56. pulumi_gcp/kms/ekm_connection.py +610 -0
  57. pulumi_gcp/kms/outputs.py +242 -0
  58. pulumi_gcp/monitoring/_inputs.py +2 -0
  59. pulumi_gcp/monitoring/outputs.py +2 -0
  60. pulumi_gcp/networksecurity/__init__.py +1 -0
  61. pulumi_gcp/networksecurity/firewall_endpoint.py +48 -0
  62. pulumi_gcp/networksecurity/firewall_endpoint_association.py +753 -0
  63. pulumi_gcp/notebooks/instance.py +8 -0
  64. pulumi_gcp/orgpolicy/policy.py +2 -2
  65. pulumi_gcp/provider.py +40 -0
  66. pulumi_gcp/pubsub/_inputs.py +108 -0
  67. pulumi_gcp/pubsub/get_topic.py +11 -1
  68. pulumi_gcp/pubsub/outputs.py +213 -0
  69. pulumi_gcp/pubsub/subscription.py +4 -4
  70. pulumi_gcp/pubsub/topic.py +92 -0
  71. pulumi_gcp/securityposture/posture.py +2 -2
  72. pulumi_gcp/securityposture/posture_deployment.py +2 -2
  73. pulumi_gcp/storage/_inputs.py +72 -15
  74. pulumi_gcp/storage/bucket.py +54 -0
  75. pulumi_gcp/storage/get_bucket.py +11 -1
  76. pulumi_gcp/storage/outputs.py +110 -14
  77. pulumi_gcp/workstations/_inputs.py +247 -4
  78. pulumi_gcp/workstations/outputs.py +261 -5
  79. pulumi_gcp/workstations/workstation_config.py +160 -0
  80. {pulumi_gcp-7.15.0a1711038061.dist-info → pulumi_gcp-7.16.0.dist-info}/METADATA +1 -1
  81. {pulumi_gcp-7.15.0a1711038061.dist-info → pulumi_gcp-7.16.0.dist-info}/RECORD +83 -61
  82. {pulumi_gcp-7.15.0a1711038061.dist-info → pulumi_gcp-7.16.0.dist-info}/WHEEL +0 -0
  83. {pulumi_gcp-7.15.0a1711038061.dist-info → pulumi_gcp-7.16.0.dist-info}/top_level.txt +0 -0
@@ -1668,8 +1668,8 @@ class ServicePerimeterEgressPolicyEgressFrom(dict):
1668
1668
  sources: Optional[Sequence['outputs.ServicePerimeterEgressPolicyEgressFromSource']] = None):
1669
1669
  """
1670
1670
  :param Sequence[str] identities: A list of identities that are allowed access through this `EgressPolicy`.
1671
- Should be in the format of email address. The email address should
1672
- represent individual user or service account only.
1671
+ Should be in the format of an email address. The email address should
1672
+ represent an individual user, service account, or Google group.
1673
1673
  :param str identity_type: Specifies the type of identities that are allowed access to outside the
1674
1674
  perimeter. If left unspecified, then members of `identities` field will
1675
1675
  be allowed access.
@@ -1693,8 +1693,8 @@ class ServicePerimeterEgressPolicyEgressFrom(dict):
1693
1693
  def identities(self) -> Optional[Sequence[str]]:
1694
1694
  """
1695
1695
  A list of identities that are allowed access through this `EgressPolicy`.
1696
- Should be in the format of email address. The email address should
1697
- represent individual user or service account only.
1696
+ Should be in the format of an email address. The email address should
1697
+ represent an individual user, service account, or Google group.
1698
1698
  """
1699
1699
  return pulumi.get(self, "identities")
1700
1700
 
@@ -1963,9 +1963,9 @@ class ServicePerimeterIngressPolicyIngressFrom(dict):
1963
1963
  identity_type: Optional[str] = None,
1964
1964
  sources: Optional[Sequence['outputs.ServicePerimeterIngressPolicyIngressFromSource']] = None):
1965
1965
  """
1966
- :param Sequence[str] identities: A list of identities that are allowed access through this ingress policy.
1967
- Should be in the format of email address. The email address should represent
1968
- individual user or service account only.
1966
+ :param Sequence[str] identities: A list of identities that are allowed access through this `IngressPolicy`.
1967
+ Should be in the format of an email address. The email address should represent
1968
+ an individual user, service account, or Google group.
1969
1969
  :param str identity_type: Specifies the type of identities that are allowed access from outside the
1970
1970
  perimeter. If left unspecified, then members of `identities` field will be
1971
1971
  allowed access.
@@ -1984,9 +1984,9 @@ class ServicePerimeterIngressPolicyIngressFrom(dict):
1984
1984
  @pulumi.getter
1985
1985
  def identities(self) -> Optional[Sequence[str]]:
1986
1986
  """
1987
- A list of identities that are allowed access through this ingress policy.
1988
- Should be in the format of email address. The email address should represent
1989
- individual user or service account only.
1987
+ A list of identities that are allowed access through this `IngressPolicy`.
1988
+ Should be in the format of an email address. The email address should represent
1989
+ an individual user, service account, or Google group.
1990
1990
  """
1991
1991
  return pulumi.get(self, "identities")
1992
1992
 
@@ -2466,9 +2466,10 @@ class ServicePerimeterSpecEgressPolicyEgressFrom(dict):
2466
2466
  source_restriction: Optional[str] = None,
2467
2467
  sources: Optional[Sequence['outputs.ServicePerimeterSpecEgressPolicyEgressFromSource']] = None):
2468
2468
  """
2469
- :param Sequence[str] identities: A list of identities that are allowed access through this `EgressPolicy`.
2470
- Should be in the format of email address. The email address should
2471
- represent individual user or service account only.
2469
+ :param Sequence[str] identities: 'A list of identities that are allowed access through this `EgressPolicy`.
2470
+ To specify an identity or identity group, use the IAM v1
2471
+ format specified [here](https://cloud.google.com/iam/docs/principal-identifiers.md#v1).
2472
+ The following prefixes are supprted: user, group, serviceAccount, principal, and principalSet.'
2472
2473
  :param str identity_type: Specifies the type of identities that are allowed access to outside the
2473
2474
  perimeter. If left unspecified, then members of `identities` field will
2474
2475
  be allowed access.
@@ -2491,9 +2492,10 @@ class ServicePerimeterSpecEgressPolicyEgressFrom(dict):
2491
2492
  @pulumi.getter
2492
2493
  def identities(self) -> Optional[Sequence[str]]:
2493
2494
  """
2494
- A list of identities that are allowed access through this `EgressPolicy`.
2495
- Should be in the format of email address. The email address should
2496
- represent individual user or service account only.
2495
+ 'A list of identities that are allowed access through this `EgressPolicy`.
2496
+ To specify an identity or identity group, use the IAM v1
2497
+ format specified [here](https://cloud.google.com/iam/docs/principal-identifiers.md#v1).
2498
+ The following prefixes are supprted: user, group, serviceAccount, principal, and principalSet.'
2497
2499
  """
2498
2500
  return pulumi.get(self, "identities")
2499
2501
 
@@ -2820,9 +2822,10 @@ class ServicePerimeterSpecIngressPolicyIngressFrom(dict):
2820
2822
  identity_type: Optional[str] = None,
2821
2823
  sources: Optional[Sequence['outputs.ServicePerimeterSpecIngressPolicyIngressFromSource']] = None):
2822
2824
  """
2823
- :param Sequence[str] identities: A list of identities that are allowed access through this ingress policy.
2824
- Should be in the format of email address. The email address should represent
2825
- individual user or service account only.
2825
+ :param Sequence[str] identities: 'A list of identities that are allowed access through this `IngressPolicy`.
2826
+ To specify an identity or identity group, use the IAM v1
2827
+ format specified [here](https://cloud.google.com/iam/docs/principal-identifiers.md#v1).
2828
+ The following prefixes are supprted: user, group, serviceAccount, principal, and principalSet.'
2826
2829
  :param str identity_type: Specifies the type of identities that are allowed access from outside the
2827
2830
  perimeter. If left unspecified, then members of `identities` field will be
2828
2831
  allowed access.
@@ -2841,9 +2844,10 @@ class ServicePerimeterSpecIngressPolicyIngressFrom(dict):
2841
2844
  @pulumi.getter
2842
2845
  def identities(self) -> Optional[Sequence[str]]:
2843
2846
  """
2844
- A list of identities that are allowed access through this ingress policy.
2845
- Should be in the format of email address. The email address should represent
2846
- individual user or service account only.
2847
+ 'A list of identities that are allowed access through this `IngressPolicy`.
2848
+ To specify an identity or identity group, use the IAM v1
2849
+ format specified [here](https://cloud.google.com/iam/docs/principal-identifiers.md#v1).
2850
+ The following prefixes are supprted: user, group, serviceAccount, principal, and principalSet.'
2847
2851
  """
2848
2852
  return pulumi.get(self, "identities")
2849
2853
 
@@ -3363,9 +3367,10 @@ class ServicePerimeterStatusEgressPolicyEgressFrom(dict):
3363
3367
  source_restriction: Optional[str] = None,
3364
3368
  sources: Optional[Sequence['outputs.ServicePerimeterStatusEgressPolicyEgressFromSource']] = None):
3365
3369
  """
3366
- :param Sequence[str] identities: A list of identities that are allowed access through this `EgressPolicy`.
3367
- Should be in the format of email address. The email address should
3368
- represent individual user or service account only.
3370
+ :param Sequence[str] identities: 'A list of identities that are allowed access through this `EgressPolicy`.
3371
+ To specify an identity or identity group, use the IAM v1
3372
+ format specified [here](https://cloud.google.com/iam/docs/principal-identifiers.md#v1).
3373
+ The following prefixes are supprted: user, group, serviceAccount, principal, and principalSet.'
3369
3374
  :param str identity_type: Specifies the type of identities that are allowed access to outside the
3370
3375
  perimeter. If left unspecified, then members of `identities` field will
3371
3376
  be allowed access.
@@ -3388,9 +3393,10 @@ class ServicePerimeterStatusEgressPolicyEgressFrom(dict):
3388
3393
  @pulumi.getter
3389
3394
  def identities(self) -> Optional[Sequence[str]]:
3390
3395
  """
3391
- A list of identities that are allowed access through this `EgressPolicy`.
3392
- Should be in the format of email address. The email address should
3393
- represent individual user or service account only.
3396
+ 'A list of identities that are allowed access through this `EgressPolicy`.
3397
+ To specify an identity or identity group, use the IAM v1
3398
+ format specified [here](https://cloud.google.com/iam/docs/principal-identifiers.md#v1).
3399
+ The following prefixes are supprted: user, group, serviceAccount, principal, and principalSet.'
3394
3400
  """
3395
3401
  return pulumi.get(self, "identities")
3396
3402
 
@@ -3717,9 +3723,10 @@ class ServicePerimeterStatusIngressPolicyIngressFrom(dict):
3717
3723
  identity_type: Optional[str] = None,
3718
3724
  sources: Optional[Sequence['outputs.ServicePerimeterStatusIngressPolicyIngressFromSource']] = None):
3719
3725
  """
3720
- :param Sequence[str] identities: A list of identities that are allowed access through this ingress policy.
3721
- Should be in the format of email address. The email address should represent
3722
- individual user or service account only.
3726
+ :param Sequence[str] identities: 'A list of identities that are allowed access through this `IngressPolicy`.
3727
+ To specify an identity or identity group, use the IAM v1
3728
+ format specified [here](https://cloud.google.com/iam/docs/principal-identifiers.md#v1).
3729
+ The following prefixes are supprted: user, group, serviceAccount, principal, and principalSet.'
3723
3730
  :param str identity_type: Specifies the type of identities that are allowed access from outside the
3724
3731
  perimeter. If left unspecified, then members of `identities` field will be
3725
3732
  allowed access.
@@ -3738,9 +3745,10 @@ class ServicePerimeterStatusIngressPolicyIngressFrom(dict):
3738
3745
  @pulumi.getter
3739
3746
  def identities(self) -> Optional[Sequence[str]]:
3740
3747
  """
3741
- A list of identities that are allowed access through this ingress policy.
3742
- Should be in the format of email address. The email address should represent
3743
- individual user or service account only.
3748
+ 'A list of identities that are allowed access through this `IngressPolicy`.
3749
+ To specify an identity or identity group, use the IAM v1
3750
+ format specified [here](https://cloud.google.com/iam/docs/principal-identifiers.md#v1).
3751
+ The following prefixes are supprted: user, group, serviceAccount, principal, and principalSet.'
3744
3752
  """
3745
3753
  return pulumi.get(self, "identities")
3746
3754
 
@@ -4466,9 +4474,10 @@ class ServicePerimetersServicePerimeterSpecEgressPolicyEgressFrom(dict):
4466
4474
  source_restriction: Optional[str] = None,
4467
4475
  sources: Optional[Sequence['outputs.ServicePerimetersServicePerimeterSpecEgressPolicyEgressFromSource']] = None):
4468
4476
  """
4469
- :param Sequence[str] identities: A list of identities that are allowed access through this `EgressPolicy`.
4470
- Should be in the format of email address. The email address should
4471
- represent individual user or service account only.
4477
+ :param Sequence[str] identities: 'A list of identities that are allowed access through this `EgressPolicy`.
4478
+ To specify an identity or identity group, use the IAM v1 format
4479
+ specified [here](https://cloud.google.com/iam/docs/principal-identifiers.md#v1).
4480
+ The following prefixes are supprted: user, group, serviceAccount, principal, and principalSet.'
4472
4481
  :param str identity_type: Specifies the type of identities that are allowed access to outside the
4473
4482
  perimeter. If left unspecified, then members of `identities` field will
4474
4483
  be allowed access.
@@ -4491,9 +4500,10 @@ class ServicePerimetersServicePerimeterSpecEgressPolicyEgressFrom(dict):
4491
4500
  @pulumi.getter
4492
4501
  def identities(self) -> Optional[Sequence[str]]:
4493
4502
  """
4494
- A list of identities that are allowed access through this `EgressPolicy`.
4495
- Should be in the format of email address. The email address should
4496
- represent individual user or service account only.
4503
+ 'A list of identities that are allowed access through this `EgressPolicy`.
4504
+ To specify an identity or identity group, use the IAM v1 format
4505
+ specified [here](https://cloud.google.com/iam/docs/principal-identifiers.md#v1).
4506
+ The following prefixes are supprted: user, group, serviceAccount, principal, and principalSet.'
4497
4507
  """
4498
4508
  return pulumi.get(self, "identities")
4499
4509
 
@@ -4820,9 +4830,10 @@ class ServicePerimetersServicePerimeterSpecIngressPolicyIngressFrom(dict):
4820
4830
  identity_type: Optional[str] = None,
4821
4831
  sources: Optional[Sequence['outputs.ServicePerimetersServicePerimeterSpecIngressPolicyIngressFromSource']] = None):
4822
4832
  """
4823
- :param Sequence[str] identities: A list of identities that are allowed access through this ingress policy.
4824
- Should be in the format of email address. The email address should represent
4825
- individual user or service account only.
4833
+ :param Sequence[str] identities: 'A list of identities that are allowed access through this `IngressPolicy`.
4834
+ To specify an identity or identity group, use the IAM v1 format
4835
+ specified [here](https://cloud.google.com/iam/docs/principal-identifiers.md#v1).
4836
+ The following prefixes are supprted: user, group, serviceAccount, principal, and principalSet.'
4826
4837
  :param str identity_type: Specifies the type of identities that are allowed access from outside the
4827
4838
  perimeter. If left unspecified, then members of `identities` field will be
4828
4839
  allowed access.
@@ -4841,9 +4852,10 @@ class ServicePerimetersServicePerimeterSpecIngressPolicyIngressFrom(dict):
4841
4852
  @pulumi.getter
4842
4853
  def identities(self) -> Optional[Sequence[str]]:
4843
4854
  """
4844
- A list of identities that are allowed access through this ingress policy.
4845
- Should be in the format of email address. The email address should represent
4846
- individual user or service account only.
4855
+ 'A list of identities that are allowed access through this `IngressPolicy`.
4856
+ To specify an identity or identity group, use the IAM v1 format
4857
+ specified [here](https://cloud.google.com/iam/docs/principal-identifiers.md#v1).
4858
+ The following prefixes are supprted: user, group, serviceAccount, principal, and principalSet.'
4847
4859
  """
4848
4860
  return pulumi.get(self, "identities")
4849
4861
 
@@ -5363,9 +5375,10 @@ class ServicePerimetersServicePerimeterStatusEgressPolicyEgressFrom(dict):
5363
5375
  source_restriction: Optional[str] = None,
5364
5376
  sources: Optional[Sequence['outputs.ServicePerimetersServicePerimeterStatusEgressPolicyEgressFromSource']] = None):
5365
5377
  """
5366
- :param Sequence[str] identities: A list of identities that are allowed access through this `EgressPolicy`.
5367
- Should be in the format of email address. The email address should
5368
- represent individual user or service account only.
5378
+ :param Sequence[str] identities: 'A list of identities that are allowed access through this `EgressPolicy`.
5379
+ To specify an identity or identity group, use the IAM v1 format
5380
+ specified [here](https://cloud.google.com/iam/docs/principal-identifiers.md#v1).
5381
+ The following prefixes are supprted: user, group, serviceAccount, principal, and principalSet.'
5369
5382
  :param str identity_type: Specifies the type of identities that are allowed access to outside the
5370
5383
  perimeter. If left unspecified, then members of `identities` field will
5371
5384
  be allowed access.
@@ -5388,9 +5401,10 @@ class ServicePerimetersServicePerimeterStatusEgressPolicyEgressFrom(dict):
5388
5401
  @pulumi.getter
5389
5402
  def identities(self) -> Optional[Sequence[str]]:
5390
5403
  """
5391
- A list of identities that are allowed access through this `EgressPolicy`.
5392
- Should be in the format of email address. The email address should
5393
- represent individual user or service account only.
5404
+ 'A list of identities that are allowed access through this `EgressPolicy`.
5405
+ To specify an identity or identity group, use the IAM v1 format
5406
+ specified [here](https://cloud.google.com/iam/docs/principal-identifiers.md#v1).
5407
+ The following prefixes are supprted: user, group, serviceAccount, principal, and principalSet.'
5394
5408
  """
5395
5409
  return pulumi.get(self, "identities")
5396
5410
 
@@ -5717,9 +5731,10 @@ class ServicePerimetersServicePerimeterStatusIngressPolicyIngressFrom(dict):
5717
5731
  identity_type: Optional[str] = None,
5718
5732
  sources: Optional[Sequence['outputs.ServicePerimetersServicePerimeterStatusIngressPolicyIngressFromSource']] = None):
5719
5733
  """
5720
- :param Sequence[str] identities: A list of identities that are allowed access through this ingress policy.
5721
- Should be in the format of email address. The email address should represent
5722
- individual user or service account only.
5734
+ :param Sequence[str] identities: 'A list of identities that are allowed access through this `IngressPolicy`.
5735
+ To specify an identity or identity group, use the IAM v1 format
5736
+ specified [here](https://cloud.google.com/iam/docs/principal-identifiers.md#v1).
5737
+ The following prefixes are supprted: user, group, serviceAccount, principal, and principalSet.'
5723
5738
  :param str identity_type: Specifies the type of identities that are allowed access from outside the
5724
5739
  perimeter. If left unspecified, then members of `identities` field will be
5725
5740
  allowed access.
@@ -5738,9 +5753,10 @@ class ServicePerimetersServicePerimeterStatusIngressPolicyIngressFrom(dict):
5738
5753
  @pulumi.getter
5739
5754
  def identities(self) -> Optional[Sequence[str]]:
5740
5755
  """
5741
- A list of identities that are allowed access through this ingress policy.
5742
- Should be in the format of email address. The email address should represent
5743
- individual user or service account only.
5756
+ 'A list of identities that are allowed access through this `IngressPolicy`.
5757
+ To specify an identity or identity group, use the IAM v1 format
5758
+ specified [here](https://cloud.google.com/iam/docs/principal-identifiers.md#v1).
5759
+ The following prefixes are supprted: user, group, serviceAccount, principal, and principalSet.'
5744
5760
  """
5745
5761
  return pulumi.get(self, "identities")
5746
5762
 
@@ -673,7 +673,6 @@ class ServicePerimeter(pulumi.CustomResource):
673
673
  use_explicit_dry_run_spec=True)
674
674
  ```
675
675
  <!--End PulumiCodeChooser -->
676
-
677
676
  ## Import
678
677
 
679
678
  ServicePerimeter can be imported using any of these accepted formats:
@@ -936,7 +935,6 @@ class ServicePerimeter(pulumi.CustomResource):
936
935
  use_explicit_dry_run_spec=True)
937
936
  ```
938
937
  <!--End PulumiCodeChooser -->
939
-
940
938
  ## Import
941
939
 
942
940
  ServicePerimeter can be imported using any of these accepted formats:
@@ -0,0 +1,345 @@
1
+ # coding=utf-8
2
+ # *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
3
+ # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+
5
+ import copy
6
+ import warnings
7
+ import pulumi
8
+ import pulumi.runtime
9
+ from typing import Any, Mapping, Optional, Sequence, Union, overload
10
+ from .. import _utilities
11
+
12
+ __all__ = ['ServicePerimeterDryRunResourceArgs', 'ServicePerimeterDryRunResource']
13
+
14
+ @pulumi.input_type
15
+ class ServicePerimeterDryRunResourceArgs:
16
+ def __init__(__self__, *,
17
+ perimeter_name: pulumi.Input[str],
18
+ resource: pulumi.Input[str]):
19
+ """
20
+ The set of arguments for constructing a ServicePerimeterDryRunResource resource.
21
+ :param pulumi.Input[str] perimeter_name: The name of the Service Perimeter to add this resource to.
22
+
23
+
24
+ - - -
25
+ :param pulumi.Input[str] resource: A GCP resource that is inside of the service perimeter.
26
+ Currently only projects are allowed.
27
+ Format: projects/{project_number}
28
+ """
29
+ pulumi.set(__self__, "perimeter_name", perimeter_name)
30
+ pulumi.set(__self__, "resource", resource)
31
+
32
+ @property
33
+ @pulumi.getter(name="perimeterName")
34
+ def perimeter_name(self) -> pulumi.Input[str]:
35
+ """
36
+ The name of the Service Perimeter to add this resource to.
37
+
38
+
39
+ - - -
40
+ """
41
+ return pulumi.get(self, "perimeter_name")
42
+
43
+ @perimeter_name.setter
44
+ def perimeter_name(self, value: pulumi.Input[str]):
45
+ pulumi.set(self, "perimeter_name", value)
46
+
47
+ @property
48
+ @pulumi.getter
49
+ def resource(self) -> pulumi.Input[str]:
50
+ """
51
+ A GCP resource that is inside of the service perimeter.
52
+ Currently only projects are allowed.
53
+ Format: projects/{project_number}
54
+ """
55
+ return pulumi.get(self, "resource")
56
+
57
+ @resource.setter
58
+ def resource(self, value: pulumi.Input[str]):
59
+ pulumi.set(self, "resource", value)
60
+
61
+
62
+ @pulumi.input_type
63
+ class _ServicePerimeterDryRunResourceState:
64
+ def __init__(__self__, *,
65
+ perimeter_name: Optional[pulumi.Input[str]] = None,
66
+ resource: Optional[pulumi.Input[str]] = None):
67
+ """
68
+ Input properties used for looking up and filtering ServicePerimeterDryRunResource resources.
69
+ :param pulumi.Input[str] perimeter_name: The name of the Service Perimeter to add this resource to.
70
+
71
+
72
+ - - -
73
+ :param pulumi.Input[str] resource: A GCP resource that is inside of the service perimeter.
74
+ Currently only projects are allowed.
75
+ Format: projects/{project_number}
76
+ """
77
+ if perimeter_name is not None:
78
+ pulumi.set(__self__, "perimeter_name", perimeter_name)
79
+ if resource is not None:
80
+ pulumi.set(__self__, "resource", resource)
81
+
82
+ @property
83
+ @pulumi.getter(name="perimeterName")
84
+ def perimeter_name(self) -> Optional[pulumi.Input[str]]:
85
+ """
86
+ The name of the Service Perimeter to add this resource to.
87
+
88
+
89
+ - - -
90
+ """
91
+ return pulumi.get(self, "perimeter_name")
92
+
93
+ @perimeter_name.setter
94
+ def perimeter_name(self, value: Optional[pulumi.Input[str]]):
95
+ pulumi.set(self, "perimeter_name", value)
96
+
97
+ @property
98
+ @pulumi.getter
99
+ def resource(self) -> Optional[pulumi.Input[str]]:
100
+ """
101
+ A GCP resource that is inside of the service perimeter.
102
+ Currently only projects are allowed.
103
+ Format: projects/{project_number}
104
+ """
105
+ return pulumi.get(self, "resource")
106
+
107
+ @resource.setter
108
+ def resource(self, value: Optional[pulumi.Input[str]]):
109
+ pulumi.set(self, "resource", value)
110
+
111
+
112
+ class ServicePerimeterDryRunResource(pulumi.CustomResource):
113
+ @overload
114
+ def __init__(__self__,
115
+ resource_name: str,
116
+ opts: Optional[pulumi.ResourceOptions] = None,
117
+ perimeter_name: Optional[pulumi.Input[str]] = None,
118
+ resource: Optional[pulumi.Input[str]] = None,
119
+ __props__=None):
120
+ """
121
+ Allows configuring a single GCP resource that should be inside of the `spec` block of a dry run service perimeter.
122
+ This resource is intended to be used in cases where it is not possible to compile a full list
123
+ of projects to include in a `accesscontextmanager.ServicePerimeter` resource,
124
+ to enable them to be added separately.
125
+ If your perimeter is NOT in dry-run mode use `accesscontextmanager.ServicePerimeterResource` instead.
126
+
127
+ > **Note:** If this resource is used alongside a `accesscontextmanager.ServicePerimeter` resource,
128
+ the service perimeter resource must have a `lifecycle` block with `ignore_changes = [spec[0].resources]` so
129
+ they don't fight over which resources should be in the policy.
130
+
131
+ To get more information about ServicePerimeterDryRunResource, see:
132
+
133
+ * [API documentation](https://cloud.google.com/access-context-manager/docs/reference/rest/v1/accessPolicies.servicePerimeters)
134
+ * How-to Guides
135
+ * [Service Perimeter Quickstart](https://cloud.google.com/vpc-service-controls/docs/quickstart)
136
+
137
+ > **Warning:** If you are using User ADCs (Application Default Credentials) with this resource,
138
+ you must specify a `billing_project` and set `user_project_override` to true
139
+ in the provider configuration. Otherwise the ACM API will return a 403 error.
140
+ Your account must have the `serviceusage.services.use` permission on the
141
+ `billing_project` you defined.
142
+
143
+ ## Example Usage
144
+
145
+ ### Access Context Manager Service Perimeter Dry Run Resource Basic
146
+
147
+ <!--Start PulumiCodeChooser -->
148
+ ```python
149
+ import pulumi
150
+ import pulumi_gcp as gcp
151
+
152
+ access_policy = gcp.accesscontextmanager.AccessPolicy("access-policy",
153
+ parent="organizations/123456789",
154
+ title="my policy")
155
+ service_perimeter_dry_run_resource_service_perimeter = gcp.accesscontextmanager.ServicePerimeter("service-perimeter-dry-run-resource",
156
+ parent=access_policy.name.apply(lambda name: f"accessPolicies/{name}"),
157
+ name=access_policy.name.apply(lambda name: f"accessPolicies/{name}/servicePerimeters/restrict_all"),
158
+ title="restrict_all",
159
+ spec=gcp.accesscontextmanager.ServicePerimeterSpecArgs(
160
+ restricted_services=["storage.googleapis.com"],
161
+ ),
162
+ use_explicit_dry_run_spec=True)
163
+ service_perimeter_dry_run_resource = gcp.accesscontextmanager.ServicePerimeterDryRunResource("service-perimeter-dry-run-resource",
164
+ perimeter_name=service_perimeter_dry_run_resource_service_perimeter.name,
165
+ resource="projects/987654321")
166
+ ```
167
+ <!--End PulumiCodeChooser -->
168
+
169
+ ## Import
170
+
171
+ ServicePerimeterDryRunResource can be imported using any of these accepted formats:
172
+
173
+ * `{{perimeter_name}}/{{resource}}`
174
+
175
+ When using the `pulumi import` command, ServicePerimeterDryRunResource can be imported using one of the formats above. For example:
176
+
177
+ ```sh
178
+ $ pulumi import gcp:accesscontextmanager/servicePerimeterDryRunResource:ServicePerimeterDryRunResource default {{perimeter_name}}/{{resource}}
179
+ ```
180
+
181
+ :param str resource_name: The name of the resource.
182
+ :param pulumi.ResourceOptions opts: Options for the resource.
183
+ :param pulumi.Input[str] perimeter_name: The name of the Service Perimeter to add this resource to.
184
+
185
+
186
+ - - -
187
+ :param pulumi.Input[str] resource: A GCP resource that is inside of the service perimeter.
188
+ Currently only projects are allowed.
189
+ Format: projects/{project_number}
190
+ """
191
+ ...
192
+ @overload
193
+ def __init__(__self__,
194
+ resource_name: str,
195
+ args: ServicePerimeterDryRunResourceArgs,
196
+ opts: Optional[pulumi.ResourceOptions] = None):
197
+ """
198
+ Allows configuring a single GCP resource that should be inside of the `spec` block of a dry run service perimeter.
199
+ This resource is intended to be used in cases where it is not possible to compile a full list
200
+ of projects to include in a `accesscontextmanager.ServicePerimeter` resource,
201
+ to enable them to be added separately.
202
+ If your perimeter is NOT in dry-run mode use `accesscontextmanager.ServicePerimeterResource` instead.
203
+
204
+ > **Note:** If this resource is used alongside a `accesscontextmanager.ServicePerimeter` resource,
205
+ the service perimeter resource must have a `lifecycle` block with `ignore_changes = [spec[0].resources]` so
206
+ they don't fight over which resources should be in the policy.
207
+
208
+ To get more information about ServicePerimeterDryRunResource, see:
209
+
210
+ * [API documentation](https://cloud.google.com/access-context-manager/docs/reference/rest/v1/accessPolicies.servicePerimeters)
211
+ * How-to Guides
212
+ * [Service Perimeter Quickstart](https://cloud.google.com/vpc-service-controls/docs/quickstart)
213
+
214
+ > **Warning:** If you are using User ADCs (Application Default Credentials) with this resource,
215
+ you must specify a `billing_project` and set `user_project_override` to true
216
+ in the provider configuration. Otherwise the ACM API will return a 403 error.
217
+ Your account must have the `serviceusage.services.use` permission on the
218
+ `billing_project` you defined.
219
+
220
+ ## Example Usage
221
+
222
+ ### Access Context Manager Service Perimeter Dry Run Resource Basic
223
+
224
+ <!--Start PulumiCodeChooser -->
225
+ ```python
226
+ import pulumi
227
+ import pulumi_gcp as gcp
228
+
229
+ access_policy = gcp.accesscontextmanager.AccessPolicy("access-policy",
230
+ parent="organizations/123456789",
231
+ title="my policy")
232
+ service_perimeter_dry_run_resource_service_perimeter = gcp.accesscontextmanager.ServicePerimeter("service-perimeter-dry-run-resource",
233
+ parent=access_policy.name.apply(lambda name: f"accessPolicies/{name}"),
234
+ name=access_policy.name.apply(lambda name: f"accessPolicies/{name}/servicePerimeters/restrict_all"),
235
+ title="restrict_all",
236
+ spec=gcp.accesscontextmanager.ServicePerimeterSpecArgs(
237
+ restricted_services=["storage.googleapis.com"],
238
+ ),
239
+ use_explicit_dry_run_spec=True)
240
+ service_perimeter_dry_run_resource = gcp.accesscontextmanager.ServicePerimeterDryRunResource("service-perimeter-dry-run-resource",
241
+ perimeter_name=service_perimeter_dry_run_resource_service_perimeter.name,
242
+ resource="projects/987654321")
243
+ ```
244
+ <!--End PulumiCodeChooser -->
245
+
246
+ ## Import
247
+
248
+ ServicePerimeterDryRunResource can be imported using any of these accepted formats:
249
+
250
+ * `{{perimeter_name}}/{{resource}}`
251
+
252
+ When using the `pulumi import` command, ServicePerimeterDryRunResource can be imported using one of the formats above. For example:
253
+
254
+ ```sh
255
+ $ pulumi import gcp:accesscontextmanager/servicePerimeterDryRunResource:ServicePerimeterDryRunResource default {{perimeter_name}}/{{resource}}
256
+ ```
257
+
258
+ :param str resource_name: The name of the resource.
259
+ :param ServicePerimeterDryRunResourceArgs args: The arguments to use to populate this resource's properties.
260
+ :param pulumi.ResourceOptions opts: Options for the resource.
261
+ """
262
+ ...
263
+ def __init__(__self__, resource_name: str, *args, **kwargs):
264
+ resource_args, opts = _utilities.get_resource_args_opts(ServicePerimeterDryRunResourceArgs, pulumi.ResourceOptions, *args, **kwargs)
265
+ if resource_args is not None:
266
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
267
+ else:
268
+ __self__._internal_init(resource_name, *args, **kwargs)
269
+
270
+ def _internal_init(__self__,
271
+ resource_name: str,
272
+ opts: Optional[pulumi.ResourceOptions] = None,
273
+ perimeter_name: Optional[pulumi.Input[str]] = None,
274
+ resource: Optional[pulumi.Input[str]] = None,
275
+ __props__=None):
276
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
277
+ if not isinstance(opts, pulumi.ResourceOptions):
278
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
279
+ if opts.id is None:
280
+ if __props__ is not None:
281
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
282
+ __props__ = ServicePerimeterDryRunResourceArgs.__new__(ServicePerimeterDryRunResourceArgs)
283
+
284
+ if perimeter_name is None and not opts.urn:
285
+ raise TypeError("Missing required property 'perimeter_name'")
286
+ __props__.__dict__["perimeter_name"] = perimeter_name
287
+ if resource is None and not opts.urn:
288
+ raise TypeError("Missing required property 'resource'")
289
+ __props__.__dict__["resource"] = resource
290
+ super(ServicePerimeterDryRunResource, __self__).__init__(
291
+ 'gcp:accesscontextmanager/servicePerimeterDryRunResource:ServicePerimeterDryRunResource',
292
+ resource_name,
293
+ __props__,
294
+ opts)
295
+
296
+ @staticmethod
297
+ def get(resource_name: str,
298
+ id: pulumi.Input[str],
299
+ opts: Optional[pulumi.ResourceOptions] = None,
300
+ perimeter_name: Optional[pulumi.Input[str]] = None,
301
+ resource: Optional[pulumi.Input[str]] = None) -> 'ServicePerimeterDryRunResource':
302
+ """
303
+ Get an existing ServicePerimeterDryRunResource resource's state with the given name, id, and optional extra
304
+ properties used to qualify the lookup.
305
+
306
+ :param str resource_name: The unique name of the resulting resource.
307
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
308
+ :param pulumi.ResourceOptions opts: Options for the resource.
309
+ :param pulumi.Input[str] perimeter_name: The name of the Service Perimeter to add this resource to.
310
+
311
+
312
+ - - -
313
+ :param pulumi.Input[str] resource: A GCP resource that is inside of the service perimeter.
314
+ Currently only projects are allowed.
315
+ Format: projects/{project_number}
316
+ """
317
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
318
+
319
+ __props__ = _ServicePerimeterDryRunResourceState.__new__(_ServicePerimeterDryRunResourceState)
320
+
321
+ __props__.__dict__["perimeter_name"] = perimeter_name
322
+ __props__.__dict__["resource"] = resource
323
+ return ServicePerimeterDryRunResource(resource_name, opts=opts, __props__=__props__)
324
+
325
+ @property
326
+ @pulumi.getter(name="perimeterName")
327
+ def perimeter_name(self) -> pulumi.Output[str]:
328
+ """
329
+ The name of the Service Perimeter to add this resource to.
330
+
331
+
332
+ - - -
333
+ """
334
+ return pulumi.get(self, "perimeter_name")
335
+
336
+ @property
337
+ @pulumi.getter
338
+ def resource(self) -> pulumi.Output[str]:
339
+ """
340
+ A GCP resource that is inside of the service perimeter.
341
+ Currently only projects are allowed.
342
+ Format: projects/{project_number}
343
+ """
344
+ return pulumi.get(self, "resource")
345
+