Skip to content

Commit 7c26634

Browse files
authored
feat(secret_manager): add ListTags to v1beta1 (#445)
1 parent a18d19b commit 7c26634

File tree

8 files changed

+262
-0
lines changed

8 files changed

+262
-0
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from .types import EphemeralProperties
1717
from .types import ListSecretVersionsResponse
1818
from .types import ListSecretsResponse
19+
from .types import ListTagsResponse
1920
from .types import Secret
2021
from .types import SecretVersion
2122
from .api import SecretV1Beta1API
@@ -37,6 +38,7 @@
3738
"EphemeralProperties",
3839
"ListSecretVersionsResponse",
3940
"ListSecretsResponse",
41+
"ListTagsResponse",
4042
"Secret",
4143
"SecretVersion",
4244
"SecretV1Beta1API",

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

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
EphemeralProperties,
2424
ListSecretVersionsResponse,
2525
ListSecretsResponse,
26+
ListTagsResponse,
2627
Secret,
2728
SecretVersion,
2829
CreateSecretRequest,
@@ -43,6 +44,7 @@
4344
unmarshal_BrowseSecretsResponse,
4445
unmarshal_ListSecretVersionsResponse,
4546
unmarshal_ListSecretsResponse,
47+
unmarshal_ListTagsResponse,
4648
)
4749

4850

@@ -911,3 +913,78 @@ async def disable_secret_version(
911913

912914
self._throw_on_error(res)
913915
return unmarshal_SecretVersion(res.json())
916+
917+
async def list_tags(
918+
self,
919+
*,
920+
region: Optional[Region] = None,
921+
project_id: Optional[str] = None,
922+
page: Optional[int] = None,
923+
page_size: Optional[int] = None,
924+
) -> ListTagsResponse:
925+
"""
926+
List tags.
927+
List all tags associated with secrets within a given Project.
928+
:param region: Region to target. If none is passed will use default region from the config.
929+
:param project_id: ID of the Project to target.
930+
:param page:
931+
:param page_size:
932+
:return: :class:`ListTagsResponse <ListTagsResponse>`
933+
934+
Usage:
935+
::
936+
937+
result = await api.list_tags()
938+
"""
939+
940+
param_region = validate_path_param(
941+
"region", region or self.client.default_region
942+
)
943+
944+
res = self._request(
945+
"GET",
946+
f"/secret-manager/v1beta1/regions/{param_region}/tags",
947+
params={
948+
"page": page,
949+
"page_size": page_size or self.client.default_page_size,
950+
"project_id": project_id or self.client.default_project_id,
951+
},
952+
)
953+
954+
self._throw_on_error(res)
955+
return unmarshal_ListTagsResponse(res.json())
956+
957+
async def list_tags_all(
958+
self,
959+
*,
960+
region: Optional[Region] = None,
961+
project_id: Optional[str] = None,
962+
page: Optional[int] = None,
963+
page_size: Optional[int] = None,
964+
) -> List[str]:
965+
"""
966+
List tags.
967+
List all tags associated with secrets within a given Project.
968+
:param region: Region to target. If none is passed will use default region from the config.
969+
:param project_id: ID of the Project to target.
970+
:param page:
971+
:param page_size:
972+
:return: :class:`List[ListTagsResponse] <List[ListTagsResponse]>`
973+
974+
Usage:
975+
::
976+
977+
result = await api.list_tags_all()
978+
"""
979+
980+
return await fetch_all_pages_async(
981+
type=ListTagsResponse,
982+
key="tags",
983+
fetcher=self.list_tags,
984+
args={
985+
"region": region,
986+
"project_id": project_id,
987+
"page": page,
988+
"page_size": page_size,
989+
},
990+
)

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
EphemeralProperties,
1919
ListSecretVersionsResponse,
2020
ListSecretsResponse,
21+
ListTagsResponse,
2122
Secret,
2223
SecretVersion,
2324
CreateSecretRequest,
@@ -325,6 +326,23 @@ def unmarshal_ListSecretsResponse(data: Any) -> ListSecretsResponse:
325326
return ListSecretsResponse(**args)
326327

327328

329+
def unmarshal_ListTagsResponse(data: Any) -> ListTagsResponse:
330+
if type(data) is not dict:
331+
raise TypeError(
332+
f"Unmarshalling the type 'ListTagsResponse' failed as data isn't a dictionary."
333+
)
334+
335+
args: Dict[str, Any] = {}
336+
337+
field = data.get("tags", None)
338+
args["tags"] = field
339+
340+
field = data.get("total_count", None)
341+
args["total_count"] = field
342+
343+
return ListTagsResponse(**args)
344+
345+
328346
def marshal_EphemeralPolicy(
329347
request: EphemeralPolicy,
330348
defaults: ProfileDefaults,

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

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,23 @@ class ListSecretsResponse:
255255
"""
256256

257257

258+
@dataclass
259+
class ListTagsResponse:
260+
"""
261+
List tags response.
262+
"""
263+
264+
tags: List[str]
265+
"""
266+
List of tags.
267+
"""
268+
269+
total_count: int
270+
"""
271+
Count of all tags matching the requested criteria.
272+
"""
273+
274+
258275
@dataclass
259276
class Secret:
260277
"""
@@ -824,3 +841,20 @@ class DisableSecretVersionRequest:
824841
- "latest" (the latest revision)
825842
- "latest_enabled" (the latest enabled revision).
826843
"""
844+
845+
846+
@dataclass
847+
class ListTagsRequest:
848+
region: Optional[Region]
849+
"""
850+
Region to target. If none is passed will use default region from the config.
851+
"""
852+
853+
project_id: Optional[str]
854+
"""
855+
ID of the Project to target.
856+
"""
857+
858+
page: Optional[int]
859+
860+
page_size: Optional[int]

scaleway/scaleway/secret/v1beta1/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from .types import EphemeralProperties
1717
from .types import ListSecretVersionsResponse
1818
from .types import ListSecretsResponse
19+
from .types import ListTagsResponse
1920
from .types import Secret
2021
from .types import SecretVersion
2122
from .api import SecretV1Beta1API
@@ -37,6 +38,7 @@
3738
"EphemeralProperties",
3839
"ListSecretVersionsResponse",
3940
"ListSecretsResponse",
41+
"ListTagsResponse",
4042
"Secret",
4143
"SecretVersion",
4244
"SecretV1Beta1API",

scaleway/scaleway/secret/v1beta1/api.py

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
EphemeralProperties,
2424
ListSecretVersionsResponse,
2525
ListSecretsResponse,
26+
ListTagsResponse,
2627
Secret,
2728
SecretVersion,
2829
CreateSecretRequest,
@@ -43,6 +44,7 @@
4344
unmarshal_BrowseSecretsResponse,
4445
unmarshal_ListSecretVersionsResponse,
4546
unmarshal_ListSecretsResponse,
47+
unmarshal_ListTagsResponse,
4648
)
4749

4850

@@ -911,3 +913,78 @@ def disable_secret_version(
911913

912914
self._throw_on_error(res)
913915
return unmarshal_SecretVersion(res.json())
916+
917+
def list_tags(
918+
self,
919+
*,
920+
region: Optional[Region] = None,
921+
project_id: Optional[str] = None,
922+
page: Optional[int] = None,
923+
page_size: Optional[int] = None,
924+
) -> ListTagsResponse:
925+
"""
926+
List tags.
927+
List all tags associated with secrets within a given Project.
928+
:param region: Region to target. If none is passed will use default region from the config.
929+
:param project_id: ID of the Project to target.
930+
:param page:
931+
:param page_size:
932+
:return: :class:`ListTagsResponse <ListTagsResponse>`
933+
934+
Usage:
935+
::
936+
937+
result = api.list_tags()
938+
"""
939+
940+
param_region = validate_path_param(
941+
"region", region or self.client.default_region
942+
)
943+
944+
res = self._request(
945+
"GET",
946+
f"/secret-manager/v1beta1/regions/{param_region}/tags",
947+
params={
948+
"page": page,
949+
"page_size": page_size or self.client.default_page_size,
950+
"project_id": project_id or self.client.default_project_id,
951+
},
952+
)
953+
954+
self._throw_on_error(res)
955+
return unmarshal_ListTagsResponse(res.json())
956+
957+
def list_tags_all(
958+
self,
959+
*,
960+
region: Optional[Region] = None,
961+
project_id: Optional[str] = None,
962+
page: Optional[int] = None,
963+
page_size: Optional[int] = None,
964+
) -> List[str]:
965+
"""
966+
List tags.
967+
List all tags associated with secrets within a given Project.
968+
:param region: Region to target. If none is passed will use default region from the config.
969+
:param project_id: ID of the Project to target.
970+
:param page:
971+
:param page_size:
972+
:return: :class:`List[ListTagsResponse] <List[ListTagsResponse]>`
973+
974+
Usage:
975+
::
976+
977+
result = api.list_tags_all()
978+
"""
979+
980+
return fetch_all_pages(
981+
type=ListTagsResponse,
982+
key="tags",
983+
fetcher=self.list_tags,
984+
args={
985+
"region": region,
986+
"project_id": project_id,
987+
"page": page,
988+
"page_size": page_size,
989+
},
990+
)

scaleway/scaleway/secret/v1beta1/marshalling.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
EphemeralProperties,
1919
ListSecretVersionsResponse,
2020
ListSecretsResponse,
21+
ListTagsResponse,
2122
Secret,
2223
SecretVersion,
2324
CreateSecretRequest,
@@ -325,6 +326,23 @@ def unmarshal_ListSecretsResponse(data: Any) -> ListSecretsResponse:
325326
return ListSecretsResponse(**args)
326327

327328

329+
def unmarshal_ListTagsResponse(data: Any) -> ListTagsResponse:
330+
if type(data) is not dict:
331+
raise TypeError(
332+
f"Unmarshalling the type 'ListTagsResponse' failed as data isn't a dictionary."
333+
)
334+
335+
args: Dict[str, Any] = {}
336+
337+
field = data.get("tags", None)
338+
args["tags"] = field
339+
340+
field = data.get("total_count", None)
341+
args["total_count"] = field
342+
343+
return ListTagsResponse(**args)
344+
345+
328346
def marshal_EphemeralPolicy(
329347
request: EphemeralPolicy,
330348
defaults: ProfileDefaults,

scaleway/scaleway/secret/v1beta1/types.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,23 @@ class ListSecretsResponse:
255255
"""
256256

257257

258+
@dataclass
259+
class ListTagsResponse:
260+
"""
261+
List tags response.
262+
"""
263+
264+
tags: List[str]
265+
"""
266+
List of tags.
267+
"""
268+
269+
total_count: int
270+
"""
271+
Count of all tags matching the requested criteria.
272+
"""
273+
274+
258275
@dataclass
259276
class Secret:
260277
"""
@@ -824,3 +841,20 @@ class DisableSecretVersionRequest:
824841
- "latest" (the latest revision)
825842
- "latest_enabled" (the latest enabled revision).
826843
"""
844+
845+
846+
@dataclass
847+
class ListTagsRequest:
848+
region: Optional[Region]
849+
"""
850+
Region to target. If none is passed will use default region from the config.
851+
"""
852+
853+
project_id: Optional[str]
854+
"""
855+
ID of the Project to target.
856+
"""
857+
858+
page: Optional[int]
859+
860+
page_size: Optional[int]

0 commit comments

Comments
 (0)