pulumiverse-scaleway 1.31.0__py3-none-any.whl → 1.32.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 (40) hide show
  1. pulumiverse_scaleway/__init__.py +9 -0
  2. pulumiverse_scaleway/_inputs.py +142 -36
  3. pulumiverse_scaleway/apple_silicon_server.py +46 -8
  4. pulumiverse_scaleway/applesilicon/_inputs.py +18 -18
  5. pulumiverse_scaleway/applesilicon/outputs.py +12 -12
  6. pulumiverse_scaleway/applesilicon/server.py +46 -8
  7. pulumiverse_scaleway/block/_inputs.py +58 -6
  8. pulumiverse_scaleway/block/get_snapshot.py +12 -1
  9. pulumiverse_scaleway/block/outputs.py +60 -0
  10. pulumiverse_scaleway/block/snapshot.py +54 -7
  11. pulumiverse_scaleway/block/volume.py +14 -14
  12. pulumiverse_scaleway/block_snapshot.py +54 -7
  13. pulumiverse_scaleway/block_volume.py +14 -14
  14. pulumiverse_scaleway/domain/get_record.py +1 -12
  15. pulumiverse_scaleway/domain/record.py +0 -47
  16. pulumiverse_scaleway/domain_record.py +0 -47
  17. pulumiverse_scaleway/get_block_snapshot.py +12 -1
  18. pulumiverse_scaleway/get_domain_record.py +1 -12
  19. pulumiverse_scaleway/get_iam_user.py +2 -2
  20. pulumiverse_scaleway/get_lb_frontend.py +37 -4
  21. pulumiverse_scaleway/get_mongo_db_instance.py +12 -1
  22. pulumiverse_scaleway/iam/get_user.py +2 -2
  23. pulumiverse_scaleway/key_manager_key.py +831 -0
  24. pulumiverse_scaleway/kubernetes/cluster.py +6 -6
  25. pulumiverse_scaleway/kubernetes_cluster.py +6 -6
  26. pulumiverse_scaleway/loadbalancer_frontend.py +105 -2
  27. pulumiverse_scaleway/loadbalancers/_inputs.py +12 -12
  28. pulumiverse_scaleway/loadbalancers/frontend.py +105 -2
  29. pulumiverse_scaleway/loadbalancers/get_frontend.py +37 -4
  30. pulumiverse_scaleway/loadbalancers/outputs.py +32 -10
  31. pulumiverse_scaleway/mongo_db_instance.py +28 -0
  32. pulumiverse_scaleway/mongodb/get_instance.py +12 -1
  33. pulumiverse_scaleway/mongodb/instance.py +28 -0
  34. pulumiverse_scaleway/network/acl.py +35 -37
  35. pulumiverse_scaleway/outputs.py +159 -26
  36. pulumiverse_scaleway/pulumi-plugin.json +1 -1
  37. {pulumiverse_scaleway-1.31.0.dist-info → pulumiverse_scaleway-1.32.0.dist-info}/METADATA +1 -1
  38. {pulumiverse_scaleway-1.31.0.dist-info → pulumiverse_scaleway-1.32.0.dist-info}/RECORD +40 -39
  39. {pulumiverse_scaleway-1.31.0.dist-info → pulumiverse_scaleway-1.32.0.dist-info}/WHEEL +0 -0
  40. {pulumiverse_scaleway-1.31.0.dist-info → pulumiverse_scaleway-1.32.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,831 @@
1
+ # coding=utf-8
2
+ # *** WARNING: this file was generated by pulumi-language-python. ***
3
+ # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+
5
+ import builtins
6
+ import copy
7
+ import warnings
8
+ import sys
9
+ import pulumi
10
+ import pulumi.runtime
11
+ from typing import Any, Mapping, Optional, Sequence, Union, overload
12
+ if sys.version_info >= (3, 11):
13
+ from typing import NotRequired, TypedDict, TypeAlias
14
+ else:
15
+ from typing_extensions import NotRequired, TypedDict, TypeAlias
16
+ from . import _utilities
17
+ from . import outputs
18
+ from ._inputs import *
19
+
20
+ __all__ = ['KeyManagerKeyArgs', 'KeyManagerKey']
21
+
22
+ @pulumi.input_type
23
+ class KeyManagerKeyArgs:
24
+ def __init__(__self__, *,
25
+ usage: pulumi.Input[builtins.str],
26
+ description: Optional[pulumi.Input[builtins.str]] = None,
27
+ name: Optional[pulumi.Input[builtins.str]] = None,
28
+ origin: Optional[pulumi.Input[builtins.str]] = None,
29
+ project_id: Optional[pulumi.Input[builtins.str]] = None,
30
+ region: Optional[pulumi.Input[builtins.str]] = None,
31
+ rotation_policy: Optional[pulumi.Input['KeyManagerKeyRotationPolicyArgs']] = None,
32
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
33
+ unprotected: Optional[pulumi.Input[builtins.bool]] = None):
34
+ """
35
+ The set of arguments for constructing a KeyManagerKey resource.
36
+ :param pulumi.Input[builtins.str] usage: – The usage of the key. Valid values are:
37
+ :param pulumi.Input[builtins.str] description: – A description for the key.
38
+ :param pulumi.Input[builtins.str] name: The name of the key.
39
+ :param pulumi.Input[builtins.str] origin: – The origin of the key. Valid values are:
40
+ :param pulumi.Input[builtins.str] project_id: – The ID of the project the key belongs to.
41
+ :param pulumi.Input[builtins.str] region: The region in which to create the key (e.g., `fr-par`).
42
+ :param pulumi.Input['KeyManagerKeyRotationPolicyArgs'] rotation_policy: – Rotation policy for the key:
43
+ :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] tags: – A list of tags to assign to the key.
44
+ :param pulumi.Input[builtins.bool] unprotected: – If `true`, the key can be deleted. Defaults to `false` (protected).
45
+ """
46
+ pulumi.set(__self__, "usage", usage)
47
+ if description is not None:
48
+ pulumi.set(__self__, "description", description)
49
+ if name is not None:
50
+ pulumi.set(__self__, "name", name)
51
+ if origin is not None:
52
+ pulumi.set(__self__, "origin", origin)
53
+ if project_id is not None:
54
+ pulumi.set(__self__, "project_id", project_id)
55
+ if region is not None:
56
+ pulumi.set(__self__, "region", region)
57
+ if rotation_policy is not None:
58
+ pulumi.set(__self__, "rotation_policy", rotation_policy)
59
+ if tags is not None:
60
+ pulumi.set(__self__, "tags", tags)
61
+ if unprotected is not None:
62
+ pulumi.set(__self__, "unprotected", unprotected)
63
+
64
+ @property
65
+ @pulumi.getter
66
+ def usage(self) -> pulumi.Input[builtins.str]:
67
+ """
68
+ – The usage of the key. Valid values are:
69
+ """
70
+ return pulumi.get(self, "usage")
71
+
72
+ @usage.setter
73
+ def usage(self, value: pulumi.Input[builtins.str]):
74
+ pulumi.set(self, "usage", value)
75
+
76
+ @property
77
+ @pulumi.getter
78
+ def description(self) -> Optional[pulumi.Input[builtins.str]]:
79
+ """
80
+ – A description for the key.
81
+ """
82
+ return pulumi.get(self, "description")
83
+
84
+ @description.setter
85
+ def description(self, value: Optional[pulumi.Input[builtins.str]]):
86
+ pulumi.set(self, "description", value)
87
+
88
+ @property
89
+ @pulumi.getter
90
+ def name(self) -> Optional[pulumi.Input[builtins.str]]:
91
+ """
92
+ The name of the key.
93
+ """
94
+ return pulumi.get(self, "name")
95
+
96
+ @name.setter
97
+ def name(self, value: Optional[pulumi.Input[builtins.str]]):
98
+ pulumi.set(self, "name", value)
99
+
100
+ @property
101
+ @pulumi.getter
102
+ def origin(self) -> Optional[pulumi.Input[builtins.str]]:
103
+ """
104
+ – The origin of the key. Valid values are:
105
+ """
106
+ return pulumi.get(self, "origin")
107
+
108
+ @origin.setter
109
+ def origin(self, value: Optional[pulumi.Input[builtins.str]]):
110
+ pulumi.set(self, "origin", value)
111
+
112
+ @property
113
+ @pulumi.getter(name="projectId")
114
+ def project_id(self) -> Optional[pulumi.Input[builtins.str]]:
115
+ """
116
+ – The ID of the project the key belongs to.
117
+ """
118
+ return pulumi.get(self, "project_id")
119
+
120
+ @project_id.setter
121
+ def project_id(self, value: Optional[pulumi.Input[builtins.str]]):
122
+ pulumi.set(self, "project_id", value)
123
+
124
+ @property
125
+ @pulumi.getter
126
+ def region(self) -> Optional[pulumi.Input[builtins.str]]:
127
+ """
128
+ The region in which to create the key (e.g., `fr-par`).
129
+ """
130
+ return pulumi.get(self, "region")
131
+
132
+ @region.setter
133
+ def region(self, value: Optional[pulumi.Input[builtins.str]]):
134
+ pulumi.set(self, "region", value)
135
+
136
+ @property
137
+ @pulumi.getter(name="rotationPolicy")
138
+ def rotation_policy(self) -> Optional[pulumi.Input['KeyManagerKeyRotationPolicyArgs']]:
139
+ """
140
+ – Rotation policy for the key:
141
+ """
142
+ return pulumi.get(self, "rotation_policy")
143
+
144
+ @rotation_policy.setter
145
+ def rotation_policy(self, value: Optional[pulumi.Input['KeyManagerKeyRotationPolicyArgs']]):
146
+ pulumi.set(self, "rotation_policy", value)
147
+
148
+ @property
149
+ @pulumi.getter
150
+ def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]:
151
+ """
152
+ – A list of tags to assign to the key.
153
+ """
154
+ return pulumi.get(self, "tags")
155
+
156
+ @tags.setter
157
+ def tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]):
158
+ pulumi.set(self, "tags", value)
159
+
160
+ @property
161
+ @pulumi.getter
162
+ def unprotected(self) -> Optional[pulumi.Input[builtins.bool]]:
163
+ """
164
+ – If `true`, the key can be deleted. Defaults to `false` (protected).
165
+ """
166
+ return pulumi.get(self, "unprotected")
167
+
168
+ @unprotected.setter
169
+ def unprotected(self, value: Optional[pulumi.Input[builtins.bool]]):
170
+ pulumi.set(self, "unprotected", value)
171
+
172
+
173
+ @pulumi.input_type
174
+ class _KeyManagerKeyState:
175
+ def __init__(__self__, *,
176
+ created_at: Optional[pulumi.Input[builtins.str]] = None,
177
+ description: Optional[pulumi.Input[builtins.str]] = None,
178
+ locked: Optional[pulumi.Input[builtins.bool]] = None,
179
+ name: Optional[pulumi.Input[builtins.str]] = None,
180
+ origin: Optional[pulumi.Input[builtins.str]] = None,
181
+ project_id: Optional[pulumi.Input[builtins.str]] = None,
182
+ protected: Optional[pulumi.Input[builtins.bool]] = None,
183
+ region: Optional[pulumi.Input[builtins.str]] = None,
184
+ rotated_at: Optional[pulumi.Input[builtins.str]] = None,
185
+ rotation_count: Optional[pulumi.Input[builtins.int]] = None,
186
+ rotation_policy: Optional[pulumi.Input['KeyManagerKeyRotationPolicyArgs']] = None,
187
+ state: Optional[pulumi.Input[builtins.str]] = None,
188
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
189
+ unprotected: Optional[pulumi.Input[builtins.bool]] = None,
190
+ updated_at: Optional[pulumi.Input[builtins.str]] = None,
191
+ usage: Optional[pulumi.Input[builtins.str]] = None):
192
+ """
193
+ Input properties used for looking up and filtering KeyManagerKey resources.
194
+ :param pulumi.Input[builtins.str] created_at: The date and time when the key was created.
195
+ :param pulumi.Input[builtins.str] description: – A description for the key.
196
+ :param pulumi.Input[builtins.bool] locked: Whether the key is locked.
197
+ :param pulumi.Input[builtins.str] name: The name of the key.
198
+ :param pulumi.Input[builtins.str] origin: – The origin of the key. Valid values are:
199
+ :param pulumi.Input[builtins.str] project_id: – The ID of the project the key belongs to.
200
+ :param pulumi.Input[builtins.bool] protected: Whether the key is protected from deletion.
201
+ :param pulumi.Input[builtins.str] region: The region in which to create the key (e.g., `fr-par`).
202
+ :param pulumi.Input[builtins.str] rotated_at: The date and time when the key was last rotated.
203
+ :param pulumi.Input[builtins.int] rotation_count: The number of times the key has been rotated.
204
+ :param pulumi.Input['KeyManagerKeyRotationPolicyArgs'] rotation_policy: – Rotation policy for the key:
205
+ :param pulumi.Input[builtins.str] state: The state of the key (e.g., `enabled`).
206
+ :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] tags: – A list of tags to assign to the key.
207
+ :param pulumi.Input[builtins.bool] unprotected: – If `true`, the key can be deleted. Defaults to `false` (protected).
208
+ :param pulumi.Input[builtins.str] updated_at: The date and time when the key was last updated.
209
+ :param pulumi.Input[builtins.str] usage: – The usage of the key. Valid values are:
210
+ """
211
+ if created_at is not None:
212
+ pulumi.set(__self__, "created_at", created_at)
213
+ if description is not None:
214
+ pulumi.set(__self__, "description", description)
215
+ if locked is not None:
216
+ pulumi.set(__self__, "locked", locked)
217
+ if name is not None:
218
+ pulumi.set(__self__, "name", name)
219
+ if origin is not None:
220
+ pulumi.set(__self__, "origin", origin)
221
+ if project_id is not None:
222
+ pulumi.set(__self__, "project_id", project_id)
223
+ if protected is not None:
224
+ pulumi.set(__self__, "protected", protected)
225
+ if region is not None:
226
+ pulumi.set(__self__, "region", region)
227
+ if rotated_at is not None:
228
+ pulumi.set(__self__, "rotated_at", rotated_at)
229
+ if rotation_count is not None:
230
+ pulumi.set(__self__, "rotation_count", rotation_count)
231
+ if rotation_policy is not None:
232
+ pulumi.set(__self__, "rotation_policy", rotation_policy)
233
+ if state is not None:
234
+ pulumi.set(__self__, "state", state)
235
+ if tags is not None:
236
+ pulumi.set(__self__, "tags", tags)
237
+ if unprotected is not None:
238
+ pulumi.set(__self__, "unprotected", unprotected)
239
+ if updated_at is not None:
240
+ pulumi.set(__self__, "updated_at", updated_at)
241
+ if usage is not None:
242
+ pulumi.set(__self__, "usage", usage)
243
+
244
+ @property
245
+ @pulumi.getter(name="createdAt")
246
+ def created_at(self) -> Optional[pulumi.Input[builtins.str]]:
247
+ """
248
+ The date and time when the key was created.
249
+ """
250
+ return pulumi.get(self, "created_at")
251
+
252
+ @created_at.setter
253
+ def created_at(self, value: Optional[pulumi.Input[builtins.str]]):
254
+ pulumi.set(self, "created_at", value)
255
+
256
+ @property
257
+ @pulumi.getter
258
+ def description(self) -> Optional[pulumi.Input[builtins.str]]:
259
+ """
260
+ – A description for the key.
261
+ """
262
+ return pulumi.get(self, "description")
263
+
264
+ @description.setter
265
+ def description(self, value: Optional[pulumi.Input[builtins.str]]):
266
+ pulumi.set(self, "description", value)
267
+
268
+ @property
269
+ @pulumi.getter
270
+ def locked(self) -> Optional[pulumi.Input[builtins.bool]]:
271
+ """
272
+ Whether the key is locked.
273
+ """
274
+ return pulumi.get(self, "locked")
275
+
276
+ @locked.setter
277
+ def locked(self, value: Optional[pulumi.Input[builtins.bool]]):
278
+ pulumi.set(self, "locked", value)
279
+
280
+ @property
281
+ @pulumi.getter
282
+ def name(self) -> Optional[pulumi.Input[builtins.str]]:
283
+ """
284
+ The name of the key.
285
+ """
286
+ return pulumi.get(self, "name")
287
+
288
+ @name.setter
289
+ def name(self, value: Optional[pulumi.Input[builtins.str]]):
290
+ pulumi.set(self, "name", value)
291
+
292
+ @property
293
+ @pulumi.getter
294
+ def origin(self) -> Optional[pulumi.Input[builtins.str]]:
295
+ """
296
+ – The origin of the key. Valid values are:
297
+ """
298
+ return pulumi.get(self, "origin")
299
+
300
+ @origin.setter
301
+ def origin(self, value: Optional[pulumi.Input[builtins.str]]):
302
+ pulumi.set(self, "origin", value)
303
+
304
+ @property
305
+ @pulumi.getter(name="projectId")
306
+ def project_id(self) -> Optional[pulumi.Input[builtins.str]]:
307
+ """
308
+ – The ID of the project the key belongs to.
309
+ """
310
+ return pulumi.get(self, "project_id")
311
+
312
+ @project_id.setter
313
+ def project_id(self, value: Optional[pulumi.Input[builtins.str]]):
314
+ pulumi.set(self, "project_id", value)
315
+
316
+ @property
317
+ @pulumi.getter
318
+ def protected(self) -> Optional[pulumi.Input[builtins.bool]]:
319
+ """
320
+ Whether the key is protected from deletion.
321
+ """
322
+ return pulumi.get(self, "protected")
323
+
324
+ @protected.setter
325
+ def protected(self, value: Optional[pulumi.Input[builtins.bool]]):
326
+ pulumi.set(self, "protected", value)
327
+
328
+ @property
329
+ @pulumi.getter
330
+ def region(self) -> Optional[pulumi.Input[builtins.str]]:
331
+ """
332
+ The region in which to create the key (e.g., `fr-par`).
333
+ """
334
+ return pulumi.get(self, "region")
335
+
336
+ @region.setter
337
+ def region(self, value: Optional[pulumi.Input[builtins.str]]):
338
+ pulumi.set(self, "region", value)
339
+
340
+ @property
341
+ @pulumi.getter(name="rotatedAt")
342
+ def rotated_at(self) -> Optional[pulumi.Input[builtins.str]]:
343
+ """
344
+ The date and time when the key was last rotated.
345
+ """
346
+ return pulumi.get(self, "rotated_at")
347
+
348
+ @rotated_at.setter
349
+ def rotated_at(self, value: Optional[pulumi.Input[builtins.str]]):
350
+ pulumi.set(self, "rotated_at", value)
351
+
352
+ @property
353
+ @pulumi.getter(name="rotationCount")
354
+ def rotation_count(self) -> Optional[pulumi.Input[builtins.int]]:
355
+ """
356
+ The number of times the key has been rotated.
357
+ """
358
+ return pulumi.get(self, "rotation_count")
359
+
360
+ @rotation_count.setter
361
+ def rotation_count(self, value: Optional[pulumi.Input[builtins.int]]):
362
+ pulumi.set(self, "rotation_count", value)
363
+
364
+ @property
365
+ @pulumi.getter(name="rotationPolicy")
366
+ def rotation_policy(self) -> Optional[pulumi.Input['KeyManagerKeyRotationPolicyArgs']]:
367
+ """
368
+ – Rotation policy for the key:
369
+ """
370
+ return pulumi.get(self, "rotation_policy")
371
+
372
+ @rotation_policy.setter
373
+ def rotation_policy(self, value: Optional[pulumi.Input['KeyManagerKeyRotationPolicyArgs']]):
374
+ pulumi.set(self, "rotation_policy", value)
375
+
376
+ @property
377
+ @pulumi.getter
378
+ def state(self) -> Optional[pulumi.Input[builtins.str]]:
379
+ """
380
+ The state of the key (e.g., `enabled`).
381
+ """
382
+ return pulumi.get(self, "state")
383
+
384
+ @state.setter
385
+ def state(self, value: Optional[pulumi.Input[builtins.str]]):
386
+ pulumi.set(self, "state", value)
387
+
388
+ @property
389
+ @pulumi.getter
390
+ def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]:
391
+ """
392
+ – A list of tags to assign to the key.
393
+ """
394
+ return pulumi.get(self, "tags")
395
+
396
+ @tags.setter
397
+ def tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]):
398
+ pulumi.set(self, "tags", value)
399
+
400
+ @property
401
+ @pulumi.getter
402
+ def unprotected(self) -> Optional[pulumi.Input[builtins.bool]]:
403
+ """
404
+ – If `true`, the key can be deleted. Defaults to `false` (protected).
405
+ """
406
+ return pulumi.get(self, "unprotected")
407
+
408
+ @unprotected.setter
409
+ def unprotected(self, value: Optional[pulumi.Input[builtins.bool]]):
410
+ pulumi.set(self, "unprotected", value)
411
+
412
+ @property
413
+ @pulumi.getter(name="updatedAt")
414
+ def updated_at(self) -> Optional[pulumi.Input[builtins.str]]:
415
+ """
416
+ The date and time when the key was last updated.
417
+ """
418
+ return pulumi.get(self, "updated_at")
419
+
420
+ @updated_at.setter
421
+ def updated_at(self, value: Optional[pulumi.Input[builtins.str]]):
422
+ pulumi.set(self, "updated_at", value)
423
+
424
+ @property
425
+ @pulumi.getter
426
+ def usage(self) -> Optional[pulumi.Input[builtins.str]]:
427
+ """
428
+ – The usage of the key. Valid values are:
429
+ """
430
+ return pulumi.get(self, "usage")
431
+
432
+ @usage.setter
433
+ def usage(self, value: Optional[pulumi.Input[builtins.str]]):
434
+ pulumi.set(self, "usage", value)
435
+
436
+
437
+ @pulumi.type_token("scaleway:index/keyManagerKey:KeyManagerKey")
438
+ class KeyManagerKey(pulumi.CustomResource):
439
+ @overload
440
+ def __init__(__self__,
441
+ resource_name: str,
442
+ opts: Optional[pulumi.ResourceOptions] = None,
443
+ description: Optional[pulumi.Input[builtins.str]] = None,
444
+ name: Optional[pulumi.Input[builtins.str]] = None,
445
+ origin: Optional[pulumi.Input[builtins.str]] = None,
446
+ project_id: Optional[pulumi.Input[builtins.str]] = None,
447
+ region: Optional[pulumi.Input[builtins.str]] = None,
448
+ rotation_policy: Optional[pulumi.Input[Union['KeyManagerKeyRotationPolicyArgs', 'KeyManagerKeyRotationPolicyArgsDict']]] = None,
449
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
450
+ unprotected: Optional[pulumi.Input[builtins.bool]] = None,
451
+ usage: Optional[pulumi.Input[builtins.str]] = None,
452
+ __props__=None):
453
+ """
454
+ Provides a Scaleway Key Manager Key resource.\\
455
+ This resource allows you to create and manage cryptographic keys in Scaleway Key Manager (KMS).
456
+
457
+ ## Example Usage
458
+
459
+ ```python
460
+ import pulumi
461
+ import pulumiverse_scaleway as scaleway
462
+
463
+ main = scaleway.KeyManagerKey("main",
464
+ name="my-kms-key",
465
+ region="fr-par",
466
+ project_id="your-project-id",
467
+ usage="symmetric_encryption",
468
+ description="Key for encrypting secrets",
469
+ tags=[
470
+ "env:prod",
471
+ "kms",
472
+ ],
473
+ unprotected=True,
474
+ rotation_policy={
475
+ "rotation_period": "720h",
476
+ })
477
+ ```
478
+
479
+ ## Notes
480
+
481
+ - **Protection**: By default, keys are protected and cannot be deleted. To allow deletion, set `unprotected = true` when creating the key.
482
+ - **Rotation Policy**: The `rotation_policy` block allows you to set automatic rotation for your key.
483
+ - **Origin**: The `origin` argument is optional and defaults to `scaleway_kms`. Use `external` if you want to import an external key (see Scaleway documentation for details).
484
+ - **Project and Region**: If not specified, `project_id` and `region` will default to the provider configuration.
485
+
486
+ ## Example: Asymmetric Key
487
+
488
+ ```python
489
+ import pulumi
490
+ import pulumiverse_scaleway as scaleway
491
+
492
+ asym = scaleway.KeyManagerKey("asym",
493
+ name="asymmetric-key",
494
+ region="fr-par",
495
+ usage="asymmetric_signing",
496
+ description="Key for signing documents",
497
+ unprotected=True)
498
+ ```
499
+
500
+ ## Import
501
+
502
+ You can import a key using its ID and region:
503
+
504
+ ```sh
505
+ $ pulumi import scaleway:index/keyManagerKey:KeyManagerKey main fr-par/11111111-2222-3333-4444-555555555555
506
+ ```
507
+
508
+ :param str resource_name: The name of the resource.
509
+ :param pulumi.ResourceOptions opts: Options for the resource.
510
+ :param pulumi.Input[builtins.str] description: – A description for the key.
511
+ :param pulumi.Input[builtins.str] name: The name of the key.
512
+ :param pulumi.Input[builtins.str] origin: – The origin of the key. Valid values are:
513
+ :param pulumi.Input[builtins.str] project_id: – The ID of the project the key belongs to.
514
+ :param pulumi.Input[builtins.str] region: The region in which to create the key (e.g., `fr-par`).
515
+ :param pulumi.Input[Union['KeyManagerKeyRotationPolicyArgs', 'KeyManagerKeyRotationPolicyArgsDict']] rotation_policy: – Rotation policy for the key:
516
+ :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] tags: – A list of tags to assign to the key.
517
+ :param pulumi.Input[builtins.bool] unprotected: – If `true`, the key can be deleted. Defaults to `false` (protected).
518
+ :param pulumi.Input[builtins.str] usage: – The usage of the key. Valid values are:
519
+ """
520
+ ...
521
+ @overload
522
+ def __init__(__self__,
523
+ resource_name: str,
524
+ args: KeyManagerKeyArgs,
525
+ opts: Optional[pulumi.ResourceOptions] = None):
526
+ """
527
+ Provides a Scaleway Key Manager Key resource.\\
528
+ This resource allows you to create and manage cryptographic keys in Scaleway Key Manager (KMS).
529
+
530
+ ## Example Usage
531
+
532
+ ```python
533
+ import pulumi
534
+ import pulumiverse_scaleway as scaleway
535
+
536
+ main = scaleway.KeyManagerKey("main",
537
+ name="my-kms-key",
538
+ region="fr-par",
539
+ project_id="your-project-id",
540
+ usage="symmetric_encryption",
541
+ description="Key for encrypting secrets",
542
+ tags=[
543
+ "env:prod",
544
+ "kms",
545
+ ],
546
+ unprotected=True,
547
+ rotation_policy={
548
+ "rotation_period": "720h",
549
+ })
550
+ ```
551
+
552
+ ## Notes
553
+
554
+ - **Protection**: By default, keys are protected and cannot be deleted. To allow deletion, set `unprotected = true` when creating the key.
555
+ - **Rotation Policy**: The `rotation_policy` block allows you to set automatic rotation for your key.
556
+ - **Origin**: The `origin` argument is optional and defaults to `scaleway_kms`. Use `external` if you want to import an external key (see Scaleway documentation for details).
557
+ - **Project and Region**: If not specified, `project_id` and `region` will default to the provider configuration.
558
+
559
+ ## Example: Asymmetric Key
560
+
561
+ ```python
562
+ import pulumi
563
+ import pulumiverse_scaleway as scaleway
564
+
565
+ asym = scaleway.KeyManagerKey("asym",
566
+ name="asymmetric-key",
567
+ region="fr-par",
568
+ usage="asymmetric_signing",
569
+ description="Key for signing documents",
570
+ unprotected=True)
571
+ ```
572
+
573
+ ## Import
574
+
575
+ You can import a key using its ID and region:
576
+
577
+ ```sh
578
+ $ pulumi import scaleway:index/keyManagerKey:KeyManagerKey main fr-par/11111111-2222-3333-4444-555555555555
579
+ ```
580
+
581
+ :param str resource_name: The name of the resource.
582
+ :param KeyManagerKeyArgs args: The arguments to use to populate this resource's properties.
583
+ :param pulumi.ResourceOptions opts: Options for the resource.
584
+ """
585
+ ...
586
+ def __init__(__self__, resource_name: str, *args, **kwargs):
587
+ resource_args, opts = _utilities.get_resource_args_opts(KeyManagerKeyArgs, pulumi.ResourceOptions, *args, **kwargs)
588
+ if resource_args is not None:
589
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
590
+ else:
591
+ __self__._internal_init(resource_name, *args, **kwargs)
592
+
593
+ def _internal_init(__self__,
594
+ resource_name: str,
595
+ opts: Optional[pulumi.ResourceOptions] = None,
596
+ description: Optional[pulumi.Input[builtins.str]] = None,
597
+ name: Optional[pulumi.Input[builtins.str]] = None,
598
+ origin: Optional[pulumi.Input[builtins.str]] = None,
599
+ project_id: Optional[pulumi.Input[builtins.str]] = None,
600
+ region: Optional[pulumi.Input[builtins.str]] = None,
601
+ rotation_policy: Optional[pulumi.Input[Union['KeyManagerKeyRotationPolicyArgs', 'KeyManagerKeyRotationPolicyArgsDict']]] = None,
602
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
603
+ unprotected: Optional[pulumi.Input[builtins.bool]] = None,
604
+ usage: Optional[pulumi.Input[builtins.str]] = None,
605
+ __props__=None):
606
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
607
+ if not isinstance(opts, pulumi.ResourceOptions):
608
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
609
+ if opts.id is None:
610
+ if __props__ is not None:
611
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
612
+ __props__ = KeyManagerKeyArgs.__new__(KeyManagerKeyArgs)
613
+
614
+ __props__.__dict__["description"] = description
615
+ __props__.__dict__["name"] = name
616
+ __props__.__dict__["origin"] = origin
617
+ __props__.__dict__["project_id"] = project_id
618
+ __props__.__dict__["region"] = region
619
+ __props__.__dict__["rotation_policy"] = rotation_policy
620
+ __props__.__dict__["tags"] = tags
621
+ __props__.__dict__["unprotected"] = unprotected
622
+ if usage is None and not opts.urn:
623
+ raise TypeError("Missing required property 'usage'")
624
+ __props__.__dict__["usage"] = usage
625
+ __props__.__dict__["created_at"] = None
626
+ __props__.__dict__["locked"] = None
627
+ __props__.__dict__["protected"] = None
628
+ __props__.__dict__["rotated_at"] = None
629
+ __props__.__dict__["rotation_count"] = None
630
+ __props__.__dict__["state"] = None
631
+ __props__.__dict__["updated_at"] = None
632
+ super(KeyManagerKey, __self__).__init__(
633
+ 'scaleway:index/keyManagerKey:KeyManagerKey',
634
+ resource_name,
635
+ __props__,
636
+ opts)
637
+
638
+ @staticmethod
639
+ def get(resource_name: str,
640
+ id: pulumi.Input[str],
641
+ opts: Optional[pulumi.ResourceOptions] = None,
642
+ created_at: Optional[pulumi.Input[builtins.str]] = None,
643
+ description: Optional[pulumi.Input[builtins.str]] = None,
644
+ locked: Optional[pulumi.Input[builtins.bool]] = None,
645
+ name: Optional[pulumi.Input[builtins.str]] = None,
646
+ origin: Optional[pulumi.Input[builtins.str]] = None,
647
+ project_id: Optional[pulumi.Input[builtins.str]] = None,
648
+ protected: Optional[pulumi.Input[builtins.bool]] = None,
649
+ region: Optional[pulumi.Input[builtins.str]] = None,
650
+ rotated_at: Optional[pulumi.Input[builtins.str]] = None,
651
+ rotation_count: Optional[pulumi.Input[builtins.int]] = None,
652
+ rotation_policy: Optional[pulumi.Input[Union['KeyManagerKeyRotationPolicyArgs', 'KeyManagerKeyRotationPolicyArgsDict']]] = None,
653
+ state: Optional[pulumi.Input[builtins.str]] = None,
654
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
655
+ unprotected: Optional[pulumi.Input[builtins.bool]] = None,
656
+ updated_at: Optional[pulumi.Input[builtins.str]] = None,
657
+ usage: Optional[pulumi.Input[builtins.str]] = None) -> 'KeyManagerKey':
658
+ """
659
+ Get an existing KeyManagerKey resource's state with the given name, id, and optional extra
660
+ properties used to qualify the lookup.
661
+
662
+ :param str resource_name: The unique name of the resulting resource.
663
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
664
+ :param pulumi.ResourceOptions opts: Options for the resource.
665
+ :param pulumi.Input[builtins.str] created_at: The date and time when the key was created.
666
+ :param pulumi.Input[builtins.str] description: – A description for the key.
667
+ :param pulumi.Input[builtins.bool] locked: Whether the key is locked.
668
+ :param pulumi.Input[builtins.str] name: The name of the key.
669
+ :param pulumi.Input[builtins.str] origin: – The origin of the key. Valid values are:
670
+ :param pulumi.Input[builtins.str] project_id: – The ID of the project the key belongs to.
671
+ :param pulumi.Input[builtins.bool] protected: Whether the key is protected from deletion.
672
+ :param pulumi.Input[builtins.str] region: The region in which to create the key (e.g., `fr-par`).
673
+ :param pulumi.Input[builtins.str] rotated_at: The date and time when the key was last rotated.
674
+ :param pulumi.Input[builtins.int] rotation_count: The number of times the key has been rotated.
675
+ :param pulumi.Input[Union['KeyManagerKeyRotationPolicyArgs', 'KeyManagerKeyRotationPolicyArgsDict']] rotation_policy: – Rotation policy for the key:
676
+ :param pulumi.Input[builtins.str] state: The state of the key (e.g., `enabled`).
677
+ :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] tags: – A list of tags to assign to the key.
678
+ :param pulumi.Input[builtins.bool] unprotected: – If `true`, the key can be deleted. Defaults to `false` (protected).
679
+ :param pulumi.Input[builtins.str] updated_at: The date and time when the key was last updated.
680
+ :param pulumi.Input[builtins.str] usage: – The usage of the key. Valid values are:
681
+ """
682
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
683
+
684
+ __props__ = _KeyManagerKeyState.__new__(_KeyManagerKeyState)
685
+
686
+ __props__.__dict__["created_at"] = created_at
687
+ __props__.__dict__["description"] = description
688
+ __props__.__dict__["locked"] = locked
689
+ __props__.__dict__["name"] = name
690
+ __props__.__dict__["origin"] = origin
691
+ __props__.__dict__["project_id"] = project_id
692
+ __props__.__dict__["protected"] = protected
693
+ __props__.__dict__["region"] = region
694
+ __props__.__dict__["rotated_at"] = rotated_at
695
+ __props__.__dict__["rotation_count"] = rotation_count
696
+ __props__.__dict__["rotation_policy"] = rotation_policy
697
+ __props__.__dict__["state"] = state
698
+ __props__.__dict__["tags"] = tags
699
+ __props__.__dict__["unprotected"] = unprotected
700
+ __props__.__dict__["updated_at"] = updated_at
701
+ __props__.__dict__["usage"] = usage
702
+ return KeyManagerKey(resource_name, opts=opts, __props__=__props__)
703
+
704
+ @property
705
+ @pulumi.getter(name="createdAt")
706
+ def created_at(self) -> pulumi.Output[builtins.str]:
707
+ """
708
+ The date and time when the key was created.
709
+ """
710
+ return pulumi.get(self, "created_at")
711
+
712
+ @property
713
+ @pulumi.getter
714
+ def description(self) -> pulumi.Output[Optional[builtins.str]]:
715
+ """
716
+ – A description for the key.
717
+ """
718
+ return pulumi.get(self, "description")
719
+
720
+ @property
721
+ @pulumi.getter
722
+ def locked(self) -> pulumi.Output[builtins.bool]:
723
+ """
724
+ Whether the key is locked.
725
+ """
726
+ return pulumi.get(self, "locked")
727
+
728
+ @property
729
+ @pulumi.getter
730
+ def name(self) -> pulumi.Output[builtins.str]:
731
+ """
732
+ The name of the key.
733
+ """
734
+ return pulumi.get(self, "name")
735
+
736
+ @property
737
+ @pulumi.getter
738
+ def origin(self) -> pulumi.Output[Optional[builtins.str]]:
739
+ """
740
+ – The origin of the key. Valid values are:
741
+ """
742
+ return pulumi.get(self, "origin")
743
+
744
+ @property
745
+ @pulumi.getter(name="projectId")
746
+ def project_id(self) -> pulumi.Output[builtins.str]:
747
+ """
748
+ – The ID of the project the key belongs to.
749
+ """
750
+ return pulumi.get(self, "project_id")
751
+
752
+ @property
753
+ @pulumi.getter
754
+ def protected(self) -> pulumi.Output[builtins.bool]:
755
+ """
756
+ Whether the key is protected from deletion.
757
+ """
758
+ return pulumi.get(self, "protected")
759
+
760
+ @property
761
+ @pulumi.getter
762
+ def region(self) -> pulumi.Output[builtins.str]:
763
+ """
764
+ The region in which to create the key (e.g., `fr-par`).
765
+ """
766
+ return pulumi.get(self, "region")
767
+
768
+ @property
769
+ @pulumi.getter(name="rotatedAt")
770
+ def rotated_at(self) -> pulumi.Output[builtins.str]:
771
+ """
772
+ The date and time when the key was last rotated.
773
+ """
774
+ return pulumi.get(self, "rotated_at")
775
+
776
+ @property
777
+ @pulumi.getter(name="rotationCount")
778
+ def rotation_count(self) -> pulumi.Output[builtins.int]:
779
+ """
780
+ The number of times the key has been rotated.
781
+ """
782
+ return pulumi.get(self, "rotation_count")
783
+
784
+ @property
785
+ @pulumi.getter(name="rotationPolicy")
786
+ def rotation_policy(self) -> pulumi.Output[Optional['outputs.KeyManagerKeyRotationPolicy']]:
787
+ """
788
+ – Rotation policy for the key:
789
+ """
790
+ return pulumi.get(self, "rotation_policy")
791
+
792
+ @property
793
+ @pulumi.getter
794
+ def state(self) -> pulumi.Output[builtins.str]:
795
+ """
796
+ The state of the key (e.g., `enabled`).
797
+ """
798
+ return pulumi.get(self, "state")
799
+
800
+ @property
801
+ @pulumi.getter
802
+ def tags(self) -> pulumi.Output[Optional[Sequence[builtins.str]]]:
803
+ """
804
+ – A list of tags to assign to the key.
805
+ """
806
+ return pulumi.get(self, "tags")
807
+
808
+ @property
809
+ @pulumi.getter
810
+ def unprotected(self) -> pulumi.Output[Optional[builtins.bool]]:
811
+ """
812
+ – If `true`, the key can be deleted. Defaults to `false` (protected).
813
+ """
814
+ return pulumi.get(self, "unprotected")
815
+
816
+ @property
817
+ @pulumi.getter(name="updatedAt")
818
+ def updated_at(self) -> pulumi.Output[builtins.str]:
819
+ """
820
+ The date and time when the key was last updated.
821
+ """
822
+ return pulumi.get(self, "updated_at")
823
+
824
+ @property
825
+ @pulumi.getter
826
+ def usage(self) -> pulumi.Output[builtins.str]:
827
+ """
828
+ – The usage of the key. Valid values are:
829
+ """
830
+ return pulumi.get(self, "usage")
831
+