pulumiverse-scaleway 1.27.1__py3-none-any.whl → 1.28.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 (73) hide show
  1. pulumiverse_scaleway/__init__.py +16 -0
  2. pulumiverse_scaleway/_inputs.py +498 -6
  3. pulumiverse_scaleway/baremetal_server.py +48 -258
  4. pulumiverse_scaleway/database_instance.py +42 -21
  5. pulumiverse_scaleway/databases/_inputs.py +54 -0
  6. pulumiverse_scaleway/databases/get_instance.py +12 -1
  7. pulumiverse_scaleway/databases/instance.py +42 -21
  8. pulumiverse_scaleway/databases/outputs.py +62 -0
  9. pulumiverse_scaleway/databases/snapshot.py +2 -2
  10. pulumiverse_scaleway/elasticmetal/_inputs.py +74 -0
  11. pulumiverse_scaleway/elasticmetal/get_server.py +12 -1
  12. pulumiverse_scaleway/elasticmetal/outputs.py +87 -0
  13. pulumiverse_scaleway/elasticmetal/server.py +48 -258
  14. pulumiverse_scaleway/get_baremetal_server.py +12 -1
  15. pulumiverse_scaleway/get_cockpit_plan.py +2 -38
  16. pulumiverse_scaleway/get_database_instance.py +12 -1
  17. pulumiverse_scaleway/get_instance_private_nic.py +13 -1
  18. pulumiverse_scaleway/get_instance_server.py +12 -1
  19. pulumiverse_scaleway/get_lb_route.py +12 -1
  20. pulumiverse_scaleway/get_loadbalancer.py +12 -1
  21. pulumiverse_scaleway/get_redis_cluster.py +12 -1
  22. pulumiverse_scaleway/get_vpc_gateway_network.py +12 -1
  23. pulumiverse_scaleway/inference/__init__.py +2 -0
  24. pulumiverse_scaleway/inference/_inputs.py +128 -0
  25. pulumiverse_scaleway/inference/deployment.py +70 -55
  26. pulumiverse_scaleway/inference/get_model.py +299 -0
  27. pulumiverse_scaleway/inference/model.py +683 -0
  28. pulumiverse_scaleway/inference/outputs.py +184 -0
  29. pulumiverse_scaleway/inference_deployment.py +70 -55
  30. pulumiverse_scaleway/instance/_inputs.py +108 -0
  31. pulumiverse_scaleway/instance/get_private_nic.py +13 -1
  32. pulumiverse_scaleway/instance/get_server.py +12 -1
  33. pulumiverse_scaleway/instance/outputs.py +124 -0
  34. pulumiverse_scaleway/instance/private_nic.py +30 -0
  35. pulumiverse_scaleway/instance/server.py +28 -0
  36. pulumiverse_scaleway/instance_private_nic.py +30 -0
  37. pulumiverse_scaleway/instance_server.py +28 -0
  38. pulumiverse_scaleway/kubernetes/__init__.py +1 -0
  39. pulumiverse_scaleway/kubernetes/_inputs.py +203 -0
  40. pulumiverse_scaleway/kubernetes/acl.py +446 -0
  41. pulumiverse_scaleway/kubernetes/outputs.py +195 -1
  42. pulumiverse_scaleway/loadbalancer.py +28 -0
  43. pulumiverse_scaleway/loadbalancer_route.py +138 -14
  44. pulumiverse_scaleway/loadbalancers/_inputs.py +54 -0
  45. pulumiverse_scaleway/loadbalancers/get_load_balancer.py +12 -1
  46. pulumiverse_scaleway/loadbalancers/get_route.py +12 -1
  47. pulumiverse_scaleway/loadbalancers/load_balancer.py +28 -0
  48. pulumiverse_scaleway/loadbalancers/outputs.py +62 -0
  49. pulumiverse_scaleway/loadbalancers/route.py +138 -14
  50. pulumiverse_scaleway/mnq/sns_credentials.py +7 -7
  51. pulumiverse_scaleway/mnq/sqs_credentials.py +7 -7
  52. pulumiverse_scaleway/mnq_sns_credentials.py +7 -7
  53. pulumiverse_scaleway/mnq_sqs_credentials.py +7 -7
  54. pulumiverse_scaleway/network/_inputs.py +54 -0
  55. pulumiverse_scaleway/network/gateway_network.py +28 -0
  56. pulumiverse_scaleway/network/get_gateway_network.py +12 -1
  57. pulumiverse_scaleway/network/outputs.py +62 -0
  58. pulumiverse_scaleway/network/route.py +90 -2
  59. pulumiverse_scaleway/observability/get_plan.py +2 -38
  60. pulumiverse_scaleway/outputs.py +574 -5
  61. pulumiverse_scaleway/pulumi-plugin.json +1 -1
  62. pulumiverse_scaleway/rdb_snapshot.py +2 -2
  63. pulumiverse_scaleway/redis/_inputs.py +60 -6
  64. pulumiverse_scaleway/redis/cluster.py +28 -0
  65. pulumiverse_scaleway/redis/get_cluster.py +12 -1
  66. pulumiverse_scaleway/redis/outputs.py +66 -4
  67. pulumiverse_scaleway/redis_cluster.py +28 -0
  68. pulumiverse_scaleway/vpc_gateway_network.py +28 -0
  69. pulumiverse_scaleway/vpc_route.py +90 -2
  70. {pulumiverse_scaleway-1.27.1.dist-info → pulumiverse_scaleway-1.28.0.dist-info}/METADATA +1 -1
  71. {pulumiverse_scaleway-1.27.1.dist-info → pulumiverse_scaleway-1.28.0.dist-info}/RECORD +73 -70
  72. {pulumiverse_scaleway-1.27.1.dist-info → pulumiverse_scaleway-1.28.0.dist-info}/WHEEL +1 -1
  73. {pulumiverse_scaleway-1.27.1.dist-info → pulumiverse_scaleway-1.28.0.dist-info}/top_level.txt +0 -0
@@ -13,10 +13,15 @@ if sys.version_info >= (3, 11):
13
13
  else:
14
14
  from typing_extensions import NotRequired, TypedDict, TypeAlias
15
15
  from .. import _utilities
16
+ from . import outputs
16
17
 
17
18
  __all__ = [
18
19
  'DeploymentPrivateEndpoint',
19
20
  'DeploymentPublicEndpoint',
21
+ 'ModelNodesSupport',
22
+ 'ModelNodesSupportQuantization',
23
+ 'GetModelNodesSupportResult',
24
+ 'GetModelNodesSupportQuantizationResult',
20
25
  ]
21
26
 
22
27
  @pulumi.output_type
@@ -167,3 +172,182 @@ class DeploymentPublicEndpoint(dict):
167
172
  return pulumi.get(self, "url")
168
173
 
169
174
 
175
+ @pulumi.output_type
176
+ class ModelNodesSupport(dict):
177
+ @staticmethod
178
+ def __key_warning(key: str):
179
+ suggest = None
180
+ if key == "nodeTypeName":
181
+ suggest = "node_type_name"
182
+
183
+ if suggest:
184
+ pulumi.log.warn(f"Key '{key}' not found in ModelNodesSupport. Access the value via the '{suggest}' property getter instead.")
185
+
186
+ def __getitem__(self, key: str) -> Any:
187
+ ModelNodesSupport.__key_warning(key)
188
+ return super().__getitem__(key)
189
+
190
+ def get(self, key: str, default = None) -> Any:
191
+ ModelNodesSupport.__key_warning(key)
192
+ return super().get(key, default)
193
+
194
+ def __init__(__self__, *,
195
+ node_type_name: Optional[str] = None,
196
+ quantizations: Optional[Sequence['outputs.ModelNodesSupportQuantization']] = None):
197
+ """
198
+ :param str node_type_name: The type of node supported.
199
+ :param Sequence['ModelNodesSupportQuantizationArgs'] quantizations: A list of supported quantization options, including:
200
+ """
201
+ if node_type_name is not None:
202
+ pulumi.set(__self__, "node_type_name", node_type_name)
203
+ if quantizations is not None:
204
+ pulumi.set(__self__, "quantizations", quantizations)
205
+
206
+ @property
207
+ @pulumi.getter(name="nodeTypeName")
208
+ def node_type_name(self) -> Optional[str]:
209
+ """
210
+ The type of node supported.
211
+ """
212
+ return pulumi.get(self, "node_type_name")
213
+
214
+ @property
215
+ @pulumi.getter
216
+ def quantizations(self) -> Optional[Sequence['outputs.ModelNodesSupportQuantization']]:
217
+ """
218
+ A list of supported quantization options, including:
219
+ """
220
+ return pulumi.get(self, "quantizations")
221
+
222
+
223
+ @pulumi.output_type
224
+ class ModelNodesSupportQuantization(dict):
225
+ @staticmethod
226
+ def __key_warning(key: str):
227
+ suggest = None
228
+ if key == "maxContextSize":
229
+ suggest = "max_context_size"
230
+ elif key == "quantizationBits":
231
+ suggest = "quantization_bits"
232
+
233
+ if suggest:
234
+ pulumi.log.warn(f"Key '{key}' not found in ModelNodesSupportQuantization. Access the value via the '{suggest}' property getter instead.")
235
+
236
+ def __getitem__(self, key: str) -> Any:
237
+ ModelNodesSupportQuantization.__key_warning(key)
238
+ return super().__getitem__(key)
239
+
240
+ def get(self, key: str, default = None) -> Any:
241
+ ModelNodesSupportQuantization.__key_warning(key)
242
+ return super().get(key, default)
243
+
244
+ def __init__(__self__, *,
245
+ allowed: Optional[bool] = None,
246
+ max_context_size: Optional[int] = None,
247
+ quantization_bits: Optional[int] = None):
248
+ """
249
+ :param bool allowed: Whether this quantization is allowed.
250
+ :param int max_context_size: Maximum context length supported by this quantization.
251
+ :param int quantization_bits: Number of bits used for quantization (e.g., 8, 16).
252
+ """
253
+ if allowed is not None:
254
+ pulumi.set(__self__, "allowed", allowed)
255
+ if max_context_size is not None:
256
+ pulumi.set(__self__, "max_context_size", max_context_size)
257
+ if quantization_bits is not None:
258
+ pulumi.set(__self__, "quantization_bits", quantization_bits)
259
+
260
+ @property
261
+ @pulumi.getter
262
+ def allowed(self) -> Optional[bool]:
263
+ """
264
+ Whether this quantization is allowed.
265
+ """
266
+ return pulumi.get(self, "allowed")
267
+
268
+ @property
269
+ @pulumi.getter(name="maxContextSize")
270
+ def max_context_size(self) -> Optional[int]:
271
+ """
272
+ Maximum context length supported by this quantization.
273
+ """
274
+ return pulumi.get(self, "max_context_size")
275
+
276
+ @property
277
+ @pulumi.getter(name="quantizationBits")
278
+ def quantization_bits(self) -> Optional[int]:
279
+ """
280
+ Number of bits used for quantization (e.g., 8, 16).
281
+ """
282
+ return pulumi.get(self, "quantization_bits")
283
+
284
+
285
+ @pulumi.output_type
286
+ class GetModelNodesSupportResult(dict):
287
+ def __init__(__self__, *,
288
+ node_type_name: str,
289
+ quantizations: Sequence['outputs.GetModelNodesSupportQuantizationResult']):
290
+ """
291
+ :param str node_type_name: The type of node supported.
292
+ :param Sequence['GetModelNodesSupportQuantizationArgs'] quantizations: A list of supported quantization options, including:
293
+ """
294
+ pulumi.set(__self__, "node_type_name", node_type_name)
295
+ pulumi.set(__self__, "quantizations", quantizations)
296
+
297
+ @property
298
+ @pulumi.getter(name="nodeTypeName")
299
+ def node_type_name(self) -> str:
300
+ """
301
+ The type of node supported.
302
+ """
303
+ return pulumi.get(self, "node_type_name")
304
+
305
+ @property
306
+ @pulumi.getter
307
+ def quantizations(self) -> Sequence['outputs.GetModelNodesSupportQuantizationResult']:
308
+ """
309
+ A list of supported quantization options, including:
310
+ """
311
+ return pulumi.get(self, "quantizations")
312
+
313
+
314
+ @pulumi.output_type
315
+ class GetModelNodesSupportQuantizationResult(dict):
316
+ def __init__(__self__, *,
317
+ allowed: bool,
318
+ max_context_size: int,
319
+ quantization_bits: int):
320
+ """
321
+ :param bool allowed: Whether this quantization is allowed.
322
+ :param int max_context_size: Maximum context length supported by this quantization.
323
+ :param int quantization_bits: Number of bits used for quantization (e.g., 8, 16).
324
+ """
325
+ pulumi.set(__self__, "allowed", allowed)
326
+ pulumi.set(__self__, "max_context_size", max_context_size)
327
+ pulumi.set(__self__, "quantization_bits", quantization_bits)
328
+
329
+ @property
330
+ @pulumi.getter
331
+ def allowed(self) -> bool:
332
+ """
333
+ Whether this quantization is allowed.
334
+ """
335
+ return pulumi.get(self, "allowed")
336
+
337
+ @property
338
+ @pulumi.getter(name="maxContextSize")
339
+ def max_context_size(self) -> int:
340
+ """
341
+ Maximum context length supported by this quantization.
342
+ """
343
+ return pulumi.get(self, "max_context_size")
344
+
345
+ @property
346
+ @pulumi.getter(name="quantizationBits")
347
+ def quantization_bits(self) -> int:
348
+ """
349
+ Number of bits used for quantization (e.g., 8, 16).
350
+ """
351
+ return pulumi.get(self, "quantization_bits")
352
+
353
+
@@ -21,7 +21,7 @@ __all__ = ['InferenceDeploymentArgs', 'InferenceDeployment']
21
21
  @pulumi.input_type
22
22
  class InferenceDeploymentArgs:
23
23
  def __init__(__self__, *,
24
- model_name: pulumi.Input[str],
24
+ model_id: pulumi.Input[str],
25
25
  node_type: pulumi.Input[str],
26
26
  accept_eula: Optional[pulumi.Input[bool]] = None,
27
27
  max_size: Optional[pulumi.Input[int]] = None,
@@ -30,11 +30,12 @@ class InferenceDeploymentArgs:
30
30
  private_endpoint: Optional[pulumi.Input['InferenceDeploymentPrivateEndpointArgs']] = None,
31
31
  project_id: Optional[pulumi.Input[str]] = None,
32
32
  public_endpoint: Optional[pulumi.Input['InferenceDeploymentPublicEndpointArgs']] = None,
33
+ quantization: Optional[pulumi.Input[int]] = None,
33
34
  region: Optional[pulumi.Input[str]] = None,
34
35
  tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
35
36
  """
36
37
  The set of arguments for constructing a InferenceDeployment resource.
37
- :param pulumi.Input[str] model_name: The model name to use for the deployment. Model names can be found in Console or using Scaleway's CLI (`scw inference model list`)
38
+ :param pulumi.Input[str] model_id: The model id used for the deployment.
38
39
  :param pulumi.Input[str] node_type: The node type to use for the deployment. Node types can be found using Scaleway's CLI (`scw inference node-type list`)
39
40
  :param pulumi.Input[bool] accept_eula: Some models (e.g Meta Llama) require end-user license agreements. Set `true` to accept.
40
41
  :param pulumi.Input[int] max_size: The maximum size of the pool.
@@ -43,10 +44,11 @@ class InferenceDeploymentArgs:
43
44
  :param pulumi.Input['InferenceDeploymentPrivateEndpointArgs'] private_endpoint: Configuration of the deployment's private endpoint.
44
45
  :param pulumi.Input[str] project_id: `project_id`) The ID of the project the deployment is associated with.
45
46
  :param pulumi.Input['InferenceDeploymentPublicEndpointArgs'] public_endpoint: Configuration of the deployment's public endpoint.
47
+ :param pulumi.Input[int] quantization: The number of bits each model parameter should be quantized to
46
48
  :param pulumi.Input[str] region: `region`) The region in which the deployment is created.
47
49
  :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: The tags associated with the deployment.
48
50
  """
49
- pulumi.set(__self__, "model_name", model_name)
51
+ pulumi.set(__self__, "model_id", model_id)
50
52
  pulumi.set(__self__, "node_type", node_type)
51
53
  if accept_eula is not None:
52
54
  pulumi.set(__self__, "accept_eula", accept_eula)
@@ -62,22 +64,24 @@ class InferenceDeploymentArgs:
62
64
  pulumi.set(__self__, "project_id", project_id)
63
65
  if public_endpoint is not None:
64
66
  pulumi.set(__self__, "public_endpoint", public_endpoint)
67
+ if quantization is not None:
68
+ pulumi.set(__self__, "quantization", quantization)
65
69
  if region is not None:
66
70
  pulumi.set(__self__, "region", region)
67
71
  if tags is not None:
68
72
  pulumi.set(__self__, "tags", tags)
69
73
 
70
74
  @property
71
- @pulumi.getter(name="modelName")
72
- def model_name(self) -> pulumi.Input[str]:
75
+ @pulumi.getter(name="modelId")
76
+ def model_id(self) -> pulumi.Input[str]:
73
77
  """
74
- The model name to use for the deployment. Model names can be found in Console or using Scaleway's CLI (`scw inference model list`)
78
+ The model id used for the deployment.
75
79
  """
76
- return pulumi.get(self, "model_name")
80
+ return pulumi.get(self, "model_id")
77
81
 
78
- @model_name.setter
79
- def model_name(self, value: pulumi.Input[str]):
80
- pulumi.set(self, "model_name", value)
82
+ @model_id.setter
83
+ def model_id(self, value: pulumi.Input[str]):
84
+ pulumi.set(self, "model_id", value)
81
85
 
82
86
  @property
83
87
  @pulumi.getter(name="nodeType")
@@ -175,6 +179,18 @@ class InferenceDeploymentArgs:
175
179
  def public_endpoint(self, value: Optional[pulumi.Input['InferenceDeploymentPublicEndpointArgs']]):
176
180
  pulumi.set(self, "public_endpoint", value)
177
181
 
182
+ @property
183
+ @pulumi.getter
184
+ def quantization(self) -> Optional[pulumi.Input[int]]:
185
+ """
186
+ The number of bits each model parameter should be quantized to
187
+ """
188
+ return pulumi.get(self, "quantization")
189
+
190
+ @quantization.setter
191
+ def quantization(self, value: Optional[pulumi.Input[int]]):
192
+ pulumi.set(self, "quantization", value)
193
+
178
194
  @property
179
195
  @pulumi.getter
180
196
  def region(self) -> Optional[pulumi.Input[str]]:
@@ -214,6 +230,7 @@ class _InferenceDeploymentState:
214
230
  private_endpoint: Optional[pulumi.Input['InferenceDeploymentPrivateEndpointArgs']] = None,
215
231
  project_id: Optional[pulumi.Input[str]] = None,
216
232
  public_endpoint: Optional[pulumi.Input['InferenceDeploymentPublicEndpointArgs']] = None,
233
+ quantization: Optional[pulumi.Input[int]] = None,
217
234
  region: Optional[pulumi.Input[str]] = None,
218
235
  size: Optional[pulumi.Input[int]] = None,
219
236
  status: Optional[pulumi.Input[str]] = None,
@@ -226,12 +243,13 @@ class _InferenceDeploymentState:
226
243
  :param pulumi.Input[int] max_size: The maximum size of the pool.
227
244
  :param pulumi.Input[int] min_size: The minimum size of the pool.
228
245
  :param pulumi.Input[str] model_id: The model id used for the deployment.
229
- :param pulumi.Input[str] model_name: The model name to use for the deployment. Model names can be found in Console or using Scaleway's CLI (`scw inference model list`)
246
+ :param pulumi.Input[str] model_name: The model name used for the deployment. Model names can be found in Console or using Scaleway's CLI (`scw inference model list`)
230
247
  :param pulumi.Input[str] name: The deployment name.
231
248
  :param pulumi.Input[str] node_type: The node type to use for the deployment. Node types can be found using Scaleway's CLI (`scw inference node-type list`)
232
249
  :param pulumi.Input['InferenceDeploymentPrivateEndpointArgs'] private_endpoint: Configuration of the deployment's private endpoint.
233
250
  :param pulumi.Input[str] project_id: `project_id`) The ID of the project the deployment is associated with.
234
251
  :param pulumi.Input['InferenceDeploymentPublicEndpointArgs'] public_endpoint: Configuration of the deployment's public endpoint.
252
+ :param pulumi.Input[int] quantization: The number of bits each model parameter should be quantized to
235
253
  :param pulumi.Input[str] region: `region`) The region in which the deployment is created.
236
254
  :param pulumi.Input[int] size: The size of the pool.
237
255
  :param pulumi.Input[str] status: The status of the deployment.
@@ -260,6 +278,8 @@ class _InferenceDeploymentState:
260
278
  pulumi.set(__self__, "project_id", project_id)
261
279
  if public_endpoint is not None:
262
280
  pulumi.set(__self__, "public_endpoint", public_endpoint)
281
+ if quantization is not None:
282
+ pulumi.set(__self__, "quantization", quantization)
263
283
  if region is not None:
264
284
  pulumi.set(__self__, "region", region)
265
285
  if size is not None:
@@ -335,7 +355,7 @@ class _InferenceDeploymentState:
335
355
  @pulumi.getter(name="modelName")
336
356
  def model_name(self) -> Optional[pulumi.Input[str]]:
337
357
  """
338
- The model name to use for the deployment. Model names can be found in Console or using Scaleway's CLI (`scw inference model list`)
358
+ The model name used for the deployment. Model names can be found in Console or using Scaleway's CLI (`scw inference model list`)
339
359
  """
340
360
  return pulumi.get(self, "model_name")
341
361
 
@@ -403,6 +423,18 @@ class _InferenceDeploymentState:
403
423
  def public_endpoint(self, value: Optional[pulumi.Input['InferenceDeploymentPublicEndpointArgs']]):
404
424
  pulumi.set(self, "public_endpoint", value)
405
425
 
426
+ @property
427
+ @pulumi.getter
428
+ def quantization(self) -> Optional[pulumi.Input[int]]:
429
+ """
430
+ The number of bits each model parameter should be quantized to
431
+ """
432
+ return pulumi.get(self, "quantization")
433
+
434
+ @quantization.setter
435
+ def quantization(self, value: Optional[pulumi.Input[int]]):
436
+ pulumi.set(self, "quantization", value)
437
+
406
438
  @property
407
439
  @pulumi.getter
408
440
  def region(self) -> Optional[pulumi.Input[str]]:
@@ -477,12 +509,13 @@ class InferenceDeployment(pulumi.CustomResource):
477
509
  accept_eula: Optional[pulumi.Input[bool]] = None,
478
510
  max_size: Optional[pulumi.Input[int]] = None,
479
511
  min_size: Optional[pulumi.Input[int]] = None,
480
- model_name: Optional[pulumi.Input[str]] = None,
512
+ model_id: Optional[pulumi.Input[str]] = None,
481
513
  name: Optional[pulumi.Input[str]] = None,
482
514
  node_type: Optional[pulumi.Input[str]] = None,
483
515
  private_endpoint: Optional[pulumi.Input[Union['InferenceDeploymentPrivateEndpointArgs', 'InferenceDeploymentPrivateEndpointArgsDict']]] = None,
484
516
  project_id: Optional[pulumi.Input[str]] = None,
485
517
  public_endpoint: Optional[pulumi.Input[Union['InferenceDeploymentPublicEndpointArgs', 'InferenceDeploymentPublicEndpointArgsDict']]] = None,
518
+ quantization: Optional[pulumi.Input[int]] = None,
486
519
  region: Optional[pulumi.Input[str]] = None,
487
520
  tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
488
521
  __props__=None):
@@ -492,22 +525,6 @@ class InferenceDeployment(pulumi.CustomResource):
492
525
 
493
526
  ## Example Usage
494
527
 
495
- ### Basic
496
-
497
- ```python
498
- import pulumi
499
- import pulumiverse_scaleway as scaleway
500
-
501
- deployment = scaleway.inference.Deployment("deployment",
502
- name="tf-inference-deployment",
503
- node_type="L4",
504
- model_name="meta/llama-3.1-8b-instruct:fp8",
505
- public_endpoint={
506
- "is_enabled": True,
507
- },
508
- accept_eula=True)
509
- ```
510
-
511
528
  ## Import
512
529
 
513
530
  Functions can be imported using, `{region}/{id}`, as shown below:
@@ -523,12 +540,13 @@ class InferenceDeployment(pulumi.CustomResource):
523
540
  :param pulumi.Input[bool] accept_eula: Some models (e.g Meta Llama) require end-user license agreements. Set `true` to accept.
524
541
  :param pulumi.Input[int] max_size: The maximum size of the pool.
525
542
  :param pulumi.Input[int] min_size: The minimum size of the pool.
526
- :param pulumi.Input[str] model_name: The model name to use for the deployment. Model names can be found in Console or using Scaleway's CLI (`scw inference model list`)
543
+ :param pulumi.Input[str] model_id: The model id used for the deployment.
527
544
  :param pulumi.Input[str] name: The deployment name.
528
545
  :param pulumi.Input[str] node_type: The node type to use for the deployment. Node types can be found using Scaleway's CLI (`scw inference node-type list`)
529
546
  :param pulumi.Input[Union['InferenceDeploymentPrivateEndpointArgs', 'InferenceDeploymentPrivateEndpointArgsDict']] private_endpoint: Configuration of the deployment's private endpoint.
530
547
  :param pulumi.Input[str] project_id: `project_id`) The ID of the project the deployment is associated with.
531
548
  :param pulumi.Input[Union['InferenceDeploymentPublicEndpointArgs', 'InferenceDeploymentPublicEndpointArgsDict']] public_endpoint: Configuration of the deployment's public endpoint.
549
+ :param pulumi.Input[int] quantization: The number of bits each model parameter should be quantized to
532
550
  :param pulumi.Input[str] region: `region`) The region in which the deployment is created.
533
551
  :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: The tags associated with the deployment.
534
552
  """
@@ -544,22 +562,6 @@ class InferenceDeployment(pulumi.CustomResource):
544
562
 
545
563
  ## Example Usage
546
564
 
547
- ### Basic
548
-
549
- ```python
550
- import pulumi
551
- import pulumiverse_scaleway as scaleway
552
-
553
- deployment = scaleway.inference.Deployment("deployment",
554
- name="tf-inference-deployment",
555
- node_type="L4",
556
- model_name="meta/llama-3.1-8b-instruct:fp8",
557
- public_endpoint={
558
- "is_enabled": True,
559
- },
560
- accept_eula=True)
561
- ```
562
-
563
565
  ## Import
564
566
 
565
567
  Functions can be imported using, `{region}/{id}`, as shown below:
@@ -588,12 +590,13 @@ class InferenceDeployment(pulumi.CustomResource):
588
590
  accept_eula: Optional[pulumi.Input[bool]] = None,
589
591
  max_size: Optional[pulumi.Input[int]] = None,
590
592
  min_size: Optional[pulumi.Input[int]] = None,
591
- model_name: Optional[pulumi.Input[str]] = None,
593
+ model_id: Optional[pulumi.Input[str]] = None,
592
594
  name: Optional[pulumi.Input[str]] = None,
593
595
  node_type: Optional[pulumi.Input[str]] = None,
594
596
  private_endpoint: Optional[pulumi.Input[Union['InferenceDeploymentPrivateEndpointArgs', 'InferenceDeploymentPrivateEndpointArgsDict']]] = None,
595
597
  project_id: Optional[pulumi.Input[str]] = None,
596
598
  public_endpoint: Optional[pulumi.Input[Union['InferenceDeploymentPublicEndpointArgs', 'InferenceDeploymentPublicEndpointArgsDict']]] = None,
599
+ quantization: Optional[pulumi.Input[int]] = None,
597
600
  region: Optional[pulumi.Input[str]] = None,
598
601
  tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
599
602
  __props__=None):
@@ -609,9 +612,9 @@ class InferenceDeployment(pulumi.CustomResource):
609
612
  __props__.__dict__["accept_eula"] = accept_eula
610
613
  __props__.__dict__["max_size"] = max_size
611
614
  __props__.__dict__["min_size"] = min_size
612
- if model_name is None and not opts.urn:
613
- raise TypeError("Missing required property 'model_name'")
614
- __props__.__dict__["model_name"] = model_name
615
+ if model_id is None and not opts.urn:
616
+ raise TypeError("Missing required property 'model_id'")
617
+ __props__.__dict__["model_id"] = model_id
615
618
  __props__.__dict__["name"] = name
616
619
  if node_type is None and not opts.urn:
617
620
  raise TypeError("Missing required property 'node_type'")
@@ -619,10 +622,11 @@ class InferenceDeployment(pulumi.CustomResource):
619
622
  __props__.__dict__["private_endpoint"] = private_endpoint
620
623
  __props__.__dict__["project_id"] = project_id
621
624
  __props__.__dict__["public_endpoint"] = public_endpoint
625
+ __props__.__dict__["quantization"] = quantization
622
626
  __props__.__dict__["region"] = region
623
627
  __props__.__dict__["tags"] = tags
624
628
  __props__.__dict__["created_at"] = None
625
- __props__.__dict__["model_id"] = None
629
+ __props__.__dict__["model_name"] = None
626
630
  __props__.__dict__["size"] = None
627
631
  __props__.__dict__["status"] = None
628
632
  __props__.__dict__["updated_at"] = None
@@ -647,6 +651,7 @@ class InferenceDeployment(pulumi.CustomResource):
647
651
  private_endpoint: Optional[pulumi.Input[Union['InferenceDeploymentPrivateEndpointArgs', 'InferenceDeploymentPrivateEndpointArgsDict']]] = None,
648
652
  project_id: Optional[pulumi.Input[str]] = None,
649
653
  public_endpoint: Optional[pulumi.Input[Union['InferenceDeploymentPublicEndpointArgs', 'InferenceDeploymentPublicEndpointArgsDict']]] = None,
654
+ quantization: Optional[pulumi.Input[int]] = None,
650
655
  region: Optional[pulumi.Input[str]] = None,
651
656
  size: Optional[pulumi.Input[int]] = None,
652
657
  status: Optional[pulumi.Input[str]] = None,
@@ -664,12 +669,13 @@ class InferenceDeployment(pulumi.CustomResource):
664
669
  :param pulumi.Input[int] max_size: The maximum size of the pool.
665
670
  :param pulumi.Input[int] min_size: The minimum size of the pool.
666
671
  :param pulumi.Input[str] model_id: The model id used for the deployment.
667
- :param pulumi.Input[str] model_name: The model name to use for the deployment. Model names can be found in Console or using Scaleway's CLI (`scw inference model list`)
672
+ :param pulumi.Input[str] model_name: The model name used for the deployment. Model names can be found in Console or using Scaleway's CLI (`scw inference model list`)
668
673
  :param pulumi.Input[str] name: The deployment name.
669
674
  :param pulumi.Input[str] node_type: The node type to use for the deployment. Node types can be found using Scaleway's CLI (`scw inference node-type list`)
670
675
  :param pulumi.Input[Union['InferenceDeploymentPrivateEndpointArgs', 'InferenceDeploymentPrivateEndpointArgsDict']] private_endpoint: Configuration of the deployment's private endpoint.
671
676
  :param pulumi.Input[str] project_id: `project_id`) The ID of the project the deployment is associated with.
672
677
  :param pulumi.Input[Union['InferenceDeploymentPublicEndpointArgs', 'InferenceDeploymentPublicEndpointArgsDict']] public_endpoint: Configuration of the deployment's public endpoint.
678
+ :param pulumi.Input[int] quantization: The number of bits each model parameter should be quantized to
673
679
  :param pulumi.Input[str] region: `region`) The region in which the deployment is created.
674
680
  :param pulumi.Input[int] size: The size of the pool.
675
681
  :param pulumi.Input[str] status: The status of the deployment.
@@ -691,6 +697,7 @@ class InferenceDeployment(pulumi.CustomResource):
691
697
  __props__.__dict__["private_endpoint"] = private_endpoint
692
698
  __props__.__dict__["project_id"] = project_id
693
699
  __props__.__dict__["public_endpoint"] = public_endpoint
700
+ __props__.__dict__["quantization"] = quantization
694
701
  __props__.__dict__["region"] = region
695
702
  __props__.__dict__["size"] = size
696
703
  __props__.__dict__["status"] = status
@@ -716,7 +723,7 @@ class InferenceDeployment(pulumi.CustomResource):
716
723
 
717
724
  @property
718
725
  @pulumi.getter(name="maxSize")
719
- def max_size(self) -> pulumi.Output[int]:
726
+ def max_size(self) -> pulumi.Output[Optional[int]]:
720
727
  """
721
728
  The maximum size of the pool.
722
729
  """
@@ -724,7 +731,7 @@ class InferenceDeployment(pulumi.CustomResource):
724
731
 
725
732
  @property
726
733
  @pulumi.getter(name="minSize")
727
- def min_size(self) -> pulumi.Output[int]:
734
+ def min_size(self) -> pulumi.Output[Optional[int]]:
728
735
  """
729
736
  The minimum size of the pool.
730
737
  """
@@ -742,7 +749,7 @@ class InferenceDeployment(pulumi.CustomResource):
742
749
  @pulumi.getter(name="modelName")
743
750
  def model_name(self) -> pulumi.Output[str]:
744
751
  """
745
- The model name to use for the deployment. Model names can be found in Console or using Scaleway's CLI (`scw inference model list`)
752
+ The model name used for the deployment. Model names can be found in Console or using Scaleway's CLI (`scw inference model list`)
746
753
  """
747
754
  return pulumi.get(self, "model_name")
748
755
 
@@ -786,6 +793,14 @@ class InferenceDeployment(pulumi.CustomResource):
786
793
  """
787
794
  return pulumi.get(self, "public_endpoint")
788
795
 
796
+ @property
797
+ @pulumi.getter
798
+ def quantization(self) -> pulumi.Output[Optional[int]]:
799
+ """
800
+ The number of bits each model parameter should be quantized to
801
+ """
802
+ return pulumi.get(self, "quantization")
803
+
789
804
  @property
790
805
  @pulumi.getter
791
806
  def region(self) -> pulumi.Output[str]:
@@ -17,6 +17,8 @@ from .. import _utilities
17
17
  __all__ = [
18
18
  'ImageAdditionalVolumeArgs',
19
19
  'ImageAdditionalVolumeArgsDict',
20
+ 'PrivateNicPrivateIpArgs',
21
+ 'PrivateNicPrivateIpArgsDict',
20
22
  'SecurityGroupInboundRuleArgs',
21
23
  'SecurityGroupInboundRuleArgsDict',
22
24
  'SecurityGroupOutboundRuleArgs',
@@ -25,6 +27,8 @@ __all__ = [
25
27
  'SecurityGroupRulesInboundRuleArgsDict',
26
28
  'SecurityGroupRulesOutboundRuleArgs',
27
29
  'SecurityGroupRulesOutboundRuleArgsDict',
30
+ 'ServerPrivateIpArgs',
31
+ 'ServerPrivateIpArgsDict',
28
32
  'ServerPrivateNetworkArgs',
29
33
  'ServerPrivateNetworkArgsDict',
30
34
  'ServerPublicIpArgs',
@@ -309,6 +313,58 @@ class ImageAdditionalVolumeArgs:
309
313
  pulumi.set(self, "zone", value)
310
314
 
311
315
 
316
+ if not MYPY:
317
+ class PrivateNicPrivateIpArgsDict(TypedDict):
318
+ address: NotRequired[pulumi.Input[str]]
319
+ """
320
+ The private IP address.
321
+ """
322
+ id: NotRequired[pulumi.Input[str]]
323
+ """
324
+ The ID of the IP address resource.
325
+ """
326
+ elif False:
327
+ PrivateNicPrivateIpArgsDict: TypeAlias = Mapping[str, Any]
328
+
329
+ @pulumi.input_type
330
+ class PrivateNicPrivateIpArgs:
331
+ def __init__(__self__, *,
332
+ address: Optional[pulumi.Input[str]] = None,
333
+ id: Optional[pulumi.Input[str]] = None):
334
+ """
335
+ :param pulumi.Input[str] address: The private IP address.
336
+ :param pulumi.Input[str] id: The ID of the IP address resource.
337
+ """
338
+ if address is not None:
339
+ pulumi.set(__self__, "address", address)
340
+ if id is not None:
341
+ pulumi.set(__self__, "id", id)
342
+
343
+ @property
344
+ @pulumi.getter
345
+ def address(self) -> Optional[pulumi.Input[str]]:
346
+ """
347
+ The private IP address.
348
+ """
349
+ return pulumi.get(self, "address")
350
+
351
+ @address.setter
352
+ def address(self, value: Optional[pulumi.Input[str]]):
353
+ pulumi.set(self, "address", value)
354
+
355
+ @property
356
+ @pulumi.getter
357
+ def id(self) -> Optional[pulumi.Input[str]]:
358
+ """
359
+ The ID of the IP address resource.
360
+ """
361
+ return pulumi.get(self, "id")
362
+
363
+ @id.setter
364
+ def id(self, value: Optional[pulumi.Input[str]]):
365
+ pulumi.set(self, "id", value)
366
+
367
+
312
368
  if not MYPY:
313
369
  class SecurityGroupInboundRuleArgsDict(TypedDict):
314
370
  action: pulumi.Input[str]
@@ -849,6 +905,58 @@ class SecurityGroupRulesOutboundRuleArgs:
849
905
  pulumi.set(self, "protocol", value)
850
906
 
851
907
 
908
+ if not MYPY:
909
+ class ServerPrivateIpArgsDict(TypedDict):
910
+ address: NotRequired[pulumi.Input[str]]
911
+ """
912
+ The private IP address.
913
+ """
914
+ id: NotRequired[pulumi.Input[str]]
915
+ """
916
+ The ID of the IP address resource.
917
+ """
918
+ elif False:
919
+ ServerPrivateIpArgsDict: TypeAlias = Mapping[str, Any]
920
+
921
+ @pulumi.input_type
922
+ class ServerPrivateIpArgs:
923
+ def __init__(__self__, *,
924
+ address: Optional[pulumi.Input[str]] = None,
925
+ id: Optional[pulumi.Input[str]] = None):
926
+ """
927
+ :param pulumi.Input[str] address: The private IP address.
928
+ :param pulumi.Input[str] id: The ID of the IP address resource.
929
+ """
930
+ if address is not None:
931
+ pulumi.set(__self__, "address", address)
932
+ if id is not None:
933
+ pulumi.set(__self__, "id", id)
934
+
935
+ @property
936
+ @pulumi.getter
937
+ def address(self) -> Optional[pulumi.Input[str]]:
938
+ """
939
+ The private IP address.
940
+ """
941
+ return pulumi.get(self, "address")
942
+
943
+ @address.setter
944
+ def address(self, value: Optional[pulumi.Input[str]]):
945
+ pulumi.set(self, "address", value)
946
+
947
+ @property
948
+ @pulumi.getter
949
+ def id(self) -> Optional[pulumi.Input[str]]:
950
+ """
951
+ The ID of the IP address resource.
952
+ """
953
+ return pulumi.get(self, "id")
954
+
955
+ @id.setter
956
+ def id(self, value: Optional[pulumi.Input[str]]):
957
+ pulumi.set(self, "id", value)
958
+
959
+
852
960
  if not MYPY:
853
961
  class ServerPrivateNetworkArgsDict(TypedDict):
854
962
  pn_id: pulumi.Input[str]