Skip to content

Commit 8207187

Browse files
authored
feat(vpc/v2): add ListSubnets (scaleway#524)
1 parent 3adb6dc commit 8207187

File tree

8 files changed

+330
-0
lines changed

8 files changed

+330
-0
lines changed

scaleway-async/scaleway_async/vpc/v2/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# This file was automatically generated. DO NOT EDIT.
22
# If you have any remark or suggestion do not hesitate to open an issue.
33
from .types import ListPrivateNetworksRequestOrderBy
4+
from .types import ListSubnetsRequestOrderBy
45
from .types import ListVPCsRequestOrderBy
56
from .types import Subnet
67
from .types import PrivateNetwork
@@ -19,6 +20,8 @@
1920
from .types import GetVPCRequest
2021
from .types import ListPrivateNetworksRequest
2122
from .types import ListPrivateNetworksResponse
23+
from .types import ListSubnetsRequest
24+
from .types import ListSubnetsResponse
2225
from .types import ListVPCsRequest
2326
from .types import ListVPCsResponse
2427
from .types import MigrateZonalPrivateNetworksRequest
@@ -30,6 +33,7 @@
3033

3134
__all__ = [
3235
"ListPrivateNetworksRequestOrderBy",
36+
"ListSubnetsRequestOrderBy",
3337
"ListVPCsRequestOrderBy",
3438
"Subnet",
3539
"PrivateNetwork",
@@ -48,6 +52,8 @@
4852
"GetVPCRequest",
4953
"ListPrivateNetworksRequest",
5054
"ListPrivateNetworksResponse",
55+
"ListSubnetsRequest",
56+
"ListSubnetsResponse",
5157
"ListVPCsRequest",
5258
"ListVPCsResponse",
5359
"MigrateZonalPrivateNetworksRequest",

scaleway-async/scaleway_async/vpc/v2/api.py

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
)
1515
from .types import (
1616
ListPrivateNetworksRequestOrderBy,
17+
ListSubnetsRequestOrderBy,
1718
ListVPCsRequestOrderBy,
1819
AddSubnetsRequest,
1920
AddSubnetsResponse,
@@ -22,11 +23,13 @@
2223
DeleteSubnetsRequest,
2324
DeleteSubnetsResponse,
2425
ListPrivateNetworksResponse,
26+
ListSubnetsResponse,
2527
ListVPCsResponse,
2628
MigrateZonalPrivateNetworksRequest,
2729
PrivateNetwork,
2830
SetSubnetsRequest,
2931
SetSubnetsResponse,
32+
Subnet,
3033
UpdatePrivateNetworkRequest,
3134
UpdateVPCRequest,
3235
VPC,
@@ -37,6 +40,7 @@
3740
unmarshal_AddSubnetsResponse,
3841
unmarshal_DeleteSubnetsResponse,
3942
unmarshal_ListPrivateNetworksResponse,
43+
unmarshal_ListSubnetsResponse,
4044
unmarshal_ListVPCsResponse,
4145
unmarshal_SetSubnetsResponse,
4246
marshal_AddSubnetsRequest,
@@ -732,6 +736,102 @@ async def enable_routing(
732736
self._throw_on_error(res)
733737
return unmarshal_VPC(res.json())
734738

739+
async def list_subnets(
740+
self,
741+
*,
742+
region: Optional[Region] = None,
743+
order_by: Optional[ListSubnetsRequestOrderBy] = None,
744+
page: Optional[int] = None,
745+
page_size: Optional[int] = None,
746+
organization_id: Optional[str] = None,
747+
project_id: Optional[str] = None,
748+
subnet_ids: Optional[List[str]] = None,
749+
vpc_id: Optional[str] = None,
750+
) -> ListSubnetsResponse:
751+
"""
752+
:param region: Region to target. If none is passed will use default region from the config.
753+
:param order_by:
754+
:param page:
755+
:param page_size:
756+
:param organization_id:
757+
:param project_id:
758+
:param subnet_ids:
759+
:param vpc_id:
760+
:return: :class:`ListSubnetsResponse <ListSubnetsResponse>`
761+
762+
Usage:
763+
::
764+
765+
result = await api.list_subnets()
766+
"""
767+
768+
param_region = validate_path_param(
769+
"region", region or self.client.default_region
770+
)
771+
772+
res = self._request(
773+
"GET",
774+
f"/vpc/v2/regions/{param_region}/subnets",
775+
params={
776+
"order_by": order_by,
777+
"organization_id": organization_id
778+
or self.client.default_organization_id,
779+
"page": page,
780+
"page_size": page_size or self.client.default_page_size,
781+
"project_id": project_id or self.client.default_project_id,
782+
"subnet_ids": subnet_ids,
783+
"vpc_id": vpc_id,
784+
},
785+
)
786+
787+
self._throw_on_error(res)
788+
return unmarshal_ListSubnetsResponse(res.json())
789+
790+
async def list_subnets_all(
791+
self,
792+
*,
793+
region: Optional[Region] = None,
794+
order_by: Optional[ListSubnetsRequestOrderBy] = None,
795+
page: Optional[int] = None,
796+
page_size: Optional[int] = None,
797+
organization_id: Optional[str] = None,
798+
project_id: Optional[str] = None,
799+
subnet_ids: Optional[List[str]] = None,
800+
vpc_id: Optional[str] = None,
801+
) -> List[Subnet]:
802+
"""
803+
:param region: Region to target. If none is passed will use default region from the config.
804+
:param order_by:
805+
:param page:
806+
:param page_size:
807+
:param organization_id:
808+
:param project_id:
809+
:param subnet_ids:
810+
:param vpc_id:
811+
:return: :class:`List[Subnet] <List[Subnet]>`
812+
813+
Usage:
814+
::
815+
816+
result = await api.list_subnets_all()
817+
"""
818+
819+
return await fetch_all_pages_async(
820+
type=ListSubnetsResponse,
821+
key="subnets",
822+
fetcher=self.list_subnets,
823+
args={
824+
"region": region,
825+
"order_by": order_by,
826+
"page": page,
827+
"page_size": page_size,
828+
"organization_id": organization_id,
829+
"project_id": project_id,
830+
"subnet_ids": subnet_ids,
831+
"vpc_id": vpc_id,
832+
},
833+
)
834+
735835
async def set_subnets(
736836
self,
737837
*,

scaleway-async/scaleway_async/vpc/v2/marshalling.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
AddSubnetsResponse,
1717
DeleteSubnetsResponse,
1818
ListPrivateNetworksResponse,
19+
ListSubnetsResponse,
1920
ListVPCsResponse,
2021
SetSubnetsResponse,
2122
AddSubnetsRequest,
@@ -231,6 +232,27 @@ def unmarshal_ListPrivateNetworksResponse(data: Any) -> ListPrivateNetworksRespo
231232
return ListPrivateNetworksResponse(**args)
232233

233234

235+
def unmarshal_ListSubnetsResponse(data: Any) -> ListSubnetsResponse:
236+
if not isinstance(data, dict):
237+
raise TypeError(
238+
"Unmarshalling the type 'ListSubnetsResponse' failed as data isn't a dictionary."
239+
)
240+
241+
args: Dict[str, Any] = {}
242+
243+
field = data.get("subnets", None)
244+
if field is not None:
245+
args["subnets"] = (
246+
[unmarshal_Subnet(v) for v in field] if field is not None else None
247+
)
248+
249+
field = data.get("total_count", None)
250+
if field is not None:
251+
args["total_count"] = field
252+
253+
return ListSubnetsResponse(**args)
254+
255+
234256
def unmarshal_ListVPCsResponse(data: Any) -> ListVPCsResponse:
235257
if not isinstance(data, dict):
236258
raise TypeError(

scaleway-async/scaleway_async/vpc/v2/types.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,14 @@ def __str__(self) -> str:
2525
return str(self.value)
2626

2727

28+
class ListSubnetsRequestOrderBy(str, Enum, metaclass=StrEnumMeta):
29+
CREATED_AT_ASC = "created_at_asc"
30+
CREATED_AT_DESC = "created_at_desc"
31+
32+
def __str__(self) -> str:
33+
return str(self.value)
34+
35+
2836
class ListVPCsRequestOrderBy(str, Enum, metaclass=StrEnumMeta):
2937
CREATED_AT_ASC = "created_at_asc"
3038
CREATED_AT_DESC = "created_at_desc"
@@ -421,6 +429,35 @@ class ListPrivateNetworksResponse:
421429
total_count: int
422430

423431

432+
@dataclass
433+
class ListSubnetsRequest:
434+
region: Optional[Region]
435+
"""
436+
Region to target. If none is passed will use default region from the config.
437+
"""
438+
439+
order_by: Optional[ListSubnetsRequestOrderBy]
440+
441+
page: Optional[int]
442+
443+
page_size: Optional[int]
444+
445+
organization_id: Optional[str]
446+
447+
project_id: Optional[str]
448+
449+
subnet_ids: Optional[List[str]]
450+
451+
vpc_id: Optional[str]
452+
453+
454+
@dataclass
455+
class ListSubnetsResponse:
456+
subnets: List[Subnet]
457+
458+
total_count: int
459+
460+
424461
@dataclass
425462
class ListVPCsRequest:
426463
region: Optional[Region]

scaleway/scaleway/vpc/v2/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# This file was automatically generated. DO NOT EDIT.
22
# If you have any remark or suggestion do not hesitate to open an issue.
33
from .types import ListPrivateNetworksRequestOrderBy
4+
from .types import ListSubnetsRequestOrderBy
45
from .types import ListVPCsRequestOrderBy
56
from .types import Subnet
67
from .types import PrivateNetwork
@@ -19,6 +20,8 @@
1920
from .types import GetVPCRequest
2021
from .types import ListPrivateNetworksRequest
2122
from .types import ListPrivateNetworksResponse
23+
from .types import ListSubnetsRequest
24+
from .types import ListSubnetsResponse
2225
from .types import ListVPCsRequest
2326
from .types import ListVPCsResponse
2427
from .types import MigrateZonalPrivateNetworksRequest
@@ -30,6 +33,7 @@
3033

3134
__all__ = [
3235
"ListPrivateNetworksRequestOrderBy",
36+
"ListSubnetsRequestOrderBy",
3337
"ListVPCsRequestOrderBy",
3438
"Subnet",
3539
"PrivateNetwork",
@@ -48,6 +52,8 @@
4852
"GetVPCRequest",
4953
"ListPrivateNetworksRequest",
5054
"ListPrivateNetworksResponse",
55+
"ListSubnetsRequest",
56+
"ListSubnetsResponse",
5157
"ListVPCsRequest",
5258
"ListVPCsResponse",
5359
"MigrateZonalPrivateNetworksRequest",

0 commit comments

Comments
 (0)