Skip to content

Commit ecdc102

Browse files
committed
feat(qaas): add session parameters + job parameters conversion
1 parent 1afe6ec commit ecdc102

File tree

7 files changed

+111
-48
lines changed

7 files changed

+111
-48
lines changed

openapi/scaleway.qaas.v1alpha1.Api.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1115,6 +1115,10 @@ components:
11151115
description: Default computation model ID to be executed by job assigned
11161116
to this session.
11171117
nullable: true
1118+
parameters:
1119+
type: string
1120+
description: Platform configuration parameters applied to this session.
1121+
nullable: true
11181122
x-properties-order:
11191123
- id
11201124
- name
@@ -1136,6 +1140,7 @@ components:
11361140
- progress_message
11371141
- booking_id
11381142
- model_id
1143+
- parameters
11391144
scaleway.qaas.v1alpha1.Session.Access:
11401145
type: string
11411146
enum:
@@ -2651,6 +2656,11 @@ paths:
26512656
description: Default computation model ID to be executed by job
26522657
assigned to this session.
26532658
nullable: true
2659+
parameters:
2660+
type: string
2661+
description: Optional platform configuration parameters applied
2662+
to this session.
2663+
nullable: true
26542664
required:
26552665
- project_id
26562666
- platform_id
@@ -2664,6 +2674,7 @@ paths:
26642674
- deduplication_id
26652675
- booking_demand
26662676
- model_id
2677+
- parameters
26672678
security:
26682679
- scaleway: []
26692680
x-codeSamples:

scaleway_qaas_client/v1alpha1/__init__.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@
3333
from .quantum_as_a_service_api_client.models import (
3434
ScalewayQaasV1Alpha1JobStatus as QaaSJobStatus,
3535
)
36+
from .quantum_as_a_service_api_client.models import (
37+
ScalewayQaasV1Alpha1Model as QaaSModel,
38+
)
3639
from .quantum_as_a_service_api_client.models import (
3740
ScalewayQaasV1Alpha1Platform as QaaSPlatform,
3841
)
@@ -54,12 +57,9 @@
5457
from .quantum_as_a_service_api_client.models import (
5558
ScalewayQaasV1Alpha1Session as QaaSSession,
5659
)
57-
from .quantum_as_a_service_api_client.models import (
58-
ScalewayQaasV1Alpha1SessionStatus as QaaSSessionStatus,
59-
)
6060
from .quantum_as_a_service_api_client.models import (
6161
ScalewayQaasV1Alpha1SessionAccess as QaaSSessionAccess,
6262
)
6363
from .quantum_as_a_service_api_client.models import (
64-
ScalewayQaasV1Alpha1Model as QaaSModel,
64+
ScalewayQaasV1Alpha1SessionStatus as QaaSSessionStatus,
6565
)

scaleway_qaas_client/v1alpha1/client.py

Lines changed: 54 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,20 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414
import json
15-
import randomname
16-
1715
from typing import Dict, List, Optional, Union
16+
17+
import randomname
1818
from pytimeparse.timeparse import timeparse
1919

20+
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.api.applications.get_application import (
21+
sync_detailed as _get_application_sync,
22+
)
23+
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.api.applications.list_applications import (
24+
sync_detailed as _list_applications_sync,
25+
)
26+
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.api.default.list_session_ac_ls import (
27+
sync_detailed as _list_session_acls_sync,
28+
)
2029
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.api.jobs.cancel_job import (
2130
sync_detailed as _cancel_job_sync,
2231
)
@@ -32,83 +41,74 @@
3241
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.api.jobs.list_jobs import (
3342
sync_detailed as _list_jobs_sync,
3443
)
44+
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.api.models.create_model import (
45+
sync_detailed as _create_model_sync,
46+
)
47+
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.api.models.get_model import (
48+
sync_detailed as _get_model_sync,
49+
)
50+
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.api.models.list_models import (
51+
sync_detailed as _list_models_sync,
52+
)
3553
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.api.platforms.get_platform import (
3654
sync_detailed as _get_platform_sync,
3755
)
3856
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.api.platforms.list_platforms import (
3957
sync_detailed as _list_platforms_sync,
4058
)
41-
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.api.sessions.create_session import (
42-
sync_detailed as _create_session_sync,
43-
)
44-
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.api.sessions.delete_session import (
45-
sync_detailed as _delete_session_sync,
46-
)
47-
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.api.sessions.get_session import (
48-
sync_detailed as _get_session_sync,
49-
)
50-
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.api.sessions.list_sessions import (
51-
sync_detailed as _list_sessions_sync,
52-
)
53-
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.api.default.list_session_ac_ls import (
54-
sync_detailed as _list_session_acls_sync,
55-
)
56-
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.api.sessions.terminate_session import (
57-
sync_detailed as _terminate_session_sync,
58-
)
59-
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.api.applications.get_application import (
60-
sync_detailed as _get_application_sync,
61-
)
62-
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.api.applications.list_applications import (
63-
sync_detailed as _list_applications_sync,
59+
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.api.processes.cancel_process import (
60+
sync_detailed as _cancel_process_sync,
6461
)
6562
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.api.processes.create_process import (
6663
sync_detailed as _create_process_sync,
6764
)
6865
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.api.processes.delete_process import (
6966
sync_detailed as _delete_process_sync,
7067
)
71-
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.api.processes.cancel_process import (
72-
sync_detailed as _cancel_process_sync,
73-
)
7468
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.api.processes.get_process import (
7569
sync_detailed as _get_process_sync,
7670
)
71+
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.api.processes.list_process_results import (
72+
sync_detailed as _list_process_results_sync,
73+
)
7774
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.api.processes.list_processes import (
7875
sync_detailed as _list_processes_sync,
7976
)
80-
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.api.processes.list_process_results import (
81-
sync_detailed as _list_process_results_sync,
77+
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.api.sessions.create_session import (
78+
sync_detailed as _create_session_sync,
8279
)
83-
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.api.models.get_model import (
84-
sync_detailed as _get_model_sync,
80+
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.api.sessions.delete_session import (
81+
sync_detailed as _delete_session_sync,
8582
)
86-
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.api.models.list_models import (
87-
sync_detailed as _list_models_sync,
83+
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.api.sessions.get_session import (
84+
sync_detailed as _get_session_sync,
8885
)
89-
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.api.models.create_model import (
90-
sync_detailed as _create_model_sync,
86+
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.api.sessions.list_sessions import (
87+
sync_detailed as _list_sessions_sync,
88+
)
89+
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.api.sessions.terminate_session import (
90+
sync_detailed as _terminate_session_sync,
9191
)
9292
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.client import (
9393
AuthenticatedClient,
9494
)
9595
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.models import (
9696
CancelJobBody,
9797
CancelProcessBody,
98-
CreateProcessBody,
9998
CreateJobBody,
100-
CreateModelBody,
10199
CreateJobBodyCircuit,
100+
CreateModelBody,
101+
CreateProcessBody,
102102
CreateSessionBody,
103+
ScalewayQaasV1Alpha1Application,
103104
ScalewayQaasV1Alpha1Job,
104105
ScalewayQaasV1Alpha1JobResult,
106+
ScalewayQaasV1Alpha1Model,
105107
ScalewayQaasV1Alpha1Platform,
106-
ScalewayQaasV1Alpha1Session,
107-
ScalewayQaasV1Alpha1SessionAccess,
108-
ScalewayQaasV1Alpha1Application,
109108
ScalewayQaasV1Alpha1Process,
110109
ScalewayQaasV1Alpha1ProcessResult,
111-
ScalewayQaasV1Alpha1Model,
110+
ScalewayQaasV1Alpha1Session,
111+
ScalewayQaasV1Alpha1SessionAccess,
112112
TerminateSessionBody,
113113
)
114114
from scaleway_qaas_client.v1alpha1.quantum_as_a_service_api_client.types import Response
@@ -217,6 +217,7 @@ def create_session(
217217
deduplication_id: Optional[str] = None,
218218
name: Optional[str] = None,
219219
model_id: Optional[str] = None,
220+
parameters: Optional[Union[Dict, List, str]] = None,
220221
) -> ScalewayQaasV1Alpha1Session:
221222
"""Create a session
222223
@@ -242,6 +243,11 @@ def create_session(
242243
if not platform_id:
243244
raise Exception("create_session: platform_id cannot be None")
244245

246+
if parameters:
247+
parameters = (
248+
parameters if isinstance(parameters, str) else json.dumps(parameters)
249+
)
250+
245251
name = name or f"qs-{randomname.get_name()}"
246252

247253
if isinstance(max_duration, str):
@@ -260,6 +266,7 @@ def create_session(
260266
max_duration=max_duration,
261267
max_idle_duration=max_idle_duration,
262268
model_id=model_id,
269+
parameters=parameters,
263270
),
264271
)
265272

@@ -425,6 +432,11 @@ def create_job(
425432
if payload:
426433
payload = payload if isinstance(payload, str) else json.dumps(payload)
427434

435+
if parameters:
436+
parameters = (
437+
parameters if isinstance(parameters, str) else json.dumps(parameters)
438+
)
439+
428440
name = name or f"qj-{randomname.get_name()}"
429441

430442
response = _create_job_sync(

scaleway_qaas_client/v1alpha1/job_payload/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@
1111
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
14+
from dataclasses import dataclass
1415
from enum import Enum
1516
from typing import Dict, List
1617

17-
from dataclasses import dataclass
1818
from dataclasses_json import dataclass_json
1919

2020

scaleway_qaas_client/v1alpha1/quantum_as_a_service_api_client/models/create_session_body.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ class CreateSessionBody:
3131
booking_demand (Union[Unset, CreateSessionBodyBookingDemand]): A booking demand to schedule the session, only
3232
applicable if the platform is bookable.
3333
model_id (Union[None, Unset, str]): Default computation model ID to be executed by job assigned to this session.
34+
parameters (Union[None, Unset, str]): Optional platform configuration parameters applied to this session.
3435
"""
3536

3637
project_id: str
@@ -42,6 +43,7 @@ class CreateSessionBody:
4243
deduplication_id: Union[None, Unset, str] = UNSET
4344
booking_demand: Union[Unset, "CreateSessionBodyBookingDemand"] = UNSET
4445
model_id: Union[None, Unset, str] = UNSET
46+
parameters: Union[None, Unset, str] = UNSET
4547
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
4648

4749
def to_dict(self) -> dict[str, Any]:
@@ -92,6 +94,12 @@ def to_dict(self) -> dict[str, Any]:
9294
else:
9395
model_id = self.model_id
9496

97+
parameters: Union[None, Unset, str]
98+
if isinstance(self.parameters, Unset):
99+
parameters = UNSET
100+
else:
101+
parameters = self.parameters
102+
95103
field_dict: dict[str, Any] = {}
96104
field_dict.update(self.additional_properties)
97105
field_dict.update(
@@ -114,6 +122,8 @@ def to_dict(self) -> dict[str, Any]:
114122
field_dict["booking_demand"] = booking_demand
115123
if model_id is not UNSET:
116124
field_dict["model_id"] = model_id
125+
if parameters is not UNSET:
126+
field_dict["parameters"] = parameters
117127

118128
return field_dict
119129

@@ -197,6 +207,15 @@ def _parse_model_id(data: object) -> Union[None, Unset, str]:
197207

198208
model_id = _parse_model_id(d.pop("model_id", UNSET))
199209

210+
def _parse_parameters(data: object) -> Union[None, Unset, str]:
211+
if data is None:
212+
return data
213+
if isinstance(data, Unset):
214+
return data
215+
return cast(Union[None, Unset, str], data)
216+
217+
parameters = _parse_parameters(d.pop("parameters", UNSET))
218+
200219
create_session_body = cls(
201220
project_id=project_id,
202221
platform_id=platform_id,
@@ -207,6 +226,7 @@ def _parse_model_id(data: object) -> Union[None, Unset, str]:
207226
deduplication_id=deduplication_id,
208227
booking_demand=booking_demand,
209228
model_id=model_id,
229+
parameters=parameters,
210230
)
211231

212232
create_session_body.additional_properties = d

scaleway_qaas_client/v1alpha1/quantum_as_a_service_api_client/models/scaleway_qaas_v1_alpha_1_session.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ class ScalewayQaasV1Alpha1Session:
4848
progress_message (Union[None, Unset, str]): Any progress of the session.
4949
booking_id (Union[None, Unset, str]): An optional booking unique ID of an attached booking.
5050
model_id (Union[None, Unset, str]): Default computation model ID to be executed by job assigned to this session.
51+
parameters (Union[None, Unset, str]): Platform configuration parameters applied to this session.
5152
"""
5253

5354
id: Union[Unset, str] = UNSET
@@ -74,6 +75,7 @@ class ScalewayQaasV1Alpha1Session:
7475
progress_message: Union[None, Unset, str] = UNSET
7576
booking_id: Union[None, Unset, str] = UNSET
7677
model_id: Union[None, Unset, str] = UNSET
78+
parameters: Union[None, Unset, str] = UNSET
7779
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
7880

7981
def to_dict(self) -> dict[str, Any]:
@@ -176,6 +178,12 @@ def to_dict(self) -> dict[str, Any]:
176178
else:
177179
model_id = self.model_id
178180

181+
parameters: Union[None, Unset, str]
182+
if isinstance(self.parameters, Unset):
183+
parameters = UNSET
184+
else:
185+
parameters = self.parameters
186+
179187
field_dict: dict[str, Any] = {}
180188
field_dict.update(self.additional_properties)
181189
field_dict.update({})
@@ -219,6 +227,8 @@ def to_dict(self) -> dict[str, Any]:
219227
field_dict["booking_id"] = booking_id
220228
if model_id is not UNSET:
221229
field_dict["model_id"] = model_id
230+
if parameters is not UNSET:
231+
field_dict["parameters"] = parameters
222232

223233
return field_dict
224234

@@ -392,6 +402,15 @@ def _parse_model_id(data: object) -> Union[None, Unset, str]:
392402

393403
model_id = _parse_model_id(d.pop("model_id", UNSET))
394404

405+
def _parse_parameters(data: object) -> Union[None, Unset, str]:
406+
if data is None:
407+
return data
408+
if isinstance(data, Unset):
409+
return data
410+
return cast(Union[None, Unset, str], data)
411+
412+
parameters = _parse_parameters(d.pop("parameters", UNSET))
413+
395414
scaleway_qaas_v1_alpha_1_session = cls(
396415
id=id,
397416
name=name,
@@ -413,6 +432,7 @@ def _parse_model_id(data: object) -> Union[None, Unset, str]:
413432
progress_message=progress_message,
414433
booking_id=booking_id,
415434
model_id=model_id,
435+
parameters=parameters,
416436
)
417437

418438
scaleway_qaas_v1_alpha_1_session.additional_properties = d

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
setup(
2424
name="scaleway_qaas_client",
25-
version="0.1.18",
25+
version="0.1.19",
2626
project_urls={
2727
"Documentation": "https://www.scaleway.com/en/quantum-as-a-service/",
2828
"Source": "https://github.com/scaleway/scaleway-qaas-client-pythom",

0 commit comments

Comments
 (0)