Skip to content

Commit d984dc6

Browse files
authored
feat(serverless_jobs): add method to get jobs limits (scaleway#713)
1 parent ecc83b7 commit d984dc6

File tree

8 files changed

+126
-0
lines changed

8 files changed

+126
-0
lines changed

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
from .types import GetJobDefinitionRequest
2323
from .types import GetJobDefinitionSecretRequest
2424
from .types import GetJobRunRequest
25+
from .types import GetJobsLimitsRequest
26+
from .types import JobsLimits
2527
from .types import ListJobDefinitionSecretsRequest
2628
from .types import ListJobDefinitionSecretsResponse
2729
from .types import ListJobDefinitionsRequest
@@ -60,6 +62,8 @@
6062
"GetJobDefinitionRequest",
6163
"GetJobDefinitionSecretRequest",
6264
"GetJobRunRequest",
65+
"GetJobsLimitsRequest",
66+
"JobsLimits",
6367
"ListJobDefinitionSecretsRequest",
6468
"ListJobDefinitionSecretsResponse",
6569
"ListJobDefinitionsRequest",

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

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
CreateJobDefinitionSecretsResponse,
2323
JobDefinition,
2424
JobRun,
25+
JobsLimits,
2526
ListJobDefinitionSecretsResponse,
2627
ListJobDefinitionsResponse,
2728
ListJobRunsResponse,
@@ -38,6 +39,7 @@
3839
unmarshal_JobDefinition,
3940
unmarshal_JobRun,
4041
unmarshal_CreateJobDefinitionSecretsResponse,
42+
unmarshal_JobsLimits,
4143
unmarshal_ListJobDefinitionSecretsResponse,
4244
unmarshal_ListJobDefinitionsResponse,
4345
unmarshal_ListJobRunsResponse,
@@ -802,3 +804,31 @@ async def list_jobs_resources(
802804

803805
self._throw_on_error(res)
804806
return unmarshal_ListJobsResourcesResponse(res.json())
807+
808+
async def get_jobs_limits(
809+
self,
810+
*,
811+
region: Optional[Region] = None,
812+
) -> JobsLimits:
813+
"""
814+
Get jobs limits for the console.
815+
:param region: Region to target. If none is passed will use default region from the config.
816+
:return: :class:`JobsLimits <JobsLimits>`
817+
818+
Usage:
819+
::
820+
821+
result = await api.get_jobs_limits()
822+
"""
823+
824+
param_region = validate_path_param(
825+
"region", region or self.client.default_region
826+
)
827+
828+
res = self._request(
829+
"GET",
830+
f"/serverless-jobs/v1alpha1/regions/{param_region}/jobs-limits",
831+
)
832+
833+
self._throw_on_error(res)
834+
return unmarshal_JobsLimits(res.json())

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
JobDefinition,
1818
JobRun,
1919
CreateJobDefinitionSecretsResponse,
20+
JobsLimits,
2021
ListJobDefinitionSecretsResponse,
2122
ListJobDefinitionsResponse,
2223
ListJobRunsResponse,
@@ -305,6 +306,21 @@ def unmarshal_CreateJobDefinitionSecretsResponse(
305306
return CreateJobDefinitionSecretsResponse(**args)
306307

307308

309+
def unmarshal_JobsLimits(data: Any) -> JobsLimits:
310+
if not isinstance(data, dict):
311+
raise TypeError(
312+
"Unmarshalling the type 'JobsLimits' failed as data isn't a dictionary."
313+
)
314+
315+
args: Dict[str, Any] = {}
316+
317+
field = data.get("secrets_per_job_definition", None)
318+
if field is not None:
319+
args["secrets_per_job_definition"] = field
320+
321+
return JobsLimits(**args)
322+
323+
308324
def unmarshal_ListJobDefinitionSecretsResponse(
309325
data: Any,
310326
) -> ListJobDefinitionSecretsResponse:

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,19 @@ class GetJobRunRequest:
336336
"""
337337

338338

339+
@dataclass
340+
class GetJobsLimitsRequest:
341+
region: Optional[Region]
342+
"""
343+
Region to target. If none is passed will use default region from the config.
344+
"""
345+
346+
347+
@dataclass
348+
class JobsLimits:
349+
secrets_per_job_definition: int
350+
351+
339352
@dataclass
340353
class ListJobDefinitionSecretsRequest:
341354
job_definition_id: str

scaleway/scaleway/jobs/v1alpha1/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
from .types import GetJobDefinitionRequest
2323
from .types import GetJobDefinitionSecretRequest
2424
from .types import GetJobRunRequest
25+
from .types import GetJobsLimitsRequest
26+
from .types import JobsLimits
2527
from .types import ListJobDefinitionSecretsRequest
2628
from .types import ListJobDefinitionSecretsResponse
2729
from .types import ListJobDefinitionsRequest
@@ -60,6 +62,8 @@
6062
"GetJobDefinitionRequest",
6163
"GetJobDefinitionSecretRequest",
6264
"GetJobRunRequest",
65+
"GetJobsLimitsRequest",
66+
"JobsLimits",
6367
"ListJobDefinitionSecretsRequest",
6468
"ListJobDefinitionSecretsResponse",
6569
"ListJobDefinitionsRequest",

scaleway/scaleway/jobs/v1alpha1/api.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
CreateJobDefinitionSecretsResponse,
2323
JobDefinition,
2424
JobRun,
25+
JobsLimits,
2526
ListJobDefinitionSecretsResponse,
2627
ListJobDefinitionsResponse,
2728
ListJobRunsResponse,
@@ -38,6 +39,7 @@
3839
unmarshal_JobDefinition,
3940
unmarshal_JobRun,
4041
unmarshal_CreateJobDefinitionSecretsResponse,
42+
unmarshal_JobsLimits,
4143
unmarshal_ListJobDefinitionSecretsResponse,
4244
unmarshal_ListJobDefinitionsResponse,
4345
unmarshal_ListJobRunsResponse,
@@ -802,3 +804,31 @@ def list_jobs_resources(
802804

803805
self._throw_on_error(res)
804806
return unmarshal_ListJobsResourcesResponse(res.json())
807+
808+
def get_jobs_limits(
809+
self,
810+
*,
811+
region: Optional[Region] = None,
812+
) -> JobsLimits:
813+
"""
814+
Get jobs limits for the console.
815+
:param region: Region to target. If none is passed will use default region from the config.
816+
:return: :class:`JobsLimits <JobsLimits>`
817+
818+
Usage:
819+
::
820+
821+
result = api.get_jobs_limits()
822+
"""
823+
824+
param_region = validate_path_param(
825+
"region", region or self.client.default_region
826+
)
827+
828+
res = self._request(
829+
"GET",
830+
f"/serverless-jobs/v1alpha1/regions/{param_region}/jobs-limits",
831+
)
832+
833+
self._throw_on_error(res)
834+
return unmarshal_JobsLimits(res.json())

scaleway/scaleway/jobs/v1alpha1/marshalling.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
JobDefinition,
1818
JobRun,
1919
CreateJobDefinitionSecretsResponse,
20+
JobsLimits,
2021
ListJobDefinitionSecretsResponse,
2122
ListJobDefinitionsResponse,
2223
ListJobRunsResponse,
@@ -305,6 +306,21 @@ def unmarshal_CreateJobDefinitionSecretsResponse(
305306
return CreateJobDefinitionSecretsResponse(**args)
306307

307308

309+
def unmarshal_JobsLimits(data: Any) -> JobsLimits:
310+
if not isinstance(data, dict):
311+
raise TypeError(
312+
"Unmarshalling the type 'JobsLimits' failed as data isn't a dictionary."
313+
)
314+
315+
args: Dict[str, Any] = {}
316+
317+
field = data.get("secrets_per_job_definition", None)
318+
if field is not None:
319+
args["secrets_per_job_definition"] = field
320+
321+
return JobsLimits(**args)
322+
323+
308324
def unmarshal_ListJobDefinitionSecretsResponse(
309325
data: Any,
310326
) -> ListJobDefinitionSecretsResponse:

scaleway/scaleway/jobs/v1alpha1/types.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,19 @@ class GetJobRunRequest:
336336
"""
337337

338338

339+
@dataclass
340+
class GetJobsLimitsRequest:
341+
region: Optional[Region]
342+
"""
343+
Region to target. If none is passed will use default region from the config.
344+
"""
345+
346+
347+
@dataclass
348+
class JobsLimits:
349+
secrets_per_job_definition: int
350+
351+
339352
@dataclass
340353
class ListJobDefinitionSecretsRequest:
341354
job_definition_id: str

0 commit comments

Comments
 (0)