Skip to content

Commit

Permalink
feat(secret): add ephemeral policy (#403)
Browse files Browse the repository at this point in the history
  • Loading branch information
scaleway-bot authored Dec 26, 2023
1 parent f2d1d78 commit 5b98b20
Show file tree
Hide file tree
Showing 8 changed files with 408 additions and 100 deletions.
8 changes: 6 additions & 2 deletions scaleway-async/scaleway_async/secret/v1alpha1/__init__.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
# This file was automatically generated. DO NOT EDIT.
# If you have any remark or suggestion do not hesitate to open an issue.
from .types import EphemeralPolicyAction
from .types import ListFoldersRequestOrderBy
from .types import ListSecretsRequestOrderBy
from .types import Product
from .types import SecretEphemeralAction
from .types import SecretStatus
from .types import SecretType
from .types import SecretVersionStatus
from .types import AccessSecretVersionResponse
from .types import EphemeralPolicy
from .types import EphemeralStatus
from .types import Folder
from .types import ListFoldersResponse
from .types import ListSecretVersionsResponse
Expand All @@ -19,14 +21,16 @@
from .api import SecretV1Alpha1API

__all__ = [
"EphemeralPolicyAction",
"ListFoldersRequestOrderBy",
"ListSecretsRequestOrderBy",
"Product",
"SecretEphemeralAction",
"SecretStatus",
"SecretType",
"SecretVersionStatus",
"AccessSecretVersionResponse",
"EphemeralPolicy",
"EphemeralStatus",
"Folder",
"ListFoldersResponse",
"ListSecretVersionsResponse",
Expand Down
26 changes: 15 additions & 11 deletions scaleway-async/scaleway_async/secret/v1alpha1/api.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
# This file was automatically generated. DO NOT EDIT.
# If you have any remark or suggestion do not hesitate to open an issue.

from datetime import datetime
from typing import List, Optional

from scaleway_core.api import API
Expand All @@ -16,10 +15,11 @@
ListFoldersRequestOrderBy,
ListSecretsRequestOrderBy,
Product,
SecretEphemeralAction,
SecretType,
SecretVersionStatus,
AccessSecretVersionResponse,
EphemeralPolicy,
EphemeralStatus,
Folder,
ListFoldersResponse,
ListSecretVersionsResponse,
Expand Down Expand Up @@ -68,13 +68,12 @@ async def create_secret(
*,
name: str,
type_: SecretType,
ephemeral_action: SecretEphemeralAction,
region: Optional[Region] = None,
project_id: Optional[str] = None,
tags: Optional[List[str]] = None,
description: Optional[str] = None,
path: Optional[str] = None,
expires_at: Optional[datetime] = None,
ephemeral_policy_template: Optional[EphemeralPolicy] = None,
) -> Secret:
"""
Create a secret.
Expand All @@ -88,9 +87,8 @@ async def create_secret(
(Optional.) See `Secret.Type` enum for description of values. If not specified, the type is `Opaque`.
:param path: Path of the secret.
(Optional.) Location of the secret in the directory structure. If not specified, the path is `/`.
:param expires_at: Expiration date of the secret.
(Optional.) Date on which the secret will be deleted or deactivated.
:param ephemeral_action: Action to be taken when the secret expires.
:param ephemeral_policy_template: Ephemeral policy of the secret.
(Optional.) Policy that defines whether/when a secret's versions expire. By default, the policy is applied to all the secret's versions.
:return: :class:`Secret <Secret>`
Usage:
Expand All @@ -99,7 +97,6 @@ async def create_secret(
result = await api.create_secret(
name="example",
type_=unknown_secret_type,
ephemeral_action=unknown_ephemeral_action,
)
"""

Expand All @@ -114,13 +111,12 @@ async def create_secret(
CreateSecretRequest(
name=name,
type_=type_,
ephemeral_action=ephemeral_action,
region=region,
project_id=project_id,
tags=tags,
description=description,
path=path,
expires_at=expires_at,
ephemeral_policy_template=ephemeral_policy_template,
),
self.client,
),
Expand Down Expand Up @@ -257,17 +253,20 @@ async def update_secret(
tags: Optional[List[str]] = None,
description: Optional[str] = None,
path: Optional[str] = None,
ephemeral_policy_template: Optional[EphemeralPolicy] = None,
) -> Secret:
"""
Update metadata of a secret.
Edit a secret's metadata such as name, tag(s) and description. The secret to update is specified by the `secret_id` and `region` parameters.
Edit a secret's metadata such as name, tag(s), description and ephemeral policy. The secret to update is specified by the `secret_id` and `region` parameters.
:param region: Region to target. If none is passed will use default region from the config.
:param secret_id: ID of the secret.
:param name: Secret's updated name (optional).
:param tags: Secret's updated list of tags (optional).
:param description: Description of the secret.
:param path: Path of the folder.
(Optional.) Location of the folder in the directory structure. If not specified, the path is `/`.
:param ephemeral_policy_template: Ephemeral policy of the secret.
(Optional.) Policy that defines whether/when a secret's versions expire.
:return: :class:`Secret <Secret>`
Usage:
Expand All @@ -292,6 +291,7 @@ async def update_secret(
tags=tags,
description=description,
path=path,
ephemeral_policy_template=ephemeral_policy_template,
),
self.client,
),
Expand Down Expand Up @@ -905,6 +905,7 @@ async def update_secret_version(
revision: str,
region: Optional[Region] = None,
description: Optional[str] = None,
ephemeral_status: Optional[EphemeralStatus] = None,
) -> SecretVersion:
"""
Update metadata of a version.
Expand All @@ -917,6 +918,8 @@ async def update_secret_version(
- "latest" (the latest revision)
- "latest_enabled" (the latest enabled revision).
:param description: Description of the version.
:param ephemeral_status: Ephemeral status of the version.
(Optional.) Status that defines the version's expiration date, whether it expires after being accessed once, and the action to perform (disable or delete) once the version expires.
:return: :class:`SecretVersion <SecretVersion>`
Usage:
Expand All @@ -943,6 +946,7 @@ async def update_secret_version(
revision=revision,
region=region,
description=description,
ephemeral_status=ephemeral_status,
),
self.client,
),
Expand Down
113 changes: 102 additions & 11 deletions scaleway-async/scaleway_async/secret/v1alpha1/marshalling.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,12 @@
)
from dateutil import parser
from .types import (
EphemeralPolicyAction,
Product,
SecretEphemeralAction,
SecretType,
AccessSecretVersionResponse,
EphemeralPolicy,
EphemeralStatus,
Folder,
ListFoldersResponse,
ListSecretVersionsResponse,
Expand All @@ -32,6 +34,46 @@
)


def unmarshal_EphemeralPolicy(data: Any) -> EphemeralPolicy:
if type(data) is not dict:
raise TypeError(
f"Unmarshalling the type 'EphemeralPolicy' failed as data isn't a dictionary."
)

args: Dict[str, Any] = {}

field = data.get("action", None)
args["action"] = field

field = data.get("expires_once_accessed", None)
args["expires_once_accessed"] = field

field = data.get("time_to_live", None)
args["time_to_live"] = field

return EphemeralPolicy(**args)


def unmarshal_EphemeralStatus(data: Any) -> EphemeralStatus:
if type(data) is not dict:
raise TypeError(
f"Unmarshalling the type 'EphemeralStatus' failed as data isn't a dictionary."
)

args: Dict[str, Any] = {}

field = data.get("action", None)
args["action"] = field

field = data.get("expires_at", None)
args["expires_at"] = parser.isoparse(field) if type(field) is str else field

field = data.get("expires_once_accessed", None)
args["expires_once_accessed"] = field

return EphemeralStatus(**args)


def unmarshal_Folder(data: Any) -> Folder:
if type(data) is not dict:
raise TypeError(
Expand Down Expand Up @@ -75,11 +117,10 @@ def unmarshal_Secret(data: Any) -> Secret:
field = data.get("description", None)
args["description"] = field

field = data.get("ephemeral_action", None)
args["ephemeral_action"] = field

field = data.get("expires_at", None)
args["expires_at"] = parser.isoparse(field) if type(field) is str else field
field = data.get("ephemeral_policy_template", None)
args["ephemeral_policy_template"] = (
unmarshal_EphemeralPolicy(field) if field is not None else None
)

field = data.get("id", None)
args["id"] = field
Expand Down Expand Up @@ -134,6 +175,11 @@ def unmarshal_SecretVersion(data: Any) -> SecretVersion:
field = data.get("description", None)
args["description"] = field

field = data.get("ephemeral_status", None)
args["ephemeral_status"] = (
unmarshal_EphemeralStatus(field) if field is not None else None
)

field = data.get("is_latest", None)
args["is_latest"] = field

Expand Down Expand Up @@ -249,6 +295,42 @@ def unmarshal_ListTagsResponse(data: Any) -> ListTagsResponse:
return ListTagsResponse(**args)


def marshal_EphemeralPolicy(
request: EphemeralPolicy,
defaults: ProfileDefaults,
) -> Dict[str, Any]:
output: Dict[str, Any] = {}

if request.action is not None:
output["action"] = EphemeralPolicyAction(request.action)

if request.expires_once_accessed is not None:
output["expires_once_accessed"] = request.expires_once_accessed

if request.time_to_live is not None:
output["time_to_live"] = request.time_to_live

return output


def marshal_EphemeralStatus(
request: EphemeralStatus,
defaults: ProfileDefaults,
) -> Dict[str, Any]:
output: Dict[str, Any] = {}

if request.action is not None:
output["action"] = EphemeralPolicyAction(request.action)

if request.expires_at is not None:
output["expires_at"] = request.expires_at.astimezone().isoformat()

if request.expires_once_accessed is not None:
output["expires_once_accessed"] = request.expires_once_accessed

return output


def marshal_PasswordGenerationParams(
request: PasswordGenerationParams,
defaults: ProfileDefaults,
Expand Down Expand Up @@ -315,11 +397,10 @@ def marshal_CreateSecretRequest(
if request.description is not None:
output["description"] = request.description

if request.ephemeral_action is not None:
output["ephemeral_action"] = SecretEphemeralAction(request.ephemeral_action)

if request.expires_at is not None:
output["expires_at"] = request.expires_at.astimezone().isoformat()
if request.ephemeral_policy_template is not None:
output["ephemeral_policy_template"] = marshal_EphemeralPolicy(
request.ephemeral_policy_template, defaults
)

if request.name is not None:
output["name"] = request.name
Expand Down Expand Up @@ -413,6 +494,11 @@ def marshal_UpdateSecretRequest(
if request.description is not None:
output["description"] = request.description

if request.ephemeral_policy_template is not None:
output["ephemeral_policy_template"] = marshal_EphemeralPolicy(
request.ephemeral_policy_template, defaults
)

if request.name is not None:
output["name"] = request.name

Expand All @@ -434,4 +520,9 @@ def marshal_UpdateSecretVersionRequest(
if request.description is not None:
output["description"] = request.description

if request.ephemeral_status is not None:
output["ephemeral_status"] = marshal_EphemeralStatus(
request.ephemeral_status, defaults
)

return output
Loading

0 comments on commit 5b98b20

Please sign in to comment.