pulumiverse-scaleway 1.35.0a1761031391__py3-none-any.whl → 1.35.0a1761072454__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 (28) hide show
  1. pulumiverse_scaleway/_inputs.py +105 -151
  2. pulumiverse_scaleway/baremetal_server.py +16 -0
  3. pulumiverse_scaleway/billing/get_consumptions.py +4 -0
  4. pulumiverse_scaleway/block/snapshot.py +8 -0
  5. pulumiverse_scaleway/block_snapshot.py +8 -0
  6. pulumiverse_scaleway/database_instance.py +34 -34
  7. pulumiverse_scaleway/databases/instance.py +34 -34
  8. pulumiverse_scaleway/edge_services_cache_stage.py +4 -0
  9. pulumiverse_scaleway/elasticmetal/server.py +16 -0
  10. pulumiverse_scaleway/file_filesystem.py +6 -2
  11. pulumiverse_scaleway/get_billing_consumptions.py +4 -0
  12. pulumiverse_scaleway/inference/deployment.py +4 -0
  13. pulumiverse_scaleway/inference_deployment.py +4 -0
  14. pulumiverse_scaleway/instance/_inputs.py +92 -138
  15. pulumiverse_scaleway/instance/image.py +94 -40
  16. pulumiverse_scaleway/instance/outputs.py +71 -88
  17. pulumiverse_scaleway/instance_image.py +94 -40
  18. pulumiverse_scaleway/key_manager_key.py +134 -25
  19. pulumiverse_scaleway/kubernetes/cluster.py +54 -0
  20. pulumiverse_scaleway/kubernetes_cluster.py +54 -0
  21. pulumiverse_scaleway/loadbalancers/_inputs.py +13 -13
  22. pulumiverse_scaleway/loadbalancers/outputs.py +9 -9
  23. pulumiverse_scaleway/outputs.py +80 -97
  24. pulumiverse_scaleway/pulumi-plugin.json +1 -1
  25. {pulumiverse_scaleway-1.35.0a1761031391.dist-info → pulumiverse_scaleway-1.35.0a1761072454.dist-info}/METADATA +1 -1
  26. {pulumiverse_scaleway-1.35.0a1761031391.dist-info → pulumiverse_scaleway-1.35.0a1761072454.dist-info}/RECORD +28 -28
  27. {pulumiverse_scaleway-1.35.0a1761031391.dist-info → pulumiverse_scaleway-1.35.0a1761072454.dist-info}/WHEEL +0 -0
  28. {pulumiverse_scaleway-1.35.0a1761031391.dist-info → pulumiverse_scaleway-1.35.0a1761072454.dist-info}/top_level.txt +0 -0
@@ -17,6 +17,7 @@ from . import outputs
17
17
 
18
18
  __all__ = [
19
19
  'ImageAdditionalVolume',
20
+ 'ImageRootVolume',
20
21
  'PrivateNicPrivateIp',
21
22
  'SecurityGroupInboundRule',
22
23
  'SecurityGroupOutboundRule',
@@ -48,13 +49,7 @@ class ImageAdditionalVolume(dict):
48
49
  @staticmethod
49
50
  def __key_warning(key: str):
50
51
  suggest = None
51
- if key == "creationDate":
52
- suggest = "creation_date"
53
- elif key == "exportUri":
54
- suggest = "export_uri"
55
- elif key == "modificationDate":
56
- suggest = "modification_date"
57
- elif key == "volumeType":
52
+ if key == "volumeType":
58
53
  suggest = "volume_type"
59
54
 
60
55
  if suggest:
@@ -69,76 +64,32 @@ class ImageAdditionalVolume(dict):
69
64
  return super().get(key, default)
70
65
 
71
66
  def __init__(__self__, *,
72
- creation_date: Optional[_builtins.str] = None,
73
- export_uri: Optional[_builtins.str] = None,
74
67
  id: Optional[_builtins.str] = None,
75
- modification_date: Optional[_builtins.str] = None,
76
68
  name: Optional[_builtins.str] = None,
77
- organization: Optional[_builtins.str] = None,
78
- project: Optional[_builtins.str] = None,
79
69
  server: Optional[Mapping[str, _builtins.str]] = None,
80
70
  size: Optional[_builtins.int] = None,
81
- state: Optional[_builtins.str] = None,
82
71
  tags: Optional[Sequence[_builtins.str]] = None,
83
- volume_type: Optional[_builtins.str] = None,
84
- zone: Optional[_builtins.str] = None):
72
+ volume_type: Optional[_builtins.str] = None):
85
73
  """
86
- :param _builtins.str creation_date: Date of the volume creation.
87
- :param _builtins.str export_uri: The export URI of the volume.
88
74
  :param _builtins.str id: ID of the server containing the volume.
89
- :param _builtins.str modification_date: Date of volume latest update.
90
75
  :param _builtins.str name: The name of the image. If not provided it will be randomly generated.
91
- :param _builtins.str organization: The organization ID the volume is associated with.
92
- :param _builtins.str project: ID of the project the volume is associated with
93
76
  :param Mapping[str, _builtins.str] server: Description of the server containing the volume (in case the image is a backup from a server).
94
77
  :param _builtins.int size: The size of the volume.
95
- :param _builtins.str state: State of the volume.
96
78
  :param Sequence[_builtins.str] tags: A list of tags to apply to the image.
97
- :param _builtins.str volume_type: The type of volume, possible values are `l_ssd` and `b_ssd`.
98
- :param _builtins.str zone: The zone in which the image should be created.
79
+ :param _builtins.str volume_type: The type of volume, possible values are `l_ssd` and `sbs_snapshot`.
99
80
  """
100
- if creation_date is not None:
101
- pulumi.set(__self__, "creation_date", creation_date)
102
- if export_uri is not None:
103
- pulumi.set(__self__, "export_uri", export_uri)
104
81
  if id is not None:
105
82
  pulumi.set(__self__, "id", id)
106
- if modification_date is not None:
107
- pulumi.set(__self__, "modification_date", modification_date)
108
83
  if name is not None:
109
84
  pulumi.set(__self__, "name", name)
110
- if organization is not None:
111
- pulumi.set(__self__, "organization", organization)
112
- if project is not None:
113
- pulumi.set(__self__, "project", project)
114
85
  if server is not None:
115
86
  pulumi.set(__self__, "server", server)
116
87
  if size is not None:
117
88
  pulumi.set(__self__, "size", size)
118
- if state is not None:
119
- pulumi.set(__self__, "state", state)
120
89
  if tags is not None:
121
90
  pulumi.set(__self__, "tags", tags)
122
91
  if volume_type is not None:
123
92
  pulumi.set(__self__, "volume_type", volume_type)
124
- if zone is not None:
125
- pulumi.set(__self__, "zone", zone)
126
-
127
- @_builtins.property
128
- @pulumi.getter(name="creationDate")
129
- def creation_date(self) -> Optional[_builtins.str]:
130
- """
131
- Date of the volume creation.
132
- """
133
- return pulumi.get(self, "creation_date")
134
-
135
- @_builtins.property
136
- @pulumi.getter(name="exportUri")
137
- def export_uri(self) -> Optional[_builtins.str]:
138
- """
139
- The export URI of the volume.
140
- """
141
- return pulumi.get(self, "export_uri")
142
93
 
143
94
  @_builtins.property
144
95
  @pulumi.getter
@@ -148,14 +99,6 @@ class ImageAdditionalVolume(dict):
148
99
  """
149
100
  return pulumi.get(self, "id")
150
101
 
151
- @_builtins.property
152
- @pulumi.getter(name="modificationDate")
153
- def modification_date(self) -> Optional[_builtins.str]:
154
- """
155
- Date of volume latest update.
156
- """
157
- return pulumi.get(self, "modification_date")
158
-
159
102
  @_builtins.property
160
103
  @pulumi.getter
161
104
  def name(self) -> Optional[_builtins.str]:
@@ -166,67 +109,107 @@ class ImageAdditionalVolume(dict):
166
109
 
167
110
  @_builtins.property
168
111
  @pulumi.getter
169
- def organization(self) -> Optional[_builtins.str]:
112
+ def server(self) -> Optional[Mapping[str, _builtins.str]]:
170
113
  """
171
- The organization ID the volume is associated with.
114
+ Description of the server containing the volume (in case the image is a backup from a server).
172
115
  """
173
- return pulumi.get(self, "organization")
116
+ return pulumi.get(self, "server")
174
117
 
175
118
  @_builtins.property
176
119
  @pulumi.getter
177
- def project(self) -> Optional[_builtins.str]:
120
+ def size(self) -> Optional[_builtins.int]:
178
121
  """
179
- ID of the project the volume is associated with
122
+ The size of the volume.
180
123
  """
181
- return pulumi.get(self, "project")
124
+ return pulumi.get(self, "size")
182
125
 
183
126
  @_builtins.property
184
127
  @pulumi.getter
185
- def server(self) -> Optional[Mapping[str, _builtins.str]]:
128
+ def tags(self) -> Optional[Sequence[_builtins.str]]:
186
129
  """
187
- Description of the server containing the volume (in case the image is a backup from a server).
130
+ A list of tags to apply to the image.
188
131
  """
189
- return pulumi.get(self, "server")
132
+ return pulumi.get(self, "tags")
190
133
 
191
134
  @_builtins.property
192
- @pulumi.getter
193
- def size(self) -> Optional[_builtins.int]:
135
+ @pulumi.getter(name="volumeType")
136
+ def volume_type(self) -> Optional[_builtins.str]:
194
137
  """
195
- The size of the volume.
138
+ The type of volume, possible values are `l_ssd` and `sbs_snapshot`.
196
139
  """
197
- return pulumi.get(self, "size")
140
+ return pulumi.get(self, "volume_type")
141
+
142
+
143
+ @pulumi.output_type
144
+ class ImageRootVolume(dict):
145
+ @staticmethod
146
+ def __key_warning(key: str):
147
+ suggest = None
148
+ if key == "volumeType":
149
+ suggest = "volume_type"
150
+
151
+ if suggest:
152
+ pulumi.log.warn(f"Key '{key}' not found in ImageRootVolume. Access the value via the '{suggest}' property getter instead.")
153
+
154
+ def __getitem__(self, key: str) -> Any:
155
+ ImageRootVolume.__key_warning(key)
156
+ return super().__getitem__(key)
157
+
158
+ def get(self, key: str, default = None) -> Any:
159
+ ImageRootVolume.__key_warning(key)
160
+ return super().get(key, default)
161
+
162
+ def __init__(__self__, *,
163
+ id: Optional[_builtins.str] = None,
164
+ name: Optional[_builtins.str] = None,
165
+ size: Optional[_builtins.int] = None,
166
+ volume_type: Optional[_builtins.str] = None):
167
+ """
168
+ :param _builtins.str id: ID of the server containing the volume.
169
+ :param _builtins.str name: The name of the image. If not provided it will be randomly generated.
170
+ :param _builtins.int size: The size of the volume.
171
+ :param _builtins.str volume_type: The type of volume, possible values are `l_ssd` and `sbs_snapshot`.
172
+ """
173
+ if id is not None:
174
+ pulumi.set(__self__, "id", id)
175
+ if name is not None:
176
+ pulumi.set(__self__, "name", name)
177
+ if size is not None:
178
+ pulumi.set(__self__, "size", size)
179
+ if volume_type is not None:
180
+ pulumi.set(__self__, "volume_type", volume_type)
198
181
 
199
182
  @_builtins.property
200
183
  @pulumi.getter
201
- def state(self) -> Optional[_builtins.str]:
184
+ def id(self) -> Optional[_builtins.str]:
202
185
  """
203
- State of the volume.
186
+ ID of the server containing the volume.
204
187
  """
205
- return pulumi.get(self, "state")
188
+ return pulumi.get(self, "id")
206
189
 
207
190
  @_builtins.property
208
191
  @pulumi.getter
209
- def tags(self) -> Optional[Sequence[_builtins.str]]:
192
+ def name(self) -> Optional[_builtins.str]:
210
193
  """
211
- A list of tags to apply to the image.
194
+ The name of the image. If not provided it will be randomly generated.
212
195
  """
213
- return pulumi.get(self, "tags")
196
+ return pulumi.get(self, "name")
214
197
 
215
198
  @_builtins.property
216
- @pulumi.getter(name="volumeType")
217
- def volume_type(self) -> Optional[_builtins.str]:
199
+ @pulumi.getter
200
+ def size(self) -> Optional[_builtins.int]:
218
201
  """
219
- The type of volume, possible values are `l_ssd` and `b_ssd`.
202
+ The size of the volume.
220
203
  """
221
- return pulumi.get(self, "volume_type")
204
+ return pulumi.get(self, "size")
222
205
 
223
206
  @_builtins.property
224
- @pulumi.getter
225
- def zone(self) -> Optional[_builtins.str]:
207
+ @pulumi.getter(name="volumeType")
208
+ def volume_type(self) -> Optional[_builtins.str]:
226
209
  """
227
- The zone in which the image should be created.
210
+ The type of volume, possible values are `l_ssd` and `sbs_snapshot`.
228
211
  """
229
- return pulumi.get(self, "zone")
212
+ return pulumi.get(self, "volume_type")
230
213
 
231
214
 
232
215
  @pulumi.output_type
@@ -22,7 +22,7 @@ __all__ = ['InstanceImageArgs', 'InstanceImage']
22
22
  class InstanceImageArgs:
23
23
  def __init__(__self__, *,
24
24
  root_volume_id: pulumi.Input[_builtins.str],
25
- additional_volume_ids: Optional[pulumi.Input[_builtins.str]] = None,
25
+ additional_volume_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
26
26
  architecture: Optional[pulumi.Input[_builtins.str]] = None,
27
27
  name: Optional[pulumi.Input[_builtins.str]] = None,
28
28
  project_id: Optional[pulumi.Input[_builtins.str]] = None,
@@ -32,9 +32,7 @@ class InstanceImageArgs:
32
32
  """
33
33
  The set of arguments for constructing a InstanceImage resource.
34
34
  :param pulumi.Input[_builtins.str] root_volume_id: The ID of the snapshot of the volume to be used as root in the image.
35
- :param pulumi.Input[_builtins.str] additional_volume_ids: List of IDs of the snapshots of the additional volumes to be attached to the image.
36
-
37
- > **Important:** For now it is only possible to have 1 additional_volume.
35
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] additional_volume_ids: List of IDs of the snapshots of the additional volumes to be attached to the image.
38
36
  :param pulumi.Input[_builtins.str] architecture: The architecture the image is compatible with. Possible values are: `x86_64` or `arm`.
39
37
  :param pulumi.Input[_builtins.str] name: The name of the image. If not provided it will be randomly generated.
40
38
  :param pulumi.Input[_builtins.str] project_id: The ID of the project the image is associated with.
@@ -72,16 +70,14 @@ class InstanceImageArgs:
72
70
 
73
71
  @_builtins.property
74
72
  @pulumi.getter(name="additionalVolumeIds")
75
- def additional_volume_ids(self) -> Optional[pulumi.Input[_builtins.str]]:
73
+ def additional_volume_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
76
74
  """
77
75
  List of IDs of the snapshots of the additional volumes to be attached to the image.
78
-
79
- > **Important:** For now it is only possible to have 1 additional_volume.
80
76
  """
81
77
  return pulumi.get(self, "additional_volume_ids")
82
78
 
83
79
  @additional_volume_ids.setter
84
- def additional_volume_ids(self, value: Optional[pulumi.Input[_builtins.str]]):
80
+ def additional_volume_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
85
81
  pulumi.set(self, "additional_volume_ids", value)
86
82
 
87
83
  @_builtins.property
@@ -160,7 +156,7 @@ class InstanceImageArgs:
160
156
  @pulumi.input_type
161
157
  class _InstanceImageState:
162
158
  def __init__(__self__, *,
163
- additional_volume_ids: Optional[pulumi.Input[_builtins.str]] = None,
159
+ additional_volume_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
164
160
  additional_volumes: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceImageAdditionalVolumeArgs']]]] = None,
165
161
  architecture: Optional[pulumi.Input[_builtins.str]] = None,
166
162
  creation_date: Optional[pulumi.Input[_builtins.str]] = None,
@@ -171,25 +167,25 @@ class _InstanceImageState:
171
167
  project_id: Optional[pulumi.Input[_builtins.str]] = None,
172
168
  public: Optional[pulumi.Input[_builtins.bool]] = None,
173
169
  root_volume_id: Optional[pulumi.Input[_builtins.str]] = None,
170
+ root_volumes: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceImageRootVolumeArgs']]]] = None,
174
171
  state: Optional[pulumi.Input[_builtins.str]] = None,
175
172
  tags: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
176
173
  zone: Optional[pulumi.Input[_builtins.str]] = None):
177
174
  """
178
175
  Input properties used for looking up and filtering InstanceImage resources.
179
- :param pulumi.Input[_builtins.str] additional_volume_ids: List of IDs of the snapshots of the additional volumes to be attached to the image.
180
-
181
- > **Important:** For now it is only possible to have 1 additional_volume.
176
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] additional_volume_ids: List of IDs of the snapshots of the additional volumes to be attached to the image.
182
177
  :param pulumi.Input[Sequence[pulumi.Input['InstanceImageAdditionalVolumeArgs']]] additional_volumes: The description of the extra volumes attached to the image.
183
178
  :param pulumi.Input[_builtins.str] architecture: The architecture the image is compatible with. Possible values are: `x86_64` or `arm`.
184
- :param pulumi.Input[_builtins.str] creation_date: Date of the volume creation.
179
+ :param pulumi.Input[_builtins.str] creation_date: Date of the image creation.
185
180
  :param pulumi.Input[_builtins.str] from_server_id: ID of the server the image is based on (in case it is a backup).
186
- :param pulumi.Input[_builtins.str] modification_date: Date of volume latest update.
181
+ :param pulumi.Input[_builtins.str] modification_date: Date of image latest update.
187
182
  :param pulumi.Input[_builtins.str] name: The name of the image. If not provided it will be randomly generated.
188
183
  :param pulumi.Input[_builtins.str] organization_id: The organization ID the image is associated with.
189
184
  :param pulumi.Input[_builtins.str] project_id: The ID of the project the image is associated with.
190
185
  :param pulumi.Input[_builtins.bool] public: Set to `true` if the image is public.
191
186
  :param pulumi.Input[_builtins.str] root_volume_id: The ID of the snapshot of the volume to be used as root in the image.
192
- :param pulumi.Input[_builtins.str] state: State of the volume.
187
+ :param pulumi.Input[Sequence[pulumi.Input['InstanceImageRootVolumeArgs']]] root_volumes: The description of the root volume attached to the image.
188
+ :param pulumi.Input[_builtins.str] state: State of the image. Possible values are: `available`, `creating` or `error`.
193
189
  :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] tags: A list of tags to apply to the image.
194
190
  :param pulumi.Input[_builtins.str] zone: The zone in which the image should be created.
195
191
  """
@@ -215,6 +211,8 @@ class _InstanceImageState:
215
211
  pulumi.set(__self__, "public", public)
216
212
  if root_volume_id is not None:
217
213
  pulumi.set(__self__, "root_volume_id", root_volume_id)
214
+ if root_volumes is not None:
215
+ pulumi.set(__self__, "root_volumes", root_volumes)
218
216
  if state is not None:
219
217
  pulumi.set(__self__, "state", state)
220
218
  if tags is not None:
@@ -224,16 +222,14 @@ class _InstanceImageState:
224
222
 
225
223
  @_builtins.property
226
224
  @pulumi.getter(name="additionalVolumeIds")
227
- def additional_volume_ids(self) -> Optional[pulumi.Input[_builtins.str]]:
225
+ def additional_volume_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
228
226
  """
229
227
  List of IDs of the snapshots of the additional volumes to be attached to the image.
230
-
231
- > **Important:** For now it is only possible to have 1 additional_volume.
232
228
  """
233
229
  return pulumi.get(self, "additional_volume_ids")
234
230
 
235
231
  @additional_volume_ids.setter
236
- def additional_volume_ids(self, value: Optional[pulumi.Input[_builtins.str]]):
232
+ def additional_volume_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
237
233
  pulumi.set(self, "additional_volume_ids", value)
238
234
 
239
235
  @_builtins.property
@@ -264,7 +260,7 @@ class _InstanceImageState:
264
260
  @pulumi.getter(name="creationDate")
265
261
  def creation_date(self) -> Optional[pulumi.Input[_builtins.str]]:
266
262
  """
267
- Date of the volume creation.
263
+ Date of the image creation.
268
264
  """
269
265
  return pulumi.get(self, "creation_date")
270
266
 
@@ -288,7 +284,7 @@ class _InstanceImageState:
288
284
  @pulumi.getter(name="modificationDate")
289
285
  def modification_date(self) -> Optional[pulumi.Input[_builtins.str]]:
290
286
  """
291
- Date of volume latest update.
287
+ Date of image latest update.
292
288
  """
293
289
  return pulumi.get(self, "modification_date")
294
290
 
@@ -356,11 +352,23 @@ class _InstanceImageState:
356
352
  def root_volume_id(self, value: Optional[pulumi.Input[_builtins.str]]):
357
353
  pulumi.set(self, "root_volume_id", value)
358
354
 
355
+ @_builtins.property
356
+ @pulumi.getter(name="rootVolumes")
357
+ def root_volumes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['InstanceImageRootVolumeArgs']]]]:
358
+ """
359
+ The description of the root volume attached to the image.
360
+ """
361
+ return pulumi.get(self, "root_volumes")
362
+
363
+ @root_volumes.setter
364
+ def root_volumes(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceImageRootVolumeArgs']]]]):
365
+ pulumi.set(self, "root_volumes", value)
366
+
359
367
  @_builtins.property
360
368
  @pulumi.getter
361
369
  def state(self) -> Optional[pulumi.Input[_builtins.str]]:
362
370
  """
363
- State of the volume.
371
+ State of the image. Possible values are: `available`, `creating` or `error`.
364
372
  """
365
373
  return pulumi.get(self, "state")
366
374
 
@@ -404,7 +412,7 @@ class InstanceImage(pulumi.CustomResource):
404
412
  def __init__(__self__,
405
413
  resource_name: str,
406
414
  opts: Optional[pulumi.ResourceOptions] = None,
407
- additional_volume_ids: Optional[pulumi.Input[_builtins.str]] = None,
415
+ additional_volume_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
408
416
  architecture: Optional[pulumi.Input[_builtins.str]] = None,
409
417
  name: Optional[pulumi.Input[_builtins.str]] = None,
410
418
  project_id: Optional[pulumi.Input[_builtins.str]] = None,
@@ -449,6 +457,26 @@ class InstanceImage(pulumi.CustomResource):
449
457
  root_volume_id=server_snapshot.id)
450
458
  ```
451
459
 
460
+ ### With additional volumes
461
+
462
+ ```python
463
+ import pulumi
464
+ import pulumiverse_scaleway as scaleway
465
+
466
+ server = scaleway.instance.Server("server",
467
+ image="ubuntu_jammy",
468
+ type="DEV1-S")
469
+ volume = scaleway.instance.Volume("volume",
470
+ type="b_ssd",
471
+ size_in_gb=20)
472
+ volume_snapshot = scaleway.instance.Snapshot("volume_snapshot", volume_id=volume.id)
473
+ server_snapshot = scaleway.instance.Snapshot("server_snapshot", volume_id=main["rootVolume"][0]["volumeId"])
474
+ image = scaleway.instance.Image("image",
475
+ name="image_with_extra_volumes",
476
+ root_volume_id=server_snapshot.id,
477
+ additional_volume_ids=[volume_snapshot.id])
478
+ ```
479
+
452
480
  ## Import
453
481
 
454
482
  Images can be imported using the `{zone}/{id}`, e.g.
@@ -461,9 +489,7 @@ class InstanceImage(pulumi.CustomResource):
461
489
 
462
490
  :param str resource_name: The name of the resource.
463
491
  :param pulumi.ResourceOptions opts: Options for the resource.
464
- :param pulumi.Input[_builtins.str] additional_volume_ids: List of IDs of the snapshots of the additional volumes to be attached to the image.
465
-
466
- > **Important:** For now it is only possible to have 1 additional_volume.
492
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] additional_volume_ids: List of IDs of the snapshots of the additional volumes to be attached to the image.
467
493
  :param pulumi.Input[_builtins.str] architecture: The architecture the image is compatible with. Possible values are: `x86_64` or `arm`.
468
494
  :param pulumi.Input[_builtins.str] name: The name of the image. If not provided it will be randomly generated.
469
495
  :param pulumi.Input[_builtins.str] project_id: The ID of the project the image is associated with.
@@ -514,6 +540,26 @@ class InstanceImage(pulumi.CustomResource):
514
540
  root_volume_id=server_snapshot.id)
515
541
  ```
516
542
 
543
+ ### With additional volumes
544
+
545
+ ```python
546
+ import pulumi
547
+ import pulumiverse_scaleway as scaleway
548
+
549
+ server = scaleway.instance.Server("server",
550
+ image="ubuntu_jammy",
551
+ type="DEV1-S")
552
+ volume = scaleway.instance.Volume("volume",
553
+ type="b_ssd",
554
+ size_in_gb=20)
555
+ volume_snapshot = scaleway.instance.Snapshot("volume_snapshot", volume_id=volume.id)
556
+ server_snapshot = scaleway.instance.Snapshot("server_snapshot", volume_id=main["rootVolume"][0]["volumeId"])
557
+ image = scaleway.instance.Image("image",
558
+ name="image_with_extra_volumes",
559
+ root_volume_id=server_snapshot.id,
560
+ additional_volume_ids=[volume_snapshot.id])
561
+ ```
562
+
517
563
  ## Import
518
564
 
519
565
  Images can be imported using the `{zone}/{id}`, e.g.
@@ -539,7 +585,7 @@ class InstanceImage(pulumi.CustomResource):
539
585
  def _internal_init(__self__,
540
586
  resource_name: str,
541
587
  opts: Optional[pulumi.ResourceOptions] = None,
542
- additional_volume_ids: Optional[pulumi.Input[_builtins.str]] = None,
588
+ additional_volume_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
543
589
  architecture: Optional[pulumi.Input[_builtins.str]] = None,
544
590
  name: Optional[pulumi.Input[_builtins.str]] = None,
545
591
  project_id: Optional[pulumi.Input[_builtins.str]] = None,
@@ -572,6 +618,7 @@ class InstanceImage(pulumi.CustomResource):
572
618
  __props__.__dict__["from_server_id"] = None
573
619
  __props__.__dict__["modification_date"] = None
574
620
  __props__.__dict__["organization_id"] = None
621
+ __props__.__dict__["root_volumes"] = None
575
622
  __props__.__dict__["state"] = None
576
623
  super(InstanceImage, __self__).__init__(
577
624
  'scaleway:index/instanceImage:InstanceImage',
@@ -583,7 +630,7 @@ class InstanceImage(pulumi.CustomResource):
583
630
  def get(resource_name: str,
584
631
  id: pulumi.Input[str],
585
632
  opts: Optional[pulumi.ResourceOptions] = None,
586
- additional_volume_ids: Optional[pulumi.Input[_builtins.str]] = None,
633
+ additional_volume_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
587
634
  additional_volumes: Optional[pulumi.Input[Sequence[pulumi.Input[Union['InstanceImageAdditionalVolumeArgs', 'InstanceImageAdditionalVolumeArgsDict']]]]] = None,
588
635
  architecture: Optional[pulumi.Input[_builtins.str]] = None,
589
636
  creation_date: Optional[pulumi.Input[_builtins.str]] = None,
@@ -594,6 +641,7 @@ class InstanceImage(pulumi.CustomResource):
594
641
  project_id: Optional[pulumi.Input[_builtins.str]] = None,
595
642
  public: Optional[pulumi.Input[_builtins.bool]] = None,
596
643
  root_volume_id: Optional[pulumi.Input[_builtins.str]] = None,
644
+ root_volumes: Optional[pulumi.Input[Sequence[pulumi.Input[Union['InstanceImageRootVolumeArgs', 'InstanceImageRootVolumeArgsDict']]]]] = None,
597
645
  state: Optional[pulumi.Input[_builtins.str]] = None,
598
646
  tags: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
599
647
  zone: Optional[pulumi.Input[_builtins.str]] = None) -> 'InstanceImage':
@@ -604,20 +652,19 @@ class InstanceImage(pulumi.CustomResource):
604
652
  :param str resource_name: The unique name of the resulting resource.
605
653
  :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
606
654
  :param pulumi.ResourceOptions opts: Options for the resource.
607
- :param pulumi.Input[_builtins.str] additional_volume_ids: List of IDs of the snapshots of the additional volumes to be attached to the image.
608
-
609
- > **Important:** For now it is only possible to have 1 additional_volume.
655
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] additional_volume_ids: List of IDs of the snapshots of the additional volumes to be attached to the image.
610
656
  :param pulumi.Input[Sequence[pulumi.Input[Union['InstanceImageAdditionalVolumeArgs', 'InstanceImageAdditionalVolumeArgsDict']]]] additional_volumes: The description of the extra volumes attached to the image.
611
657
  :param pulumi.Input[_builtins.str] architecture: The architecture the image is compatible with. Possible values are: `x86_64` or `arm`.
612
- :param pulumi.Input[_builtins.str] creation_date: Date of the volume creation.
658
+ :param pulumi.Input[_builtins.str] creation_date: Date of the image creation.
613
659
  :param pulumi.Input[_builtins.str] from_server_id: ID of the server the image is based on (in case it is a backup).
614
- :param pulumi.Input[_builtins.str] modification_date: Date of volume latest update.
660
+ :param pulumi.Input[_builtins.str] modification_date: Date of image latest update.
615
661
  :param pulumi.Input[_builtins.str] name: The name of the image. If not provided it will be randomly generated.
616
662
  :param pulumi.Input[_builtins.str] organization_id: The organization ID the image is associated with.
617
663
  :param pulumi.Input[_builtins.str] project_id: The ID of the project the image is associated with.
618
664
  :param pulumi.Input[_builtins.bool] public: Set to `true` if the image is public.
619
665
  :param pulumi.Input[_builtins.str] root_volume_id: The ID of the snapshot of the volume to be used as root in the image.
620
- :param pulumi.Input[_builtins.str] state: State of the volume.
666
+ :param pulumi.Input[Sequence[pulumi.Input[Union['InstanceImageRootVolumeArgs', 'InstanceImageRootVolumeArgsDict']]]] root_volumes: The description of the root volume attached to the image.
667
+ :param pulumi.Input[_builtins.str] state: State of the image. Possible values are: `available`, `creating` or `error`.
621
668
  :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] tags: A list of tags to apply to the image.
622
669
  :param pulumi.Input[_builtins.str] zone: The zone in which the image should be created.
623
670
  """
@@ -636,6 +683,7 @@ class InstanceImage(pulumi.CustomResource):
636
683
  __props__.__dict__["project_id"] = project_id
637
684
  __props__.__dict__["public"] = public
638
685
  __props__.__dict__["root_volume_id"] = root_volume_id
686
+ __props__.__dict__["root_volumes"] = root_volumes
639
687
  __props__.__dict__["state"] = state
640
688
  __props__.__dict__["tags"] = tags
641
689
  __props__.__dict__["zone"] = zone
@@ -643,11 +691,9 @@ class InstanceImage(pulumi.CustomResource):
643
691
 
644
692
  @_builtins.property
645
693
  @pulumi.getter(name="additionalVolumeIds")
646
- def additional_volume_ids(self) -> pulumi.Output[Optional[_builtins.str]]:
694
+ def additional_volume_ids(self) -> pulumi.Output[Optional[Sequence[_builtins.str]]]:
647
695
  """
648
696
  List of IDs of the snapshots of the additional volumes to be attached to the image.
649
-
650
- > **Important:** For now it is only possible to have 1 additional_volume.
651
697
  """
652
698
  return pulumi.get(self, "additional_volume_ids")
653
699
 
@@ -671,7 +717,7 @@ class InstanceImage(pulumi.CustomResource):
671
717
  @pulumi.getter(name="creationDate")
672
718
  def creation_date(self) -> pulumi.Output[_builtins.str]:
673
719
  """
674
- Date of the volume creation.
720
+ Date of the image creation.
675
721
  """
676
722
  return pulumi.get(self, "creation_date")
677
723
 
@@ -687,7 +733,7 @@ class InstanceImage(pulumi.CustomResource):
687
733
  @pulumi.getter(name="modificationDate")
688
734
  def modification_date(self) -> pulumi.Output[_builtins.str]:
689
735
  """
690
- Date of volume latest update.
736
+ Date of image latest update.
691
737
  """
692
738
  return pulumi.get(self, "modification_date")
693
739
 
@@ -731,11 +777,19 @@ class InstanceImage(pulumi.CustomResource):
731
777
  """
732
778
  return pulumi.get(self, "root_volume_id")
733
779
 
780
+ @_builtins.property
781
+ @pulumi.getter(name="rootVolumes")
782
+ def root_volumes(self) -> pulumi.Output[Sequence['outputs.InstanceImageRootVolume']]:
783
+ """
784
+ The description of the root volume attached to the image.
785
+ """
786
+ return pulumi.get(self, "root_volumes")
787
+
734
788
  @_builtins.property
735
789
  @pulumi.getter
736
790
  def state(self) -> pulumi.Output[_builtins.str]:
737
791
  """
738
- State of the volume.
792
+ State of the image. Possible values are: `available`, `creating` or `error`.
739
793
  """
740
794
  return pulumi.get(self, "state")
741
795