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
pulumi_gcp/kms/outputs.py CHANGED
@@ -18,6 +18,8 @@ __all__ = [
18
18
  'CryptoKeyVersionAttestationCertChains',
19
19
  'CryptoKeyVersionAttestationExternalProtectionLevelOptions',
20
20
  'CryptoKeyVersionTemplate',
21
+ 'EkmConnectionServiceResolver',
22
+ 'EkmConnectionServiceResolverServerCertificate',
21
23
  'KeyRingIAMBindingCondition',
22
24
  'KeyRingIAMMemberCondition',
23
25
  'KeyRingImportJobAttestation',
@@ -403,6 +405,246 @@ class CryptoKeyVersionTemplate(dict):
403
405
  return pulumi.get(self, "protection_level")
404
406
 
405
407
 
408
+ @pulumi.output_type
409
+ class EkmConnectionServiceResolver(dict):
410
+ @staticmethod
411
+ def __key_warning(key: str):
412
+ suggest = None
413
+ if key == "serverCertificates":
414
+ suggest = "server_certificates"
415
+ elif key == "serviceDirectoryService":
416
+ suggest = "service_directory_service"
417
+ elif key == "endpointFilter":
418
+ suggest = "endpoint_filter"
419
+
420
+ if suggest:
421
+ pulumi.log.warn(f"Key '{key}' not found in EkmConnectionServiceResolver. Access the value via the '{suggest}' property getter instead.")
422
+
423
+ def __getitem__(self, key: str) -> Any:
424
+ EkmConnectionServiceResolver.__key_warning(key)
425
+ return super().__getitem__(key)
426
+
427
+ def get(self, key: str, default = None) -> Any:
428
+ EkmConnectionServiceResolver.__key_warning(key)
429
+ return super().get(key, default)
430
+
431
+ def __init__(__self__, *,
432
+ hostname: str,
433
+ server_certificates: Sequence['outputs.EkmConnectionServiceResolverServerCertificate'],
434
+ service_directory_service: str,
435
+ endpoint_filter: Optional[str] = None):
436
+ """
437
+ :param str hostname: Required. The hostname of the EKM replica used at TLS and HTTP layers.
438
+ :param Sequence['EkmConnectionServiceResolverServerCertificateArgs'] server_certificates: Required. A list of leaf server certificates used to authenticate HTTPS connections to the EKM replica. Currently, a maximum of 10 Certificate is supported.
439
+ Structure is documented below.
440
+ :param str service_directory_service: Required. The resource name of the Service Directory service pointing to an EKM replica, in the format projects/*/locations/*/namespaces/*/services/*
441
+ :param str endpoint_filter: Optional. The filter applied to the endpoints of the resolved service. If no filter is specified, all endpoints will be considered. An endpoint will be chosen arbitrarily from the filtered list for each request. For endpoint filter syntax and examples, see https://cloud.google.com/service-directory/docs/reference/rpc/google.cloud.servicedirectory.v1#resolveservicerequest.
442
+ """
443
+ pulumi.set(__self__, "hostname", hostname)
444
+ pulumi.set(__self__, "server_certificates", server_certificates)
445
+ pulumi.set(__self__, "service_directory_service", service_directory_service)
446
+ if endpoint_filter is not None:
447
+ pulumi.set(__self__, "endpoint_filter", endpoint_filter)
448
+
449
+ @property
450
+ @pulumi.getter
451
+ def hostname(self) -> str:
452
+ """
453
+ Required. The hostname of the EKM replica used at TLS and HTTP layers.
454
+ """
455
+ return pulumi.get(self, "hostname")
456
+
457
+ @property
458
+ @pulumi.getter(name="serverCertificates")
459
+ def server_certificates(self) -> Sequence['outputs.EkmConnectionServiceResolverServerCertificate']:
460
+ """
461
+ Required. A list of leaf server certificates used to authenticate HTTPS connections to the EKM replica. Currently, a maximum of 10 Certificate is supported.
462
+ Structure is documented below.
463
+ """
464
+ return pulumi.get(self, "server_certificates")
465
+
466
+ @property
467
+ @pulumi.getter(name="serviceDirectoryService")
468
+ def service_directory_service(self) -> str:
469
+ """
470
+ Required. The resource name of the Service Directory service pointing to an EKM replica, in the format projects/*/locations/*/namespaces/*/services/*
471
+ """
472
+ return pulumi.get(self, "service_directory_service")
473
+
474
+ @property
475
+ @pulumi.getter(name="endpointFilter")
476
+ def endpoint_filter(self) -> Optional[str]:
477
+ """
478
+ Optional. The filter applied to the endpoints of the resolved service. If no filter is specified, all endpoints will be considered. An endpoint will be chosen arbitrarily from the filtered list for each request. For endpoint filter syntax and examples, see https://cloud.google.com/service-directory/docs/reference/rpc/google.cloud.servicedirectory.v1#resolveservicerequest.
479
+ """
480
+ return pulumi.get(self, "endpoint_filter")
481
+
482
+
483
+ @pulumi.output_type
484
+ class EkmConnectionServiceResolverServerCertificate(dict):
485
+ @staticmethod
486
+ def __key_warning(key: str):
487
+ suggest = None
488
+ if key == "rawDer":
489
+ suggest = "raw_der"
490
+ elif key == "notAfterTime":
491
+ suggest = "not_after_time"
492
+ elif key == "notBeforeTime":
493
+ suggest = "not_before_time"
494
+ elif key == "serialNumber":
495
+ suggest = "serial_number"
496
+ elif key == "sha256Fingerprint":
497
+ suggest = "sha256_fingerprint"
498
+ elif key == "subjectAlternativeDnsNames":
499
+ suggest = "subject_alternative_dns_names"
500
+
501
+ if suggest:
502
+ pulumi.log.warn(f"Key '{key}' not found in EkmConnectionServiceResolverServerCertificate. Access the value via the '{suggest}' property getter instead.")
503
+
504
+ def __getitem__(self, key: str) -> Any:
505
+ EkmConnectionServiceResolverServerCertificate.__key_warning(key)
506
+ return super().__getitem__(key)
507
+
508
+ def get(self, key: str, default = None) -> Any:
509
+ EkmConnectionServiceResolverServerCertificate.__key_warning(key)
510
+ return super().get(key, default)
511
+
512
+ def __init__(__self__, *,
513
+ raw_der: str,
514
+ issuer: Optional[str] = None,
515
+ not_after_time: Optional[str] = None,
516
+ not_before_time: Optional[str] = None,
517
+ parsed: Optional[bool] = None,
518
+ serial_number: Optional[str] = None,
519
+ sha256_fingerprint: Optional[str] = None,
520
+ subject: Optional[str] = None,
521
+ subject_alternative_dns_names: Optional[Sequence[str]] = None):
522
+ """
523
+ :param str raw_der: Required. The raw certificate bytes in DER format. A base64-encoded string.
524
+ :param str issuer: (Output)
525
+ Output only. The issuer distinguished name in RFC 2253 format. Only present if parsed is true.
526
+ :param str not_after_time: (Output)
527
+ Output only. The certificate is not valid after this time. Only present if parsed is true.
528
+ A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".
529
+ :param str not_before_time: (Output)
530
+ Output only. The certificate is not valid before this time. Only present if parsed is true.
531
+ A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".
532
+ :param bool parsed: (Output)
533
+ Output only. True if the certificate was parsed successfully.
534
+ :param str serial_number: (Output)
535
+ Output only. The certificate serial number as a hex string. Only present if parsed is true.
536
+ :param str sha256_fingerprint: (Output)
537
+ Output only. The SHA-256 certificate fingerprint as a hex string. Only present if parsed is true.
538
+ :param str subject: (Output)
539
+ Output only. The subject distinguished name in RFC 2253 format. Only present if parsed is true.
540
+ :param Sequence[str] subject_alternative_dns_names: (Output)
541
+ Output only. The subject Alternative DNS names. Only present if parsed is true.
542
+
543
+ - - -
544
+ """
545
+ pulumi.set(__self__, "raw_der", raw_der)
546
+ if issuer is not None:
547
+ pulumi.set(__self__, "issuer", issuer)
548
+ if not_after_time is not None:
549
+ pulumi.set(__self__, "not_after_time", not_after_time)
550
+ if not_before_time is not None:
551
+ pulumi.set(__self__, "not_before_time", not_before_time)
552
+ if parsed is not None:
553
+ pulumi.set(__self__, "parsed", parsed)
554
+ if serial_number is not None:
555
+ pulumi.set(__self__, "serial_number", serial_number)
556
+ if sha256_fingerprint is not None:
557
+ pulumi.set(__self__, "sha256_fingerprint", sha256_fingerprint)
558
+ if subject is not None:
559
+ pulumi.set(__self__, "subject", subject)
560
+ if subject_alternative_dns_names is not None:
561
+ pulumi.set(__self__, "subject_alternative_dns_names", subject_alternative_dns_names)
562
+
563
+ @property
564
+ @pulumi.getter(name="rawDer")
565
+ def raw_der(self) -> str:
566
+ """
567
+ Required. The raw certificate bytes in DER format. A base64-encoded string.
568
+ """
569
+ return pulumi.get(self, "raw_der")
570
+
571
+ @property
572
+ @pulumi.getter
573
+ def issuer(self) -> Optional[str]:
574
+ """
575
+ (Output)
576
+ Output only. The issuer distinguished name in RFC 2253 format. Only present if parsed is true.
577
+ """
578
+ return pulumi.get(self, "issuer")
579
+
580
+ @property
581
+ @pulumi.getter(name="notAfterTime")
582
+ def not_after_time(self) -> Optional[str]:
583
+ """
584
+ (Output)
585
+ Output only. The certificate is not valid after this time. Only present if parsed is true.
586
+ A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".
587
+ """
588
+ return pulumi.get(self, "not_after_time")
589
+
590
+ @property
591
+ @pulumi.getter(name="notBeforeTime")
592
+ def not_before_time(self) -> Optional[str]:
593
+ """
594
+ (Output)
595
+ Output only. The certificate is not valid before this time. Only present if parsed is true.
596
+ A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".
597
+ """
598
+ return pulumi.get(self, "not_before_time")
599
+
600
+ @property
601
+ @pulumi.getter
602
+ def parsed(self) -> Optional[bool]:
603
+ """
604
+ (Output)
605
+ Output only. True if the certificate was parsed successfully.
606
+ """
607
+ return pulumi.get(self, "parsed")
608
+
609
+ @property
610
+ @pulumi.getter(name="serialNumber")
611
+ def serial_number(self) -> Optional[str]:
612
+ """
613
+ (Output)
614
+ Output only. The certificate serial number as a hex string. Only present if parsed is true.
615
+ """
616
+ return pulumi.get(self, "serial_number")
617
+
618
+ @property
619
+ @pulumi.getter(name="sha256Fingerprint")
620
+ def sha256_fingerprint(self) -> Optional[str]:
621
+ """
622
+ (Output)
623
+ Output only. The SHA-256 certificate fingerprint as a hex string. Only present if parsed is true.
624
+ """
625
+ return pulumi.get(self, "sha256_fingerprint")
626
+
627
+ @property
628
+ @pulumi.getter
629
+ def subject(self) -> Optional[str]:
630
+ """
631
+ (Output)
632
+ Output only. The subject distinguished name in RFC 2253 format. Only present if parsed is true.
633
+ """
634
+ return pulumi.get(self, "subject")
635
+
636
+ @property
637
+ @pulumi.getter(name="subjectAlternativeDnsNames")
638
+ def subject_alternative_dns_names(self) -> Optional[Sequence[str]]:
639
+ """
640
+ (Output)
641
+ Output only. The subject Alternative DNS names. Only present if parsed is true.
642
+
643
+ - - -
644
+ """
645
+ return pulumi.get(self, "subject_alternative_dns_names")
646
+
647
+
406
648
  @pulumi.output_type
407
649
  class KeyRingIAMBindingCondition(dict):
408
650
  def __init__(__self__, *,
@@ -182,6 +182,7 @@ class AlertPolicyAlertStrategyNotificationRateLimitArgs:
182
182
  period: Optional[pulumi.Input[str]] = None):
183
183
  """
184
184
  :param pulumi.Input[str] period: Not more than one notification per period.
185
+ A duration in seconds with up to nine fractional digits, terminated by 's'. Example "60.5s".
185
186
  """
186
187
  if period is not None:
187
188
  pulumi.set(__self__, "period", period)
@@ -191,6 +192,7 @@ class AlertPolicyAlertStrategyNotificationRateLimitArgs:
191
192
  def period(self) -> Optional[pulumi.Input[str]]:
192
193
  """
193
194
  Not more than one notification per period.
195
+ A duration in seconds with up to nine fractional digits, terminated by 's'. Example "60.5s".
194
196
  """
195
197
  return pulumi.get(self, "period")
196
198
 
@@ -209,6 +209,7 @@ class AlertPolicyAlertStrategyNotificationRateLimit(dict):
209
209
  period: Optional[str] = None):
210
210
  """
211
211
  :param str period: Not more than one notification per period.
212
+ A duration in seconds with up to nine fractional digits, terminated by 's'. Example "60.5s".
212
213
  """
213
214
  if period is not None:
214
215
  pulumi.set(__self__, "period", period)
@@ -218,6 +219,7 @@ class AlertPolicyAlertStrategyNotificationRateLimit(dict):
218
219
  def period(self) -> Optional[str]:
219
220
  """
220
221
  Not more than one notification per period.
222
+ A duration in seconds with up to nine fractional digits, terminated by 's'. Example "60.5s".
221
223
  """
222
224
  return pulumi.get(self, "period")
223
225
 
@@ -12,6 +12,7 @@ from .address_group_iam_policy import *
12
12
  from .authorization_policy import *
13
13
  from .client_tls_policy import *
14
14
  from .firewall_endpoint import *
15
+ from .firewall_endpoint_association import *
15
16
  from .gateway_security_policy import *
16
17
  from .gateway_security_policy_rule import *
17
18
  from .get_address_group_iam_policy import *
@@ -14,12 +14,14 @@ __all__ = ['FirewallEndpointArgs', 'FirewallEndpoint']
14
14
  @pulumi.input_type
15
15
  class FirewallEndpointArgs:
16
16
  def __init__(__self__, *,
17
+ billing_project_id: pulumi.Input[str],
17
18
  location: pulumi.Input[str],
18
19
  parent: pulumi.Input[str],
19
20
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
20
21
  name: Optional[pulumi.Input[str]] = None):
21
22
  """
22
23
  The set of arguments for constructing a FirewallEndpoint resource.
24
+ :param pulumi.Input[str] billing_project_id: Project to bill on endpoint uptime usage.
23
25
  :param pulumi.Input[str] location: The location (zone) of the firewall endpoint.
24
26
  :param pulumi.Input[str] parent: The name of the parent this firewall endpoint belongs to.
25
27
  Format: organizations/{organization_id}.
@@ -32,6 +34,7 @@ class FirewallEndpointArgs:
32
34
  Please refer to the field `effective_labels` for all of the labels present on the resource.
33
35
  :param pulumi.Input[str] name: The name of the firewall endpoint resource.
34
36
  """
37
+ pulumi.set(__self__, "billing_project_id", billing_project_id)
35
38
  pulumi.set(__self__, "location", location)
36
39
  pulumi.set(__self__, "parent", parent)
37
40
  if labels is not None:
@@ -39,6 +42,18 @@ class FirewallEndpointArgs:
39
42
  if name is not None:
40
43
  pulumi.set(__self__, "name", name)
41
44
 
45
+ @property
46
+ @pulumi.getter(name="billingProjectId")
47
+ def billing_project_id(self) -> pulumi.Input[str]:
48
+ """
49
+ Project to bill on endpoint uptime usage.
50
+ """
51
+ return pulumi.get(self, "billing_project_id")
52
+
53
+ @billing_project_id.setter
54
+ def billing_project_id(self, value: pulumi.Input[str]):
55
+ pulumi.set(self, "billing_project_id", value)
56
+
42
57
  @property
43
58
  @pulumi.getter
44
59
  def location(self) -> pulumi.Input[str]:
@@ -99,6 +114,7 @@ class FirewallEndpointArgs:
99
114
  class _FirewallEndpointState:
100
115
  def __init__(__self__, *,
101
116
  associated_networks: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
117
+ billing_project_id: Optional[pulumi.Input[str]] = None,
102
118
  create_time: Optional[pulumi.Input[str]] = None,
103
119
  effective_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
104
120
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
@@ -116,6 +132,7 @@ class _FirewallEndpointState:
116
132
  This is a projection of the FirewallEndpointAssociations pointing at this
117
133
  endpoint. A network will only appear in this list after traffic routing is
118
134
  fully configured. Format: projects/{project}/global/networks/{name}.
135
+ :param pulumi.Input[str] billing_project_id: Project to bill on endpoint uptime usage.
119
136
  :param pulumi.Input[str] create_time: Time the firewall endpoint was created in UTC.
120
137
  :param pulumi.Input[Mapping[str, pulumi.Input[str]]] effective_labels: All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
121
138
  :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: A map of key/value label pairs to assign to the resource.
@@ -138,6 +155,8 @@ class _FirewallEndpointState:
138
155
  """
139
156
  if associated_networks is not None:
140
157
  pulumi.set(__self__, "associated_networks", associated_networks)
158
+ if billing_project_id is not None:
159
+ pulumi.set(__self__, "billing_project_id", billing_project_id)
141
160
  if create_time is not None:
142
161
  pulumi.set(__self__, "create_time", create_time)
143
162
  if effective_labels is not None:
@@ -176,6 +195,18 @@ class _FirewallEndpointState:
176
195
  def associated_networks(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
177
196
  pulumi.set(self, "associated_networks", value)
178
197
 
198
+ @property
199
+ @pulumi.getter(name="billingProjectId")
200
+ def billing_project_id(self) -> Optional[pulumi.Input[str]]:
201
+ """
202
+ Project to bill on endpoint uptime usage.
203
+ """
204
+ return pulumi.get(self, "billing_project_id")
205
+
206
+ @billing_project_id.setter
207
+ def billing_project_id(self, value: Optional[pulumi.Input[str]]):
208
+ pulumi.set(self, "billing_project_id", value)
209
+
179
210
  @property
180
211
  @pulumi.getter(name="createTime")
181
212
  def create_time(self) -> Optional[pulumi.Input[str]]:
@@ -322,6 +353,7 @@ class FirewallEndpoint(pulumi.CustomResource):
322
353
  def __init__(__self__,
323
354
  resource_name: str,
324
355
  opts: Optional[pulumi.ResourceOptions] = None,
356
+ billing_project_id: Optional[pulumi.Input[str]] = None,
325
357
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
326
358
  location: Optional[pulumi.Input[str]] = None,
327
359
  name: Optional[pulumi.Input[str]] = None,
@@ -361,6 +393,7 @@ class FirewallEndpoint(pulumi.CustomResource):
361
393
 
362
394
  :param str resource_name: The name of the resource.
363
395
  :param pulumi.ResourceOptions opts: Options for the resource.
396
+ :param pulumi.Input[str] billing_project_id: Project to bill on endpoint uptime usage.
364
397
  :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: A map of key/value label pairs to assign to the resource.
365
398
 
366
399
  **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
@@ -426,6 +459,7 @@ class FirewallEndpoint(pulumi.CustomResource):
426
459
  def _internal_init(__self__,
427
460
  resource_name: str,
428
461
  opts: Optional[pulumi.ResourceOptions] = None,
462
+ billing_project_id: Optional[pulumi.Input[str]] = None,
429
463
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
430
464
  location: Optional[pulumi.Input[str]] = None,
431
465
  name: Optional[pulumi.Input[str]] = None,
@@ -439,6 +473,9 @@ class FirewallEndpoint(pulumi.CustomResource):
439
473
  raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
440
474
  __props__ = FirewallEndpointArgs.__new__(FirewallEndpointArgs)
441
475
 
476
+ if billing_project_id is None and not opts.urn:
477
+ raise TypeError("Missing required property 'billing_project_id'")
478
+ __props__.__dict__["billing_project_id"] = billing_project_id
442
479
  __props__.__dict__["labels"] = labels
443
480
  if location is None and not opts.urn:
444
481
  raise TypeError("Missing required property 'location'")
@@ -468,6 +505,7 @@ class FirewallEndpoint(pulumi.CustomResource):
468
505
  id: pulumi.Input[str],
469
506
  opts: Optional[pulumi.ResourceOptions] = None,
470
507
  associated_networks: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
508
+ billing_project_id: Optional[pulumi.Input[str]] = None,
471
509
  create_time: Optional[pulumi.Input[str]] = None,
472
510
  effective_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
473
511
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
@@ -490,6 +528,7 @@ class FirewallEndpoint(pulumi.CustomResource):
490
528
  This is a projection of the FirewallEndpointAssociations pointing at this
491
529
  endpoint. A network will only appear in this list after traffic routing is
492
530
  fully configured. Format: projects/{project}/global/networks/{name}.
531
+ :param pulumi.Input[str] billing_project_id: Project to bill on endpoint uptime usage.
493
532
  :param pulumi.Input[str] create_time: Time the firewall endpoint was created in UTC.
494
533
  :param pulumi.Input[Mapping[str, pulumi.Input[str]]] effective_labels: All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
495
534
  :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: A map of key/value label pairs to assign to the resource.
@@ -515,6 +554,7 @@ class FirewallEndpoint(pulumi.CustomResource):
515
554
  __props__ = _FirewallEndpointState.__new__(_FirewallEndpointState)
516
555
 
517
556
  __props__.__dict__["associated_networks"] = associated_networks
557
+ __props__.__dict__["billing_project_id"] = billing_project_id
518
558
  __props__.__dict__["create_time"] = create_time
519
559
  __props__.__dict__["effective_labels"] = effective_labels
520
560
  __props__.__dict__["labels"] = labels
@@ -539,6 +579,14 @@ class FirewallEndpoint(pulumi.CustomResource):
539
579
  """
540
580
  return pulumi.get(self, "associated_networks")
541
581
 
582
+ @property
583
+ @pulumi.getter(name="billingProjectId")
584
+ def billing_project_id(self) -> pulumi.Output[str]:
585
+ """
586
+ Project to bill on endpoint uptime usage.
587
+ """
588
+ return pulumi.get(self, "billing_project_id")
589
+
542
590
  @property
543
591
  @pulumi.getter(name="createTime")
544
592
  def create_time(self) -> pulumi.Output[str]: