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.
- pulumiverse_scaleway/__init__.py +16 -0
- pulumiverse_scaleway/_inputs.py +498 -6
- pulumiverse_scaleway/baremetal_server.py +48 -258
- pulumiverse_scaleway/database_instance.py +42 -21
- pulumiverse_scaleway/databases/_inputs.py +54 -0
- pulumiverse_scaleway/databases/get_instance.py +12 -1
- pulumiverse_scaleway/databases/instance.py +42 -21
- pulumiverse_scaleway/databases/outputs.py +62 -0
- pulumiverse_scaleway/databases/snapshot.py +2 -2
- pulumiverse_scaleway/elasticmetal/_inputs.py +74 -0
- pulumiverse_scaleway/elasticmetal/get_server.py +12 -1
- pulumiverse_scaleway/elasticmetal/outputs.py +87 -0
- pulumiverse_scaleway/elasticmetal/server.py +48 -258
- pulumiverse_scaleway/get_baremetal_server.py +12 -1
- pulumiverse_scaleway/get_cockpit_plan.py +2 -38
- pulumiverse_scaleway/get_database_instance.py +12 -1
- pulumiverse_scaleway/get_instance_private_nic.py +13 -1
- pulumiverse_scaleway/get_instance_server.py +12 -1
- pulumiverse_scaleway/get_lb_route.py +12 -1
- pulumiverse_scaleway/get_loadbalancer.py +12 -1
- pulumiverse_scaleway/get_redis_cluster.py +12 -1
- pulumiverse_scaleway/get_vpc_gateway_network.py +12 -1
- pulumiverse_scaleway/inference/__init__.py +2 -0
- pulumiverse_scaleway/inference/_inputs.py +128 -0
- pulumiverse_scaleway/inference/deployment.py +70 -55
- pulumiverse_scaleway/inference/get_model.py +299 -0
- pulumiverse_scaleway/inference/model.py +683 -0
- pulumiverse_scaleway/inference/outputs.py +184 -0
- pulumiverse_scaleway/inference_deployment.py +70 -55
- pulumiverse_scaleway/instance/_inputs.py +108 -0
- pulumiverse_scaleway/instance/get_private_nic.py +13 -1
- pulumiverse_scaleway/instance/get_server.py +12 -1
- pulumiverse_scaleway/instance/outputs.py +124 -0
- pulumiverse_scaleway/instance/private_nic.py +30 -0
- pulumiverse_scaleway/instance/server.py +28 -0
- pulumiverse_scaleway/instance_private_nic.py +30 -0
- pulumiverse_scaleway/instance_server.py +28 -0
- pulumiverse_scaleway/kubernetes/__init__.py +1 -0
- pulumiverse_scaleway/kubernetes/_inputs.py +203 -0
- pulumiverse_scaleway/kubernetes/acl.py +446 -0
- pulumiverse_scaleway/kubernetes/outputs.py +195 -1
- pulumiverse_scaleway/loadbalancer.py +28 -0
- pulumiverse_scaleway/loadbalancer_route.py +138 -14
- pulumiverse_scaleway/loadbalancers/_inputs.py +54 -0
- pulumiverse_scaleway/loadbalancers/get_load_balancer.py +12 -1
- pulumiverse_scaleway/loadbalancers/get_route.py +12 -1
- pulumiverse_scaleway/loadbalancers/load_balancer.py +28 -0
- pulumiverse_scaleway/loadbalancers/outputs.py +62 -0
- pulumiverse_scaleway/loadbalancers/route.py +138 -14
- pulumiverse_scaleway/mnq/sns_credentials.py +7 -7
- pulumiverse_scaleway/mnq/sqs_credentials.py +7 -7
- pulumiverse_scaleway/mnq_sns_credentials.py +7 -7
- pulumiverse_scaleway/mnq_sqs_credentials.py +7 -7
- pulumiverse_scaleway/network/_inputs.py +54 -0
- pulumiverse_scaleway/network/gateway_network.py +28 -0
- pulumiverse_scaleway/network/get_gateway_network.py +12 -1
- pulumiverse_scaleway/network/outputs.py +62 -0
- pulumiverse_scaleway/network/route.py +90 -2
- pulumiverse_scaleway/observability/get_plan.py +2 -38
- pulumiverse_scaleway/outputs.py +574 -5
- pulumiverse_scaleway/pulumi-plugin.json +1 -1
- pulumiverse_scaleway/rdb_snapshot.py +2 -2
- pulumiverse_scaleway/redis/_inputs.py +60 -6
- pulumiverse_scaleway/redis/cluster.py +28 -0
- pulumiverse_scaleway/redis/get_cluster.py +12 -1
- pulumiverse_scaleway/redis/outputs.py +66 -4
- pulumiverse_scaleway/redis_cluster.py +28 -0
- pulumiverse_scaleway/vpc_gateway_network.py +28 -0
- pulumiverse_scaleway/vpc_route.py +90 -2
- {pulumiverse_scaleway-1.27.1.dist-info → pulumiverse_scaleway-1.28.0.dist-info}/METADATA +1 -1
- {pulumiverse_scaleway-1.27.1.dist-info → pulumiverse_scaleway-1.28.0.dist-info}/RECORD +73 -70
- {pulumiverse_scaleway-1.27.1.dist-info → pulumiverse_scaleway-1.28.0.dist-info}/WHEEL +1 -1
- {pulumiverse_scaleway-1.27.1.dist-info → pulumiverse_scaleway-1.28.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,683 @@
|
|
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
|
+
from . import outputs
|
17
|
+
from ._inputs import *
|
18
|
+
|
19
|
+
__all__ = ['ModelArgs', 'Model']
|
20
|
+
|
21
|
+
@pulumi.input_type
|
22
|
+
class ModelArgs:
|
23
|
+
def __init__(__self__, *,
|
24
|
+
url: pulumi.Input[str],
|
25
|
+
name: Optional[pulumi.Input[str]] = None,
|
26
|
+
project_id: Optional[pulumi.Input[str]] = None,
|
27
|
+
region: Optional[pulumi.Input[str]] = None,
|
28
|
+
secret: Optional[pulumi.Input[str]] = None):
|
29
|
+
"""
|
30
|
+
The set of arguments for constructing a Model resource.
|
31
|
+
:param pulumi.Input[str] url: The HTTPS source URL from which the model will be downloaded. This is typically a Hugging Face repository URL (e.g., https://huggingface.co/agentica-org/DeepCoder-14B-Preview). The URL must be publicly accessible or require valid credentials via `secret`
|
32
|
+
:param pulumi.Input[str] name: The name of the model. This must be unique within the project.
|
33
|
+
:param pulumi.Input[str] project_id: `project_id`) The ID of the project the deployment is associated with.
|
34
|
+
:param pulumi.Input[str] region: `region`) The region in which the deployment is created.
|
35
|
+
:param pulumi.Input[str] secret: Authentication token used to pull the model from a private or gated URL (e.g., a Hugging Face access token with read permission).
|
36
|
+
"""
|
37
|
+
pulumi.set(__self__, "url", url)
|
38
|
+
if name is not None:
|
39
|
+
pulumi.set(__self__, "name", name)
|
40
|
+
if project_id is not None:
|
41
|
+
pulumi.set(__self__, "project_id", project_id)
|
42
|
+
if region is not None:
|
43
|
+
pulumi.set(__self__, "region", region)
|
44
|
+
if secret is not None:
|
45
|
+
pulumi.set(__self__, "secret", secret)
|
46
|
+
|
47
|
+
@property
|
48
|
+
@pulumi.getter
|
49
|
+
def url(self) -> pulumi.Input[str]:
|
50
|
+
"""
|
51
|
+
The HTTPS source URL from which the model will be downloaded. This is typically a Hugging Face repository URL (e.g., https://huggingface.co/agentica-org/DeepCoder-14B-Preview). The URL must be publicly accessible or require valid credentials via `secret`
|
52
|
+
"""
|
53
|
+
return pulumi.get(self, "url")
|
54
|
+
|
55
|
+
@url.setter
|
56
|
+
def url(self, value: pulumi.Input[str]):
|
57
|
+
pulumi.set(self, "url", value)
|
58
|
+
|
59
|
+
@property
|
60
|
+
@pulumi.getter
|
61
|
+
def name(self) -> Optional[pulumi.Input[str]]:
|
62
|
+
"""
|
63
|
+
The name of the model. This must be unique within the project.
|
64
|
+
"""
|
65
|
+
return pulumi.get(self, "name")
|
66
|
+
|
67
|
+
@name.setter
|
68
|
+
def name(self, value: Optional[pulumi.Input[str]]):
|
69
|
+
pulumi.set(self, "name", value)
|
70
|
+
|
71
|
+
@property
|
72
|
+
@pulumi.getter(name="projectId")
|
73
|
+
def project_id(self) -> Optional[pulumi.Input[str]]:
|
74
|
+
"""
|
75
|
+
`project_id`) The ID of the project the deployment is associated with.
|
76
|
+
"""
|
77
|
+
return pulumi.get(self, "project_id")
|
78
|
+
|
79
|
+
@project_id.setter
|
80
|
+
def project_id(self, value: Optional[pulumi.Input[str]]):
|
81
|
+
pulumi.set(self, "project_id", value)
|
82
|
+
|
83
|
+
@property
|
84
|
+
@pulumi.getter
|
85
|
+
def region(self) -> Optional[pulumi.Input[str]]:
|
86
|
+
"""
|
87
|
+
`region`) The region in which the deployment is created.
|
88
|
+
"""
|
89
|
+
return pulumi.get(self, "region")
|
90
|
+
|
91
|
+
@region.setter
|
92
|
+
def region(self, value: Optional[pulumi.Input[str]]):
|
93
|
+
pulumi.set(self, "region", value)
|
94
|
+
|
95
|
+
@property
|
96
|
+
@pulumi.getter
|
97
|
+
def secret(self) -> Optional[pulumi.Input[str]]:
|
98
|
+
"""
|
99
|
+
Authentication token used to pull the model from a private or gated URL (e.g., a Hugging Face access token with read permission).
|
100
|
+
"""
|
101
|
+
return pulumi.get(self, "secret")
|
102
|
+
|
103
|
+
@secret.setter
|
104
|
+
def secret(self, value: Optional[pulumi.Input[str]]):
|
105
|
+
pulumi.set(self, "secret", value)
|
106
|
+
|
107
|
+
|
108
|
+
@pulumi.input_type
|
109
|
+
class _ModelState:
|
110
|
+
def __init__(__self__, *,
|
111
|
+
created_at: Optional[pulumi.Input[str]] = None,
|
112
|
+
description: Optional[pulumi.Input[str]] = None,
|
113
|
+
has_eula: Optional[pulumi.Input[bool]] = None,
|
114
|
+
name: Optional[pulumi.Input[str]] = None,
|
115
|
+
nodes_supports: Optional[pulumi.Input[Sequence[pulumi.Input['ModelNodesSupportArgs']]]] = None,
|
116
|
+
parameter_size_bits: Optional[pulumi.Input[int]] = None,
|
117
|
+
project_id: Optional[pulumi.Input[str]] = None,
|
118
|
+
region: Optional[pulumi.Input[str]] = None,
|
119
|
+
secret: Optional[pulumi.Input[str]] = None,
|
120
|
+
size_bytes: Optional[pulumi.Input[int]] = None,
|
121
|
+
status: Optional[pulumi.Input[str]] = None,
|
122
|
+
tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
|
123
|
+
updated_at: Optional[pulumi.Input[str]] = None,
|
124
|
+
url: Optional[pulumi.Input[str]] = None):
|
125
|
+
"""
|
126
|
+
Input properties used for looking up and filtering Model resources.
|
127
|
+
:param pulumi.Input[str] created_at: The date and time of the creation of the model
|
128
|
+
:param pulumi.Input[str] description: A textual description of the model (if available).
|
129
|
+
:param pulumi.Input[bool] has_eula: Whether the model requires end-user license agreement acceptance before use.
|
130
|
+
:param pulumi.Input[str] name: The name of the model. This must be unique within the project.
|
131
|
+
:param pulumi.Input[Sequence[pulumi.Input['ModelNodesSupportArgs']]] nodes_supports: List of supported node types and their quantization options. Each entry contains:
|
132
|
+
:param pulumi.Input[int] parameter_size_bits: Size, in bits, of the model parameters.
|
133
|
+
:param pulumi.Input[str] project_id: `project_id`) The ID of the project the deployment is associated with.
|
134
|
+
:param pulumi.Input[str] region: `region`) The region in which the deployment is created.
|
135
|
+
:param pulumi.Input[str] secret: Authentication token used to pull the model from a private or gated URL (e.g., a Hugging Face access token with read permission).
|
136
|
+
:param pulumi.Input[int] size_bytes: Total size, in bytes, of the model archive.
|
137
|
+
:param pulumi.Input[str] status: The current status of the model (e.g., ready, error, etc.).
|
138
|
+
:param pulumi.Input[Sequence[pulumi.Input[str]]] tags: Tags associated with the model.
|
139
|
+
:param pulumi.Input[str] updated_at: The date and time of the last update of the model
|
140
|
+
:param pulumi.Input[str] url: The HTTPS source URL from which the model will be downloaded. This is typically a Hugging Face repository URL (e.g., https://huggingface.co/agentica-org/DeepCoder-14B-Preview). The URL must be publicly accessible or require valid credentials via `secret`
|
141
|
+
"""
|
142
|
+
if created_at is not None:
|
143
|
+
pulumi.set(__self__, "created_at", created_at)
|
144
|
+
if description is not None:
|
145
|
+
pulumi.set(__self__, "description", description)
|
146
|
+
if has_eula is not None:
|
147
|
+
pulumi.set(__self__, "has_eula", has_eula)
|
148
|
+
if name is not None:
|
149
|
+
pulumi.set(__self__, "name", name)
|
150
|
+
if nodes_supports is not None:
|
151
|
+
pulumi.set(__self__, "nodes_supports", nodes_supports)
|
152
|
+
if parameter_size_bits is not None:
|
153
|
+
pulumi.set(__self__, "parameter_size_bits", parameter_size_bits)
|
154
|
+
if project_id is not None:
|
155
|
+
pulumi.set(__self__, "project_id", project_id)
|
156
|
+
if region is not None:
|
157
|
+
pulumi.set(__self__, "region", region)
|
158
|
+
if secret is not None:
|
159
|
+
pulumi.set(__self__, "secret", secret)
|
160
|
+
if size_bytes is not None:
|
161
|
+
pulumi.set(__self__, "size_bytes", size_bytes)
|
162
|
+
if status is not None:
|
163
|
+
pulumi.set(__self__, "status", status)
|
164
|
+
if tags is not None:
|
165
|
+
pulumi.set(__self__, "tags", tags)
|
166
|
+
if updated_at is not None:
|
167
|
+
pulumi.set(__self__, "updated_at", updated_at)
|
168
|
+
if url is not None:
|
169
|
+
pulumi.set(__self__, "url", url)
|
170
|
+
|
171
|
+
@property
|
172
|
+
@pulumi.getter(name="createdAt")
|
173
|
+
def created_at(self) -> Optional[pulumi.Input[str]]:
|
174
|
+
"""
|
175
|
+
The date and time of the creation of the model
|
176
|
+
"""
|
177
|
+
return pulumi.get(self, "created_at")
|
178
|
+
|
179
|
+
@created_at.setter
|
180
|
+
def created_at(self, value: Optional[pulumi.Input[str]]):
|
181
|
+
pulumi.set(self, "created_at", value)
|
182
|
+
|
183
|
+
@property
|
184
|
+
@pulumi.getter
|
185
|
+
def description(self) -> Optional[pulumi.Input[str]]:
|
186
|
+
"""
|
187
|
+
A textual description of the model (if available).
|
188
|
+
"""
|
189
|
+
return pulumi.get(self, "description")
|
190
|
+
|
191
|
+
@description.setter
|
192
|
+
def description(self, value: Optional[pulumi.Input[str]]):
|
193
|
+
pulumi.set(self, "description", value)
|
194
|
+
|
195
|
+
@property
|
196
|
+
@pulumi.getter(name="hasEula")
|
197
|
+
def has_eula(self) -> Optional[pulumi.Input[bool]]:
|
198
|
+
"""
|
199
|
+
Whether the model requires end-user license agreement acceptance before use.
|
200
|
+
"""
|
201
|
+
return pulumi.get(self, "has_eula")
|
202
|
+
|
203
|
+
@has_eula.setter
|
204
|
+
def has_eula(self, value: Optional[pulumi.Input[bool]]):
|
205
|
+
pulumi.set(self, "has_eula", value)
|
206
|
+
|
207
|
+
@property
|
208
|
+
@pulumi.getter
|
209
|
+
def name(self) -> Optional[pulumi.Input[str]]:
|
210
|
+
"""
|
211
|
+
The name of the model. This must be unique within the project.
|
212
|
+
"""
|
213
|
+
return pulumi.get(self, "name")
|
214
|
+
|
215
|
+
@name.setter
|
216
|
+
def name(self, value: Optional[pulumi.Input[str]]):
|
217
|
+
pulumi.set(self, "name", value)
|
218
|
+
|
219
|
+
@property
|
220
|
+
@pulumi.getter(name="nodesSupports")
|
221
|
+
def nodes_supports(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ModelNodesSupportArgs']]]]:
|
222
|
+
"""
|
223
|
+
List of supported node types and their quantization options. Each entry contains:
|
224
|
+
"""
|
225
|
+
return pulumi.get(self, "nodes_supports")
|
226
|
+
|
227
|
+
@nodes_supports.setter
|
228
|
+
def nodes_supports(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ModelNodesSupportArgs']]]]):
|
229
|
+
pulumi.set(self, "nodes_supports", value)
|
230
|
+
|
231
|
+
@property
|
232
|
+
@pulumi.getter(name="parameterSizeBits")
|
233
|
+
def parameter_size_bits(self) -> Optional[pulumi.Input[int]]:
|
234
|
+
"""
|
235
|
+
Size, in bits, of the model parameters.
|
236
|
+
"""
|
237
|
+
return pulumi.get(self, "parameter_size_bits")
|
238
|
+
|
239
|
+
@parameter_size_bits.setter
|
240
|
+
def parameter_size_bits(self, value: Optional[pulumi.Input[int]]):
|
241
|
+
pulumi.set(self, "parameter_size_bits", value)
|
242
|
+
|
243
|
+
@property
|
244
|
+
@pulumi.getter(name="projectId")
|
245
|
+
def project_id(self) -> Optional[pulumi.Input[str]]:
|
246
|
+
"""
|
247
|
+
`project_id`) The ID of the project the deployment is associated with.
|
248
|
+
"""
|
249
|
+
return pulumi.get(self, "project_id")
|
250
|
+
|
251
|
+
@project_id.setter
|
252
|
+
def project_id(self, value: Optional[pulumi.Input[str]]):
|
253
|
+
pulumi.set(self, "project_id", value)
|
254
|
+
|
255
|
+
@property
|
256
|
+
@pulumi.getter
|
257
|
+
def region(self) -> Optional[pulumi.Input[str]]:
|
258
|
+
"""
|
259
|
+
`region`) The region in which the deployment is created.
|
260
|
+
"""
|
261
|
+
return pulumi.get(self, "region")
|
262
|
+
|
263
|
+
@region.setter
|
264
|
+
def region(self, value: Optional[pulumi.Input[str]]):
|
265
|
+
pulumi.set(self, "region", value)
|
266
|
+
|
267
|
+
@property
|
268
|
+
@pulumi.getter
|
269
|
+
def secret(self) -> Optional[pulumi.Input[str]]:
|
270
|
+
"""
|
271
|
+
Authentication token used to pull the model from a private or gated URL (e.g., a Hugging Face access token with read permission).
|
272
|
+
"""
|
273
|
+
return pulumi.get(self, "secret")
|
274
|
+
|
275
|
+
@secret.setter
|
276
|
+
def secret(self, value: Optional[pulumi.Input[str]]):
|
277
|
+
pulumi.set(self, "secret", value)
|
278
|
+
|
279
|
+
@property
|
280
|
+
@pulumi.getter(name="sizeBytes")
|
281
|
+
def size_bytes(self) -> Optional[pulumi.Input[int]]:
|
282
|
+
"""
|
283
|
+
Total size, in bytes, of the model archive.
|
284
|
+
"""
|
285
|
+
return pulumi.get(self, "size_bytes")
|
286
|
+
|
287
|
+
@size_bytes.setter
|
288
|
+
def size_bytes(self, value: Optional[pulumi.Input[int]]):
|
289
|
+
pulumi.set(self, "size_bytes", value)
|
290
|
+
|
291
|
+
@property
|
292
|
+
@pulumi.getter
|
293
|
+
def status(self) -> Optional[pulumi.Input[str]]:
|
294
|
+
"""
|
295
|
+
The current status of the model (e.g., ready, error, etc.).
|
296
|
+
"""
|
297
|
+
return pulumi.get(self, "status")
|
298
|
+
|
299
|
+
@status.setter
|
300
|
+
def status(self, value: Optional[pulumi.Input[str]]):
|
301
|
+
pulumi.set(self, "status", value)
|
302
|
+
|
303
|
+
@property
|
304
|
+
@pulumi.getter
|
305
|
+
def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
|
306
|
+
"""
|
307
|
+
Tags associated with the model.
|
308
|
+
"""
|
309
|
+
return pulumi.get(self, "tags")
|
310
|
+
|
311
|
+
@tags.setter
|
312
|
+
def tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
|
313
|
+
pulumi.set(self, "tags", value)
|
314
|
+
|
315
|
+
@property
|
316
|
+
@pulumi.getter(name="updatedAt")
|
317
|
+
def updated_at(self) -> Optional[pulumi.Input[str]]:
|
318
|
+
"""
|
319
|
+
The date and time of the last update of the model
|
320
|
+
"""
|
321
|
+
return pulumi.get(self, "updated_at")
|
322
|
+
|
323
|
+
@updated_at.setter
|
324
|
+
def updated_at(self, value: Optional[pulumi.Input[str]]):
|
325
|
+
pulumi.set(self, "updated_at", value)
|
326
|
+
|
327
|
+
@property
|
328
|
+
@pulumi.getter
|
329
|
+
def url(self) -> Optional[pulumi.Input[str]]:
|
330
|
+
"""
|
331
|
+
The HTTPS source URL from which the model will be downloaded. This is typically a Hugging Face repository URL (e.g., https://huggingface.co/agentica-org/DeepCoder-14B-Preview). The URL must be publicly accessible or require valid credentials via `secret`
|
332
|
+
"""
|
333
|
+
return pulumi.get(self, "url")
|
334
|
+
|
335
|
+
@url.setter
|
336
|
+
def url(self, value: Optional[pulumi.Input[str]]):
|
337
|
+
pulumi.set(self, "url", value)
|
338
|
+
|
339
|
+
|
340
|
+
class Model(pulumi.CustomResource):
|
341
|
+
@overload
|
342
|
+
def __init__(__self__,
|
343
|
+
resource_name: str,
|
344
|
+
opts: Optional[pulumi.ResourceOptions] = None,
|
345
|
+
name: Optional[pulumi.Input[str]] = None,
|
346
|
+
project_id: Optional[pulumi.Input[str]] = None,
|
347
|
+
region: Optional[pulumi.Input[str]] = None,
|
348
|
+
secret: Optional[pulumi.Input[str]] = None,
|
349
|
+
url: Optional[pulumi.Input[str]] = None,
|
350
|
+
__props__=None):
|
351
|
+
"""
|
352
|
+
The inference.Model resource allows you to upload and manage inference models in the Scaleway Inference ecosystem. Once registered, a model can be used in any inference.Deployment resource.
|
353
|
+
|
354
|
+
## Example Usage
|
355
|
+
|
356
|
+
### Basic
|
357
|
+
|
358
|
+
```python
|
359
|
+
import pulumi
|
360
|
+
import pulumiverse_scaleway as scaleway
|
361
|
+
|
362
|
+
test = scaleway.inference.Model("test",
|
363
|
+
name="my-awesome-model",
|
364
|
+
url="https://huggingface.co/agentica-org/DeepCoder-14B-Preview",
|
365
|
+
secret="my-secret-token")
|
366
|
+
```
|
367
|
+
|
368
|
+
### Deploy your own model on your managed inference
|
369
|
+
|
370
|
+
```python
|
371
|
+
import pulumi
|
372
|
+
import pulumiverse_scaleway as scaleway
|
373
|
+
|
374
|
+
my_model = scaleway.inference.Model("my_model",
|
375
|
+
name="my-awesome-model",
|
376
|
+
url="https://huggingface.co/agentica-org/DeepCoder-14B-Preview",
|
377
|
+
secret="my-secret-token")
|
378
|
+
my_deployment = scaleway.inference.Deployment("my_deployment",
|
379
|
+
name="test-inference-deployment-basic",
|
380
|
+
node_type="H100",
|
381
|
+
model_id=my_model.id,
|
382
|
+
public_endpoint={
|
383
|
+
"is_enabled": True,
|
384
|
+
},
|
385
|
+
accept_eula=True)
|
386
|
+
```
|
387
|
+
|
388
|
+
## Import
|
389
|
+
|
390
|
+
Models can be imported using, `{region}/{id}`, as shown below:
|
391
|
+
|
392
|
+
bash
|
393
|
+
|
394
|
+
```sh
|
395
|
+
$ pulumi import scaleway:inference/model:Model my_model fr-par/11111111-1111-1111-1111-111111111111
|
396
|
+
```
|
397
|
+
|
398
|
+
:param str resource_name: The name of the resource.
|
399
|
+
:param pulumi.ResourceOptions opts: Options for the resource.
|
400
|
+
:param pulumi.Input[str] name: The name of the model. This must be unique within the project.
|
401
|
+
:param pulumi.Input[str] project_id: `project_id`) The ID of the project the deployment is associated with.
|
402
|
+
:param pulumi.Input[str] region: `region`) The region in which the deployment is created.
|
403
|
+
:param pulumi.Input[str] secret: Authentication token used to pull the model from a private or gated URL (e.g., a Hugging Face access token with read permission).
|
404
|
+
:param pulumi.Input[str] url: The HTTPS source URL from which the model will be downloaded. This is typically a Hugging Face repository URL (e.g., https://huggingface.co/agentica-org/DeepCoder-14B-Preview). The URL must be publicly accessible or require valid credentials via `secret`
|
405
|
+
"""
|
406
|
+
...
|
407
|
+
@overload
|
408
|
+
def __init__(__self__,
|
409
|
+
resource_name: str,
|
410
|
+
args: ModelArgs,
|
411
|
+
opts: Optional[pulumi.ResourceOptions] = None):
|
412
|
+
"""
|
413
|
+
The inference.Model resource allows you to upload and manage inference models in the Scaleway Inference ecosystem. Once registered, a model can be used in any inference.Deployment resource.
|
414
|
+
|
415
|
+
## Example Usage
|
416
|
+
|
417
|
+
### Basic
|
418
|
+
|
419
|
+
```python
|
420
|
+
import pulumi
|
421
|
+
import pulumiverse_scaleway as scaleway
|
422
|
+
|
423
|
+
test = scaleway.inference.Model("test",
|
424
|
+
name="my-awesome-model",
|
425
|
+
url="https://huggingface.co/agentica-org/DeepCoder-14B-Preview",
|
426
|
+
secret="my-secret-token")
|
427
|
+
```
|
428
|
+
|
429
|
+
### Deploy your own model on your managed inference
|
430
|
+
|
431
|
+
```python
|
432
|
+
import pulumi
|
433
|
+
import pulumiverse_scaleway as scaleway
|
434
|
+
|
435
|
+
my_model = scaleway.inference.Model("my_model",
|
436
|
+
name="my-awesome-model",
|
437
|
+
url="https://huggingface.co/agentica-org/DeepCoder-14B-Preview",
|
438
|
+
secret="my-secret-token")
|
439
|
+
my_deployment = scaleway.inference.Deployment("my_deployment",
|
440
|
+
name="test-inference-deployment-basic",
|
441
|
+
node_type="H100",
|
442
|
+
model_id=my_model.id,
|
443
|
+
public_endpoint={
|
444
|
+
"is_enabled": True,
|
445
|
+
},
|
446
|
+
accept_eula=True)
|
447
|
+
```
|
448
|
+
|
449
|
+
## Import
|
450
|
+
|
451
|
+
Models can be imported using, `{region}/{id}`, as shown below:
|
452
|
+
|
453
|
+
bash
|
454
|
+
|
455
|
+
```sh
|
456
|
+
$ pulumi import scaleway:inference/model:Model my_model fr-par/11111111-1111-1111-1111-111111111111
|
457
|
+
```
|
458
|
+
|
459
|
+
:param str resource_name: The name of the resource.
|
460
|
+
:param ModelArgs args: The arguments to use to populate this resource's properties.
|
461
|
+
:param pulumi.ResourceOptions opts: Options for the resource.
|
462
|
+
"""
|
463
|
+
...
|
464
|
+
def __init__(__self__, resource_name: str, *args, **kwargs):
|
465
|
+
resource_args, opts = _utilities.get_resource_args_opts(ModelArgs, pulumi.ResourceOptions, *args, **kwargs)
|
466
|
+
if resource_args is not None:
|
467
|
+
__self__._internal_init(resource_name, opts, **resource_args.__dict__)
|
468
|
+
else:
|
469
|
+
__self__._internal_init(resource_name, *args, **kwargs)
|
470
|
+
|
471
|
+
def _internal_init(__self__,
|
472
|
+
resource_name: str,
|
473
|
+
opts: Optional[pulumi.ResourceOptions] = None,
|
474
|
+
name: Optional[pulumi.Input[str]] = None,
|
475
|
+
project_id: Optional[pulumi.Input[str]] = None,
|
476
|
+
region: Optional[pulumi.Input[str]] = None,
|
477
|
+
secret: Optional[pulumi.Input[str]] = None,
|
478
|
+
url: Optional[pulumi.Input[str]] = None,
|
479
|
+
__props__=None):
|
480
|
+
opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
|
481
|
+
if not isinstance(opts, pulumi.ResourceOptions):
|
482
|
+
raise TypeError('Expected resource options to be a ResourceOptions instance')
|
483
|
+
if opts.id is None:
|
484
|
+
if __props__ is not None:
|
485
|
+
raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
|
486
|
+
__props__ = ModelArgs.__new__(ModelArgs)
|
487
|
+
|
488
|
+
__props__.__dict__["name"] = name
|
489
|
+
__props__.__dict__["project_id"] = project_id
|
490
|
+
__props__.__dict__["region"] = region
|
491
|
+
__props__.__dict__["secret"] = None if secret is None else pulumi.Output.secret(secret)
|
492
|
+
if url is None and not opts.urn:
|
493
|
+
raise TypeError("Missing required property 'url'")
|
494
|
+
__props__.__dict__["url"] = url
|
495
|
+
__props__.__dict__["created_at"] = None
|
496
|
+
__props__.__dict__["description"] = None
|
497
|
+
__props__.__dict__["has_eula"] = None
|
498
|
+
__props__.__dict__["nodes_supports"] = None
|
499
|
+
__props__.__dict__["parameter_size_bits"] = None
|
500
|
+
__props__.__dict__["size_bytes"] = None
|
501
|
+
__props__.__dict__["status"] = None
|
502
|
+
__props__.__dict__["tags"] = None
|
503
|
+
__props__.__dict__["updated_at"] = None
|
504
|
+
secret_opts = pulumi.ResourceOptions(additional_secret_outputs=["secret"])
|
505
|
+
opts = pulumi.ResourceOptions.merge(opts, secret_opts)
|
506
|
+
super(Model, __self__).__init__(
|
507
|
+
'scaleway:inference/model:Model',
|
508
|
+
resource_name,
|
509
|
+
__props__,
|
510
|
+
opts)
|
511
|
+
|
512
|
+
@staticmethod
|
513
|
+
def get(resource_name: str,
|
514
|
+
id: pulumi.Input[str],
|
515
|
+
opts: Optional[pulumi.ResourceOptions] = None,
|
516
|
+
created_at: Optional[pulumi.Input[str]] = None,
|
517
|
+
description: Optional[pulumi.Input[str]] = None,
|
518
|
+
has_eula: Optional[pulumi.Input[bool]] = None,
|
519
|
+
name: Optional[pulumi.Input[str]] = None,
|
520
|
+
nodes_supports: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ModelNodesSupportArgs', 'ModelNodesSupportArgsDict']]]]] = None,
|
521
|
+
parameter_size_bits: Optional[pulumi.Input[int]] = None,
|
522
|
+
project_id: Optional[pulumi.Input[str]] = None,
|
523
|
+
region: Optional[pulumi.Input[str]] = None,
|
524
|
+
secret: Optional[pulumi.Input[str]] = None,
|
525
|
+
size_bytes: Optional[pulumi.Input[int]] = None,
|
526
|
+
status: Optional[pulumi.Input[str]] = None,
|
527
|
+
tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
|
528
|
+
updated_at: Optional[pulumi.Input[str]] = None,
|
529
|
+
url: Optional[pulumi.Input[str]] = None) -> 'Model':
|
530
|
+
"""
|
531
|
+
Get an existing Model resource's state with the given name, id, and optional extra
|
532
|
+
properties used to qualify the lookup.
|
533
|
+
|
534
|
+
:param str resource_name: The unique name of the resulting resource.
|
535
|
+
:param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
|
536
|
+
:param pulumi.ResourceOptions opts: Options for the resource.
|
537
|
+
:param pulumi.Input[str] created_at: The date and time of the creation of the model
|
538
|
+
:param pulumi.Input[str] description: A textual description of the model (if available).
|
539
|
+
:param pulumi.Input[bool] has_eula: Whether the model requires end-user license agreement acceptance before use.
|
540
|
+
:param pulumi.Input[str] name: The name of the model. This must be unique within the project.
|
541
|
+
:param pulumi.Input[Sequence[pulumi.Input[Union['ModelNodesSupportArgs', 'ModelNodesSupportArgsDict']]]] nodes_supports: List of supported node types and their quantization options. Each entry contains:
|
542
|
+
:param pulumi.Input[int] parameter_size_bits: Size, in bits, of the model parameters.
|
543
|
+
:param pulumi.Input[str] project_id: `project_id`) The ID of the project the deployment is associated with.
|
544
|
+
:param pulumi.Input[str] region: `region`) The region in which the deployment is created.
|
545
|
+
:param pulumi.Input[str] secret: Authentication token used to pull the model from a private or gated URL (e.g., a Hugging Face access token with read permission).
|
546
|
+
:param pulumi.Input[int] size_bytes: Total size, in bytes, of the model archive.
|
547
|
+
:param pulumi.Input[str] status: The current status of the model (e.g., ready, error, etc.).
|
548
|
+
:param pulumi.Input[Sequence[pulumi.Input[str]]] tags: Tags associated with the model.
|
549
|
+
:param pulumi.Input[str] updated_at: The date and time of the last update of the model
|
550
|
+
:param pulumi.Input[str] url: The HTTPS source URL from which the model will be downloaded. This is typically a Hugging Face repository URL (e.g., https://huggingface.co/agentica-org/DeepCoder-14B-Preview). The URL must be publicly accessible or require valid credentials via `secret`
|
551
|
+
"""
|
552
|
+
opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
|
553
|
+
|
554
|
+
__props__ = _ModelState.__new__(_ModelState)
|
555
|
+
|
556
|
+
__props__.__dict__["created_at"] = created_at
|
557
|
+
__props__.__dict__["description"] = description
|
558
|
+
__props__.__dict__["has_eula"] = has_eula
|
559
|
+
__props__.__dict__["name"] = name
|
560
|
+
__props__.__dict__["nodes_supports"] = nodes_supports
|
561
|
+
__props__.__dict__["parameter_size_bits"] = parameter_size_bits
|
562
|
+
__props__.__dict__["project_id"] = project_id
|
563
|
+
__props__.__dict__["region"] = region
|
564
|
+
__props__.__dict__["secret"] = secret
|
565
|
+
__props__.__dict__["size_bytes"] = size_bytes
|
566
|
+
__props__.__dict__["status"] = status
|
567
|
+
__props__.__dict__["tags"] = tags
|
568
|
+
__props__.__dict__["updated_at"] = updated_at
|
569
|
+
__props__.__dict__["url"] = url
|
570
|
+
return Model(resource_name, opts=opts, __props__=__props__)
|
571
|
+
|
572
|
+
@property
|
573
|
+
@pulumi.getter(name="createdAt")
|
574
|
+
def created_at(self) -> pulumi.Output[str]:
|
575
|
+
"""
|
576
|
+
The date and time of the creation of the model
|
577
|
+
"""
|
578
|
+
return pulumi.get(self, "created_at")
|
579
|
+
|
580
|
+
@property
|
581
|
+
@pulumi.getter
|
582
|
+
def description(self) -> pulumi.Output[str]:
|
583
|
+
"""
|
584
|
+
A textual description of the model (if available).
|
585
|
+
"""
|
586
|
+
return pulumi.get(self, "description")
|
587
|
+
|
588
|
+
@property
|
589
|
+
@pulumi.getter(name="hasEula")
|
590
|
+
def has_eula(self) -> pulumi.Output[bool]:
|
591
|
+
"""
|
592
|
+
Whether the model requires end-user license agreement acceptance before use.
|
593
|
+
"""
|
594
|
+
return pulumi.get(self, "has_eula")
|
595
|
+
|
596
|
+
@property
|
597
|
+
@pulumi.getter
|
598
|
+
def name(self) -> pulumi.Output[str]:
|
599
|
+
"""
|
600
|
+
The name of the model. This must be unique within the project.
|
601
|
+
"""
|
602
|
+
return pulumi.get(self, "name")
|
603
|
+
|
604
|
+
@property
|
605
|
+
@pulumi.getter(name="nodesSupports")
|
606
|
+
def nodes_supports(self) -> pulumi.Output[Sequence['outputs.ModelNodesSupport']]:
|
607
|
+
"""
|
608
|
+
List of supported node types and their quantization options. Each entry contains:
|
609
|
+
"""
|
610
|
+
return pulumi.get(self, "nodes_supports")
|
611
|
+
|
612
|
+
@property
|
613
|
+
@pulumi.getter(name="parameterSizeBits")
|
614
|
+
def parameter_size_bits(self) -> pulumi.Output[int]:
|
615
|
+
"""
|
616
|
+
Size, in bits, of the model parameters.
|
617
|
+
"""
|
618
|
+
return pulumi.get(self, "parameter_size_bits")
|
619
|
+
|
620
|
+
@property
|
621
|
+
@pulumi.getter(name="projectId")
|
622
|
+
def project_id(self) -> pulumi.Output[str]:
|
623
|
+
"""
|
624
|
+
`project_id`) The ID of the project the deployment is associated with.
|
625
|
+
"""
|
626
|
+
return pulumi.get(self, "project_id")
|
627
|
+
|
628
|
+
@property
|
629
|
+
@pulumi.getter
|
630
|
+
def region(self) -> pulumi.Output[str]:
|
631
|
+
"""
|
632
|
+
`region`) The region in which the deployment is created.
|
633
|
+
"""
|
634
|
+
return pulumi.get(self, "region")
|
635
|
+
|
636
|
+
@property
|
637
|
+
@pulumi.getter
|
638
|
+
def secret(self) -> pulumi.Output[Optional[str]]:
|
639
|
+
"""
|
640
|
+
Authentication token used to pull the model from a private or gated URL (e.g., a Hugging Face access token with read permission).
|
641
|
+
"""
|
642
|
+
return pulumi.get(self, "secret")
|
643
|
+
|
644
|
+
@property
|
645
|
+
@pulumi.getter(name="sizeBytes")
|
646
|
+
def size_bytes(self) -> pulumi.Output[int]:
|
647
|
+
"""
|
648
|
+
Total size, in bytes, of the model archive.
|
649
|
+
"""
|
650
|
+
return pulumi.get(self, "size_bytes")
|
651
|
+
|
652
|
+
@property
|
653
|
+
@pulumi.getter
|
654
|
+
def status(self) -> pulumi.Output[str]:
|
655
|
+
"""
|
656
|
+
The current status of the model (e.g., ready, error, etc.).
|
657
|
+
"""
|
658
|
+
return pulumi.get(self, "status")
|
659
|
+
|
660
|
+
@property
|
661
|
+
@pulumi.getter
|
662
|
+
def tags(self) -> pulumi.Output[Sequence[str]]:
|
663
|
+
"""
|
664
|
+
Tags associated with the model.
|
665
|
+
"""
|
666
|
+
return pulumi.get(self, "tags")
|
667
|
+
|
668
|
+
@property
|
669
|
+
@pulumi.getter(name="updatedAt")
|
670
|
+
def updated_at(self) -> pulumi.Output[str]:
|
671
|
+
"""
|
672
|
+
The date and time of the last update of the model
|
673
|
+
"""
|
674
|
+
return pulumi.get(self, "updated_at")
|
675
|
+
|
676
|
+
@property
|
677
|
+
@pulumi.getter
|
678
|
+
def url(self) -> pulumi.Output[str]:
|
679
|
+
"""
|
680
|
+
The HTTPS source URL from which the model will be downloaded. This is typically a Hugging Face repository URL (e.g., https://huggingface.co/agentica-org/DeepCoder-14B-Preview). The URL must be publicly accessible or require valid credentials via `secret`
|
681
|
+
"""
|
682
|
+
return pulumi.get(self, "url")
|
683
|
+
|