Skip to content

Commit

Permalink
feat(secret_manager): add AccessSecretVersionByPath endpoint (#491)
Browse files Browse the repository at this point in the history
  • Loading branch information
scaleway-bot authored Apr 11, 2024
1 parent a813285 commit ff57694
Show file tree
Hide file tree
Showing 6 changed files with 166 additions and 0 deletions.
2 changes: 2 additions & 0 deletions scaleway-async/scaleway_async/secret/v1beta1/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
from .types import BrowseSecretsResponseItem
from .types import SecretVersion
from .types import Secret
from .types import AccessSecretVersionByPathRequest
from .types import AccessSecretVersionRequest
from .types import AccessSecretVersionResponse
from .types import AddSecretOwnerRequest
Expand Down Expand Up @@ -57,6 +58,7 @@
"BrowseSecretsResponseItem",
"SecretVersion",
"Secret",
"AccessSecretVersionByPathRequest",
"AccessSecretVersionRequest",
"AccessSecretVersionResponse",
"AddSecretOwnerRequest",
Expand Down
50 changes: 50 additions & 0 deletions scaleway-async/scaleway_async/secret/v1beta1/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -832,6 +832,56 @@ async def access_secret_version(
self._throw_on_error(res)
return unmarshal_AccessSecretVersionResponse(res.json())

async def access_secret_version_by_path(
self,
*,
secret_path: str,
secret_name: str,
revision: str,
region: Optional[Region] = None,
project_id: Optional[str] = None,
) -> AccessSecretVersionResponse:
"""
Access a secret's version using the secret's name and path.
Access sensitive data in a secret's version specified by the `region`, `secret_name`, `secret_path` and `revision` parameters.
:param secret_path: Secret's path.
:param secret_name: Secret's name.
:param revision: The first version of the secret is numbered 1, and all subsequent revisions augment by 1. Value can be either:
- an integer (the revision number)
- "latest" (the latest revision)
- "latest_enabled" (the latest enabled revision).
:param region: Region to target. If none is passed will use default region from the config.
:param project_id: ID of the Project to target.
:return: :class:`AccessSecretVersionResponse <AccessSecretVersionResponse>`
Usage:
::
result = await api.access_secret_version_by_path(
secret_path="example",
secret_name="example",
revision="example",
)
"""

param_region = validate_path_param(
"region", region or self.client.default_region
)
param_revision = validate_path_param("revision", revision)

res = self._request(
"GET",
f"/secret-manager/v1beta1/regions/{param_region}/secrets-by-path/versions/{param_revision}/access",
params={
"project_id": project_id or self.client.default_project_id,
"secret_name": secret_name,
"secret_path": secret_path,
},
)

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

async def enable_secret_version(
self,
*,
Expand Down
31 changes: 31 additions & 0 deletions scaleway-async/scaleway_async/secret/v1beta1/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -280,6 +280,37 @@ class Secret:
"""


@dataclass
class AccessSecretVersionByPathRequest:
secret_path: str
"""
Secret's path.
"""

secret_name: str
"""
Secret's name.
"""

revision: str
"""
The first version of the secret is numbered 1, and all subsequent revisions augment by 1. Value can be either:
- an integer (the revision number)
- "latest" (the latest revision)
- "latest_enabled" (the latest enabled revision).
"""

region: Optional[Region]
"""
Region to target. If none is passed will use default region from the config.
"""

project_id: Optional[str]
"""
ID of the Project to target.
"""


@dataclass
class AccessSecretVersionRequest:
secret_id: str
Expand Down
2 changes: 2 additions & 0 deletions scaleway/scaleway/secret/v1beta1/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
from .types import BrowseSecretsResponseItem
from .types import SecretVersion
from .types import Secret
from .types import AccessSecretVersionByPathRequest
from .types import AccessSecretVersionRequest
from .types import AccessSecretVersionResponse
from .types import AddSecretOwnerRequest
Expand Down Expand Up @@ -57,6 +58,7 @@
"BrowseSecretsResponseItem",
"SecretVersion",
"Secret",
"AccessSecretVersionByPathRequest",
"AccessSecretVersionRequest",
"AccessSecretVersionResponse",
"AddSecretOwnerRequest",
Expand Down
50 changes: 50 additions & 0 deletions scaleway/scaleway/secret/v1beta1/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -832,6 +832,56 @@ def access_secret_version(
self._throw_on_error(res)
return unmarshal_AccessSecretVersionResponse(res.json())

def access_secret_version_by_path(
self,
*,
secret_path: str,
secret_name: str,
revision: str,
region: Optional[Region] = None,
project_id: Optional[str] = None,
) -> AccessSecretVersionResponse:
"""
Access a secret's version using the secret's name and path.
Access sensitive data in a secret's version specified by the `region`, `secret_name`, `secret_path` and `revision` parameters.
:param secret_path: Secret's path.
:param secret_name: Secret's name.
:param revision: The first version of the secret is numbered 1, and all subsequent revisions augment by 1. Value can be either:
- an integer (the revision number)
- "latest" (the latest revision)
- "latest_enabled" (the latest enabled revision).
:param region: Region to target. If none is passed will use default region from the config.
:param project_id: ID of the Project to target.
:return: :class:`AccessSecretVersionResponse <AccessSecretVersionResponse>`
Usage:
::
result = api.access_secret_version_by_path(
secret_path="example",
secret_name="example",
revision="example",
)
"""

param_region = validate_path_param(
"region", region or self.client.default_region
)
param_revision = validate_path_param("revision", revision)

res = self._request(
"GET",
f"/secret-manager/v1beta1/regions/{param_region}/secrets-by-path/versions/{param_revision}/access",
params={
"project_id": project_id or self.client.default_project_id,
"secret_name": secret_name,
"secret_path": secret_path,
},
)

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

def enable_secret_version(
self,
*,
Expand Down
31 changes: 31 additions & 0 deletions scaleway/scaleway/secret/v1beta1/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -280,6 +280,37 @@ class Secret:
"""


@dataclass
class AccessSecretVersionByPathRequest:
secret_path: str
"""
Secret's path.
"""

secret_name: str
"""
Secret's name.
"""

revision: str
"""
The first version of the secret is numbered 1, and all subsequent revisions augment by 1. Value can be either:
- an integer (the revision number)
- "latest" (the latest revision)
- "latest_enabled" (the latest enabled revision).
"""

region: Optional[Region]
"""
Region to target. If none is passed will use default region from the config.
"""

project_id: Optional[str]
"""
ID of the Project to target.
"""


@dataclass
class AccessSecretVersionRequest:
secret_id: str
Expand Down

0 comments on commit ff57694

Please sign in to comment.