Skip to content

Commit 01ca415

Browse files
feat(serverless_jobs): include ListJobsResources method to sdk (#547)
Co-authored-by: Laure-di <62625835+Laure-di@users.noreply.github.com>
1 parent ea4ea09 commit 01ca415

File tree

8 files changed

+188
-0
lines changed

8 files changed

+188
-0
lines changed

scaleway-async/scaleway_async/jobs/v1alpha1/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from .types import CreateJobDefinitionRequestCronScheduleConfig
99
from .types import JobDefinition
1010
from .types import JobRun
11+
from .types import Resource
1112
from .types import UpdateJobDefinitionRequestCronScheduleConfig
1213
from .types import CreateJobDefinitionRequest
1314
from .types import DeleteJobDefinitionRequest
@@ -17,6 +18,8 @@
1718
from .types import ListJobDefinitionsResponse
1819
from .types import ListJobRunsRequest
1920
from .types import ListJobRunsResponse
21+
from .types import ListJobsResourcesRequest
22+
from .types import ListJobsResourcesResponse
2023
from .types import StartJobDefinitionRequest
2124
from .types import StartJobDefinitionResponse
2225
from .types import StopJobRunRequest
@@ -32,6 +35,7 @@
3235
"CreateJobDefinitionRequestCronScheduleConfig",
3336
"JobDefinition",
3437
"JobRun",
38+
"Resource",
3539
"UpdateJobDefinitionRequestCronScheduleConfig",
3640
"CreateJobDefinitionRequest",
3741
"DeleteJobDefinitionRequest",
@@ -41,6 +45,8 @@
4145
"ListJobDefinitionsResponse",
4246
"ListJobRunsRequest",
4347
"ListJobRunsResponse",
48+
"ListJobsResourcesRequest",
49+
"ListJobsResourcesResponse",
4450
"StartJobDefinitionRequest",
4551
"StartJobDefinitionResponse",
4652
"StopJobRunRequest",

scaleway-async/scaleway_async/jobs/v1alpha1/api.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
JobRun,
2222
ListJobDefinitionsResponse,
2323
ListJobRunsResponse,
24+
ListJobsResourcesResponse,
2425
StartJobDefinitionRequest,
2526
StartJobDefinitionResponse,
2627
UpdateJobDefinitionRequest,
@@ -31,6 +32,7 @@
3132
unmarshal_JobRun,
3233
unmarshal_ListJobDefinitionsResponse,
3334
unmarshal_ListJobRunsResponse,
35+
unmarshal_ListJobsResourcesResponse,
3436
unmarshal_StartJobDefinitionResponse,
3537
marshal_CreateJobDefinitionRequest,
3638
marshal_StartJobDefinitionRequest,
@@ -551,3 +553,31 @@ async def list_job_runs_all(
551553
"organization_id": organization_id,
552554
},
553555
)
556+
557+
async def list_jobs_resources(
558+
self,
559+
*,
560+
region: Optional[Region] = None,
561+
) -> ListJobsResourcesResponse:
562+
"""
563+
List jobs resources for the console.
564+
:param region: Region to target. If none is passed will use default region from the config.
565+
:return: :class:`ListJobsResourcesResponse <ListJobsResourcesResponse>`
566+
567+
Usage:
568+
::
569+
570+
result = await api.list_jobs_resources()
571+
"""
572+
573+
param_region = validate_path_param(
574+
"region", region or self.client.default_region
575+
)
576+
577+
res = self._request(
578+
"GET",
579+
f"/serverless-jobs/v1alpha1/regions/{param_region}/jobs-resources",
580+
)
581+
582+
self._throw_on_error(res)
583+
return unmarshal_ListJobsResourcesResponse(res.json())

scaleway-async/scaleway_async/jobs/v1alpha1/marshalling.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
JobRun,
1212
ListJobDefinitionsResponse,
1313
ListJobRunsResponse,
14+
Resource,
15+
ListJobsResourcesResponse,
1416
StartJobDefinitionResponse,
1517
CreateJobDefinitionRequestCronScheduleConfig,
1618
CreateJobDefinitionRequest,
@@ -249,6 +251,42 @@ def unmarshal_ListJobRunsResponse(data: Any) -> ListJobRunsResponse:
249251
return ListJobRunsResponse(**args)
250252

251253

254+
def unmarshal_Resource(data: Any) -> Resource:
255+
if not isinstance(data, dict):
256+
raise TypeError(
257+
"Unmarshalling the type 'Resource' failed as data isn't a dictionary."
258+
)
259+
260+
args: Dict[str, Any] = {}
261+
262+
field = data.get("cpu_limit", None)
263+
if field is not None:
264+
args["cpu_limit"] = field
265+
266+
field = data.get("memory_limit", None)
267+
if field is not None:
268+
args["memory_limit"] = field
269+
270+
return Resource(**args)
271+
272+
273+
def unmarshal_ListJobsResourcesResponse(data: Any) -> ListJobsResourcesResponse:
274+
if not isinstance(data, dict):
275+
raise TypeError(
276+
"Unmarshalling the type 'ListJobsResourcesResponse' failed as data isn't a dictionary."
277+
)
278+
279+
args: Dict[str, Any] = {}
280+
281+
field = data.get("resources", None)
282+
if field is not None:
283+
args["resources"] = (
284+
[unmarshal_Resource(v) for v in field] if field is not None else None
285+
)
286+
287+
return ListJobsResourcesResponse(**args)
288+
289+
252290
def unmarshal_StartJobDefinitionResponse(data: Any) -> StartJobDefinitionResponse:
253291
if not isinstance(data, dict):
254292
raise TypeError(

scaleway-async/scaleway_async/jobs/v1alpha1/types.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,13 @@ class JobRun:
139139
started_at: Optional[datetime]
140140

141141

142+
@dataclass
143+
class Resource:
144+
cpu_limit: int
145+
146+
memory_limit: int
147+
148+
142149
@dataclass
143150
class UpdateJobDefinitionRequestCronScheduleConfig:
144151
schedule: Optional[str]
@@ -297,6 +304,19 @@ class ListJobRunsResponse:
297304
total_count: int
298305

299306

307+
@dataclass
308+
class ListJobsResourcesRequest:
309+
region: Optional[Region]
310+
"""
311+
Region to target. If none is passed will use default region from the config.
312+
"""
313+
314+
315+
@dataclass
316+
class ListJobsResourcesResponse:
317+
resources: List[Resource]
318+
319+
300320
@dataclass
301321
class StartJobDefinitionRequest:
302322
job_definition_id: str

scaleway/scaleway/jobs/v1alpha1/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from .types import CreateJobDefinitionRequestCronScheduleConfig
99
from .types import JobDefinition
1010
from .types import JobRun
11+
from .types import Resource
1112
from .types import UpdateJobDefinitionRequestCronScheduleConfig
1213
from .types import CreateJobDefinitionRequest
1314
from .types import DeleteJobDefinitionRequest
@@ -17,6 +18,8 @@
1718
from .types import ListJobDefinitionsResponse
1819
from .types import ListJobRunsRequest
1920
from .types import ListJobRunsResponse
21+
from .types import ListJobsResourcesRequest
22+
from .types import ListJobsResourcesResponse
2023
from .types import StartJobDefinitionRequest
2124
from .types import StartJobDefinitionResponse
2225
from .types import StopJobRunRequest
@@ -32,6 +35,7 @@
3235
"CreateJobDefinitionRequestCronScheduleConfig",
3336
"JobDefinition",
3437
"JobRun",
38+
"Resource",
3539
"UpdateJobDefinitionRequestCronScheduleConfig",
3640
"CreateJobDefinitionRequest",
3741
"DeleteJobDefinitionRequest",
@@ -41,6 +45,8 @@
4145
"ListJobDefinitionsResponse",
4246
"ListJobRunsRequest",
4347
"ListJobRunsResponse",
48+
"ListJobsResourcesRequest",
49+
"ListJobsResourcesResponse",
4450
"StartJobDefinitionRequest",
4551
"StartJobDefinitionResponse",
4652
"StopJobRunRequest",

scaleway/scaleway/jobs/v1alpha1/api.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
JobRun,
2222
ListJobDefinitionsResponse,
2323
ListJobRunsResponse,
24+
ListJobsResourcesResponse,
2425
StartJobDefinitionRequest,
2526
StartJobDefinitionResponse,
2627
UpdateJobDefinitionRequest,
@@ -31,6 +32,7 @@
3132
unmarshal_JobRun,
3233
unmarshal_ListJobDefinitionsResponse,
3334
unmarshal_ListJobRunsResponse,
35+
unmarshal_ListJobsResourcesResponse,
3436
unmarshal_StartJobDefinitionResponse,
3537
marshal_CreateJobDefinitionRequest,
3638
marshal_StartJobDefinitionRequest,
@@ -551,3 +553,31 @@ def list_job_runs_all(
551553
"organization_id": organization_id,
552554
},
553555
)
556+
557+
def list_jobs_resources(
558+
self,
559+
*,
560+
region: Optional[Region] = None,
561+
) -> ListJobsResourcesResponse:
562+
"""
563+
List jobs resources for the console.
564+
:param region: Region to target. If none is passed will use default region from the config.
565+
:return: :class:`ListJobsResourcesResponse <ListJobsResourcesResponse>`
566+
567+
Usage:
568+
::
569+
570+
result = api.list_jobs_resources()
571+
"""
572+
573+
param_region = validate_path_param(
574+
"region", region or self.client.default_region
575+
)
576+
577+
res = self._request(
578+
"GET",
579+
f"/serverless-jobs/v1alpha1/regions/{param_region}/jobs-resources",
580+
)
581+
582+
self._throw_on_error(res)
583+
return unmarshal_ListJobsResourcesResponse(res.json())

scaleway/scaleway/jobs/v1alpha1/marshalling.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
JobRun,
1212
ListJobDefinitionsResponse,
1313
ListJobRunsResponse,
14+
Resource,
15+
ListJobsResourcesResponse,
1416
StartJobDefinitionResponse,
1517
CreateJobDefinitionRequestCronScheduleConfig,
1618
CreateJobDefinitionRequest,
@@ -249,6 +251,42 @@ def unmarshal_ListJobRunsResponse(data: Any) -> ListJobRunsResponse:
249251
return ListJobRunsResponse(**args)
250252

251253

254+
def unmarshal_Resource(data: Any) -> Resource:
255+
if not isinstance(data, dict):
256+
raise TypeError(
257+
"Unmarshalling the type 'Resource' failed as data isn't a dictionary."
258+
)
259+
260+
args: Dict[str, Any] = {}
261+
262+
field = data.get("cpu_limit", None)
263+
if field is not None:
264+
args["cpu_limit"] = field
265+
266+
field = data.get("memory_limit", None)
267+
if field is not None:
268+
args["memory_limit"] = field
269+
270+
return Resource(**args)
271+
272+
273+
def unmarshal_ListJobsResourcesResponse(data: Any) -> ListJobsResourcesResponse:
274+
if not isinstance(data, dict):
275+
raise TypeError(
276+
"Unmarshalling the type 'ListJobsResourcesResponse' failed as data isn't a dictionary."
277+
)
278+
279+
args: Dict[str, Any] = {}
280+
281+
field = data.get("resources", None)
282+
if field is not None:
283+
args["resources"] = (
284+
[unmarshal_Resource(v) for v in field] if field is not None else None
285+
)
286+
287+
return ListJobsResourcesResponse(**args)
288+
289+
252290
def unmarshal_StartJobDefinitionResponse(data: Any) -> StartJobDefinitionResponse:
253291
if not isinstance(data, dict):
254292
raise TypeError(

scaleway/scaleway/jobs/v1alpha1/types.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,13 @@ class JobRun:
139139
started_at: Optional[datetime]
140140

141141

142+
@dataclass
143+
class Resource:
144+
cpu_limit: int
145+
146+
memory_limit: int
147+
148+
142149
@dataclass
143150
class UpdateJobDefinitionRequestCronScheduleConfig:
144151
schedule: Optional[str]
@@ -297,6 +304,19 @@ class ListJobRunsResponse:
297304
total_count: int
298305

299306

307+
@dataclass
308+
class ListJobsResourcesRequest:
309+
region: Optional[Region]
310+
"""
311+
Region to target. If none is passed will use default region from the config.
312+
"""
313+
314+
315+
@dataclass
316+
class ListJobsResourcesResponse:
317+
resources: List[Resource]
318+
319+
300320
@dataclass
301321
class StartJobDefinitionRequest:
302322
job_definition_id: str

0 commit comments

Comments
 (0)