Skip to content

Commit 3734642

Browse files
feat(serverless_jobs): enable sdk for secrets (#683)
Co-authored-by: Laure-di <62625835+Laure-di@users.noreply.github.com>
1 parent a2a3444 commit 3734642

File tree

8 files changed

+1072
-0
lines changed

8 files changed

+1072
-0
lines changed

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

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,26 @@
44
from .content import JOB_RUN_TRANSIENT_STATUSES
55
from .types import ListJobDefinitionsRequestOrderBy
66
from .types import ListJobRunsRequestOrderBy
7+
from .types import SecretEnvVar
8+
from .types import SecretFile
79
from .types import CronSchedule
810
from .types import CreateJobDefinitionRequestCronScheduleConfig
11+
from .types import CreateJobDefinitionSecretsRequestSecretConfig
12+
from .types import Secret
913
from .types import JobDefinition
1014
from .types import JobRun
1115
from .types import Resource
1216
from .types import UpdateJobDefinitionRequestCronScheduleConfig
1317
from .types import CreateJobDefinitionRequest
18+
from .types import CreateJobDefinitionSecretsRequest
19+
from .types import CreateJobDefinitionSecretsResponse
1420
from .types import DeleteJobDefinitionRequest
21+
from .types import DeleteJobDefinitionSecretRequest
1522
from .types import GetJobDefinitionRequest
23+
from .types import GetJobDefinitionSecretRequest
1624
from .types import GetJobRunRequest
25+
from .types import ListJobDefinitionSecretsRequest
26+
from .types import ListJobDefinitionSecretsResponse
1727
from .types import ListJobDefinitionsRequest
1828
from .types import ListJobDefinitionsResponse
1929
from .types import ListJobRunsRequest
@@ -24,23 +34,34 @@
2434
from .types import StartJobDefinitionResponse
2535
from .types import StopJobRunRequest
2636
from .types import UpdateJobDefinitionRequest
37+
from .types import UpdateJobDefinitionSecretRequest
2738
from .api import JobsV1Alpha1API
2839

2940
__all__ = [
3041
"JobRunState",
3142
"JOB_RUN_TRANSIENT_STATUSES",
3243
"ListJobDefinitionsRequestOrderBy",
3344
"ListJobRunsRequestOrderBy",
45+
"SecretEnvVar",
46+
"SecretFile",
3447
"CronSchedule",
3548
"CreateJobDefinitionRequestCronScheduleConfig",
49+
"CreateJobDefinitionSecretsRequestSecretConfig",
50+
"Secret",
3651
"JobDefinition",
3752
"JobRun",
3853
"Resource",
3954
"UpdateJobDefinitionRequestCronScheduleConfig",
4055
"CreateJobDefinitionRequest",
56+
"CreateJobDefinitionSecretsRequest",
57+
"CreateJobDefinitionSecretsResponse",
4158
"DeleteJobDefinitionRequest",
59+
"DeleteJobDefinitionSecretRequest",
4260
"GetJobDefinitionRequest",
61+
"GetJobDefinitionSecretRequest",
4362
"GetJobRunRequest",
63+
"ListJobDefinitionSecretsRequest",
64+
"ListJobDefinitionSecretsResponse",
4465
"ListJobDefinitionsRequest",
4566
"ListJobDefinitionsResponse",
4667
"ListJobRunsRequest",
@@ -51,5 +72,6 @@
5172
"StartJobDefinitionResponse",
5273
"StopJobRunRequest",
5374
"UpdateJobDefinitionRequest",
75+
"UpdateJobDefinitionSecretRequest",
5476
"JobsV1Alpha1API",
5577
]

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

Lines changed: 221 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,26 +17,37 @@
1717
ListJobRunsRequestOrderBy,
1818
CreateJobDefinitionRequest,
1919
CreateJobDefinitionRequestCronScheduleConfig,
20+
CreateJobDefinitionSecretsRequest,
21+
CreateJobDefinitionSecretsRequestSecretConfig,
22+
CreateJobDefinitionSecretsResponse,
2023
JobDefinition,
2124
JobRun,
25+
ListJobDefinitionSecretsResponse,
2226
ListJobDefinitionsResponse,
2327
ListJobRunsResponse,
2428
ListJobsResourcesResponse,
29+
Secret,
2530
StartJobDefinitionRequest,
2631
StartJobDefinitionResponse,
2732
UpdateJobDefinitionRequest,
2833
UpdateJobDefinitionRequestCronScheduleConfig,
34+
UpdateJobDefinitionSecretRequest,
2935
)
3036
from .marshalling import (
37+
unmarshal_Secret,
3138
unmarshal_JobDefinition,
3239
unmarshal_JobRun,
40+
unmarshal_CreateJobDefinitionSecretsResponse,
41+
unmarshal_ListJobDefinitionSecretsResponse,
3342
unmarshal_ListJobDefinitionsResponse,
3443
unmarshal_ListJobRunsResponse,
3544
unmarshal_ListJobsResourcesResponse,
3645
unmarshal_StartJobDefinitionResponse,
3746
marshal_CreateJobDefinitionRequest,
47+
marshal_CreateJobDefinitionSecretsRequest,
3848
marshal_StartJobDefinitionRequest,
3949
marshal_UpdateJobDefinitionRequest,
50+
marshal_UpdateJobDefinitionSecretRequest,
4051
)
4152

4253

@@ -395,6 +406,216 @@ async def start_job_definition(
395406
self._throw_on_error(res)
396407
return unmarshal_StartJobDefinitionResponse(res.json())
397408

409+
async def create_job_definition_secrets(
410+
self,
411+
*,
412+
job_definition_id: str,
413+
secrets: List[CreateJobDefinitionSecretsRequestSecretConfig],
414+
region: Optional[Region] = None,
415+
) -> CreateJobDefinitionSecretsResponse:
416+
"""
417+
:param job_definition_id: UUID of the job definition to get.
418+
:param secrets: Secrets to inject into the job.
419+
:param region: Region to target. If none is passed will use default region from the config.
420+
:return: :class:`CreateJobDefinitionSecretsResponse <CreateJobDefinitionSecretsResponse>`
421+
422+
Usage:
423+
::
424+
425+
result = await api.create_job_definition_secrets(
426+
job_definition_id="example",
427+
secrets=[],
428+
)
429+
"""
430+
431+
param_region = validate_path_param(
432+
"region", region or self.client.default_region
433+
)
434+
param_job_definition_id = validate_path_param(
435+
"job_definition_id", job_definition_id
436+
)
437+
438+
res = self._request(
439+
"POST",
440+
f"/serverless-jobs/v1alpha1/regions/{param_region}/job-definitions/{param_job_definition_id}/secrets",
441+
body=marshal_CreateJobDefinitionSecretsRequest(
442+
CreateJobDefinitionSecretsRequest(
443+
job_definition_id=job_definition_id,
444+
secrets=secrets,
445+
region=region,
446+
),
447+
self.client,
448+
),
449+
)
450+
451+
self._throw_on_error(res)
452+
return unmarshal_CreateJobDefinitionSecretsResponse(res.json())
453+
454+
async def get_job_definition_secret(
455+
self,
456+
*,
457+
job_definition_id: str,
458+
secret_id: str,
459+
region: Optional[Region] = None,
460+
) -> Secret:
461+
"""
462+
:param job_definition_id:
463+
:param secret_id:
464+
:param region: Region to target. If none is passed will use default region from the config.
465+
:return: :class:`Secret <Secret>`
466+
467+
Usage:
468+
::
469+
470+
result = await api.get_job_definition_secret(
471+
job_definition_id="example",
472+
secret_id="example",
473+
)
474+
"""
475+
476+
param_region = validate_path_param(
477+
"region", region or self.client.default_region
478+
)
479+
param_job_definition_id = validate_path_param(
480+
"job_definition_id", job_definition_id
481+
)
482+
param_secret_id = validate_path_param("secret_id", secret_id)
483+
484+
res = self._request(
485+
"GET",
486+
f"/serverless-jobs/v1alpha1/regions/{param_region}/job-definitions/{param_job_definition_id}/secrets/{param_secret_id}",
487+
)
488+
489+
self._throw_on_error(res)
490+
return unmarshal_Secret(res.json())
491+
492+
async def list_job_definition_secrets(
493+
self,
494+
*,
495+
job_definition_id: str,
496+
region: Optional[Region] = None,
497+
) -> ListJobDefinitionSecretsResponse:
498+
"""
499+
:param job_definition_id:
500+
:param region: Region to target. If none is passed will use default region from the config.
501+
:return: :class:`ListJobDefinitionSecretsResponse <ListJobDefinitionSecretsResponse>`
502+
503+
Usage:
504+
::
505+
506+
result = await api.list_job_definition_secrets(
507+
job_definition_id="example",
508+
)
509+
"""
510+
511+
param_region = validate_path_param(
512+
"region", region or self.client.default_region
513+
)
514+
param_job_definition_id = validate_path_param(
515+
"job_definition_id", job_definition_id
516+
)
517+
518+
res = self._request(
519+
"GET",
520+
f"/serverless-jobs/v1alpha1/regions/{param_region}/job-definitions/{param_job_definition_id}/secrets",
521+
)
522+
523+
self._throw_on_error(res)
524+
return unmarshal_ListJobDefinitionSecretsResponse(res.json())
525+
526+
async def update_job_definition_secret(
527+
self,
528+
*,
529+
job_definition_id: str,
530+
secret_id: str,
531+
region: Optional[Region] = None,
532+
secret_manager_version: Optional[str] = None,
533+
path: Optional[str] = None,
534+
env_var_name: Optional[str] = None,
535+
) -> Secret:
536+
"""
537+
:param job_definition_id:
538+
:param secret_id:
539+
:param region: Region to target. If none is passed will use default region from the config.
540+
:param secret_manager_version:
541+
:param path:
542+
One-Of ('secret_config'): at most one of 'path', 'env_var_name' could be set.
543+
:param env_var_name:
544+
One-Of ('secret_config'): at most one of 'path', 'env_var_name' could be set.
545+
:return: :class:`Secret <Secret>`
546+
547+
Usage:
548+
::
549+
550+
result = await api.update_job_definition_secret(
551+
job_definition_id="example",
552+
secret_id="example",
553+
)
554+
"""
555+
556+
param_region = validate_path_param(
557+
"region", region or self.client.default_region
558+
)
559+
param_job_definition_id = validate_path_param(
560+
"job_definition_id", job_definition_id
561+
)
562+
param_secret_id = validate_path_param("secret_id", secret_id)
563+
564+
res = self._request(
565+
"PATCH",
566+
f"/serverless-jobs/v1alpha1/regions/{param_region}/job-definitions/{param_job_definition_id}/secrets/{param_secret_id}",
567+
body=marshal_UpdateJobDefinitionSecretRequest(
568+
UpdateJobDefinitionSecretRequest(
569+
job_definition_id=job_definition_id,
570+
secret_id=secret_id,
571+
region=region,
572+
secret_manager_version=secret_manager_version,
573+
path=path,
574+
env_var_name=env_var_name,
575+
),
576+
self.client,
577+
),
578+
)
579+
580+
self._throw_on_error(res)
581+
return unmarshal_Secret(res.json())
582+
583+
async def delete_job_definition_secret(
584+
self,
585+
*,
586+
job_definition_id: str,
587+
secret_id: str,
588+
region: Optional[Region] = None,
589+
) -> None:
590+
"""
591+
:param job_definition_id:
592+
:param secret_id:
593+
:param region: Region to target. If none is passed will use default region from the config.
594+
595+
Usage:
596+
::
597+
598+
result = await api.delete_job_definition_secret(
599+
job_definition_id="example",
600+
secret_id="example",
601+
)
602+
"""
603+
604+
param_region = validate_path_param(
605+
"region", region or self.client.default_region
606+
)
607+
param_job_definition_id = validate_path_param(
608+
"job_definition_id", job_definition_id
609+
)
610+
param_secret_id = validate_path_param("secret_id", secret_id)
611+
612+
res = self._request(
613+
"DELETE",
614+
f"/serverless-jobs/v1alpha1/regions/{param_region}/job-definitions/{param_job_definition_id}/secrets/{param_secret_id}",
615+
)
616+
617+
self._throw_on_error(res)
618+
398619
async def get_job_run(
399620
self,
400621
*,

0 commit comments

Comments
 (0)