Skip to content

Commit ad4a4b3

Browse files
authored
feat(secret_manager): display restore methods (scaleway#918)
1 parent b5082ec commit ad4a4b3

File tree

6 files changed

+200
-0
lines changed

6 files changed

+200
-0
lines changed

scaleway-async/scaleway_async/secret/v1beta1/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@
3939
from .types import ListTagsRequest
4040
from .types import ListTagsResponse
4141
from .types import ProtectSecretRequest
42+
from .types import RestoreSecretRequest
43+
from .types import RestoreSecretVersionRequest
4244
from .types import SSHKey
4345
from .types import UnprotectSecretRequest
4446
from .types import UpdateSecretRequest
@@ -85,6 +87,8 @@
8587
"ListTagsRequest",
8688
"ListTagsResponse",
8789
"ProtectSecretRequest",
90+
"RestoreSecretRequest",
91+
"RestoreSecretVersionRequest",
8892
"SSHKey",
8993
"UnprotectSecretRequest",
9094
"UpdateSecretRequest",

scaleway-async/scaleway_async/secret/v1beta1/api.py

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1130,3 +1130,77 @@ async def list_secret_types_all(
11301130
"page_size": page_size,
11311131
},
11321132
)
1133+
1134+
async def restore_secret_version(
1135+
self,
1136+
*,
1137+
secret_id: str,
1138+
revision: str,
1139+
region: Optional[ScwRegion] = None,
1140+
) -> SecretVersion:
1141+
"""
1142+
Restore a version.
1143+
Restore a secret's version specified by the `region`, `secret_id` and `revision` parameters.
1144+
:param secret_id:
1145+
:param revision:
1146+
:param region: Region to target. If none is passed will use default region from the config.
1147+
:return: :class:`SecretVersion <SecretVersion>`
1148+
1149+
Usage:
1150+
::
1151+
1152+
result = await api.restore_secret_version(
1153+
secret_id="example",
1154+
revision="example",
1155+
)
1156+
"""
1157+
1158+
param_region = validate_path_param(
1159+
"region", region or self.client.default_region
1160+
)
1161+
param_secret_id = validate_path_param("secret_id", secret_id)
1162+
param_revision = validate_path_param("revision", revision)
1163+
1164+
res = self._request(
1165+
"POST",
1166+
f"/secret-manager/v1beta1/regions/{param_region}/secrets/{param_secret_id}/versions/{param_revision}/restore",
1167+
body={},
1168+
)
1169+
1170+
self._throw_on_error(res)
1171+
return unmarshal_SecretVersion(res.json())
1172+
1173+
async def restore_secret(
1174+
self,
1175+
*,
1176+
secret_id: str,
1177+
region: Optional[ScwRegion] = None,
1178+
) -> Secret:
1179+
"""
1180+
Restore a secret.
1181+
Restore a secret and all its versions scheduled for deletion specified by the `region` and `secret_id` parameters.
1182+
:param secret_id:
1183+
:param region: Region to target. If none is passed will use default region from the config.
1184+
:return: :class:`Secret <Secret>`
1185+
1186+
Usage:
1187+
::
1188+
1189+
result = await api.restore_secret(
1190+
secret_id="example",
1191+
)
1192+
"""
1193+
1194+
param_region = validate_path_param(
1195+
"region", region or self.client.default_region
1196+
)
1197+
param_secret_id = validate_path_param("secret_id", secret_id)
1198+
1199+
res = self._request(
1200+
"POST",
1201+
f"/secret-manager/v1beta1/regions/{param_region}/secrets/{param_secret_id}/restore",
1202+
body={},
1203+
)
1204+
1205+
self._throw_on_error(res)
1206+
return unmarshal_Secret(res.json())

scaleway-async/scaleway_async/secret/v1beta1/types.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -866,6 +866,28 @@ class ProtectSecretRequest:
866866
"""
867867

868868

869+
@dataclass
870+
class RestoreSecretRequest:
871+
secret_id: str
872+
873+
region: Optional[ScwRegion]
874+
"""
875+
Region to target. If none is passed will use default region from the config.
876+
"""
877+
878+
879+
@dataclass
880+
class RestoreSecretVersionRequest:
881+
secret_id: str
882+
883+
revision: str
884+
885+
region: Optional[ScwRegion]
886+
"""
887+
Region to target. If none is passed will use default region from the config.
888+
"""
889+
890+
869891
@dataclass
870892
class SSHKey:
871893
ssh_private_key: str

scaleway/scaleway/secret/v1beta1/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@
3939
from .types import ListTagsRequest
4040
from .types import ListTagsResponse
4141
from .types import ProtectSecretRequest
42+
from .types import RestoreSecretRequest
43+
from .types import RestoreSecretVersionRequest
4244
from .types import SSHKey
4345
from .types import UnprotectSecretRequest
4446
from .types import UpdateSecretRequest
@@ -85,6 +87,8 @@
8587
"ListTagsRequest",
8688
"ListTagsResponse",
8789
"ProtectSecretRequest",
90+
"RestoreSecretRequest",
91+
"RestoreSecretVersionRequest",
8892
"SSHKey",
8993
"UnprotectSecretRequest",
9094
"UpdateSecretRequest",

scaleway/scaleway/secret/v1beta1/api.py

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1130,3 +1130,77 @@ def list_secret_types_all(
11301130
"page_size": page_size,
11311131
},
11321132
)
1133+
1134+
def restore_secret_version(
1135+
self,
1136+
*,
1137+
secret_id: str,
1138+
revision: str,
1139+
region: Optional[ScwRegion] = None,
1140+
) -> SecretVersion:
1141+
"""
1142+
Restore a version.
1143+
Restore a secret's version specified by the `region`, `secret_id` and `revision` parameters.
1144+
:param secret_id:
1145+
:param revision:
1146+
:param region: Region to target. If none is passed will use default region from the config.
1147+
:return: :class:`SecretVersion <SecretVersion>`
1148+
1149+
Usage:
1150+
::
1151+
1152+
result = api.restore_secret_version(
1153+
secret_id="example",
1154+
revision="example",
1155+
)
1156+
"""
1157+
1158+
param_region = validate_path_param(
1159+
"region", region or self.client.default_region
1160+
)
1161+
param_secret_id = validate_path_param("secret_id", secret_id)
1162+
param_revision = validate_path_param("revision", revision)
1163+
1164+
res = self._request(
1165+
"POST",
1166+
f"/secret-manager/v1beta1/regions/{param_region}/secrets/{param_secret_id}/versions/{param_revision}/restore",
1167+
body={},
1168+
)
1169+
1170+
self._throw_on_error(res)
1171+
return unmarshal_SecretVersion(res.json())
1172+
1173+
def restore_secret(
1174+
self,
1175+
*,
1176+
secret_id: str,
1177+
region: Optional[ScwRegion] = None,
1178+
) -> Secret:
1179+
"""
1180+
Restore a secret.
1181+
Restore a secret and all its versions scheduled for deletion specified by the `region` and `secret_id` parameters.
1182+
:param secret_id:
1183+
:param region: Region to target. If none is passed will use default region from the config.
1184+
:return: :class:`Secret <Secret>`
1185+
1186+
Usage:
1187+
::
1188+
1189+
result = api.restore_secret(
1190+
secret_id="example",
1191+
)
1192+
"""
1193+
1194+
param_region = validate_path_param(
1195+
"region", region or self.client.default_region
1196+
)
1197+
param_secret_id = validate_path_param("secret_id", secret_id)
1198+
1199+
res = self._request(
1200+
"POST",
1201+
f"/secret-manager/v1beta1/regions/{param_region}/secrets/{param_secret_id}/restore",
1202+
body={},
1203+
)
1204+
1205+
self._throw_on_error(res)
1206+
return unmarshal_Secret(res.json())

scaleway/scaleway/secret/v1beta1/types.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -866,6 +866,28 @@ class ProtectSecretRequest:
866866
"""
867867

868868

869+
@dataclass
870+
class RestoreSecretRequest:
871+
secret_id: str
872+
873+
region: Optional[ScwRegion]
874+
"""
875+
Region to target. If none is passed will use default region from the config.
876+
"""
877+
878+
879+
@dataclass
880+
class RestoreSecretVersionRequest:
881+
secret_id: str
882+
883+
revision: str
884+
885+
region: Optional[ScwRegion]
886+
"""
887+
Region to target. If none is passed will use default region from the config.
888+
"""
889+
890+
869891
@dataclass
870892
class SSHKey:
871893
ssh_private_key: str

0 commit comments

Comments
 (0)