diff --git a/scaleway-async/scaleway_async/secret/v1beta1/__init__.py b/scaleway-async/scaleway_async/secret/v1beta1/__init__.py index b55546b45..531ccc836 100644 --- a/scaleway-async/scaleway_async/secret/v1beta1/__init__.py +++ b/scaleway-async/scaleway_async/secret/v1beta1/__init__.py @@ -39,6 +39,8 @@ from .types import ListTagsRequest from .types import ListTagsResponse from .types import ProtectSecretRequest +from .types import RestoreSecretRequest +from .types import RestoreSecretVersionRequest from .types import SSHKey from .types import UnprotectSecretRequest from .types import UpdateSecretRequest @@ -85,6 +87,8 @@ "ListTagsRequest", "ListTagsResponse", "ProtectSecretRequest", + "RestoreSecretRequest", + "RestoreSecretVersionRequest", "SSHKey", "UnprotectSecretRequest", "UpdateSecretRequest", diff --git a/scaleway-async/scaleway_async/secret/v1beta1/api.py b/scaleway-async/scaleway_async/secret/v1beta1/api.py index 212f05d92..ba9e33d19 100644 --- a/scaleway-async/scaleway_async/secret/v1beta1/api.py +++ b/scaleway-async/scaleway_async/secret/v1beta1/api.py @@ -1130,3 +1130,77 @@ async def list_secret_types_all( "page_size": page_size, }, ) + + async def restore_secret_version( + self, + *, + secret_id: str, + revision: str, + region: Optional[ScwRegion] = None, + ) -> SecretVersion: + """ + Restore a version. + Restore a secret's version specified by the `region`, `secret_id` and `revision` parameters. + :param secret_id: + :param revision: + :param region: Region to target. If none is passed will use default region from the config. + :return: :class:`SecretVersion ` + + Usage: + :: + + result = await api.restore_secret_version( + secret_id="example", + revision="example", + ) + """ + + param_region = validate_path_param( + "region", region or self.client.default_region + ) + param_secret_id = validate_path_param("secret_id", secret_id) + param_revision = validate_path_param("revision", revision) + + res = self._request( + "POST", + f"/secret-manager/v1beta1/regions/{param_region}/secrets/{param_secret_id}/versions/{param_revision}/restore", + body={}, + ) + + self._throw_on_error(res) + return unmarshal_SecretVersion(res.json()) + + async def restore_secret( + self, + *, + secret_id: str, + region: Optional[ScwRegion] = None, + ) -> Secret: + """ + Restore a secret. + Restore a secret and all its versions scheduled for deletion specified by the `region` and `secret_id` parameters. + :param secret_id: + :param region: Region to target. If none is passed will use default region from the config. + :return: :class:`Secret ` + + Usage: + :: + + result = await api.restore_secret( + secret_id="example", + ) + """ + + param_region = validate_path_param( + "region", region or self.client.default_region + ) + param_secret_id = validate_path_param("secret_id", secret_id) + + res = self._request( + "POST", + f"/secret-manager/v1beta1/regions/{param_region}/secrets/{param_secret_id}/restore", + body={}, + ) + + self._throw_on_error(res) + return unmarshal_Secret(res.json()) diff --git a/scaleway-async/scaleway_async/secret/v1beta1/types.py b/scaleway-async/scaleway_async/secret/v1beta1/types.py index a151422ed..fe66cfee0 100644 --- a/scaleway-async/scaleway_async/secret/v1beta1/types.py +++ b/scaleway-async/scaleway_async/secret/v1beta1/types.py @@ -866,6 +866,28 @@ class ProtectSecretRequest: """ +@dataclass +class RestoreSecretRequest: + secret_id: str + + region: Optional[ScwRegion] + """ + Region to target. If none is passed will use default region from the config. + """ + + +@dataclass +class RestoreSecretVersionRequest: + secret_id: str + + revision: str + + region: Optional[ScwRegion] + """ + Region to target. If none is passed will use default region from the config. + """ + + @dataclass class SSHKey: ssh_private_key: str diff --git a/scaleway/scaleway/secret/v1beta1/__init__.py b/scaleway/scaleway/secret/v1beta1/__init__.py index b55546b45..531ccc836 100644 --- a/scaleway/scaleway/secret/v1beta1/__init__.py +++ b/scaleway/scaleway/secret/v1beta1/__init__.py @@ -39,6 +39,8 @@ from .types import ListTagsRequest from .types import ListTagsResponse from .types import ProtectSecretRequest +from .types import RestoreSecretRequest +from .types import RestoreSecretVersionRequest from .types import SSHKey from .types import UnprotectSecretRequest from .types import UpdateSecretRequest @@ -85,6 +87,8 @@ "ListTagsRequest", "ListTagsResponse", "ProtectSecretRequest", + "RestoreSecretRequest", + "RestoreSecretVersionRequest", "SSHKey", "UnprotectSecretRequest", "UpdateSecretRequest", diff --git a/scaleway/scaleway/secret/v1beta1/api.py b/scaleway/scaleway/secret/v1beta1/api.py index 4f393f4a9..bbe3bce8a 100644 --- a/scaleway/scaleway/secret/v1beta1/api.py +++ b/scaleway/scaleway/secret/v1beta1/api.py @@ -1130,3 +1130,77 @@ def list_secret_types_all( "page_size": page_size, }, ) + + def restore_secret_version( + self, + *, + secret_id: str, + revision: str, + region: Optional[ScwRegion] = None, + ) -> SecretVersion: + """ + Restore a version. + Restore a secret's version specified by the `region`, `secret_id` and `revision` parameters. + :param secret_id: + :param revision: + :param region: Region to target. If none is passed will use default region from the config. + :return: :class:`SecretVersion ` + + Usage: + :: + + result = api.restore_secret_version( + secret_id="example", + revision="example", + ) + """ + + param_region = validate_path_param( + "region", region or self.client.default_region + ) + param_secret_id = validate_path_param("secret_id", secret_id) + param_revision = validate_path_param("revision", revision) + + res = self._request( + "POST", + f"/secret-manager/v1beta1/regions/{param_region}/secrets/{param_secret_id}/versions/{param_revision}/restore", + body={}, + ) + + self._throw_on_error(res) + return unmarshal_SecretVersion(res.json()) + + def restore_secret( + self, + *, + secret_id: str, + region: Optional[ScwRegion] = None, + ) -> Secret: + """ + Restore a secret. + Restore a secret and all its versions scheduled for deletion specified by the `region` and `secret_id` parameters. + :param secret_id: + :param region: Region to target. If none is passed will use default region from the config. + :return: :class:`Secret ` + + Usage: + :: + + result = api.restore_secret( + secret_id="example", + ) + """ + + param_region = validate_path_param( + "region", region or self.client.default_region + ) + param_secret_id = validate_path_param("secret_id", secret_id) + + res = self._request( + "POST", + f"/secret-manager/v1beta1/regions/{param_region}/secrets/{param_secret_id}/restore", + body={}, + ) + + self._throw_on_error(res) + return unmarshal_Secret(res.json()) diff --git a/scaleway/scaleway/secret/v1beta1/types.py b/scaleway/scaleway/secret/v1beta1/types.py index a151422ed..fe66cfee0 100644 --- a/scaleway/scaleway/secret/v1beta1/types.py +++ b/scaleway/scaleway/secret/v1beta1/types.py @@ -866,6 +866,28 @@ class ProtectSecretRequest: """ +@dataclass +class RestoreSecretRequest: + secret_id: str + + region: Optional[ScwRegion] + """ + Region to target. If none is passed will use default region from the config. + """ + + +@dataclass +class RestoreSecretVersionRequest: + secret_id: str + + revision: str + + region: Optional[ScwRegion] + """ + Region to target. If none is passed will use default region from the config. + """ + + @dataclass class SSHKey: ssh_private_key: str