pulumi-gcp 7.16.0a1711520590__py3-none-any.whl → 7.16.0a1711535676__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 (38) hide show
  1. pulumi_gcp/__init__.py +8 -0
  2. pulumi_gcp/accesscontextmanager/__init__.py +1 -0
  3. pulumi_gcp/accesscontextmanager/service_perimeter_dry_run_resource.py +345 -0
  4. pulumi_gcp/accesscontextmanager/service_perimeter_egress_policy.py +80 -0
  5. pulumi_gcp/accesscontextmanager/service_perimeter_ingress_policy.py +86 -0
  6. pulumi_gcp/accesscontextmanager/service_perimeter_resource.py +4 -2
  7. pulumi_gcp/cloudquota/__init__.py +1 -0
  8. pulumi_gcp/cloudquota/get_s_quota_infos.py +136 -0
  9. pulumi_gcp/cloudquota/outputs.py +270 -0
  10. pulumi_gcp/cloudrunv2/_inputs.py +59 -2
  11. pulumi_gcp/cloudrunv2/outputs.py +107 -4
  12. pulumi_gcp/cloudrunv2/service.py +6 -6
  13. pulumi_gcp/composer/_inputs.py +16 -0
  14. pulumi_gcp/composer/outputs.py +23 -0
  15. pulumi_gcp/compute/_inputs.py +105 -7
  16. pulumi_gcp/compute/outputs.py +140 -9
  17. pulumi_gcp/compute/region_url_map.py +152 -0
  18. pulumi_gcp/dataform/repository.py +4 -74
  19. pulumi_gcp/firebase/android_app.py +41 -40
  20. pulumi_gcp/firestore/index.py +34 -48
  21. pulumi_gcp/monitoring/_inputs.py +2 -0
  22. pulumi_gcp/monitoring/outputs.py +2 -0
  23. pulumi_gcp/networksecurity/firewall_endpoint.py +48 -0
  24. pulumi_gcp/pubsub/_inputs.py +108 -0
  25. pulumi_gcp/pubsub/get_topic.py +11 -1
  26. pulumi_gcp/pubsub/outputs.py +213 -0
  27. pulumi_gcp/pubsub/topic.py +92 -0
  28. pulumi_gcp/storage/_inputs.py +40 -0
  29. pulumi_gcp/storage/bucket.py +54 -0
  30. pulumi_gcp/storage/get_bucket.py +11 -1
  31. pulumi_gcp/storage/outputs.py +81 -0
  32. pulumi_gcp/workstations/_inputs.py +113 -0
  33. pulumi_gcp/workstations/outputs.py +109 -1
  34. pulumi_gcp/workstations/workstation_config.py +106 -0
  35. {pulumi_gcp-7.16.0a1711520590.dist-info → pulumi_gcp-7.16.0a1711535676.dist-info}/METADATA +1 -1
  36. {pulumi_gcp-7.16.0a1711520590.dist-info → pulumi_gcp-7.16.0a1711535676.dist-info}/RECORD +38 -36
  37. {pulumi_gcp-7.16.0a1711520590.dist-info → pulumi_gcp-7.16.0a1711535676.dist-info}/WHEEL +0 -0
  38. {pulumi_gcp-7.16.0a1711520590.dist-info → pulumi_gcp-7.16.0a1711535676.dist-info}/top_level.txt +0 -0
@@ -22,13 +22,16 @@ class GetTopicResult:
22
22
  """
23
23
  A collection of values returned by getTopic.
24
24
  """
25
- def __init__(__self__, effective_labels=None, id=None, kms_key_name=None, labels=None, message_retention_duration=None, message_storage_policies=None, name=None, project=None, pulumi_labels=None, schema_settings=None):
25
+ def __init__(__self__, effective_labels=None, id=None, ingestion_data_source_settings=None, kms_key_name=None, labels=None, message_retention_duration=None, message_storage_policies=None, name=None, project=None, pulumi_labels=None, schema_settings=None):
26
26
  if effective_labels and not isinstance(effective_labels, dict):
27
27
  raise TypeError("Expected argument 'effective_labels' to be a dict")
28
28
  pulumi.set(__self__, "effective_labels", effective_labels)
29
29
  if id and not isinstance(id, str):
30
30
  raise TypeError("Expected argument 'id' to be a str")
31
31
  pulumi.set(__self__, "id", id)
32
+ if ingestion_data_source_settings and not isinstance(ingestion_data_source_settings, list):
33
+ raise TypeError("Expected argument 'ingestion_data_source_settings' to be a list")
34
+ pulumi.set(__self__, "ingestion_data_source_settings", ingestion_data_source_settings)
32
35
  if kms_key_name and not isinstance(kms_key_name, str):
33
36
  raise TypeError("Expected argument 'kms_key_name' to be a str")
34
37
  pulumi.set(__self__, "kms_key_name", kms_key_name)
@@ -67,6 +70,11 @@ class GetTopicResult:
67
70
  """
68
71
  return pulumi.get(self, "id")
69
72
 
73
+ @property
74
+ @pulumi.getter(name="ingestionDataSourceSettings")
75
+ def ingestion_data_source_settings(self) -> Sequence['outputs.GetTopicIngestionDataSourceSettingResult']:
76
+ return pulumi.get(self, "ingestion_data_source_settings")
77
+
70
78
  @property
71
79
  @pulumi.getter(name="kmsKeyName")
72
80
  def kms_key_name(self) -> str:
@@ -116,6 +124,7 @@ class AwaitableGetTopicResult(GetTopicResult):
116
124
  return GetTopicResult(
117
125
  effective_labels=self.effective_labels,
118
126
  id=self.id,
127
+ ingestion_data_source_settings=self.ingestion_data_source_settings,
119
128
  kms_key_name=self.kms_key_name,
120
129
  labels=self.labels,
121
130
  message_retention_duration=self.message_retention_duration,
@@ -161,6 +170,7 @@ def get_topic(name: Optional[str] = None,
161
170
  return AwaitableGetTopicResult(
162
171
  effective_labels=pulumi.get(__ret__, 'effective_labels'),
163
172
  id=pulumi.get(__ret__, 'id'),
173
+ ingestion_data_source_settings=pulumi.get(__ret__, 'ingestion_data_source_settings'),
164
174
  kms_key_name=pulumi.get(__ret__, 'kms_key_name'),
165
175
  labels=pulumi.get(__ret__, 'labels'),
166
176
  message_retention_duration=pulumi.get(__ret__, 'message_retention_duration'),
@@ -31,6 +31,8 @@ __all__ = [
31
31
  'SubscriptionRetryPolicy',
32
32
  'TopicIAMBindingCondition',
33
33
  'TopicIAMMemberCondition',
34
+ 'TopicIngestionDataSourceSettings',
35
+ 'TopicIngestionDataSourceSettingsAwsKinesis',
34
36
  'TopicMessageStoragePolicy',
35
37
  'TopicSchemaSettings',
36
38
  'GetSubscriptionBigqueryConfigResult',
@@ -42,6 +44,8 @@ __all__ = [
42
44
  'GetSubscriptionPushConfigNoWrapperResult',
43
45
  'GetSubscriptionPushConfigOidcTokenResult',
44
46
  'GetSubscriptionRetryPolicyResult',
47
+ 'GetTopicIngestionDataSourceSettingResult',
48
+ 'GetTopicIngestionDataSourceSettingAwsKineseResult',
45
49
  'GetTopicMessageStoragePolicyResult',
46
50
  'GetTopicSchemaSettingResult',
47
51
  ]
@@ -1061,6 +1065,132 @@ class TopicIAMMemberCondition(dict):
1061
1065
  return pulumi.get(self, "description")
1062
1066
 
1063
1067
 
1068
+ @pulumi.output_type
1069
+ class TopicIngestionDataSourceSettings(dict):
1070
+ @staticmethod
1071
+ def __key_warning(key: str):
1072
+ suggest = None
1073
+ if key == "awsKinesis":
1074
+ suggest = "aws_kinesis"
1075
+
1076
+ if suggest:
1077
+ pulumi.log.warn(f"Key '{key}' not found in TopicIngestionDataSourceSettings. Access the value via the '{suggest}' property getter instead.")
1078
+
1079
+ def __getitem__(self, key: str) -> Any:
1080
+ TopicIngestionDataSourceSettings.__key_warning(key)
1081
+ return super().__getitem__(key)
1082
+
1083
+ def get(self, key: str, default = None) -> Any:
1084
+ TopicIngestionDataSourceSettings.__key_warning(key)
1085
+ return super().get(key, default)
1086
+
1087
+ def __init__(__self__, *,
1088
+ aws_kinesis: Optional['outputs.TopicIngestionDataSourceSettingsAwsKinesis'] = None):
1089
+ """
1090
+ :param 'TopicIngestionDataSourceSettingsAwsKinesisArgs' aws_kinesis: Settings for ingestion from Amazon Kinesis Data Streams.
1091
+ Structure is documented below.
1092
+ """
1093
+ if aws_kinesis is not None:
1094
+ pulumi.set(__self__, "aws_kinesis", aws_kinesis)
1095
+
1096
+ @property
1097
+ @pulumi.getter(name="awsKinesis")
1098
+ def aws_kinesis(self) -> Optional['outputs.TopicIngestionDataSourceSettingsAwsKinesis']:
1099
+ """
1100
+ Settings for ingestion from Amazon Kinesis Data Streams.
1101
+ Structure is documented below.
1102
+ """
1103
+ return pulumi.get(self, "aws_kinesis")
1104
+
1105
+
1106
+ @pulumi.output_type
1107
+ class TopicIngestionDataSourceSettingsAwsKinesis(dict):
1108
+ @staticmethod
1109
+ def __key_warning(key: str):
1110
+ suggest = None
1111
+ if key == "awsRoleArn":
1112
+ suggest = "aws_role_arn"
1113
+ elif key == "consumerArn":
1114
+ suggest = "consumer_arn"
1115
+ elif key == "gcpServiceAccount":
1116
+ suggest = "gcp_service_account"
1117
+ elif key == "streamArn":
1118
+ suggest = "stream_arn"
1119
+
1120
+ if suggest:
1121
+ pulumi.log.warn(f"Key '{key}' not found in TopicIngestionDataSourceSettingsAwsKinesis. Access the value via the '{suggest}' property getter instead.")
1122
+
1123
+ def __getitem__(self, key: str) -> Any:
1124
+ TopicIngestionDataSourceSettingsAwsKinesis.__key_warning(key)
1125
+ return super().__getitem__(key)
1126
+
1127
+ def get(self, key: str, default = None) -> Any:
1128
+ TopicIngestionDataSourceSettingsAwsKinesis.__key_warning(key)
1129
+ return super().get(key, default)
1130
+
1131
+ def __init__(__self__, *,
1132
+ aws_role_arn: str,
1133
+ consumer_arn: str,
1134
+ gcp_service_account: str,
1135
+ stream_arn: str):
1136
+ """
1137
+ :param str aws_role_arn: AWS role ARN to be used for Federated Identity authentication with
1138
+ Kinesis. Check the Pub/Sub docs for how to set up this role and the
1139
+ required permissions that need to be attached to it.
1140
+ :param str consumer_arn: The Kinesis consumer ARN to used for ingestion in
1141
+ Enhanced Fan-Out mode. The consumer must be already
1142
+ created and ready to be used.
1143
+ :param str gcp_service_account: The GCP service account to be used for Federated Identity authentication
1144
+ with Kinesis (via a `AssumeRoleWithWebIdentity` call for the provided
1145
+ role). The `awsRoleArn` must be set up with `accounts.google.com:sub`
1146
+ equals to this service account number.
1147
+ :param str stream_arn: The Kinesis stream ARN to ingest data from.
1148
+ """
1149
+ pulumi.set(__self__, "aws_role_arn", aws_role_arn)
1150
+ pulumi.set(__self__, "consumer_arn", consumer_arn)
1151
+ pulumi.set(__self__, "gcp_service_account", gcp_service_account)
1152
+ pulumi.set(__self__, "stream_arn", stream_arn)
1153
+
1154
+ @property
1155
+ @pulumi.getter(name="awsRoleArn")
1156
+ def aws_role_arn(self) -> str:
1157
+ """
1158
+ AWS role ARN to be used for Federated Identity authentication with
1159
+ Kinesis. Check the Pub/Sub docs for how to set up this role and the
1160
+ required permissions that need to be attached to it.
1161
+ """
1162
+ return pulumi.get(self, "aws_role_arn")
1163
+
1164
+ @property
1165
+ @pulumi.getter(name="consumerArn")
1166
+ def consumer_arn(self) -> str:
1167
+ """
1168
+ The Kinesis consumer ARN to used for ingestion in
1169
+ Enhanced Fan-Out mode. The consumer must be already
1170
+ created and ready to be used.
1171
+ """
1172
+ return pulumi.get(self, "consumer_arn")
1173
+
1174
+ @property
1175
+ @pulumi.getter(name="gcpServiceAccount")
1176
+ def gcp_service_account(self) -> str:
1177
+ """
1178
+ The GCP service account to be used for Federated Identity authentication
1179
+ with Kinesis (via a `AssumeRoleWithWebIdentity` call for the provided
1180
+ role). The `awsRoleArn` must be set up with `accounts.google.com:sub`
1181
+ equals to this service account number.
1182
+ """
1183
+ return pulumi.get(self, "gcp_service_account")
1184
+
1185
+ @property
1186
+ @pulumi.getter(name="streamArn")
1187
+ def stream_arn(self) -> str:
1188
+ """
1189
+ The Kinesis stream ARN to ingest data from.
1190
+ """
1191
+ return pulumi.get(self, "stream_arn")
1192
+
1193
+
1064
1194
  @pulumi.output_type
1065
1195
  class TopicMessageStoragePolicy(dict):
1066
1196
  @staticmethod
@@ -1626,6 +1756,89 @@ class GetSubscriptionRetryPolicyResult(dict):
1626
1756
  return pulumi.get(self, "minimum_backoff")
1627
1757
 
1628
1758
 
1759
+ @pulumi.output_type
1760
+ class GetTopicIngestionDataSourceSettingResult(dict):
1761
+ def __init__(__self__, *,
1762
+ aws_kineses: Sequence['outputs.GetTopicIngestionDataSourceSettingAwsKineseResult']):
1763
+ """
1764
+ :param Sequence['GetTopicIngestionDataSourceSettingAwsKineseArgs'] aws_kineses: Settings for ingestion from Amazon Kinesis Data Streams.
1765
+ """
1766
+ pulumi.set(__self__, "aws_kineses", aws_kineses)
1767
+
1768
+ @property
1769
+ @pulumi.getter(name="awsKineses")
1770
+ def aws_kineses(self) -> Sequence['outputs.GetTopicIngestionDataSourceSettingAwsKineseResult']:
1771
+ """
1772
+ Settings for ingestion from Amazon Kinesis Data Streams.
1773
+ """
1774
+ return pulumi.get(self, "aws_kineses")
1775
+
1776
+
1777
+ @pulumi.output_type
1778
+ class GetTopicIngestionDataSourceSettingAwsKineseResult(dict):
1779
+ def __init__(__self__, *,
1780
+ aws_role_arn: str,
1781
+ consumer_arn: str,
1782
+ gcp_service_account: str,
1783
+ stream_arn: str):
1784
+ """
1785
+ :param str aws_role_arn: AWS role ARN to be used for Federated Identity authentication with
1786
+ Kinesis. Check the Pub/Sub docs for how to set up this role and the
1787
+ required permissions that need to be attached to it.
1788
+ :param str consumer_arn: The Kinesis consumer ARN to used for ingestion in
1789
+ Enhanced Fan-Out mode. The consumer must be already
1790
+ created and ready to be used.
1791
+ :param str gcp_service_account: The GCP service account to be used for Federated Identity authentication
1792
+ with Kinesis (via a 'AssumeRoleWithWebIdentity' call for the provided
1793
+ role). The 'awsRoleArn' must be set up with 'accounts.google.com:sub'
1794
+ equals to this service account number.
1795
+ :param str stream_arn: The Kinesis stream ARN to ingest data from.
1796
+ """
1797
+ pulumi.set(__self__, "aws_role_arn", aws_role_arn)
1798
+ pulumi.set(__self__, "consumer_arn", consumer_arn)
1799
+ pulumi.set(__self__, "gcp_service_account", gcp_service_account)
1800
+ pulumi.set(__self__, "stream_arn", stream_arn)
1801
+
1802
+ @property
1803
+ @pulumi.getter(name="awsRoleArn")
1804
+ def aws_role_arn(self) -> str:
1805
+ """
1806
+ AWS role ARN to be used for Federated Identity authentication with
1807
+ Kinesis. Check the Pub/Sub docs for how to set up this role and the
1808
+ required permissions that need to be attached to it.
1809
+ """
1810
+ return pulumi.get(self, "aws_role_arn")
1811
+
1812
+ @property
1813
+ @pulumi.getter(name="consumerArn")
1814
+ def consumer_arn(self) -> str:
1815
+ """
1816
+ The Kinesis consumer ARN to used for ingestion in
1817
+ Enhanced Fan-Out mode. The consumer must be already
1818
+ created and ready to be used.
1819
+ """
1820
+ return pulumi.get(self, "consumer_arn")
1821
+
1822
+ @property
1823
+ @pulumi.getter(name="gcpServiceAccount")
1824
+ def gcp_service_account(self) -> str:
1825
+ """
1826
+ The GCP service account to be used for Federated Identity authentication
1827
+ with Kinesis (via a 'AssumeRoleWithWebIdentity' call for the provided
1828
+ role). The 'awsRoleArn' must be set up with 'accounts.google.com:sub'
1829
+ equals to this service account number.
1830
+ """
1831
+ return pulumi.get(self, "gcp_service_account")
1832
+
1833
+ @property
1834
+ @pulumi.getter(name="streamArn")
1835
+ def stream_arn(self) -> str:
1836
+ """
1837
+ The Kinesis stream ARN to ingest data from.
1838
+ """
1839
+ return pulumi.get(self, "stream_arn")
1840
+
1841
+
1629
1842
  @pulumi.output_type
1630
1843
  class GetTopicMessageStoragePolicyResult(dict):
1631
1844
  def __init__(__self__, *,
@@ -16,6 +16,7 @@ __all__ = ['TopicArgs', 'Topic']
16
16
  @pulumi.input_type
17
17
  class TopicArgs:
18
18
  def __init__(__self__, *,
19
+ ingestion_data_source_settings: Optional[pulumi.Input['TopicIngestionDataSourceSettingsArgs']] = None,
19
20
  kms_key_name: Optional[pulumi.Input[str]] = None,
20
21
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
21
22
  message_retention_duration: Optional[pulumi.Input[str]] = None,
@@ -25,6 +26,8 @@ class TopicArgs:
25
26
  schema_settings: Optional[pulumi.Input['TopicSchemaSettingsArgs']] = None):
26
27
  """
27
28
  The set of arguments for constructing a Topic resource.
29
+ :param pulumi.Input['TopicIngestionDataSourceSettingsArgs'] ingestion_data_source_settings: Settings for ingestion from a data source into this topic.
30
+ Structure is documented below.
28
31
  :param pulumi.Input[str] kms_key_name: The resource name of the Cloud KMS CryptoKey to be used to protect access
29
32
  to messages published on this topic. Your project's PubSub service account
30
33
  (`service-{{PROJECT_NUMBER}}@gcp-sa-pubsub.iam.gserviceaccount.com`) must have
@@ -55,6 +58,8 @@ class TopicArgs:
55
58
  :param pulumi.Input['TopicSchemaSettingsArgs'] schema_settings: Settings for validating messages published against a schema.
56
59
  Structure is documented below.
57
60
  """
61
+ if ingestion_data_source_settings is not None:
62
+ pulumi.set(__self__, "ingestion_data_source_settings", ingestion_data_source_settings)
58
63
  if kms_key_name is not None:
59
64
  pulumi.set(__self__, "kms_key_name", kms_key_name)
60
65
  if labels is not None:
@@ -70,6 +75,19 @@ class TopicArgs:
70
75
  if schema_settings is not None:
71
76
  pulumi.set(__self__, "schema_settings", schema_settings)
72
77
 
78
+ @property
79
+ @pulumi.getter(name="ingestionDataSourceSettings")
80
+ def ingestion_data_source_settings(self) -> Optional[pulumi.Input['TopicIngestionDataSourceSettingsArgs']]:
81
+ """
82
+ Settings for ingestion from a data source into this topic.
83
+ Structure is documented below.
84
+ """
85
+ return pulumi.get(self, "ingestion_data_source_settings")
86
+
87
+ @ingestion_data_source_settings.setter
88
+ def ingestion_data_source_settings(self, value: Optional[pulumi.Input['TopicIngestionDataSourceSettingsArgs']]):
89
+ pulumi.set(self, "ingestion_data_source_settings", value)
90
+
73
91
  @property
74
92
  @pulumi.getter(name="kmsKeyName")
75
93
  def kms_key_name(self) -> Optional[pulumi.Input[str]]:
@@ -181,6 +199,7 @@ class TopicArgs:
181
199
  class _TopicState:
182
200
  def __init__(__self__, *,
183
201
  effective_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
202
+ ingestion_data_source_settings: Optional[pulumi.Input['TopicIngestionDataSourceSettingsArgs']] = None,
184
203
  kms_key_name: Optional[pulumi.Input[str]] = None,
185
204
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
186
205
  message_retention_duration: Optional[pulumi.Input[str]] = None,
@@ -192,6 +211,8 @@ class _TopicState:
192
211
  """
193
212
  Input properties used for looking up and filtering Topic resources.
194
213
  :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.
214
+ :param pulumi.Input['TopicIngestionDataSourceSettingsArgs'] ingestion_data_source_settings: Settings for ingestion from a data source into this topic.
215
+ Structure is documented below.
195
216
  :param pulumi.Input[str] kms_key_name: The resource name of the Cloud KMS CryptoKey to be used to protect access
196
217
  to messages published on this topic. Your project's PubSub service account
197
218
  (`service-{{PROJECT_NUMBER}}@gcp-sa-pubsub.iam.gserviceaccount.com`) must have
@@ -226,6 +247,8 @@ class _TopicState:
226
247
  """
227
248
  if effective_labels is not None:
228
249
  pulumi.set(__self__, "effective_labels", effective_labels)
250
+ if ingestion_data_source_settings is not None:
251
+ pulumi.set(__self__, "ingestion_data_source_settings", ingestion_data_source_settings)
229
252
  if kms_key_name is not None:
230
253
  pulumi.set(__self__, "kms_key_name", kms_key_name)
231
254
  if labels is not None:
@@ -255,6 +278,19 @@ class _TopicState:
255
278
  def effective_labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
256
279
  pulumi.set(self, "effective_labels", value)
257
280
 
281
+ @property
282
+ @pulumi.getter(name="ingestionDataSourceSettings")
283
+ def ingestion_data_source_settings(self) -> Optional[pulumi.Input['TopicIngestionDataSourceSettingsArgs']]:
284
+ """
285
+ Settings for ingestion from a data source into this topic.
286
+ Structure is documented below.
287
+ """
288
+ return pulumi.get(self, "ingestion_data_source_settings")
289
+
290
+ @ingestion_data_source_settings.setter
291
+ def ingestion_data_source_settings(self, value: Optional[pulumi.Input['TopicIngestionDataSourceSettingsArgs']]):
292
+ pulumi.set(self, "ingestion_data_source_settings", value)
293
+
258
294
  @property
259
295
  @pulumi.getter(name="kmsKeyName")
260
296
  def kms_key_name(self) -> Optional[pulumi.Input[str]]:
@@ -380,6 +416,7 @@ class Topic(pulumi.CustomResource):
380
416
  def __init__(__self__,
381
417
  resource_name: str,
382
418
  opts: Optional[pulumi.ResourceOptions] = None,
419
+ ingestion_data_source_settings: Optional[pulumi.Input[pulumi.InputType['TopicIngestionDataSourceSettingsArgs']]] = None,
383
420
  kms_key_name: Optional[pulumi.Input[str]] = None,
384
421
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
385
422
  message_retention_duration: Optional[pulumi.Input[str]] = None,
@@ -482,6 +519,25 @@ class Topic(pulumi.CustomResource):
482
519
  ))
483
520
  ```
484
521
  <!--End PulumiCodeChooser -->
522
+ ### Pubsub Topic Ingestion Kinesis
523
+
524
+ <!--Start PulumiCodeChooser -->
525
+ ```python
526
+ import pulumi
527
+ import pulumi_gcp as gcp
528
+
529
+ example = gcp.pubsub.Topic("example",
530
+ name="example-topic",
531
+ ingestion_data_source_settings=gcp.pubsub.TopicIngestionDataSourceSettingsArgs(
532
+ aws_kinesis=gcp.pubsub.TopicIngestionDataSourceSettingsAwsKinesisArgs(
533
+ stream_arn="arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name",
534
+ consumer_arn="arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name/consumer/consumer-1:1111111111",
535
+ aws_role_arn="arn:aws:iam::111111111111:role/fake-role-name",
536
+ gcp_service_account="fake-service-account@fake-gcp-project.iam.gserviceaccount.com",
537
+ ),
538
+ ))
539
+ ```
540
+ <!--End PulumiCodeChooser -->
485
541
 
486
542
  ## Import
487
543
 
@@ -509,6 +565,8 @@ class Topic(pulumi.CustomResource):
509
565
 
510
566
  :param str resource_name: The name of the resource.
511
567
  :param pulumi.ResourceOptions opts: Options for the resource.
568
+ :param pulumi.Input[pulumi.InputType['TopicIngestionDataSourceSettingsArgs']] ingestion_data_source_settings: Settings for ingestion from a data source into this topic.
569
+ Structure is documented below.
512
570
  :param pulumi.Input[str] kms_key_name: The resource name of the Cloud KMS CryptoKey to be used to protect access
513
571
  to messages published on this topic. Your project's PubSub service account
514
572
  (`service-{{PROJECT_NUMBER}}@gcp-sa-pubsub.iam.gserviceaccount.com`) must have
@@ -639,6 +697,25 @@ class Topic(pulumi.CustomResource):
639
697
  ))
640
698
  ```
641
699
  <!--End PulumiCodeChooser -->
700
+ ### Pubsub Topic Ingestion Kinesis
701
+
702
+ <!--Start PulumiCodeChooser -->
703
+ ```python
704
+ import pulumi
705
+ import pulumi_gcp as gcp
706
+
707
+ example = gcp.pubsub.Topic("example",
708
+ name="example-topic",
709
+ ingestion_data_source_settings=gcp.pubsub.TopicIngestionDataSourceSettingsArgs(
710
+ aws_kinesis=gcp.pubsub.TopicIngestionDataSourceSettingsAwsKinesisArgs(
711
+ stream_arn="arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name",
712
+ consumer_arn="arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name/consumer/consumer-1:1111111111",
713
+ aws_role_arn="arn:aws:iam::111111111111:role/fake-role-name",
714
+ gcp_service_account="fake-service-account@fake-gcp-project.iam.gserviceaccount.com",
715
+ ),
716
+ ))
717
+ ```
718
+ <!--End PulumiCodeChooser -->
642
719
 
643
720
  ## Import
644
721
 
@@ -679,6 +756,7 @@ class Topic(pulumi.CustomResource):
679
756
  def _internal_init(__self__,
680
757
  resource_name: str,
681
758
  opts: Optional[pulumi.ResourceOptions] = None,
759
+ ingestion_data_source_settings: Optional[pulumi.Input[pulumi.InputType['TopicIngestionDataSourceSettingsArgs']]] = None,
682
760
  kms_key_name: Optional[pulumi.Input[str]] = None,
683
761
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
684
762
  message_retention_duration: Optional[pulumi.Input[str]] = None,
@@ -695,6 +773,7 @@ class Topic(pulumi.CustomResource):
695
773
  raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
696
774
  __props__ = TopicArgs.__new__(TopicArgs)
697
775
 
776
+ __props__.__dict__["ingestion_data_source_settings"] = ingestion_data_source_settings
698
777
  __props__.__dict__["kms_key_name"] = kms_key_name
699
778
  __props__.__dict__["labels"] = labels
700
779
  __props__.__dict__["message_retention_duration"] = message_retention_duration
@@ -717,6 +796,7 @@ class Topic(pulumi.CustomResource):
717
796
  id: pulumi.Input[str],
718
797
  opts: Optional[pulumi.ResourceOptions] = None,
719
798
  effective_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
799
+ ingestion_data_source_settings: Optional[pulumi.Input[pulumi.InputType['TopicIngestionDataSourceSettingsArgs']]] = None,
720
800
  kms_key_name: Optional[pulumi.Input[str]] = None,
721
801
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
722
802
  message_retention_duration: Optional[pulumi.Input[str]] = None,
@@ -733,6 +813,8 @@ class Topic(pulumi.CustomResource):
733
813
  :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
734
814
  :param pulumi.ResourceOptions opts: Options for the resource.
735
815
  :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.
816
+ :param pulumi.Input[pulumi.InputType['TopicIngestionDataSourceSettingsArgs']] ingestion_data_source_settings: Settings for ingestion from a data source into this topic.
817
+ Structure is documented below.
736
818
  :param pulumi.Input[str] kms_key_name: The resource name of the Cloud KMS CryptoKey to be used to protect access
737
819
  to messages published on this topic. Your project's PubSub service account
738
820
  (`service-{{PROJECT_NUMBER}}@gcp-sa-pubsub.iam.gserviceaccount.com`) must have
@@ -770,6 +852,7 @@ class Topic(pulumi.CustomResource):
770
852
  __props__ = _TopicState.__new__(_TopicState)
771
853
 
772
854
  __props__.__dict__["effective_labels"] = effective_labels
855
+ __props__.__dict__["ingestion_data_source_settings"] = ingestion_data_source_settings
773
856
  __props__.__dict__["kms_key_name"] = kms_key_name
774
857
  __props__.__dict__["labels"] = labels
775
858
  __props__.__dict__["message_retention_duration"] = message_retention_duration
@@ -788,6 +871,15 @@ class Topic(pulumi.CustomResource):
788
871
  """
789
872
  return pulumi.get(self, "effective_labels")
790
873
 
874
+ @property
875
+ @pulumi.getter(name="ingestionDataSourceSettings")
876
+ def ingestion_data_source_settings(self) -> pulumi.Output[Optional['outputs.TopicIngestionDataSourceSettings']]:
877
+ """
878
+ Settings for ingestion from a data source into this topic.
879
+ Structure is documented below.
880
+ """
881
+ return pulumi.get(self, "ingestion_data_source_settings")
882
+
791
883
  @property
792
884
  @pulumi.getter(name="kmsKeyName")
793
885
  def kms_key_name(self) -> pulumi.Output[Optional[str]]:
@@ -23,6 +23,7 @@ __all__ = [
23
23
  'BucketObjectCustomerEncryptionArgs',
24
24
  'BucketObjectRetentionArgs',
25
25
  'BucketRetentionPolicyArgs',
26
+ 'BucketSoftDeletePolicyArgs',
26
27
  'BucketVersioningArgs',
27
28
  'BucketWebsiteArgs',
28
29
  'DefaultObjectAccessControlProjectTeamArgs',
@@ -787,6 +788,45 @@ class BucketRetentionPolicyArgs:
787
788
  pulumi.set(self, "is_locked", value)
788
789
 
789
790
 
791
+ @pulumi.input_type
792
+ class BucketSoftDeletePolicyArgs:
793
+ def __init__(__self__, *,
794
+ effective_time: Optional[pulumi.Input[str]] = None,
795
+ retention_duration_seconds: Optional[pulumi.Input[int]] = None):
796
+ """
797
+ :param pulumi.Input[str] effective_time: Server-determined value that indicates the time from which the policy, or one with a greater retention, was effective. This value is in RFC 3339 format.
798
+ :param pulumi.Input[int] retention_duration_seconds: The duration in seconds that soft-deleted objects in the bucket will be retained and cannot be permanently deleted. Default value is 604800. The value must be in between 604800(7 days) and 7776000(90 days). **Note**: To disable the soft delete policy on a bucket, This field must be set to 0.
799
+ """
800
+ if effective_time is not None:
801
+ pulumi.set(__self__, "effective_time", effective_time)
802
+ if retention_duration_seconds is not None:
803
+ pulumi.set(__self__, "retention_duration_seconds", retention_duration_seconds)
804
+
805
+ @property
806
+ @pulumi.getter(name="effectiveTime")
807
+ def effective_time(self) -> Optional[pulumi.Input[str]]:
808
+ """
809
+ Server-determined value that indicates the time from which the policy, or one with a greater retention, was effective. This value is in RFC 3339 format.
810
+ """
811
+ return pulumi.get(self, "effective_time")
812
+
813
+ @effective_time.setter
814
+ def effective_time(self, value: Optional[pulumi.Input[str]]):
815
+ pulumi.set(self, "effective_time", value)
816
+
817
+ @property
818
+ @pulumi.getter(name="retentionDurationSeconds")
819
+ def retention_duration_seconds(self) -> Optional[pulumi.Input[int]]:
820
+ """
821
+ The duration in seconds that soft-deleted objects in the bucket will be retained and cannot be permanently deleted. Default value is 604800. The value must be in between 604800(7 days) and 7776000(90 days). **Note**: To disable the soft delete policy on a bucket, This field must be set to 0.
822
+ """
823
+ return pulumi.get(self, "retention_duration_seconds")
824
+
825
+ @retention_duration_seconds.setter
826
+ def retention_duration_seconds(self, value: Optional[pulumi.Input[int]]):
827
+ pulumi.set(self, "retention_duration_seconds", value)
828
+
829
+
790
830
  @pulumi.input_type
791
831
  class BucketVersioningArgs:
792
832
  def __init__(__self__, *,