pulumi-gcp 8.18.0a1738650987__py3-none-any.whl → 8.18.0a1738676305__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 (69) hide show
  1. pulumi_gcp/__init__.py +24 -0
  2. pulumi_gcp/accesscontextmanager/service_perimeter_dry_run_resource.py +28 -0
  3. pulumi_gcp/alloydb/user.py +10 -1
  4. pulumi_gcp/assuredworkloads/workload.py +7 -7
  5. pulumi_gcp/beyondcorp/__init__.py +4 -0
  6. pulumi_gcp/beyondcorp/_inputs.py +130 -0
  7. pulumi_gcp/beyondcorp/get_security_gateway_iam_policy.py +180 -0
  8. pulumi_gcp/beyondcorp/outputs.py +76 -0
  9. pulumi_gcp/beyondcorp/security_gateway.py +52 -25
  10. pulumi_gcp/beyondcorp/security_gateway_iam_binding.py +1075 -0
  11. pulumi_gcp/beyondcorp/security_gateway_iam_member.py +1075 -0
  12. pulumi_gcp/beyondcorp/security_gateway_iam_policy.py +894 -0
  13. pulumi_gcp/bigquery/_inputs.py +33 -0
  14. pulumi_gcp/bigquery/dataset.py +7 -7
  15. pulumi_gcp/bigquery/outputs.py +36 -0
  16. pulumi_gcp/bigquery/table.py +61 -7
  17. pulumi_gcp/chronicle/retrohunt.py +0 -16
  18. pulumi_gcp/cloudquota/s_quota_adjuster_settings.py +23 -23
  19. pulumi_gcp/compute/_inputs.py +9 -9
  20. pulumi_gcp/compute/get_network.py +3 -3
  21. pulumi_gcp/compute/network.py +7 -7
  22. pulumi_gcp/compute/outputs.py +6 -6
  23. pulumi_gcp/compute/router_peer.py +112 -0
  24. pulumi_gcp/container/_inputs.py +79 -20
  25. pulumi_gcp/container/outputs.py +75 -12
  26. pulumi_gcp/dataproc/_inputs.py +34 -0
  27. pulumi_gcp/dataproc/outputs.py +37 -0
  28. pulumi_gcp/dataproc/workflow_template.py +47 -0
  29. pulumi_gcp/firestore/field.py +60 -0
  30. pulumi_gcp/gkehub/_inputs.py +20 -0
  31. pulumi_gcp/gkehub/membership_binding.py +6 -6
  32. pulumi_gcp/gkehub/membership_rbac_role_binding.py +4 -4
  33. pulumi_gcp/gkehub/namespace.py +4 -4
  34. pulumi_gcp/gkehub/outputs.py +26 -1
  35. pulumi_gcp/gkehub/scope_rbac_role_binding.py +4 -4
  36. pulumi_gcp/iap/tunnel_dest_group.py +2 -2
  37. pulumi_gcp/integrationconnectors/managed_zone.py +8 -8
  38. pulumi_gcp/netapp/storage_pool.py +1 -1
  39. pulumi_gcp/networkconnectivity/spoke.py +76 -14
  40. pulumi_gcp/orgpolicy/policy.py +2 -2
  41. pulumi_gcp/parametermanager/__init__.py +3 -0
  42. pulumi_gcp/parametermanager/get_parameter_version.py +216 -0
  43. pulumi_gcp/parametermanager/get_parameters.py +140 -0
  44. pulumi_gcp/parametermanager/get_regional_parameter_version.py +235 -0
  45. pulumi_gcp/parametermanager/outputs.py +156 -0
  46. pulumi_gcp/pubsub/_inputs.py +264 -0
  47. pulumi_gcp/pubsub/outputs.py +353 -0
  48. pulumi_gcp/pubsub/subscription.py +6 -6
  49. pulumi_gcp/pubsub/topic.py +70 -0
  50. pulumi_gcp/pulumi-plugin.json +1 -1
  51. pulumi_gcp/resourcemanager/lien.py +12 -0
  52. pulumi_gcp/secretmanager/regional_secret.py +4 -0
  53. pulumi_gcp/secretmanager/regional_secret_version.py +12 -0
  54. pulumi_gcp/secretmanager/secret.py +4 -0
  55. pulumi_gcp/secretmanager/secret_version.py +12 -0
  56. pulumi_gcp/securityposture/posture.py +4 -0
  57. pulumi_gcp/securityposture/posture_deployment.py +4 -0
  58. pulumi_gcp/serviceaccount/get_s.py +98 -8
  59. pulumi_gcp/spanner/_inputs.py +68 -0
  60. pulumi_gcp/spanner/backup_schedule.py +70 -4
  61. pulumi_gcp/spanner/outputs.py +60 -0
  62. pulumi_gcp/storage/get_bucket_object_content.py +4 -4
  63. pulumi_gcp/vertex/ai_endpoint.py +4 -4
  64. pulumi_gcp/vertex/ai_feature_online_store_featureview.py +4 -4
  65. pulumi_gcp/workflows/workflow.py +175 -0
  66. {pulumi_gcp-8.18.0a1738650987.dist-info → pulumi_gcp-8.18.0a1738676305.dist-info}/METADATA +1 -1
  67. {pulumi_gcp-8.18.0a1738650987.dist-info → pulumi_gcp-8.18.0a1738676305.dist-info}/RECORD +69 -62
  68. {pulumi_gcp-8.18.0a1738650987.dist-info → pulumi_gcp-8.18.0a1738676305.dist-info}/WHEEL +0 -0
  69. {pulumi_gcp-8.18.0a1738650987.dist-info → pulumi_gcp-8.18.0a1738676305.dist-info}/top_level.txt +0 -0
@@ -342,6 +342,12 @@ class RegionalSecretVersion(pulumi.CustomResource):
342
342
  """
343
343
  A regional secret version resource.
344
344
 
345
+ To get more information about RegionalSecretVersion, see:
346
+
347
+ * [API documentation](https://cloud.google.com/secret-manager/docs/reference/rest/v1/projects.locations.secrets.versions)
348
+ * How-to Guides
349
+ * [Create and deploy a Regional Secret Version](https://cloud.google.com/secret-manager/regional-secrets/add-secret-version-rs)
350
+
345
351
  ## Example Usage
346
352
 
347
353
  ### Regional Secret Version Basic
@@ -453,6 +459,12 @@ class RegionalSecretVersion(pulumi.CustomResource):
453
459
  """
454
460
  A regional secret version resource.
455
461
 
462
+ To get more information about RegionalSecretVersion, see:
463
+
464
+ * [API documentation](https://cloud.google.com/secret-manager/docs/reference/rest/v1/projects.locations.secrets.versions)
465
+ * How-to Guides
466
+ * [Create and deploy a Regional Secret Version](https://cloud.google.com/secret-manager/regional-secrets/add-secret-version-rs)
467
+
456
468
  ## Example Usage
457
469
 
458
470
  ### Regional Secret Version Basic
@@ -583,6 +583,8 @@ class Secret(pulumi.CustomResource):
583
583
  To get more information about Secret, see:
584
584
 
585
585
  * [API documentation](https://cloud.google.com/secret-manager/docs/reference/rest/v1/projects.secrets)
586
+ * How-to Guides
587
+ * [Create and deploy a Secret](https://cloud.google.com/secret-manager/docs/creating-and-accessing-secrets)
586
588
 
587
589
  ## Example Usage
588
590
 
@@ -743,6 +745,8 @@ class Secret(pulumi.CustomResource):
743
745
  To get more information about Secret, see:
744
746
 
745
747
  * [API documentation](https://cloud.google.com/secret-manager/docs/reference/rest/v1/projects.secrets)
748
+ * How-to Guides
749
+ * [Create and deploy a Secret](https://cloud.google.com/secret-manager/docs/creating-and-accessing-secrets)
746
750
 
747
751
  ## Example Usage
748
752
 
@@ -306,6 +306,12 @@ class SecretVersion(pulumi.CustomResource):
306
306
  """
307
307
  A secret version resource.
308
308
 
309
+ To get more information about SecretVersion, see:
310
+
311
+ * [API documentation](https://cloud.google.com/secret-manager/docs/reference/rest/v1/projects.secrets.versions)
312
+ * How-to Guides
313
+ * [Create and deploy a Secret Version](https://cloud.google.com/secret-manager/docs/add-secret-version)
314
+
309
315
  ## Example Usage
310
316
 
311
317
  ### Secret Version Basic
@@ -426,6 +432,12 @@ class SecretVersion(pulumi.CustomResource):
426
432
  """
427
433
  A secret version resource.
428
434
 
435
+ To get more information about SecretVersion, see:
436
+
437
+ * [API documentation](https://cloud.google.com/secret-manager/docs/reference/rest/v1/projects.secrets.versions)
438
+ * How-to Guides
439
+ * [Create and deploy a Secret Version](https://cloud.google.com/secret-manager/docs/add-secret-version)
440
+
429
441
  ## Example Usage
430
442
 
431
443
  ### Secret Version Basic
@@ -348,6 +348,8 @@ class Posture(pulumi.CustomResource):
348
348
  Every update to a deployed posture creates a new posture revision with an updated revision_id.
349
349
 
350
350
  To get more information about Posture, see:
351
+
352
+ * [API documentation](https://cloud.google.com/security-command-center/docs/reference/securityposture/rest/v1/Posture)
351
353
  * How-to Guides
352
354
  * [Create and deploy a posture](https://cloud.google.com/security-command-center/docs/how-to-use-security-posture)
353
355
 
@@ -499,6 +501,8 @@ class Posture(pulumi.CustomResource):
499
501
  Every update to a deployed posture creates a new posture revision with an updated revision_id.
500
502
 
501
503
  To get more information about Posture, see:
504
+
505
+ * [API documentation](https://cloud.google.com/security-command-center/docs/reference/securityposture/rest/v1/Posture)
502
506
  * How-to Guides
503
507
  * [Create and deploy a posture](https://cloud.google.com/security-command-center/docs/how-to-use-security-posture)
504
508
 
@@ -459,6 +459,8 @@ class PostureDeployment(pulumi.CustomResource):
459
459
  on a resource.
460
460
 
461
461
  To get more information about PostureDeployment, see:
462
+
463
+ * [API documentation](https://cloud.google.com/security-command-center/docs/reference/securityposture/rest/v1/organizations.locations.postureDeployments)
462
464
  * How-to Guides
463
465
  * [Create and deploy a posture](https://cloud.google.com/security-command-center/docs/how-to-use-security-posture)
464
466
 
@@ -505,6 +507,8 @@ class PostureDeployment(pulumi.CustomResource):
505
507
  on a resource.
506
508
 
507
509
  To get more information about PostureDeployment, see:
510
+
511
+ * [API documentation](https://cloud.google.com/security-command-center/docs/reference/securityposture/rest/v1/organizations.locations.postureDeployments)
508
512
  * How-to Guides
509
513
  * [Create and deploy a posture](https://cloud.google.com/security-command-center/docs/how-to-use-security-posture)
510
514
 
@@ -27,16 +27,22 @@ class GetSResult:
27
27
  """
28
28
  A collection of values returned by getS.
29
29
  """
30
- def __init__(__self__, accounts=None, id=None, project=None):
30
+ def __init__(__self__, accounts=None, id=None, prefix=None, project=None, regex=None):
31
31
  if accounts and not isinstance(accounts, list):
32
32
  raise TypeError("Expected argument 'accounts' to be a list")
33
33
  pulumi.set(__self__, "accounts", accounts)
34
34
  if id and not isinstance(id, str):
35
35
  raise TypeError("Expected argument 'id' to be a str")
36
36
  pulumi.set(__self__, "id", id)
37
+ if prefix and not isinstance(prefix, str):
38
+ raise TypeError("Expected argument 'prefix' to be a str")
39
+ pulumi.set(__self__, "prefix", prefix)
37
40
  if project and not isinstance(project, str):
38
41
  raise TypeError("Expected argument 'project' to be a str")
39
42
  pulumi.set(__self__, "project", project)
43
+ if regex and not isinstance(regex, str):
44
+ raise TypeError("Expected argument 'regex' to be a str")
45
+ pulumi.set(__self__, "regex", regex)
40
46
 
41
47
  @property
42
48
  @pulumi.getter
@@ -54,11 +60,21 @@ class GetSResult:
54
60
  """
55
61
  return pulumi.get(self, "id")
56
62
 
63
+ @property
64
+ @pulumi.getter
65
+ def prefix(self) -> Optional[str]:
66
+ return pulumi.get(self, "prefix")
67
+
57
68
  @property
58
69
  @pulumi.getter
59
70
  def project(self) -> Optional[str]:
60
71
  return pulumi.get(self, "project")
61
72
 
73
+ @property
74
+ @pulumi.getter
75
+ def regex(self) -> Optional[str]:
76
+ return pulumi.get(self, "regex")
77
+
62
78
 
63
79
  class AwaitableGetSResult(GetSResult):
64
80
  # pylint: disable=using-constant-test
@@ -68,10 +84,14 @@ class AwaitableGetSResult(GetSResult):
68
84
  return GetSResult(
69
85
  accounts=self.accounts,
70
86
  id=self.id,
71
- project=self.project)
87
+ prefix=self.prefix,
88
+ project=self.project,
89
+ regex=self.regex)
72
90
 
73
91
 
74
- def get_s(project: Optional[str] = None,
92
+ def get_s(prefix: Optional[str] = None,
93
+ project: Optional[str] = None,
94
+ regex: Optional[str] = None,
75
95
  opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetSResult:
76
96
  """
77
97
  Gets a list of all service accounts from a project.
@@ -80,7 +100,7 @@ def get_s(project: Optional[str] = None,
80
100
 
81
101
  ## Example Usage
82
102
 
83
- Example service accounts.
103
+ Get all service accounts from a project
84
104
 
85
105
  ```python
86
106
  import pulumi
@@ -89,19 +109,55 @@ def get_s(project: Optional[str] = None,
89
109
  example = gcp.serviceaccount.get_s(project="example-project")
90
110
  ```
91
111
 
112
+ Get all service accounts that are prefixed with `"foo"`
113
+
114
+ ```python
115
+ import pulumi
116
+ import pulumi_gcp as gcp
117
+
118
+ foo = gcp.serviceaccount.get_s(prefix="foo")
119
+ ```
120
+
121
+ Get all service accounts that contain `"bar"`
122
+
123
+ ```python
124
+ import pulumi
125
+ import pulumi_gcp as gcp
126
+
127
+ bar = gcp.serviceaccount.get_s(regex=".*bar.*")
128
+ ```
129
+
130
+ Get all service accounts that are prefixed with `"foo"` and contain `"bar"`
131
+
132
+ ```python
133
+ import pulumi
134
+ import pulumi_gcp as gcp
135
+
136
+ foo_bar = gcp.serviceaccount.get_s(prefix="foo",
137
+ regex=".*bar.*")
138
+ ```
139
+
92
140
 
141
+ :param str prefix: A prefix for filtering. It's applied with the `account_id`.
93
142
  :param str project: The ID of the project. If it is not provided, the provider project is used.
143
+ :param str regex: A regular expression for filtering. It's applied with the `email`. Further information about the syntax can be found [here](https://github.com/google/re2/wiki/Syntax).
94
144
  """
95
145
  __args__ = dict()
146
+ __args__['prefix'] = prefix
96
147
  __args__['project'] = project
148
+ __args__['regex'] = regex
97
149
  opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
98
150
  __ret__ = pulumi.runtime.invoke('gcp:serviceaccount/getS:getS', __args__, opts=opts, typ=GetSResult).value
99
151
 
100
152
  return AwaitableGetSResult(
101
153
  accounts=pulumi.get(__ret__, 'accounts'),
102
154
  id=pulumi.get(__ret__, 'id'),
103
- project=pulumi.get(__ret__, 'project'))
104
- def get_s_output(project: Optional[pulumi.Input[Optional[str]]] = None,
155
+ prefix=pulumi.get(__ret__, 'prefix'),
156
+ project=pulumi.get(__ret__, 'project'),
157
+ regex=pulumi.get(__ret__, 'regex'))
158
+ def get_s_output(prefix: Optional[pulumi.Input[Optional[str]]] = None,
159
+ project: Optional[pulumi.Input[Optional[str]]] = None,
160
+ regex: Optional[pulumi.Input[Optional[str]]] = None,
105
161
  opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetSResult]:
106
162
  """
107
163
  Gets a list of all service accounts from a project.
@@ -110,7 +166,7 @@ def get_s_output(project: Optional[pulumi.Input[Optional[str]]] = None,
110
166
 
111
167
  ## Example Usage
112
168
 
113
- Example service accounts.
169
+ Get all service accounts from a project
114
170
 
115
171
  ```python
116
172
  import pulumi
@@ -119,14 +175,48 @@ def get_s_output(project: Optional[pulumi.Input[Optional[str]]] = None,
119
175
  example = gcp.serviceaccount.get_s(project="example-project")
120
176
  ```
121
177
 
178
+ Get all service accounts that are prefixed with `"foo"`
179
+
180
+ ```python
181
+ import pulumi
182
+ import pulumi_gcp as gcp
183
+
184
+ foo = gcp.serviceaccount.get_s(prefix="foo")
185
+ ```
186
+
187
+ Get all service accounts that contain `"bar"`
188
+
189
+ ```python
190
+ import pulumi
191
+ import pulumi_gcp as gcp
192
+
193
+ bar = gcp.serviceaccount.get_s(regex=".*bar.*")
194
+ ```
195
+
196
+ Get all service accounts that are prefixed with `"foo"` and contain `"bar"`
197
+
198
+ ```python
199
+ import pulumi
200
+ import pulumi_gcp as gcp
201
+
202
+ foo_bar = gcp.serviceaccount.get_s(prefix="foo",
203
+ regex=".*bar.*")
204
+ ```
205
+
122
206
 
207
+ :param str prefix: A prefix for filtering. It's applied with the `account_id`.
123
208
  :param str project: The ID of the project. If it is not provided, the provider project is used.
209
+ :param str regex: A regular expression for filtering. It's applied with the `email`. Further information about the syntax can be found [here](https://github.com/google/re2/wiki/Syntax).
124
210
  """
125
211
  __args__ = dict()
212
+ __args__['prefix'] = prefix
126
213
  __args__['project'] = project
214
+ __args__['regex'] = regex
127
215
  opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
128
216
  __ret__ = pulumi.runtime.invoke_output('gcp:serviceaccount/getS:getS', __args__, opts=opts, typ=GetSResult)
129
217
  return __ret__.apply(lambda __response__: GetSResult(
130
218
  accounts=pulumi.get(__response__, 'accounts'),
131
219
  id=pulumi.get(__response__, 'id'),
132
- project=pulumi.get(__response__, 'project')))
220
+ prefix=pulumi.get(__response__, 'prefix'),
221
+ project=pulumi.get(__response__, 'project'),
222
+ regex=pulumi.get(__response__, 'regex')))
@@ -15,6 +15,8 @@ else:
15
15
  from .. import _utilities
16
16
 
17
17
  __all__ = [
18
+ 'BackupScheduleEncryptionConfigArgs',
19
+ 'BackupScheduleEncryptionConfigArgsDict',
18
20
  'BackupScheduleFullBackupSpecArgs',
19
21
  'BackupScheduleFullBackupSpecArgsDict',
20
22
  'BackupScheduleIncrementalBackupSpecArgs',
@@ -53,6 +55,72 @@ __all__ = [
53
55
 
54
56
  MYPY = False
55
57
 
58
+ if not MYPY:
59
+ class BackupScheduleEncryptionConfigArgsDict(TypedDict):
60
+ encryption_type: pulumi.Input[str]
61
+ """
62
+ The encryption type of backups created by the backup schedule.
63
+ Possible values are USE_DATABASE_ENCRYPTION, GOOGLE_DEFAULT_ENCRYPTION, or CUSTOMER_MANAGED_ENCRYPTION.
64
+ If you use CUSTOMER_MANAGED_ENCRYPTION, you must specify a kmsKeyName.
65
+ If your backup type is incremental-backup, the encryption type must be GOOGLE_DEFAULT_ENCRYPTION.
66
+ Possible values are: `USE_DATABASE_ENCRYPTION`, `GOOGLE_DEFAULT_ENCRYPTION`, `CUSTOMER_MANAGED_ENCRYPTION`.
67
+ """
68
+ kms_key_name: NotRequired[pulumi.Input[str]]
69
+ """
70
+ The resource name of the Cloud KMS key to use for encryption.
71
+ Format: 'projects/{project}/locations/{location}/keyRings/{keyRing}/cryptoKeys/{cryptoKey}'
72
+ """
73
+ elif False:
74
+ BackupScheduleEncryptionConfigArgsDict: TypeAlias = Mapping[str, Any]
75
+
76
+ @pulumi.input_type
77
+ class BackupScheduleEncryptionConfigArgs:
78
+ def __init__(__self__, *,
79
+ encryption_type: pulumi.Input[str],
80
+ kms_key_name: Optional[pulumi.Input[str]] = None):
81
+ """
82
+ :param pulumi.Input[str] encryption_type: The encryption type of backups created by the backup schedule.
83
+ Possible values are USE_DATABASE_ENCRYPTION, GOOGLE_DEFAULT_ENCRYPTION, or CUSTOMER_MANAGED_ENCRYPTION.
84
+ If you use CUSTOMER_MANAGED_ENCRYPTION, you must specify a kmsKeyName.
85
+ If your backup type is incremental-backup, the encryption type must be GOOGLE_DEFAULT_ENCRYPTION.
86
+ Possible values are: `USE_DATABASE_ENCRYPTION`, `GOOGLE_DEFAULT_ENCRYPTION`, `CUSTOMER_MANAGED_ENCRYPTION`.
87
+ :param pulumi.Input[str] kms_key_name: The resource name of the Cloud KMS key to use for encryption.
88
+ Format: 'projects/{project}/locations/{location}/keyRings/{keyRing}/cryptoKeys/{cryptoKey}'
89
+ """
90
+ pulumi.set(__self__, "encryption_type", encryption_type)
91
+ if kms_key_name is not None:
92
+ pulumi.set(__self__, "kms_key_name", kms_key_name)
93
+
94
+ @property
95
+ @pulumi.getter(name="encryptionType")
96
+ def encryption_type(self) -> pulumi.Input[str]:
97
+ """
98
+ The encryption type of backups created by the backup schedule.
99
+ Possible values are USE_DATABASE_ENCRYPTION, GOOGLE_DEFAULT_ENCRYPTION, or CUSTOMER_MANAGED_ENCRYPTION.
100
+ If you use CUSTOMER_MANAGED_ENCRYPTION, you must specify a kmsKeyName.
101
+ If your backup type is incremental-backup, the encryption type must be GOOGLE_DEFAULT_ENCRYPTION.
102
+ Possible values are: `USE_DATABASE_ENCRYPTION`, `GOOGLE_DEFAULT_ENCRYPTION`, `CUSTOMER_MANAGED_ENCRYPTION`.
103
+ """
104
+ return pulumi.get(self, "encryption_type")
105
+
106
+ @encryption_type.setter
107
+ def encryption_type(self, value: pulumi.Input[str]):
108
+ pulumi.set(self, "encryption_type", value)
109
+
110
+ @property
111
+ @pulumi.getter(name="kmsKeyName")
112
+ def kms_key_name(self) -> Optional[pulumi.Input[str]]:
113
+ """
114
+ The resource name of the Cloud KMS key to use for encryption.
115
+ Format: 'projects/{project}/locations/{location}/keyRings/{keyRing}/cryptoKeys/{cryptoKey}'
116
+ """
117
+ return pulumi.get(self, "kms_key_name")
118
+
119
+ @kms_key_name.setter
120
+ def kms_key_name(self, value: Optional[pulumi.Input[str]]):
121
+ pulumi.set(self, "kms_key_name", value)
122
+
123
+
56
124
  if not MYPY:
57
125
  class BackupScheduleFullBackupSpecArgsDict(TypedDict):
58
126
  pass
@@ -24,6 +24,7 @@ class BackupScheduleArgs:
24
24
  database: pulumi.Input[str],
25
25
  instance: pulumi.Input[str],
26
26
  retention_duration: pulumi.Input[str],
27
+ encryption_config: Optional[pulumi.Input['BackupScheduleEncryptionConfigArgs']] = None,
27
28
  full_backup_spec: Optional[pulumi.Input['BackupScheduleFullBackupSpecArgs']] = None,
28
29
  incremental_backup_spec: Optional[pulumi.Input['BackupScheduleIncrementalBackupSpecArgs']] = None,
29
30
  name: Optional[pulumi.Input[str]] = None,
@@ -39,6 +40,8 @@ class BackupScheduleArgs:
39
40
  :param pulumi.Input[str] retention_duration: At what relative time in the future, compared to its creation time, the backup should be deleted, e.g. keep backups for 7 days.
40
41
  A duration in seconds with up to nine fractional digits, ending with 's'. Example: '3.5s'.
41
42
  You can set this to a value up to 366 days.
43
+ :param pulumi.Input['BackupScheduleEncryptionConfigArgs'] encryption_config: Configuration for the encryption of the backup schedule.
44
+ Structure is documented below.
42
45
  :param pulumi.Input['BackupScheduleFullBackupSpecArgs'] full_backup_spec: The schedule creates only full backups..
43
46
  :param pulumi.Input['BackupScheduleIncrementalBackupSpecArgs'] incremental_backup_spec: The schedule creates incremental backup chains.
44
47
  :param pulumi.Input[str] name: A unique identifier for the backup schedule, which cannot be changed after
@@ -51,6 +54,8 @@ class BackupScheduleArgs:
51
54
  pulumi.set(__self__, "database", database)
52
55
  pulumi.set(__self__, "instance", instance)
53
56
  pulumi.set(__self__, "retention_duration", retention_duration)
57
+ if encryption_config is not None:
58
+ pulumi.set(__self__, "encryption_config", encryption_config)
54
59
  if full_backup_spec is not None:
55
60
  pulumi.set(__self__, "full_backup_spec", full_backup_spec)
56
61
  if incremental_backup_spec is not None:
@@ -103,6 +108,19 @@ class BackupScheduleArgs:
103
108
  def retention_duration(self, value: pulumi.Input[str]):
104
109
  pulumi.set(self, "retention_duration", value)
105
110
 
111
+ @property
112
+ @pulumi.getter(name="encryptionConfig")
113
+ def encryption_config(self) -> Optional[pulumi.Input['BackupScheduleEncryptionConfigArgs']]:
114
+ """
115
+ Configuration for the encryption of the backup schedule.
116
+ Structure is documented below.
117
+ """
118
+ return pulumi.get(self, "encryption_config")
119
+
120
+ @encryption_config.setter
121
+ def encryption_config(self, value: Optional[pulumi.Input['BackupScheduleEncryptionConfigArgs']]):
122
+ pulumi.set(self, "encryption_config", value)
123
+
106
124
  @property
107
125
  @pulumi.getter(name="fullBackupSpec")
108
126
  def full_backup_spec(self) -> Optional[pulumi.Input['BackupScheduleFullBackupSpecArgs']]:
@@ -171,6 +189,7 @@ class BackupScheduleArgs:
171
189
  class _BackupScheduleState:
172
190
  def __init__(__self__, *,
173
191
  database: Optional[pulumi.Input[str]] = None,
192
+ encryption_config: Optional[pulumi.Input['BackupScheduleEncryptionConfigArgs']] = None,
174
193
  full_backup_spec: Optional[pulumi.Input['BackupScheduleFullBackupSpecArgs']] = None,
175
194
  incremental_backup_spec: Optional[pulumi.Input['BackupScheduleIncrementalBackupSpecArgs']] = None,
176
195
  instance: Optional[pulumi.Input[str]] = None,
@@ -184,6 +203,8 @@ class _BackupScheduleState:
184
203
 
185
204
 
186
205
  - - -
206
+ :param pulumi.Input['BackupScheduleEncryptionConfigArgs'] encryption_config: Configuration for the encryption of the backup schedule.
207
+ Structure is documented below.
187
208
  :param pulumi.Input['BackupScheduleFullBackupSpecArgs'] full_backup_spec: The schedule creates only full backups..
188
209
  :param pulumi.Input['BackupScheduleIncrementalBackupSpecArgs'] incremental_backup_spec: The schedule creates incremental backup chains.
189
210
  :param pulumi.Input[str] instance: The instance to create the database on.
@@ -199,6 +220,8 @@ class _BackupScheduleState:
199
220
  """
200
221
  if database is not None:
201
222
  pulumi.set(__self__, "database", database)
223
+ if encryption_config is not None:
224
+ pulumi.set(__self__, "encryption_config", encryption_config)
202
225
  if full_backup_spec is not None:
203
226
  pulumi.set(__self__, "full_backup_spec", full_backup_spec)
204
227
  if incremental_backup_spec is not None:
@@ -229,6 +252,19 @@ class _BackupScheduleState:
229
252
  def database(self, value: Optional[pulumi.Input[str]]):
230
253
  pulumi.set(self, "database", value)
231
254
 
255
+ @property
256
+ @pulumi.getter(name="encryptionConfig")
257
+ def encryption_config(self) -> Optional[pulumi.Input['BackupScheduleEncryptionConfigArgs']]:
258
+ """
259
+ Configuration for the encryption of the backup schedule.
260
+ Structure is documented below.
261
+ """
262
+ return pulumi.get(self, "encryption_config")
263
+
264
+ @encryption_config.setter
265
+ def encryption_config(self, value: Optional[pulumi.Input['BackupScheduleEncryptionConfigArgs']]):
266
+ pulumi.set(self, "encryption_config", value)
267
+
232
268
  @property
233
269
  @pulumi.getter(name="fullBackupSpec")
234
270
  def full_backup_spec(self) -> Optional[pulumi.Input['BackupScheduleFullBackupSpecArgs']]:
@@ -325,6 +361,7 @@ class BackupSchedule(pulumi.CustomResource):
325
361
  resource_name: str,
326
362
  opts: Optional[pulumi.ResourceOptions] = None,
327
363
  database: Optional[pulumi.Input[str]] = None,
364
+ encryption_config: Optional[pulumi.Input[Union['BackupScheduleEncryptionConfigArgs', 'BackupScheduleEncryptionConfigArgsDict']]] = None,
328
365
  full_backup_spec: Optional[pulumi.Input[Union['BackupScheduleFullBackupSpecArgs', 'BackupScheduleFullBackupSpecArgsDict']]] = None,
329
366
  incremental_backup_spec: Optional[pulumi.Input[Union['BackupScheduleIncrementalBackupSpecArgs', 'BackupScheduleIncrementalBackupSpecArgsDict']]] = None,
330
367
  instance: Optional[pulumi.Input[str]] = None,
@@ -381,7 +418,10 @@ class BackupSchedule(pulumi.CustomResource):
381
418
  "text": "0 12 * * *",
382
419
  },
383
420
  },
384
- full_backup_spec={})
421
+ full_backup_spec={},
422
+ encryption_config={
423
+ "encryption_type": "USE_DATABASE_ENCRYPTION",
424
+ })
385
425
  ```
386
426
  ### Spanner Backup Schedule Daily Incremental
387
427
 
@@ -414,7 +454,10 @@ class BackupSchedule(pulumi.CustomResource):
414
454
  "text": "0 12 * * *",
415
455
  },
416
456
  },
417
- incremental_backup_spec={})
457
+ incremental_backup_spec={},
458
+ encryption_config={
459
+ "encryption_type": "GOOGLE_DEFAULT_ENCRYPTION",
460
+ })
418
461
  ```
419
462
 
420
463
  ## Import
@@ -447,6 +490,8 @@ class BackupSchedule(pulumi.CustomResource):
447
490
 
448
491
 
449
492
  - - -
493
+ :param pulumi.Input[Union['BackupScheduleEncryptionConfigArgs', 'BackupScheduleEncryptionConfigArgsDict']] encryption_config: Configuration for the encryption of the backup schedule.
494
+ Structure is documented below.
450
495
  :param pulumi.Input[Union['BackupScheduleFullBackupSpecArgs', 'BackupScheduleFullBackupSpecArgsDict']] full_backup_spec: The schedule creates only full backups..
451
496
  :param pulumi.Input[Union['BackupScheduleIncrementalBackupSpecArgs', 'BackupScheduleIncrementalBackupSpecArgsDict']] incremental_backup_spec: The schedule creates incremental backup chains.
452
497
  :param pulumi.Input[str] instance: The instance to create the database on.
@@ -514,7 +559,10 @@ class BackupSchedule(pulumi.CustomResource):
514
559
  "text": "0 12 * * *",
515
560
  },
516
561
  },
517
- full_backup_spec={})
562
+ full_backup_spec={},
563
+ encryption_config={
564
+ "encryption_type": "USE_DATABASE_ENCRYPTION",
565
+ })
518
566
  ```
519
567
  ### Spanner Backup Schedule Daily Incremental
520
568
 
@@ -547,7 +595,10 @@ class BackupSchedule(pulumi.CustomResource):
547
595
  "text": "0 12 * * *",
548
596
  },
549
597
  },
550
- incremental_backup_spec={})
598
+ incremental_backup_spec={},
599
+ encryption_config={
600
+ "encryption_type": "GOOGLE_DEFAULT_ENCRYPTION",
601
+ })
551
602
  ```
552
603
 
553
604
  ## Import
@@ -590,6 +641,7 @@ class BackupSchedule(pulumi.CustomResource):
590
641
  resource_name: str,
591
642
  opts: Optional[pulumi.ResourceOptions] = None,
592
643
  database: Optional[pulumi.Input[str]] = None,
644
+ encryption_config: Optional[pulumi.Input[Union['BackupScheduleEncryptionConfigArgs', 'BackupScheduleEncryptionConfigArgsDict']]] = None,
593
645
  full_backup_spec: Optional[pulumi.Input[Union['BackupScheduleFullBackupSpecArgs', 'BackupScheduleFullBackupSpecArgsDict']]] = None,
594
646
  incremental_backup_spec: Optional[pulumi.Input[Union['BackupScheduleIncrementalBackupSpecArgs', 'BackupScheduleIncrementalBackupSpecArgsDict']]] = None,
595
647
  instance: Optional[pulumi.Input[str]] = None,
@@ -609,6 +661,7 @@ class BackupSchedule(pulumi.CustomResource):
609
661
  if database is None and not opts.urn:
610
662
  raise TypeError("Missing required property 'database'")
611
663
  __props__.__dict__["database"] = database
664
+ __props__.__dict__["encryption_config"] = encryption_config
612
665
  __props__.__dict__["full_backup_spec"] = full_backup_spec
613
666
  __props__.__dict__["incremental_backup_spec"] = incremental_backup_spec
614
667
  if instance is None and not opts.urn:
@@ -631,6 +684,7 @@ class BackupSchedule(pulumi.CustomResource):
631
684
  id: pulumi.Input[str],
632
685
  opts: Optional[pulumi.ResourceOptions] = None,
633
686
  database: Optional[pulumi.Input[str]] = None,
687
+ encryption_config: Optional[pulumi.Input[Union['BackupScheduleEncryptionConfigArgs', 'BackupScheduleEncryptionConfigArgsDict']]] = None,
634
688
  full_backup_spec: Optional[pulumi.Input[Union['BackupScheduleFullBackupSpecArgs', 'BackupScheduleFullBackupSpecArgsDict']]] = None,
635
689
  incremental_backup_spec: Optional[pulumi.Input[Union['BackupScheduleIncrementalBackupSpecArgs', 'BackupScheduleIncrementalBackupSpecArgsDict']]] = None,
636
690
  instance: Optional[pulumi.Input[str]] = None,
@@ -649,6 +703,8 @@ class BackupSchedule(pulumi.CustomResource):
649
703
 
650
704
 
651
705
  - - -
706
+ :param pulumi.Input[Union['BackupScheduleEncryptionConfigArgs', 'BackupScheduleEncryptionConfigArgsDict']] encryption_config: Configuration for the encryption of the backup schedule.
707
+ Structure is documented below.
652
708
  :param pulumi.Input[Union['BackupScheduleFullBackupSpecArgs', 'BackupScheduleFullBackupSpecArgsDict']] full_backup_spec: The schedule creates only full backups..
653
709
  :param pulumi.Input[Union['BackupScheduleIncrementalBackupSpecArgs', 'BackupScheduleIncrementalBackupSpecArgsDict']] incremental_backup_spec: The schedule creates incremental backup chains.
654
710
  :param pulumi.Input[str] instance: The instance to create the database on.
@@ -667,6 +723,7 @@ class BackupSchedule(pulumi.CustomResource):
667
723
  __props__ = _BackupScheduleState.__new__(_BackupScheduleState)
668
724
 
669
725
  __props__.__dict__["database"] = database
726
+ __props__.__dict__["encryption_config"] = encryption_config
670
727
  __props__.__dict__["full_backup_spec"] = full_backup_spec
671
728
  __props__.__dict__["incremental_backup_spec"] = incremental_backup_spec
672
729
  __props__.__dict__["instance"] = instance
@@ -687,6 +744,15 @@ class BackupSchedule(pulumi.CustomResource):
687
744
  """
688
745
  return pulumi.get(self, "database")
689
746
 
747
+ @property
748
+ @pulumi.getter(name="encryptionConfig")
749
+ def encryption_config(self) -> pulumi.Output['outputs.BackupScheduleEncryptionConfig']:
750
+ """
751
+ Configuration for the encryption of the backup schedule.
752
+ Structure is documented below.
753
+ """
754
+ return pulumi.get(self, "encryption_config")
755
+
690
756
  @property
691
757
  @pulumi.getter(name="fullBackupSpec")
692
758
  def full_backup_spec(self) -> pulumi.Output[Optional['outputs.BackupScheduleFullBackupSpec']]:
@@ -16,6 +16,7 @@ from .. import _utilities
16
16
  from . import outputs
17
17
 
18
18
  __all__ = [
19
+ 'BackupScheduleEncryptionConfig',
19
20
  'BackupScheduleFullBackupSpec',
20
21
  'BackupScheduleIncrementalBackupSpec',
21
22
  'BackupScheduleSpec',
@@ -43,6 +44,65 @@ __all__ = [
43
44
  'GetInstanceAutoscalingConfigAutoscalingTargetResult',
44
45
  ]
45
46
 
47
+ @pulumi.output_type
48
+ class BackupScheduleEncryptionConfig(dict):
49
+ @staticmethod
50
+ def __key_warning(key: str):
51
+ suggest = None
52
+ if key == "encryptionType":
53
+ suggest = "encryption_type"
54
+ elif key == "kmsKeyName":
55
+ suggest = "kms_key_name"
56
+
57
+ if suggest:
58
+ pulumi.log.warn(f"Key '{key}' not found in BackupScheduleEncryptionConfig. Access the value via the '{suggest}' property getter instead.")
59
+
60
+ def __getitem__(self, key: str) -> Any:
61
+ BackupScheduleEncryptionConfig.__key_warning(key)
62
+ return super().__getitem__(key)
63
+
64
+ def get(self, key: str, default = None) -> Any:
65
+ BackupScheduleEncryptionConfig.__key_warning(key)
66
+ return super().get(key, default)
67
+
68
+ def __init__(__self__, *,
69
+ encryption_type: str,
70
+ kms_key_name: Optional[str] = None):
71
+ """
72
+ :param str encryption_type: The encryption type of backups created by the backup schedule.
73
+ Possible values are USE_DATABASE_ENCRYPTION, GOOGLE_DEFAULT_ENCRYPTION, or CUSTOMER_MANAGED_ENCRYPTION.
74
+ If you use CUSTOMER_MANAGED_ENCRYPTION, you must specify a kmsKeyName.
75
+ If your backup type is incremental-backup, the encryption type must be GOOGLE_DEFAULT_ENCRYPTION.
76
+ Possible values are: `USE_DATABASE_ENCRYPTION`, `GOOGLE_DEFAULT_ENCRYPTION`, `CUSTOMER_MANAGED_ENCRYPTION`.
77
+ :param str kms_key_name: The resource name of the Cloud KMS key to use for encryption.
78
+ Format: 'projects/{project}/locations/{location}/keyRings/{keyRing}/cryptoKeys/{cryptoKey}'
79
+ """
80
+ pulumi.set(__self__, "encryption_type", encryption_type)
81
+ if kms_key_name is not None:
82
+ pulumi.set(__self__, "kms_key_name", kms_key_name)
83
+
84
+ @property
85
+ @pulumi.getter(name="encryptionType")
86
+ def encryption_type(self) -> str:
87
+ """
88
+ The encryption type of backups created by the backup schedule.
89
+ Possible values are USE_DATABASE_ENCRYPTION, GOOGLE_DEFAULT_ENCRYPTION, or CUSTOMER_MANAGED_ENCRYPTION.
90
+ If you use CUSTOMER_MANAGED_ENCRYPTION, you must specify a kmsKeyName.
91
+ If your backup type is incremental-backup, the encryption type must be GOOGLE_DEFAULT_ENCRYPTION.
92
+ Possible values are: `USE_DATABASE_ENCRYPTION`, `GOOGLE_DEFAULT_ENCRYPTION`, `CUSTOMER_MANAGED_ENCRYPTION`.
93
+ """
94
+ return pulumi.get(self, "encryption_type")
95
+
96
+ @property
97
+ @pulumi.getter(name="kmsKeyName")
98
+ def kms_key_name(self) -> Optional[str]:
99
+ """
100
+ The resource name of the Cloud KMS key to use for encryption.
101
+ Format: 'projects/{project}/locations/{location}/keyRings/{keyRing}/cryptoKeys/{cryptoKey}'
102
+ """
103
+ return pulumi.get(self, "kms_key_name")
104
+
105
+
46
106
  @pulumi.output_type
47
107
  class BackupScheduleFullBackupSpec(dict):
48
108
  def __init__(__self__):