pulumiverse-scaleway 1.22.0a1736239435__py3-none-any.whl → 1.23.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.

Potentially problematic release.


This version of pulumiverse-scaleway might be problematic. Click here for more details.

Files changed (145) hide show
  1. pulumiverse_scaleway/__init__.py +10 -0
  2. pulumiverse_scaleway/_inputs.py +326 -12
  3. pulumiverse_scaleway/_utilities.py +8 -4
  4. pulumiverse_scaleway/account_ssh_key.py +2 -2
  5. pulumiverse_scaleway/apple_silicon_server.py +124 -0
  6. pulumiverse_scaleway/baremetal_server.py +67 -7
  7. pulumiverse_scaleway/block_snapshot.py +2 -2
  8. pulumiverse_scaleway/block_volume.py +58 -11
  9. pulumiverse_scaleway/cockpit_grafana_user.py +28 -0
  10. pulumiverse_scaleway/cockpit_source.py +53 -3
  11. pulumiverse_scaleway/container.py +236 -23
  12. pulumiverse_scaleway/container_domain.py +2 -2
  13. pulumiverse_scaleway/database_instance.py +74 -21
  14. pulumiverse_scaleway/get_account_project.py +4 -4
  15. pulumiverse_scaleway/get_account_ssh_key.py +4 -4
  16. pulumiverse_scaleway/get_availability_zones.py +2 -2
  17. pulumiverse_scaleway/get_baremetal_offer.py +2 -2
  18. pulumiverse_scaleway/get_baremetal_option.py +2 -2
  19. pulumiverse_scaleway/get_baremetal_os.py +2 -2
  20. pulumiverse_scaleway/get_baremetal_server.py +2 -2
  21. pulumiverse_scaleway/get_billing_consumptions.py +2 -2
  22. pulumiverse_scaleway/get_billing_invoices.py +2 -2
  23. pulumiverse_scaleway/get_block_snapshot.py +4 -4
  24. pulumiverse_scaleway/get_block_volume.py +16 -5
  25. pulumiverse_scaleway/get_cockpit.py +2 -2
  26. pulumiverse_scaleway/get_cockpit_plan.py +2 -2
  27. pulumiverse_scaleway/get_cockpit_source.py +262 -0
  28. pulumiverse_scaleway/get_config.py +2 -2
  29. pulumiverse_scaleway/get_container.py +32 -6
  30. pulumiverse_scaleway/get_container_namespace.py +2 -2
  31. pulumiverse_scaleway/get_database.py +2 -2
  32. pulumiverse_scaleway/get_database_acl.py +2 -2
  33. pulumiverse_scaleway/get_database_backup.py +2 -2
  34. pulumiverse_scaleway/get_database_instance.py +14 -3
  35. pulumiverse_scaleway/get_database_privilege.py +2 -2
  36. pulumiverse_scaleway/get_domain_record.py +2 -2
  37. pulumiverse_scaleway/get_domain_zone.py +2 -2
  38. pulumiverse_scaleway/get_flexible_ip.py +2 -2
  39. pulumiverse_scaleway/get_flexible_ips.py +2 -2
  40. pulumiverse_scaleway/get_function.py +2 -2
  41. pulumiverse_scaleway/get_function_namespace.py +2 -2
  42. pulumiverse_scaleway/get_iam_api_key.py +2 -2
  43. pulumiverse_scaleway/get_iam_application.py +2 -2
  44. pulumiverse_scaleway/get_iam_group.py +2 -2
  45. pulumiverse_scaleway/get_iam_ssh_key.py +2 -2
  46. pulumiverse_scaleway/get_iam_user.py +2 -2
  47. pulumiverse_scaleway/get_instance_image.py +2 -2
  48. pulumiverse_scaleway/get_instance_ip.py +2 -2
  49. pulumiverse_scaleway/get_instance_placement_group.py +2 -2
  50. pulumiverse_scaleway/get_instance_private_nic.py +2 -2
  51. pulumiverse_scaleway/get_instance_security_group.py +2 -2
  52. pulumiverse_scaleway/get_instance_server.py +3 -17
  53. pulumiverse_scaleway/get_instance_servers.py +2 -2
  54. pulumiverse_scaleway/get_instance_snapshot.py +2 -2
  55. pulumiverse_scaleway/get_instance_volume.py +14 -3
  56. pulumiverse_scaleway/get_iot_device.py +2 -2
  57. pulumiverse_scaleway/get_iot_hub.py +2 -2
  58. pulumiverse_scaleway/get_ipam_ip.py +4 -4
  59. pulumiverse_scaleway/get_ipam_ips.py +4 -4
  60. pulumiverse_scaleway/get_k8s_version.py +2 -2
  61. pulumiverse_scaleway/get_kubernetes_cluster.py +2 -2
  62. pulumiverse_scaleway/get_kubernetes_node_pool.py +2 -2
  63. pulumiverse_scaleway/get_lb_acls.py +4 -4
  64. pulumiverse_scaleway/get_lb_backend.py +4 -4
  65. pulumiverse_scaleway/get_lb_backends.py +4 -4
  66. pulumiverse_scaleway/get_lb_frontend.py +4 -4
  67. pulumiverse_scaleway/get_lb_frontends.py +4 -4
  68. pulumiverse_scaleway/get_lb_ips.py +4 -4
  69. pulumiverse_scaleway/get_lb_route.py +4 -4
  70. pulumiverse_scaleway/get_lb_routes.py +4 -4
  71. pulumiverse_scaleway/get_lbs.py +4 -4
  72. pulumiverse_scaleway/get_loadbalancer.py +4 -4
  73. pulumiverse_scaleway/get_loadbalancer_certificate.py +4 -4
  74. pulumiverse_scaleway/get_loadbalancer_ip.py +4 -4
  75. pulumiverse_scaleway/get_marketplace_image.py +2 -2
  76. pulumiverse_scaleway/get_mnq_sns.py +2 -2
  77. pulumiverse_scaleway/get_mnq_sqs.py +2 -2
  78. pulumiverse_scaleway/get_mongo_db_instance.py +2 -2
  79. pulumiverse_scaleway/get_object_bucket.py +4 -4
  80. pulumiverse_scaleway/get_object_bucket_policy.py +4 -4
  81. pulumiverse_scaleway/get_redis_cluster.py +2 -2
  82. pulumiverse_scaleway/get_registry_image.py +2 -2
  83. pulumiverse_scaleway/get_registry_image_tag.py +2 -2
  84. pulumiverse_scaleway/get_registry_namespace.py +2 -2
  85. pulumiverse_scaleway/get_secret.py +2 -2
  86. pulumiverse_scaleway/get_secret_version.py +2 -2
  87. pulumiverse_scaleway/get_tem_domain.py +2 -2
  88. pulumiverse_scaleway/get_vpc.py +2 -2
  89. pulumiverse_scaleway/get_vpc_gateway_network.py +2 -2
  90. pulumiverse_scaleway/get_vpc_private_network.py +2 -2
  91. pulumiverse_scaleway/get_vpc_public_gateway.py +2 -2
  92. pulumiverse_scaleway/get_vpc_public_gateway_dhcp.py +2 -2
  93. pulumiverse_scaleway/get_vpc_public_gateway_dhcp_reservation.py +2 -2
  94. pulumiverse_scaleway/get_vpc_public_gateway_ip.py +2 -2
  95. pulumiverse_scaleway/get_vpc_public_pat_rule.py +2 -2
  96. pulumiverse_scaleway/get_vpc_routes.py +2 -2
  97. pulumiverse_scaleway/get_vpcs.py +2 -2
  98. pulumiverse_scaleway/get_web_host_offer.py +2 -2
  99. pulumiverse_scaleway/get_webhosting.py +2 -2
  100. pulumiverse_scaleway/iam_policy.py +2 -2
  101. pulumiverse_scaleway/instance_ip.py +7 -21
  102. pulumiverse_scaleway/instance_server.py +13 -78
  103. pulumiverse_scaleway/instance_volume.py +47 -0
  104. pulumiverse_scaleway/iot_route.py +21 -21
  105. pulumiverse_scaleway/ipam_ip.py +2 -2
  106. pulumiverse_scaleway/ipam_ip_reverse_dns.py +2 -2
  107. pulumiverse_scaleway/loadbalancer.py +2 -2
  108. pulumiverse_scaleway/loadbalancer_acl.py +2 -2
  109. pulumiverse_scaleway/loadbalancer_backend.py +2 -2
  110. pulumiverse_scaleway/loadbalancer_frontend.py +2 -2
  111. pulumiverse_scaleway/loadbalancer_ip.py +2 -2
  112. pulumiverse_scaleway/loadbalancer_route.py +2 -2
  113. pulumiverse_scaleway/mnq_nats_account.py +2 -2
  114. pulumiverse_scaleway/mnq_nats_credentials.py +2 -2
  115. pulumiverse_scaleway/mnq_sns.py +2 -2
  116. pulumiverse_scaleway/mnq_sns_credentials.py +2 -2
  117. pulumiverse_scaleway/mnq_sns_topic.py +2 -2
  118. pulumiverse_scaleway/mnq_sns_topic_subscription.py +2 -2
  119. pulumiverse_scaleway/mnq_sqs.py +2 -2
  120. pulumiverse_scaleway/mnq_sqs_credentials.py +2 -2
  121. pulumiverse_scaleway/mnq_sqs_queue.py +2 -2
  122. pulumiverse_scaleway/mongo_db_instance.py +2 -2
  123. pulumiverse_scaleway/mongo_db_snapshot.py +2 -2
  124. pulumiverse_scaleway/object_bucket.py +12 -12
  125. pulumiverse_scaleway/object_bucket_acl.py +2 -2
  126. pulumiverse_scaleway/object_bucket_lock_configuration.py +4 -4
  127. pulumiverse_scaleway/object_bucket_policy.py +6 -6
  128. pulumiverse_scaleway/object_bucket_website_configuration.py +4 -4
  129. pulumiverse_scaleway/object_item.py +60 -11
  130. pulumiverse_scaleway/outputs.py +353 -8
  131. pulumiverse_scaleway/pulumi-plugin.json +1 -1
  132. pulumiverse_scaleway/rdb_snapshot.py +608 -0
  133. pulumiverse_scaleway/redis_cluster.py +49 -14
  134. pulumiverse_scaleway/sdb_database.py +2 -2
  135. pulumiverse_scaleway/secret_version.py +2 -2
  136. pulumiverse_scaleway/vpc.py +2 -2
  137. pulumiverse_scaleway/vpc_gateway_network.py +7 -7
  138. pulumiverse_scaleway/vpc_public_gateway_dhcp.py +14 -0
  139. pulumiverse_scaleway/vpc_public_gateway_dhcp_reservation.py +2 -2
  140. pulumiverse_scaleway/vpc_route.py +2 -2
  141. {pulumiverse_scaleway-1.22.0a1736239435.dist-info → pulumiverse_scaleway-1.23.0.dist-info}/METADATA +3 -3
  142. pulumiverse_scaleway-1.23.0.dist-info/RECORD +206 -0
  143. {pulumiverse_scaleway-1.22.0a1736239435.dist-info → pulumiverse_scaleway-1.23.0.dist-info}/WHEEL +1 -1
  144. pulumiverse_scaleway-1.22.0a1736239435.dist-info/RECORD +0 -204
  145. {pulumiverse_scaleway-1.22.0a1736239435.dist-info → pulumiverse_scaleway-1.23.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,608 @@
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__ = ['RdbSnapshotArgs', 'RdbSnapshot']
18
+
19
+ @pulumi.input_type
20
+ class RdbSnapshotArgs:
21
+ def __init__(__self__, *,
22
+ instance_id: pulumi.Input[str],
23
+ expires_at: Optional[pulumi.Input[str]] = None,
24
+ name: Optional[pulumi.Input[str]] = None,
25
+ region: Optional[pulumi.Input[str]] = None):
26
+ """
27
+ The set of arguments for constructing a RdbSnapshot resource.
28
+ :param pulumi.Input[str] instance_id: The UUID of the database instance for which the snapshot is created.
29
+ :param pulumi.Input[str] expires_at: Expiration date of the snapshot in ISO 8601 format (e.g., `2025-01-31T00:00:00Z`). If not set, the snapshot will not expire automatically.
30
+ :param pulumi.Input[str] name: The name of the snapshot.
31
+ :param pulumi.Input[str] region: The region where the snapshot is stored. Defaults to the region set in the provider configuration.
32
+ """
33
+ pulumi.set(__self__, "instance_id", instance_id)
34
+ if expires_at is not None:
35
+ pulumi.set(__self__, "expires_at", expires_at)
36
+ if name is not None:
37
+ pulumi.set(__self__, "name", name)
38
+ if region is not None:
39
+ pulumi.set(__self__, "region", region)
40
+
41
+ @property
42
+ @pulumi.getter(name="instanceId")
43
+ def instance_id(self) -> pulumi.Input[str]:
44
+ """
45
+ The UUID of the database instance for which the snapshot is created.
46
+ """
47
+ return pulumi.get(self, "instance_id")
48
+
49
+ @instance_id.setter
50
+ def instance_id(self, value: pulumi.Input[str]):
51
+ pulumi.set(self, "instance_id", value)
52
+
53
+ @property
54
+ @pulumi.getter(name="expiresAt")
55
+ def expires_at(self) -> Optional[pulumi.Input[str]]:
56
+ """
57
+ Expiration date of the snapshot in ISO 8601 format (e.g., `2025-01-31T00:00:00Z`). If not set, the snapshot will not expire automatically.
58
+ """
59
+ return pulumi.get(self, "expires_at")
60
+
61
+ @expires_at.setter
62
+ def expires_at(self, value: Optional[pulumi.Input[str]]):
63
+ pulumi.set(self, "expires_at", value)
64
+
65
+ @property
66
+ @pulumi.getter
67
+ def name(self) -> Optional[pulumi.Input[str]]:
68
+ """
69
+ The name of the snapshot.
70
+ """
71
+ return pulumi.get(self, "name")
72
+
73
+ @name.setter
74
+ def name(self, value: Optional[pulumi.Input[str]]):
75
+ pulumi.set(self, "name", value)
76
+
77
+ @property
78
+ @pulumi.getter
79
+ def region(self) -> Optional[pulumi.Input[str]]:
80
+ """
81
+ The region where the snapshot is stored. Defaults to the region set in the provider configuration.
82
+ """
83
+ return pulumi.get(self, "region")
84
+
85
+ @region.setter
86
+ def region(self, value: Optional[pulumi.Input[str]]):
87
+ pulumi.set(self, "region", value)
88
+
89
+
90
+ @pulumi.input_type
91
+ class _RdbSnapshotState:
92
+ def __init__(__self__, *,
93
+ created_at: Optional[pulumi.Input[str]] = None,
94
+ expires_at: Optional[pulumi.Input[str]] = None,
95
+ instance_id: Optional[pulumi.Input[str]] = None,
96
+ name: Optional[pulumi.Input[str]] = None,
97
+ node_type: Optional[pulumi.Input[str]] = None,
98
+ region: Optional[pulumi.Input[str]] = None,
99
+ size: Optional[pulumi.Input[int]] = None,
100
+ status: Optional[pulumi.Input[str]] = None,
101
+ updated_at: Optional[pulumi.Input[str]] = None,
102
+ volume_type: Optional[pulumi.Input[str]] = None):
103
+ """
104
+ Input properties used for looking up and filtering RdbSnapshot resources.
105
+ :param pulumi.Input[str] created_at: The timestamp when the snapshot was created, in ISO 8601 format.
106
+ :param pulumi.Input[str] expires_at: Expiration date of the snapshot in ISO 8601 format (e.g., `2025-01-31T00:00:00Z`). If not set, the snapshot will not expire automatically.
107
+ :param pulumi.Input[str] instance_id: The UUID of the database instance for which the snapshot is created.
108
+ :param pulumi.Input[str] name: The name of the snapshot.
109
+ :param pulumi.Input[str] node_type: The type of the database instance for which the snapshot was created.
110
+ :param pulumi.Input[str] region: The region where the snapshot is stored. Defaults to the region set in the provider configuration.
111
+ :param pulumi.Input[int] size: The size of the snapshot in bytes.
112
+ :param pulumi.Input[str] status: The current status of the snapshot (e.g., `ready`, `creating`, `error`).
113
+ :param pulumi.Input[str] updated_at: The timestamp when the snapshot was last updated, in ISO 8601 format.
114
+ :param pulumi.Input[str] volume_type: The type of volume used by the snapshot.
115
+ """
116
+ if created_at is not None:
117
+ pulumi.set(__self__, "created_at", created_at)
118
+ if expires_at is not None:
119
+ pulumi.set(__self__, "expires_at", expires_at)
120
+ if instance_id is not None:
121
+ pulumi.set(__self__, "instance_id", instance_id)
122
+ if name is not None:
123
+ pulumi.set(__self__, "name", name)
124
+ if node_type is not None:
125
+ pulumi.set(__self__, "node_type", node_type)
126
+ if region is not None:
127
+ pulumi.set(__self__, "region", region)
128
+ if size is not None:
129
+ pulumi.set(__self__, "size", size)
130
+ if status is not None:
131
+ pulumi.set(__self__, "status", status)
132
+ if updated_at is not None:
133
+ pulumi.set(__self__, "updated_at", updated_at)
134
+ if volume_type is not None:
135
+ pulumi.set(__self__, "volume_type", volume_type)
136
+
137
+ @property
138
+ @pulumi.getter(name="createdAt")
139
+ def created_at(self) -> Optional[pulumi.Input[str]]:
140
+ """
141
+ The timestamp when the snapshot was created, in ISO 8601 format.
142
+ """
143
+ return pulumi.get(self, "created_at")
144
+
145
+ @created_at.setter
146
+ def created_at(self, value: Optional[pulumi.Input[str]]):
147
+ pulumi.set(self, "created_at", value)
148
+
149
+ @property
150
+ @pulumi.getter(name="expiresAt")
151
+ def expires_at(self) -> Optional[pulumi.Input[str]]:
152
+ """
153
+ Expiration date of the snapshot in ISO 8601 format (e.g., `2025-01-31T00:00:00Z`). If not set, the snapshot will not expire automatically.
154
+ """
155
+ return pulumi.get(self, "expires_at")
156
+
157
+ @expires_at.setter
158
+ def expires_at(self, value: Optional[pulumi.Input[str]]):
159
+ pulumi.set(self, "expires_at", value)
160
+
161
+ @property
162
+ @pulumi.getter(name="instanceId")
163
+ def instance_id(self) -> Optional[pulumi.Input[str]]:
164
+ """
165
+ The UUID of the database instance for which the snapshot is created.
166
+ """
167
+ return pulumi.get(self, "instance_id")
168
+
169
+ @instance_id.setter
170
+ def instance_id(self, value: Optional[pulumi.Input[str]]):
171
+ pulumi.set(self, "instance_id", value)
172
+
173
+ @property
174
+ @pulumi.getter
175
+ def name(self) -> Optional[pulumi.Input[str]]:
176
+ """
177
+ The name of the snapshot.
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="nodeType")
187
+ def node_type(self) -> Optional[pulumi.Input[str]]:
188
+ """
189
+ The type of the database instance for which the snapshot was created.
190
+ """
191
+ return pulumi.get(self, "node_type")
192
+
193
+ @node_type.setter
194
+ def node_type(self, value: Optional[pulumi.Input[str]]):
195
+ pulumi.set(self, "node_type", value)
196
+
197
+ @property
198
+ @pulumi.getter
199
+ def region(self) -> Optional[pulumi.Input[str]]:
200
+ """
201
+ The region where the snapshot is stored. Defaults to the region set in the provider configuration.
202
+ """
203
+ return pulumi.get(self, "region")
204
+
205
+ @region.setter
206
+ def region(self, value: Optional[pulumi.Input[str]]):
207
+ pulumi.set(self, "region", value)
208
+
209
+ @property
210
+ @pulumi.getter
211
+ def size(self) -> Optional[pulumi.Input[int]]:
212
+ """
213
+ The size of the snapshot in bytes.
214
+ """
215
+ return pulumi.get(self, "size")
216
+
217
+ @size.setter
218
+ def size(self, value: Optional[pulumi.Input[int]]):
219
+ pulumi.set(self, "size", value)
220
+
221
+ @property
222
+ @pulumi.getter
223
+ def status(self) -> Optional[pulumi.Input[str]]:
224
+ """
225
+ The current status of the snapshot (e.g., `ready`, `creating`, `error`).
226
+ """
227
+ return pulumi.get(self, "status")
228
+
229
+ @status.setter
230
+ def status(self, value: Optional[pulumi.Input[str]]):
231
+ pulumi.set(self, "status", value)
232
+
233
+ @property
234
+ @pulumi.getter(name="updatedAt")
235
+ def updated_at(self) -> Optional[pulumi.Input[str]]:
236
+ """
237
+ The timestamp when the snapshot was last updated, in ISO 8601 format.
238
+ """
239
+ return pulumi.get(self, "updated_at")
240
+
241
+ @updated_at.setter
242
+ def updated_at(self, value: Optional[pulumi.Input[str]]):
243
+ pulumi.set(self, "updated_at", value)
244
+
245
+ @property
246
+ @pulumi.getter(name="volumeType")
247
+ def volume_type(self) -> Optional[pulumi.Input[str]]:
248
+ """
249
+ The type of volume used by the snapshot.
250
+ """
251
+ return pulumi.get(self, "volume_type")
252
+
253
+ @volume_type.setter
254
+ def volume_type(self, value: Optional[pulumi.Input[str]]):
255
+ pulumi.set(self, "volume_type", value)
256
+
257
+
258
+ class RdbSnapshot(pulumi.CustomResource):
259
+ @overload
260
+ def __init__(__self__,
261
+ resource_name: str,
262
+ opts: Optional[pulumi.ResourceOptions] = None,
263
+ expires_at: Optional[pulumi.Input[str]] = None,
264
+ instance_id: Optional[pulumi.Input[str]] = None,
265
+ name: Optional[pulumi.Input[str]] = None,
266
+ region: Optional[pulumi.Input[str]] = None,
267
+ __props__=None):
268
+ """
269
+ Creates and manages Scaleway RDB (Relational Database) Snapshots.
270
+ Snapshots are point-in-time backups of a database instance that can be used for recovery or duplication.
271
+ For more information, refer to [the API documentation](https://www.scaleway.com/en/developers/api/managed-database-postgre-mysql/).
272
+
273
+ ## Example Usage
274
+
275
+ ### Example Basic Snapshot
276
+
277
+ ```python
278
+ import pulumi
279
+ import pulumiverse_scaleway as scaleway
280
+
281
+ main = scaleway.DatabaseInstance("main",
282
+ name="test-rdb-instance",
283
+ node_type="db-dev-s",
284
+ engine="PostgreSQL-15",
285
+ is_ha_cluster=False,
286
+ disable_backup=True,
287
+ user_name="my_initial_user",
288
+ password="thiZ_is_v&ry_s3cret",
289
+ tags=[
290
+ "terraform-test",
291
+ "scaleway_rdb_instance",
292
+ "minimal",
293
+ ],
294
+ volume_type="bssd",
295
+ volume_size_in_gb=10)
296
+ test = scaleway.RdbSnapshot("test",
297
+ name="initial-snapshot",
298
+ instance_id=main.id,
299
+ opts = pulumi.ResourceOptions(depends_on=[main]))
300
+ ```
301
+
302
+ ### Example with Expiration
303
+
304
+ ```python
305
+ import pulumi
306
+ import pulumiverse_scaleway as scaleway
307
+
308
+ snapshot_with_expiration = scaleway.RdbSnapshot("snapshot_with_expiration",
309
+ name="snapshot-with-expiration",
310
+ instance_id=main["id"],
311
+ expires_at="2025-01-31T00:00:00Z")
312
+ ```
313
+
314
+ ### Example with Multiple Snapshots
315
+
316
+ ```python
317
+ import pulumi
318
+ import pulumiverse_scaleway as scaleway
319
+
320
+ snapshot_a = scaleway.RdbSnapshot("snapshot_a",
321
+ name="snapshot_a",
322
+ instance_id=main["id"],
323
+ opts = pulumi.ResourceOptions(depends_on=[main]))
324
+ snapshot_b = scaleway.RdbSnapshot("snapshot_b",
325
+ name="snapshot_b",
326
+ instance_id=main["id"],
327
+ expires_at="2025-02-07T00:00:00Z",
328
+ opts = pulumi.ResourceOptions(depends_on=[main]))
329
+ ```
330
+
331
+ ## Limitations
332
+
333
+ - Snapshots are tied to the database instance and region where they are created.
334
+ - Expired snapshots are automatically deleted and cannot be restored.
335
+
336
+ ## Notes
337
+
338
+ - Ensure the `instance_id` corresponds to an existing database instance.
339
+ - Use the `depends_on` argument when creating snapshots right after creating an instance to ensure proper dependency management.
340
+
341
+ ## Import
342
+
343
+ RDB Snapshots can be imported using the `{region}/{snapshot_id}` format.
344
+
345
+ :param str resource_name: The name of the resource.
346
+ :param pulumi.ResourceOptions opts: Options for the resource.
347
+ :param pulumi.Input[str] expires_at: Expiration date of the snapshot in ISO 8601 format (e.g., `2025-01-31T00:00:00Z`). If not set, the snapshot will not expire automatically.
348
+ :param pulumi.Input[str] instance_id: The UUID of the database instance for which the snapshot is created.
349
+ :param pulumi.Input[str] name: The name of the snapshot.
350
+ :param pulumi.Input[str] region: The region where the snapshot is stored. Defaults to the region set in the provider configuration.
351
+ """
352
+ ...
353
+ @overload
354
+ def __init__(__self__,
355
+ resource_name: str,
356
+ args: RdbSnapshotArgs,
357
+ opts: Optional[pulumi.ResourceOptions] = None):
358
+ """
359
+ Creates and manages Scaleway RDB (Relational Database) Snapshots.
360
+ Snapshots are point-in-time backups of a database instance that can be used for recovery or duplication.
361
+ For more information, refer to [the API documentation](https://www.scaleway.com/en/developers/api/managed-database-postgre-mysql/).
362
+
363
+ ## Example Usage
364
+
365
+ ### Example Basic Snapshot
366
+
367
+ ```python
368
+ import pulumi
369
+ import pulumiverse_scaleway as scaleway
370
+
371
+ main = scaleway.DatabaseInstance("main",
372
+ name="test-rdb-instance",
373
+ node_type="db-dev-s",
374
+ engine="PostgreSQL-15",
375
+ is_ha_cluster=False,
376
+ disable_backup=True,
377
+ user_name="my_initial_user",
378
+ password="thiZ_is_v&ry_s3cret",
379
+ tags=[
380
+ "terraform-test",
381
+ "scaleway_rdb_instance",
382
+ "minimal",
383
+ ],
384
+ volume_type="bssd",
385
+ volume_size_in_gb=10)
386
+ test = scaleway.RdbSnapshot("test",
387
+ name="initial-snapshot",
388
+ instance_id=main.id,
389
+ opts = pulumi.ResourceOptions(depends_on=[main]))
390
+ ```
391
+
392
+ ### Example with Expiration
393
+
394
+ ```python
395
+ import pulumi
396
+ import pulumiverse_scaleway as scaleway
397
+
398
+ snapshot_with_expiration = scaleway.RdbSnapshot("snapshot_with_expiration",
399
+ name="snapshot-with-expiration",
400
+ instance_id=main["id"],
401
+ expires_at="2025-01-31T00:00:00Z")
402
+ ```
403
+
404
+ ### Example with Multiple Snapshots
405
+
406
+ ```python
407
+ import pulumi
408
+ import pulumiverse_scaleway as scaleway
409
+
410
+ snapshot_a = scaleway.RdbSnapshot("snapshot_a",
411
+ name="snapshot_a",
412
+ instance_id=main["id"],
413
+ opts = pulumi.ResourceOptions(depends_on=[main]))
414
+ snapshot_b = scaleway.RdbSnapshot("snapshot_b",
415
+ name="snapshot_b",
416
+ instance_id=main["id"],
417
+ expires_at="2025-02-07T00:00:00Z",
418
+ opts = pulumi.ResourceOptions(depends_on=[main]))
419
+ ```
420
+
421
+ ## Limitations
422
+
423
+ - Snapshots are tied to the database instance and region where they are created.
424
+ - Expired snapshots are automatically deleted and cannot be restored.
425
+
426
+ ## Notes
427
+
428
+ - Ensure the `instance_id` corresponds to an existing database instance.
429
+ - Use the `depends_on` argument when creating snapshots right after creating an instance to ensure proper dependency management.
430
+
431
+ ## Import
432
+
433
+ RDB Snapshots can be imported using the `{region}/{snapshot_id}` format.
434
+
435
+ :param str resource_name: The name of the resource.
436
+ :param RdbSnapshotArgs args: The arguments to use to populate this resource's properties.
437
+ :param pulumi.ResourceOptions opts: Options for the resource.
438
+ """
439
+ ...
440
+ def __init__(__self__, resource_name: str, *args, **kwargs):
441
+ resource_args, opts = _utilities.get_resource_args_opts(RdbSnapshotArgs, pulumi.ResourceOptions, *args, **kwargs)
442
+ if resource_args is not None:
443
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
444
+ else:
445
+ __self__._internal_init(resource_name, *args, **kwargs)
446
+
447
+ def _internal_init(__self__,
448
+ resource_name: str,
449
+ opts: Optional[pulumi.ResourceOptions] = None,
450
+ expires_at: Optional[pulumi.Input[str]] = None,
451
+ instance_id: Optional[pulumi.Input[str]] = None,
452
+ name: Optional[pulumi.Input[str]] = None,
453
+ region: Optional[pulumi.Input[str]] = None,
454
+ __props__=None):
455
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
456
+ if not isinstance(opts, pulumi.ResourceOptions):
457
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
458
+ if opts.id is None:
459
+ if __props__ is not None:
460
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
461
+ __props__ = RdbSnapshotArgs.__new__(RdbSnapshotArgs)
462
+
463
+ __props__.__dict__["expires_at"] = expires_at
464
+ if instance_id is None and not opts.urn:
465
+ raise TypeError("Missing required property 'instance_id'")
466
+ __props__.__dict__["instance_id"] = instance_id
467
+ __props__.__dict__["name"] = name
468
+ __props__.__dict__["region"] = region
469
+ __props__.__dict__["created_at"] = None
470
+ __props__.__dict__["node_type"] = None
471
+ __props__.__dict__["size"] = None
472
+ __props__.__dict__["status"] = None
473
+ __props__.__dict__["updated_at"] = None
474
+ __props__.__dict__["volume_type"] = None
475
+ super(RdbSnapshot, __self__).__init__(
476
+ 'scaleway:index/rdbSnapshot:RdbSnapshot',
477
+ resource_name,
478
+ __props__,
479
+ opts)
480
+
481
+ @staticmethod
482
+ def get(resource_name: str,
483
+ id: pulumi.Input[str],
484
+ opts: Optional[pulumi.ResourceOptions] = None,
485
+ created_at: Optional[pulumi.Input[str]] = None,
486
+ expires_at: Optional[pulumi.Input[str]] = None,
487
+ instance_id: Optional[pulumi.Input[str]] = None,
488
+ name: Optional[pulumi.Input[str]] = None,
489
+ node_type: Optional[pulumi.Input[str]] = None,
490
+ region: Optional[pulumi.Input[str]] = None,
491
+ size: Optional[pulumi.Input[int]] = None,
492
+ status: Optional[pulumi.Input[str]] = None,
493
+ updated_at: Optional[pulumi.Input[str]] = None,
494
+ volume_type: Optional[pulumi.Input[str]] = None) -> 'RdbSnapshot':
495
+ """
496
+ Get an existing RdbSnapshot resource's state with the given name, id, and optional extra
497
+ properties used to qualify the lookup.
498
+
499
+ :param str resource_name: The unique name of the resulting resource.
500
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
501
+ :param pulumi.ResourceOptions opts: Options for the resource.
502
+ :param pulumi.Input[str] created_at: The timestamp when the snapshot was created, in ISO 8601 format.
503
+ :param pulumi.Input[str] expires_at: Expiration date of the snapshot in ISO 8601 format (e.g., `2025-01-31T00:00:00Z`). If not set, the snapshot will not expire automatically.
504
+ :param pulumi.Input[str] instance_id: The UUID of the database instance for which the snapshot is created.
505
+ :param pulumi.Input[str] name: The name of the snapshot.
506
+ :param pulumi.Input[str] node_type: The type of the database instance for which the snapshot was created.
507
+ :param pulumi.Input[str] region: The region where the snapshot is stored. Defaults to the region set in the provider configuration.
508
+ :param pulumi.Input[int] size: The size of the snapshot in bytes.
509
+ :param pulumi.Input[str] status: The current status of the snapshot (e.g., `ready`, `creating`, `error`).
510
+ :param pulumi.Input[str] updated_at: The timestamp when the snapshot was last updated, in ISO 8601 format.
511
+ :param pulumi.Input[str] volume_type: The type of volume used by the snapshot.
512
+ """
513
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
514
+
515
+ __props__ = _RdbSnapshotState.__new__(_RdbSnapshotState)
516
+
517
+ __props__.__dict__["created_at"] = created_at
518
+ __props__.__dict__["expires_at"] = expires_at
519
+ __props__.__dict__["instance_id"] = instance_id
520
+ __props__.__dict__["name"] = name
521
+ __props__.__dict__["node_type"] = node_type
522
+ __props__.__dict__["region"] = region
523
+ __props__.__dict__["size"] = size
524
+ __props__.__dict__["status"] = status
525
+ __props__.__dict__["updated_at"] = updated_at
526
+ __props__.__dict__["volume_type"] = volume_type
527
+ return RdbSnapshot(resource_name, opts=opts, __props__=__props__)
528
+
529
+ @property
530
+ @pulumi.getter(name="createdAt")
531
+ def created_at(self) -> pulumi.Output[str]:
532
+ """
533
+ The timestamp when the snapshot was created, in ISO 8601 format.
534
+ """
535
+ return pulumi.get(self, "created_at")
536
+
537
+ @property
538
+ @pulumi.getter(name="expiresAt")
539
+ def expires_at(self) -> pulumi.Output[str]:
540
+ """
541
+ Expiration date of the snapshot in ISO 8601 format (e.g., `2025-01-31T00:00:00Z`). If not set, the snapshot will not expire automatically.
542
+ """
543
+ return pulumi.get(self, "expires_at")
544
+
545
+ @property
546
+ @pulumi.getter(name="instanceId")
547
+ def instance_id(self) -> pulumi.Output[str]:
548
+ """
549
+ The UUID of the database instance for which the snapshot is created.
550
+ """
551
+ return pulumi.get(self, "instance_id")
552
+
553
+ @property
554
+ @pulumi.getter
555
+ def name(self) -> pulumi.Output[str]:
556
+ """
557
+ The name of the snapshot.
558
+ """
559
+ return pulumi.get(self, "name")
560
+
561
+ @property
562
+ @pulumi.getter(name="nodeType")
563
+ def node_type(self) -> pulumi.Output[str]:
564
+ """
565
+ The type of the database instance for which the snapshot was created.
566
+ """
567
+ return pulumi.get(self, "node_type")
568
+
569
+ @property
570
+ @pulumi.getter
571
+ def region(self) -> pulumi.Output[str]:
572
+ """
573
+ The region where the snapshot is stored. Defaults to the region set in the provider configuration.
574
+ """
575
+ return pulumi.get(self, "region")
576
+
577
+ @property
578
+ @pulumi.getter
579
+ def size(self) -> pulumi.Output[int]:
580
+ """
581
+ The size of the snapshot in bytes.
582
+ """
583
+ return pulumi.get(self, "size")
584
+
585
+ @property
586
+ @pulumi.getter
587
+ def status(self) -> pulumi.Output[str]:
588
+ """
589
+ The current status of the snapshot (e.g., `ready`, `creating`, `error`).
590
+ """
591
+ return pulumi.get(self, "status")
592
+
593
+ @property
594
+ @pulumi.getter(name="updatedAt")
595
+ def updated_at(self) -> pulumi.Output[str]:
596
+ """
597
+ The timestamp when the snapshot was last updated, in ISO 8601 format.
598
+ """
599
+ return pulumi.get(self, "updated_at")
600
+
601
+ @property
602
+ @pulumi.getter(name="volumeType")
603
+ def volume_type(self) -> pulumi.Output[str]:
604
+ """
605
+ The type of volume used by the snapshot.
606
+ """
607
+ return pulumi.get(self, "volume_type")
608
+