Skip to content

feat(serverless_jobs): enable sdk for secrets #683

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Oct 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions scaleway-async/scaleway_async/jobs/v1alpha1/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,26 @@
from .content import JOB_RUN_TRANSIENT_STATUSES
from .types import ListJobDefinitionsRequestOrderBy
from .types import ListJobRunsRequestOrderBy
from .types import SecretEnvVar
from .types import SecretFile
from .types import CronSchedule
from .types import CreateJobDefinitionRequestCronScheduleConfig
from .types import CreateJobDefinitionSecretsRequestSecretConfig
from .types import Secret
from .types import JobDefinition
from .types import JobRun
from .types import Resource
from .types import UpdateJobDefinitionRequestCronScheduleConfig
from .types import CreateJobDefinitionRequest
from .types import CreateJobDefinitionSecretsRequest
from .types import CreateJobDefinitionSecretsResponse
from .types import DeleteJobDefinitionRequest
from .types import DeleteJobDefinitionSecretRequest
from .types import GetJobDefinitionRequest
from .types import GetJobDefinitionSecretRequest
from .types import GetJobRunRequest
from .types import ListJobDefinitionSecretsRequest
from .types import ListJobDefinitionSecretsResponse
from .types import ListJobDefinitionsRequest
from .types import ListJobDefinitionsResponse
from .types import ListJobRunsRequest
Expand All @@ -24,23 +34,34 @@
from .types import StartJobDefinitionResponse
from .types import StopJobRunRequest
from .types import UpdateJobDefinitionRequest
from .types import UpdateJobDefinitionSecretRequest
from .api import JobsV1Alpha1API

__all__ = [
"JobRunState",
"JOB_RUN_TRANSIENT_STATUSES",
"ListJobDefinitionsRequestOrderBy",
"ListJobRunsRequestOrderBy",
"SecretEnvVar",
"SecretFile",
"CronSchedule",
"CreateJobDefinitionRequestCronScheduleConfig",
"CreateJobDefinitionSecretsRequestSecretConfig",
"Secret",
"JobDefinition",
"JobRun",
"Resource",
"UpdateJobDefinitionRequestCronScheduleConfig",
"CreateJobDefinitionRequest",
"CreateJobDefinitionSecretsRequest",
"CreateJobDefinitionSecretsResponse",
"DeleteJobDefinitionRequest",
"DeleteJobDefinitionSecretRequest",
"GetJobDefinitionRequest",
"GetJobDefinitionSecretRequest",
"GetJobRunRequest",
"ListJobDefinitionSecretsRequest",
"ListJobDefinitionSecretsResponse",
"ListJobDefinitionsRequest",
"ListJobDefinitionsResponse",
"ListJobRunsRequest",
Expand All @@ -51,5 +72,6 @@
"StartJobDefinitionResponse",
"StopJobRunRequest",
"UpdateJobDefinitionRequest",
"UpdateJobDefinitionSecretRequest",
"JobsV1Alpha1API",
]
221 changes: 221 additions & 0 deletions scaleway-async/scaleway_async/jobs/v1alpha1/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,26 +17,37 @@
ListJobRunsRequestOrderBy,
CreateJobDefinitionRequest,
CreateJobDefinitionRequestCronScheduleConfig,
CreateJobDefinitionSecretsRequest,
CreateJobDefinitionSecretsRequestSecretConfig,
CreateJobDefinitionSecretsResponse,
JobDefinition,
JobRun,
ListJobDefinitionSecretsResponse,
ListJobDefinitionsResponse,
ListJobRunsResponse,
ListJobsResourcesResponse,
Secret,
StartJobDefinitionRequest,
StartJobDefinitionResponse,
UpdateJobDefinitionRequest,
UpdateJobDefinitionRequestCronScheduleConfig,
UpdateJobDefinitionSecretRequest,
)
from .marshalling import (
unmarshal_Secret,
unmarshal_JobDefinition,
unmarshal_JobRun,
unmarshal_CreateJobDefinitionSecretsResponse,
unmarshal_ListJobDefinitionSecretsResponse,
unmarshal_ListJobDefinitionsResponse,
unmarshal_ListJobRunsResponse,
unmarshal_ListJobsResourcesResponse,
unmarshal_StartJobDefinitionResponse,
marshal_CreateJobDefinitionRequest,
marshal_CreateJobDefinitionSecretsRequest,
marshal_StartJobDefinitionRequest,
marshal_UpdateJobDefinitionRequest,
marshal_UpdateJobDefinitionSecretRequest,
)


Expand Down Expand Up @@ -395,6 +406,216 @@ async def start_job_definition(
self._throw_on_error(res)
return unmarshal_StartJobDefinitionResponse(res.json())

async def create_job_definition_secrets(
self,
*,
job_definition_id: str,
secrets: List[CreateJobDefinitionSecretsRequestSecretConfig],
region: Optional[Region] = None,
) -> CreateJobDefinitionSecretsResponse:
"""
:param job_definition_id: UUID of the job definition to get.
:param secrets: Secrets to inject into the job.
:param region: Region to target. If none is passed will use default region from the config.
:return: :class:`CreateJobDefinitionSecretsResponse <CreateJobDefinitionSecretsResponse>`

Usage:
::

result = await api.create_job_definition_secrets(
job_definition_id="example",
secrets=[],
)
"""

param_region = validate_path_param(
"region", region or self.client.default_region
)
param_job_definition_id = validate_path_param(
"job_definition_id", job_definition_id
)

res = self._request(
"POST",
f"/serverless-jobs/v1alpha1/regions/{param_region}/job-definitions/{param_job_definition_id}/secrets",
body=marshal_CreateJobDefinitionSecretsRequest(
CreateJobDefinitionSecretsRequest(
job_definition_id=job_definition_id,
secrets=secrets,
region=region,
),
self.client,
),
)

self._throw_on_error(res)
return unmarshal_CreateJobDefinitionSecretsResponse(res.json())

async def get_job_definition_secret(
self,
*,
job_definition_id: str,
secret_id: str,
region: Optional[Region] = None,
) -> Secret:
"""
:param job_definition_id:
:param secret_id:
:param region: Region to target. If none is passed will use default region from the config.
:return: :class:`Secret <Secret>`

Usage:
::

result = await api.get_job_definition_secret(
job_definition_id="example",
secret_id="example",
)
"""

param_region = validate_path_param(
"region", region or self.client.default_region
)
param_job_definition_id = validate_path_param(
"job_definition_id", job_definition_id
)
param_secret_id = validate_path_param("secret_id", secret_id)

res = self._request(
"GET",
f"/serverless-jobs/v1alpha1/regions/{param_region}/job-definitions/{param_job_definition_id}/secrets/{param_secret_id}",
)

self._throw_on_error(res)
return unmarshal_Secret(res.json())

async def list_job_definition_secrets(
self,
*,
job_definition_id: str,
region: Optional[Region] = None,
) -> ListJobDefinitionSecretsResponse:
"""
:param job_definition_id:
:param region: Region to target. If none is passed will use default region from the config.
:return: :class:`ListJobDefinitionSecretsResponse <ListJobDefinitionSecretsResponse>`

Usage:
::

result = await api.list_job_definition_secrets(
job_definition_id="example",
)
"""

param_region = validate_path_param(
"region", region or self.client.default_region
)
param_job_definition_id = validate_path_param(
"job_definition_id", job_definition_id
)

res = self._request(
"GET",
f"/serverless-jobs/v1alpha1/regions/{param_region}/job-definitions/{param_job_definition_id}/secrets",
)

self._throw_on_error(res)
return unmarshal_ListJobDefinitionSecretsResponse(res.json())

async def update_job_definition_secret(
self,
*,
job_definition_id: str,
secret_id: str,
region: Optional[Region] = None,
secret_manager_version: Optional[str] = None,
path: Optional[str] = None,
env_var_name: Optional[str] = None,
) -> Secret:
"""
:param job_definition_id:
:param secret_id:
:param region: Region to target. If none is passed will use default region from the config.
:param secret_manager_version:
:param path:
One-Of ('secret_config'): at most one of 'path', 'env_var_name' could be set.
:param env_var_name:
One-Of ('secret_config'): at most one of 'path', 'env_var_name' could be set.
:return: :class:`Secret <Secret>`

Usage:
::

result = await api.update_job_definition_secret(
job_definition_id="example",
secret_id="example",
)
"""

param_region = validate_path_param(
"region", region or self.client.default_region
)
param_job_definition_id = validate_path_param(
"job_definition_id", job_definition_id
)
param_secret_id = validate_path_param("secret_id", secret_id)

res = self._request(
"PATCH",
f"/serverless-jobs/v1alpha1/regions/{param_region}/job-definitions/{param_job_definition_id}/secrets/{param_secret_id}",
body=marshal_UpdateJobDefinitionSecretRequest(
UpdateJobDefinitionSecretRequest(
job_definition_id=job_definition_id,
secret_id=secret_id,
region=region,
secret_manager_version=secret_manager_version,
path=path,
env_var_name=env_var_name,
),
self.client,
),
)

self._throw_on_error(res)
return unmarshal_Secret(res.json())

async def delete_job_definition_secret(
self,
*,
job_definition_id: str,
secret_id: str,
region: Optional[Region] = None,
) -> None:
"""
:param job_definition_id:
:param secret_id:
:param region: Region to target. If none is passed will use default region from the config.

Usage:
::

result = await api.delete_job_definition_secret(
job_definition_id="example",
secret_id="example",
)
"""

param_region = validate_path_param(
"region", region or self.client.default_region
)
param_job_definition_id = validate_path_param(
"job_definition_id", job_definition_id
)
param_secret_id = validate_path_param("secret_id", secret_id)

res = self._request(
"DELETE",
f"/serverless-jobs/v1alpha1/regions/{param_region}/job-definitions/{param_job_definition_id}/secrets/{param_secret_id}",
)

self._throw_on_error(res)

async def get_job_run(
self,
*,
Expand Down
Loading