pulumi-gcp 8.13.0a1736231082__py3-none-any.whl → 8.13.0a1736263433__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 (90) hide show
  1. pulumi_gcp/__init__.py +43 -0
  2. pulumi_gcp/accesscontextmanager/_inputs.py +3 -3
  3. pulumi_gcp/accesscontextmanager/outputs.py +2 -2
  4. pulumi_gcp/artifactregistry/_inputs.py +83 -0
  5. pulumi_gcp/artifactregistry/get_repository.py +15 -4
  6. pulumi_gcp/artifactregistry/outputs.py +112 -0
  7. pulumi_gcp/artifactregistry/repository.py +93 -7
  8. pulumi_gcp/backupdisasterrecovery/get_backup.py +38 -2
  9. pulumi_gcp/backupdisasterrecovery/get_data_source.py +38 -2
  10. pulumi_gcp/backupdisasterrecovery/outputs.py +8 -8
  11. pulumi_gcp/bigquery/_inputs.py +369 -0
  12. pulumi_gcp/bigquery/dataset_access.py +61 -0
  13. pulumi_gcp/bigquery/job.py +6 -18
  14. pulumi_gcp/bigquery/outputs.py +350 -0
  15. pulumi_gcp/bigquery/table.py +47 -0
  16. pulumi_gcp/chronicle/__init__.py +10 -0
  17. pulumi_gcp/chronicle/_inputs.py +169 -0
  18. pulumi_gcp/chronicle/outputs.py +107 -0
  19. pulumi_gcp/chronicle/watchlist.py +776 -0
  20. pulumi_gcp/cloudrunv2/_inputs.py +6 -3
  21. pulumi_gcp/cloudrunv2/outputs.py +10 -6
  22. pulumi_gcp/composer/_inputs.py +80 -5
  23. pulumi_gcp/composer/outputs.py +111 -4
  24. pulumi_gcp/compute/_inputs.py +181 -87
  25. pulumi_gcp/compute/firewall_policy_association.py +50 -39
  26. pulumi_gcp/compute/get_network.py +17 -2
  27. pulumi_gcp/compute/get_subnetwork.py +18 -4
  28. pulumi_gcp/compute/network.py +39 -2
  29. pulumi_gcp/compute/outputs.py +157 -58
  30. pulumi_gcp/compute/region_network_endpoint_group.py +1 -1
  31. pulumi_gcp/compute/resize_request.py +26 -40
  32. pulumi_gcp/config/__init__.pyi +2 -0
  33. pulumi_gcp/config/vars.py +4 -0
  34. pulumi_gcp/dataproc/batch.py +4 -18
  35. pulumi_gcp/datastream/_inputs.py +68 -0
  36. pulumi_gcp/datastream/outputs.py +41 -1
  37. pulumi_gcp/developerconnect/connection.py +58 -12
  38. pulumi_gcp/diagflow/_inputs.py +3 -3
  39. pulumi_gcp/diagflow/outputs.py +2 -2
  40. pulumi_gcp/filestore/backup.py +71 -3
  41. pulumi_gcp/firebase/hosting_custom_domain.py +4 -4
  42. pulumi_gcp/firestore/_inputs.py +3 -3
  43. pulumi_gcp/firestore/outputs.py +2 -2
  44. pulumi_gcp/gkehub/__init__.py +1 -0
  45. pulumi_gcp/gkehub/get_feature.py +226 -0
  46. pulumi_gcp/gkehub/outputs.py +1153 -0
  47. pulumi_gcp/gkeonprem/__init__.py +1 -0
  48. pulumi_gcp/gkeonprem/_inputs.py +2364 -0
  49. pulumi_gcp/gkeonprem/outputs.py +1780 -0
  50. pulumi_gcp/gkeonprem/vmware_admin_cluster.py +1715 -0
  51. pulumi_gcp/integrationconnectors/_inputs.py +6 -6
  52. pulumi_gcp/integrationconnectors/connection.py +7 -7
  53. pulumi_gcp/integrationconnectors/outputs.py +4 -4
  54. pulumi_gcp/kms/__init__.py +2 -0
  55. pulumi_gcp/kms/get_autokey_config.py +121 -0
  56. pulumi_gcp/kms/get_key_handle.py +185 -0
  57. pulumi_gcp/netapp/kmsconfig.py +2 -14
  58. pulumi_gcp/networkconnectivity/hub.py +108 -0
  59. pulumi_gcp/networkconnectivity/spoke.py +195 -0
  60. pulumi_gcp/networkmanagement/vpc_flow_logs_config.py +4 -0
  61. pulumi_gcp/networksecurity/__init__.py +2 -0
  62. pulumi_gcp/networksecurity/_inputs.py +78 -0
  63. pulumi_gcp/networksecurity/intercept_endpoint_group.py +723 -0
  64. pulumi_gcp/networksecurity/intercept_endpoint_group_association.py +815 -0
  65. pulumi_gcp/networksecurity/outputs.py +48 -0
  66. pulumi_gcp/oracledatabase/autonomous_database.py +2 -2
  67. pulumi_gcp/orgpolicy/policy.py +2 -2
  68. pulumi_gcp/parallelstore/instance.py +149 -0
  69. pulumi_gcp/projects/usage_export_bucket.py +42 -110
  70. pulumi_gcp/provider.py +20 -0
  71. pulumi_gcp/pubsub/subscription.py +6 -6
  72. pulumi_gcp/pulumi-plugin.json +1 -1
  73. pulumi_gcp/securesourcemanager/instance.py +4 -16
  74. pulumi_gcp/spanner/instance_iam_binding.py +14 -0
  75. pulumi_gcp/spanner/instance_iam_member.py +14 -0
  76. pulumi_gcp/sql/database_instance.py +7 -7
  77. pulumi_gcp/storage/__init__.py +1 -0
  78. pulumi_gcp/storage/_inputs.py +431 -0
  79. pulumi_gcp/storage/folder.py +483 -0
  80. pulumi_gcp/storage/outputs.py +363 -0
  81. pulumi_gcp/storage/transfer_job.py +84 -38
  82. pulumi_gcp/vertex/_inputs.py +26 -25
  83. pulumi_gcp/vertex/ai_endpoint.py +4 -4
  84. pulumi_gcp/vertex/ai_feature_online_store_featureview.py +4 -4
  85. pulumi_gcp/vertex/outputs.py +15 -14
  86. pulumi_gcp/workstations/workstation.py +55 -1
  87. {pulumi_gcp-8.13.0a1736231082.dist-info → pulumi_gcp-8.13.0a1736263433.dist-info}/METADATA +1 -1
  88. {pulumi_gcp-8.13.0a1736231082.dist-info → pulumi_gcp-8.13.0a1736263433.dist-info}/RECORD +90 -79
  89. {pulumi_gcp-8.13.0a1736231082.dist-info → pulumi_gcp-8.13.0a1736263433.dist-info}/WHEEL +0 -0
  90. {pulumi_gcp-8.13.0a1736231082.dist-info → pulumi_gcp-8.13.0a1736263433.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,483 @@
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 sys
8
+ import pulumi
9
+ import pulumi.runtime
10
+ from typing import Any, Mapping, Optional, Sequence, Union, overload
11
+ if sys.version_info >= (3, 11):
12
+ from typing import NotRequired, TypedDict, TypeAlias
13
+ else:
14
+ from typing_extensions import NotRequired, TypedDict, TypeAlias
15
+ from .. import _utilities
16
+
17
+ __all__ = ['FolderArgs', 'Folder']
18
+
19
+ @pulumi.input_type
20
+ class FolderArgs:
21
+ def __init__(__self__, *,
22
+ bucket: pulumi.Input[str],
23
+ force_destroy: Optional[pulumi.Input[bool]] = None,
24
+ name: Optional[pulumi.Input[str]] = None):
25
+ """
26
+ The set of arguments for constructing a Folder resource.
27
+ :param pulumi.Input[str] bucket: The name of the bucket that contains the folder.
28
+ :param pulumi.Input[bool] force_destroy: If set to true, items within folder if any will be force destroyed.
29
+ :param pulumi.Input[str] name: The name of the folder expressed as a path. Must include
30
+ trailing '/'. For example, `example_dir/example_dir2/`, `example@#/`, `a-b/d-f/`.
31
+
32
+
33
+ - - -
34
+ """
35
+ pulumi.set(__self__, "bucket", bucket)
36
+ if force_destroy is not None:
37
+ pulumi.set(__self__, "force_destroy", force_destroy)
38
+ if name is not None:
39
+ pulumi.set(__self__, "name", name)
40
+
41
+ @property
42
+ @pulumi.getter
43
+ def bucket(self) -> pulumi.Input[str]:
44
+ """
45
+ The name of the bucket that contains the folder.
46
+ """
47
+ return pulumi.get(self, "bucket")
48
+
49
+ @bucket.setter
50
+ def bucket(self, value: pulumi.Input[str]):
51
+ pulumi.set(self, "bucket", value)
52
+
53
+ @property
54
+ @pulumi.getter(name="forceDestroy")
55
+ def force_destroy(self) -> Optional[pulumi.Input[bool]]:
56
+ """
57
+ If set to true, items within folder if any will be force destroyed.
58
+ """
59
+ return pulumi.get(self, "force_destroy")
60
+
61
+ @force_destroy.setter
62
+ def force_destroy(self, value: Optional[pulumi.Input[bool]]):
63
+ pulumi.set(self, "force_destroy", value)
64
+
65
+ @property
66
+ @pulumi.getter
67
+ def name(self) -> Optional[pulumi.Input[str]]:
68
+ """
69
+ The name of the folder expressed as a path. Must include
70
+ trailing '/'. For example, `example_dir/example_dir2/`, `example@#/`, `a-b/d-f/`.
71
+
72
+
73
+ - - -
74
+ """
75
+ return pulumi.get(self, "name")
76
+
77
+ @name.setter
78
+ def name(self, value: Optional[pulumi.Input[str]]):
79
+ pulumi.set(self, "name", value)
80
+
81
+
82
+ @pulumi.input_type
83
+ class _FolderState:
84
+ def __init__(__self__, *,
85
+ bucket: Optional[pulumi.Input[str]] = None,
86
+ create_time: Optional[pulumi.Input[str]] = None,
87
+ force_destroy: Optional[pulumi.Input[bool]] = None,
88
+ metageneration: Optional[pulumi.Input[str]] = None,
89
+ name: Optional[pulumi.Input[str]] = None,
90
+ self_link: Optional[pulumi.Input[str]] = None,
91
+ update_time: Optional[pulumi.Input[str]] = None):
92
+ """
93
+ Input properties used for looking up and filtering Folder resources.
94
+ :param pulumi.Input[str] bucket: The name of the bucket that contains the folder.
95
+ :param pulumi.Input[str] create_time: The timestamp at which this folder was created.
96
+ :param pulumi.Input[bool] force_destroy: If set to true, items within folder if any will be force destroyed.
97
+ :param pulumi.Input[str] metageneration: The metadata generation of the folder.
98
+ :param pulumi.Input[str] name: The name of the folder expressed as a path. Must include
99
+ trailing '/'. For example, `example_dir/example_dir2/`, `example@#/`, `a-b/d-f/`.
100
+
101
+
102
+ - - -
103
+ :param pulumi.Input[str] self_link: The URI of the created resource.
104
+ :param pulumi.Input[str] update_time: The timestamp at which this folder was most recently updated.
105
+ """
106
+ if bucket is not None:
107
+ pulumi.set(__self__, "bucket", bucket)
108
+ if create_time is not None:
109
+ pulumi.set(__self__, "create_time", create_time)
110
+ if force_destroy is not None:
111
+ pulumi.set(__self__, "force_destroy", force_destroy)
112
+ if metageneration is not None:
113
+ pulumi.set(__self__, "metageneration", metageneration)
114
+ if name is not None:
115
+ pulumi.set(__self__, "name", name)
116
+ if self_link is not None:
117
+ pulumi.set(__self__, "self_link", self_link)
118
+ if update_time is not None:
119
+ pulumi.set(__self__, "update_time", update_time)
120
+
121
+ @property
122
+ @pulumi.getter
123
+ def bucket(self) -> Optional[pulumi.Input[str]]:
124
+ """
125
+ The name of the bucket that contains the folder.
126
+ """
127
+ return pulumi.get(self, "bucket")
128
+
129
+ @bucket.setter
130
+ def bucket(self, value: Optional[pulumi.Input[str]]):
131
+ pulumi.set(self, "bucket", value)
132
+
133
+ @property
134
+ @pulumi.getter(name="createTime")
135
+ def create_time(self) -> Optional[pulumi.Input[str]]:
136
+ """
137
+ The timestamp at which this folder was created.
138
+ """
139
+ return pulumi.get(self, "create_time")
140
+
141
+ @create_time.setter
142
+ def create_time(self, value: Optional[pulumi.Input[str]]):
143
+ pulumi.set(self, "create_time", value)
144
+
145
+ @property
146
+ @pulumi.getter(name="forceDestroy")
147
+ def force_destroy(self) -> Optional[pulumi.Input[bool]]:
148
+ """
149
+ If set to true, items within folder if any will be force destroyed.
150
+ """
151
+ return pulumi.get(self, "force_destroy")
152
+
153
+ @force_destroy.setter
154
+ def force_destroy(self, value: Optional[pulumi.Input[bool]]):
155
+ pulumi.set(self, "force_destroy", value)
156
+
157
+ @property
158
+ @pulumi.getter
159
+ def metageneration(self) -> Optional[pulumi.Input[str]]:
160
+ """
161
+ The metadata generation of the folder.
162
+ """
163
+ return pulumi.get(self, "metageneration")
164
+
165
+ @metageneration.setter
166
+ def metageneration(self, value: Optional[pulumi.Input[str]]):
167
+ pulumi.set(self, "metageneration", value)
168
+
169
+ @property
170
+ @pulumi.getter
171
+ def name(self) -> Optional[pulumi.Input[str]]:
172
+ """
173
+ The name of the folder expressed as a path. Must include
174
+ trailing '/'. For example, `example_dir/example_dir2/`, `example@#/`, `a-b/d-f/`.
175
+
176
+
177
+ - - -
178
+ """
179
+ return pulumi.get(self, "name")
180
+
181
+ @name.setter
182
+ def name(self, value: Optional[pulumi.Input[str]]):
183
+ pulumi.set(self, "name", value)
184
+
185
+ @property
186
+ @pulumi.getter(name="selfLink")
187
+ def self_link(self) -> Optional[pulumi.Input[str]]:
188
+ """
189
+ The URI of the created resource.
190
+ """
191
+ return pulumi.get(self, "self_link")
192
+
193
+ @self_link.setter
194
+ def self_link(self, value: Optional[pulumi.Input[str]]):
195
+ pulumi.set(self, "self_link", value)
196
+
197
+ @property
198
+ @pulumi.getter(name="updateTime")
199
+ def update_time(self) -> Optional[pulumi.Input[str]]:
200
+ """
201
+ The timestamp at which this folder was most recently updated.
202
+ """
203
+ return pulumi.get(self, "update_time")
204
+
205
+ @update_time.setter
206
+ def update_time(self, value: Optional[pulumi.Input[str]]):
207
+ pulumi.set(self, "update_time", value)
208
+
209
+
210
+ class Folder(pulumi.CustomResource):
211
+ @overload
212
+ def __init__(__self__,
213
+ resource_name: str,
214
+ opts: Optional[pulumi.ResourceOptions] = None,
215
+ bucket: Optional[pulumi.Input[str]] = None,
216
+ force_destroy: Optional[pulumi.Input[bool]] = None,
217
+ name: Optional[pulumi.Input[str]] = None,
218
+ __props__=None):
219
+ """
220
+ A Google Cloud Storage Folder.
221
+
222
+ The Folder resource represents a folder in a Cloud Storage bucket with hierarchical namespace enabled
223
+
224
+ To get more information about Folder, see:
225
+
226
+ * [API documentation](https://cloud.google.com/storage/docs/json_api/v1/folders)
227
+ * How-to Guides
228
+ * [Official Documentation](https://cloud.google.com/storage/docs/folders-overview)
229
+
230
+ ## Example Usage
231
+
232
+ ### Storage Folder Basic
233
+
234
+ ```python
235
+ import pulumi
236
+ import pulumi_gcp as gcp
237
+
238
+ bucket = gcp.storage.Bucket("bucket",
239
+ name="my-bucket",
240
+ location="EU",
241
+ uniform_bucket_level_access=True,
242
+ hierarchical_namespace={
243
+ "enabled": True,
244
+ })
245
+ folder = gcp.storage.Folder("folder",
246
+ bucket=bucket.name,
247
+ name="parent-folder/")
248
+ subfolder = gcp.storage.Folder("subfolder",
249
+ bucket=bucket.name,
250
+ name=folder.name.apply(lambda name: f"{name}subfolder/"))
251
+ ```
252
+
253
+ ## Import
254
+
255
+ Folder can be imported using any of these accepted formats:
256
+
257
+ * `{{bucket}}/folders/{{name}}`
258
+
259
+ * `{{bucket}}/{{name}}`
260
+
261
+ When using the `pulumi import` command, Folder can be imported using one of the formats above. For example:
262
+
263
+ ```sh
264
+ $ pulumi import gcp:storage/folder:Folder default {{bucket}}/folders/{{name}}
265
+ ```
266
+
267
+ ```sh
268
+ $ pulumi import gcp:storage/folder:Folder default {{bucket}}/{{name}}
269
+ ```
270
+
271
+ :param str resource_name: The name of the resource.
272
+ :param pulumi.ResourceOptions opts: Options for the resource.
273
+ :param pulumi.Input[str] bucket: The name of the bucket that contains the folder.
274
+ :param pulumi.Input[bool] force_destroy: If set to true, items within folder if any will be force destroyed.
275
+ :param pulumi.Input[str] name: The name of the folder expressed as a path. Must include
276
+ trailing '/'. For example, `example_dir/example_dir2/`, `example@#/`, `a-b/d-f/`.
277
+
278
+
279
+ - - -
280
+ """
281
+ ...
282
+ @overload
283
+ def __init__(__self__,
284
+ resource_name: str,
285
+ args: FolderArgs,
286
+ opts: Optional[pulumi.ResourceOptions] = None):
287
+ """
288
+ A Google Cloud Storage Folder.
289
+
290
+ The Folder resource represents a folder in a Cloud Storage bucket with hierarchical namespace enabled
291
+
292
+ To get more information about Folder, see:
293
+
294
+ * [API documentation](https://cloud.google.com/storage/docs/json_api/v1/folders)
295
+ * How-to Guides
296
+ * [Official Documentation](https://cloud.google.com/storage/docs/folders-overview)
297
+
298
+ ## Example Usage
299
+
300
+ ### Storage Folder Basic
301
+
302
+ ```python
303
+ import pulumi
304
+ import pulumi_gcp as gcp
305
+
306
+ bucket = gcp.storage.Bucket("bucket",
307
+ name="my-bucket",
308
+ location="EU",
309
+ uniform_bucket_level_access=True,
310
+ hierarchical_namespace={
311
+ "enabled": True,
312
+ })
313
+ folder = gcp.storage.Folder("folder",
314
+ bucket=bucket.name,
315
+ name="parent-folder/")
316
+ subfolder = gcp.storage.Folder("subfolder",
317
+ bucket=bucket.name,
318
+ name=folder.name.apply(lambda name: f"{name}subfolder/"))
319
+ ```
320
+
321
+ ## Import
322
+
323
+ Folder can be imported using any of these accepted formats:
324
+
325
+ * `{{bucket}}/folders/{{name}}`
326
+
327
+ * `{{bucket}}/{{name}}`
328
+
329
+ When using the `pulumi import` command, Folder can be imported using one of the formats above. For example:
330
+
331
+ ```sh
332
+ $ pulumi import gcp:storage/folder:Folder default {{bucket}}/folders/{{name}}
333
+ ```
334
+
335
+ ```sh
336
+ $ pulumi import gcp:storage/folder:Folder default {{bucket}}/{{name}}
337
+ ```
338
+
339
+ :param str resource_name: The name of the resource.
340
+ :param FolderArgs args: The arguments to use to populate this resource's properties.
341
+ :param pulumi.ResourceOptions opts: Options for the resource.
342
+ """
343
+ ...
344
+ def __init__(__self__, resource_name: str, *args, **kwargs):
345
+ resource_args, opts = _utilities.get_resource_args_opts(FolderArgs, pulumi.ResourceOptions, *args, **kwargs)
346
+ if resource_args is not None:
347
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
348
+ else:
349
+ __self__._internal_init(resource_name, *args, **kwargs)
350
+
351
+ def _internal_init(__self__,
352
+ resource_name: str,
353
+ opts: Optional[pulumi.ResourceOptions] = None,
354
+ bucket: Optional[pulumi.Input[str]] = None,
355
+ force_destroy: Optional[pulumi.Input[bool]] = None,
356
+ name: Optional[pulumi.Input[str]] = None,
357
+ __props__=None):
358
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
359
+ if not isinstance(opts, pulumi.ResourceOptions):
360
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
361
+ if opts.id is None:
362
+ if __props__ is not None:
363
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
364
+ __props__ = FolderArgs.__new__(FolderArgs)
365
+
366
+ if bucket is None and not opts.urn:
367
+ raise TypeError("Missing required property 'bucket'")
368
+ __props__.__dict__["bucket"] = bucket
369
+ __props__.__dict__["force_destroy"] = force_destroy
370
+ __props__.__dict__["name"] = name
371
+ __props__.__dict__["create_time"] = None
372
+ __props__.__dict__["metageneration"] = None
373
+ __props__.__dict__["self_link"] = None
374
+ __props__.__dict__["update_time"] = None
375
+ super(Folder, __self__).__init__(
376
+ 'gcp:storage/folder:Folder',
377
+ resource_name,
378
+ __props__,
379
+ opts)
380
+
381
+ @staticmethod
382
+ def get(resource_name: str,
383
+ id: pulumi.Input[str],
384
+ opts: Optional[pulumi.ResourceOptions] = None,
385
+ bucket: Optional[pulumi.Input[str]] = None,
386
+ create_time: Optional[pulumi.Input[str]] = None,
387
+ force_destroy: Optional[pulumi.Input[bool]] = None,
388
+ metageneration: Optional[pulumi.Input[str]] = None,
389
+ name: Optional[pulumi.Input[str]] = None,
390
+ self_link: Optional[pulumi.Input[str]] = None,
391
+ update_time: Optional[pulumi.Input[str]] = None) -> 'Folder':
392
+ """
393
+ Get an existing Folder resource's state with the given name, id, and optional extra
394
+ properties used to qualify the lookup.
395
+
396
+ :param str resource_name: The unique name of the resulting resource.
397
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
398
+ :param pulumi.ResourceOptions opts: Options for the resource.
399
+ :param pulumi.Input[str] bucket: The name of the bucket that contains the folder.
400
+ :param pulumi.Input[str] create_time: The timestamp at which this folder was created.
401
+ :param pulumi.Input[bool] force_destroy: If set to true, items within folder if any will be force destroyed.
402
+ :param pulumi.Input[str] metageneration: The metadata generation of the folder.
403
+ :param pulumi.Input[str] name: The name of the folder expressed as a path. Must include
404
+ trailing '/'. For example, `example_dir/example_dir2/`, `example@#/`, `a-b/d-f/`.
405
+
406
+
407
+ - - -
408
+ :param pulumi.Input[str] self_link: The URI of the created resource.
409
+ :param pulumi.Input[str] update_time: The timestamp at which this folder was most recently updated.
410
+ """
411
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
412
+
413
+ __props__ = _FolderState.__new__(_FolderState)
414
+
415
+ __props__.__dict__["bucket"] = bucket
416
+ __props__.__dict__["create_time"] = create_time
417
+ __props__.__dict__["force_destroy"] = force_destroy
418
+ __props__.__dict__["metageneration"] = metageneration
419
+ __props__.__dict__["name"] = name
420
+ __props__.__dict__["self_link"] = self_link
421
+ __props__.__dict__["update_time"] = update_time
422
+ return Folder(resource_name, opts=opts, __props__=__props__)
423
+
424
+ @property
425
+ @pulumi.getter
426
+ def bucket(self) -> pulumi.Output[str]:
427
+ """
428
+ The name of the bucket that contains the folder.
429
+ """
430
+ return pulumi.get(self, "bucket")
431
+
432
+ @property
433
+ @pulumi.getter(name="createTime")
434
+ def create_time(self) -> pulumi.Output[str]:
435
+ """
436
+ The timestamp at which this folder was created.
437
+ """
438
+ return pulumi.get(self, "create_time")
439
+
440
+ @property
441
+ @pulumi.getter(name="forceDestroy")
442
+ def force_destroy(self) -> pulumi.Output[Optional[bool]]:
443
+ """
444
+ If set to true, items within folder if any will be force destroyed.
445
+ """
446
+ return pulumi.get(self, "force_destroy")
447
+
448
+ @property
449
+ @pulumi.getter
450
+ def metageneration(self) -> pulumi.Output[str]:
451
+ """
452
+ The metadata generation of the folder.
453
+ """
454
+ return pulumi.get(self, "metageneration")
455
+
456
+ @property
457
+ @pulumi.getter
458
+ def name(self) -> pulumi.Output[str]:
459
+ """
460
+ The name of the folder expressed as a path. Must include
461
+ trailing '/'. For example, `example_dir/example_dir2/`, `example@#/`, `a-b/d-f/`.
462
+
463
+
464
+ - - -
465
+ """
466
+ return pulumi.get(self, "name")
467
+
468
+ @property
469
+ @pulumi.getter(name="selfLink")
470
+ def self_link(self) -> pulumi.Output[str]:
471
+ """
472
+ The URI of the created resource.
473
+ """
474
+ return pulumi.get(self, "self_link")
475
+
476
+ @property
477
+ @pulumi.getter(name="updateTime")
478
+ def update_time(self) -> pulumi.Output[str]:
479
+ """
480
+ The timestamp at which this folder was most recently updated.
481
+ """
482
+ return pulumi.get(self, "update_time")
483
+