Skip to content

Commit a4e1206

Browse files
feat(product_catalog): add Load Balancer (#1671)
Co-authored-by: Estelle Soulard <esoulard@scaleway.com>
1 parent d759685 commit a4e1206

File tree

6 files changed

+192
-10
lines changed

6 files changed

+192
-10
lines changed

scaleway-async/scaleway_async/product_catalog/v2alpha1/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
from .types import PublicCatalogProductPropertiesKubernetesKapsuleControlPlaneType
2727
from .types import PublicCatalogProductPropertiesKubernetesKosmosControlPlaneType
2828
from .types import PublicCatalogProductPropertiesKubernetesKosmosNodeType
29+
from .types import PublicCatalogProductPropertiesLoadBalancerIPV4Type
30+
from .types import PublicCatalogProductPropertiesLoadBalancerNodeType
2931
from .types import PublicCatalogProductPropertiesManagedMongoDBManagementType
3032
from .types import PublicCatalogProductPropertiesManagedMongoDBNodeType
3133
from .types import PublicCatalogProductPropertiesManagedMongoDBStorageType
@@ -86,6 +88,8 @@
8688
"PublicCatalogProductPropertiesKubernetesKapsuleControlPlaneType",
8789
"PublicCatalogProductPropertiesKubernetesKosmosControlPlaneType",
8890
"PublicCatalogProductPropertiesKubernetesKosmosNodeType",
91+
"PublicCatalogProductPropertiesLoadBalancerIPV4Type",
92+
"PublicCatalogProductPropertiesLoadBalancerNodeType",
8993
"PublicCatalogProductPropertiesManagedMongoDBManagementType",
9094
"PublicCatalogProductPropertiesManagedMongoDBNodeType",
9195
"PublicCatalogProductPropertiesManagedMongoDBStorageType",

scaleway-async/scaleway_async/product_catalog/v2alpha1/marshalling.py

Lines changed: 64 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
PublicCatalogProductPropertiesKubernetesKapsuleControlPlaneType,
2727
PublicCatalogProductPropertiesKubernetesKosmosControlPlaneType,
2828
PublicCatalogProductPropertiesKubernetesKosmosNodeType,
29+
PublicCatalogProductPropertiesLoadBalancerIPV4Type,
30+
PublicCatalogProductPropertiesLoadBalancerNodeType,
2931
PublicCatalogProductPropertiesManagedMongoDBManagementType,
3032
PublicCatalogProductPropertiesManagedMongoDBNodeType,
3133
PublicCatalogProductPropertiesManagedMongoDBStorageType,
@@ -341,6 +343,50 @@ def unmarshal_PublicCatalogProductPropertiesKubernetesKosmosNodeType(
341343
return PublicCatalogProductPropertiesKubernetesKosmosNodeType(**args)
342344

343345

346+
def unmarshal_PublicCatalogProductPropertiesLoadBalancerIPV4Type(
347+
data: Any,
348+
) -> PublicCatalogProductPropertiesLoadBalancerIPV4Type:
349+
if not isinstance(data, dict):
350+
raise TypeError(
351+
"Unmarshalling the type 'PublicCatalogProductPropertiesLoadBalancerIPV4Type' failed as data isn't a dictionary."
352+
)
353+
354+
args: dict[str, Any] = {}
355+
356+
return PublicCatalogProductPropertiesLoadBalancerIPV4Type(**args)
357+
358+
359+
def unmarshal_PublicCatalogProductPropertiesLoadBalancerNodeType(
360+
data: Any,
361+
) -> PublicCatalogProductPropertiesLoadBalancerNodeType:
362+
if not isinstance(data, dict):
363+
raise TypeError(
364+
"Unmarshalling the type 'PublicCatalogProductPropertiesLoadBalancerNodeType' failed as data isn't a dictionary."
365+
)
366+
367+
args: dict[str, Any] = {}
368+
369+
field = data.get("offer_id", None)
370+
if field is not None:
371+
args["offer_id"] = field
372+
else:
373+
args["offer_id"] = None
374+
375+
field = data.get("multi_cloud_provider", None)
376+
if field is not None:
377+
args["multi_cloud_provider"] = field
378+
else:
379+
args["multi_cloud_provider"] = False
380+
381+
field = data.get("bandwidth", None)
382+
if field is not None:
383+
args["bandwidth"] = field
384+
else:
385+
args["bandwidth"] = 0
386+
387+
return PublicCatalogProductPropertiesLoadBalancerNodeType(**args)
388+
389+
344390
def unmarshal_PublicCatalogProductPropertiesManagedMongoDBManagementType(
345391
data: Any,
346392
) -> PublicCatalogProductPropertiesManagedMongoDBManagementType:
@@ -569,13 +615,13 @@ def unmarshal_PublicCatalogProductPropertiesBlockStorage(
569615
if field is not None:
570616
args["min_volume_size"] = field
571617
else:
572-
args["min_volume_size"] = 0
618+
args["min_volume_size"] = None
573619

574620
field = data.get("max_volume_size", None)
575621
if field is not None:
576622
args["max_volume_size"] = field
577623
else:
578-
args["max_volume_size"] = 0
624+
args["max_volume_size"] = None
579625

580626
return PublicCatalogProductPropertiesBlockStorage(**args)
581627

@@ -799,6 +845,22 @@ def unmarshal_PublicCatalogProductPropertiesLoadBalancer(
799845

800846
args: dict[str, Any] = {}
801847

848+
field = data.get("node", None)
849+
if field is not None:
850+
args["node"] = unmarshal_PublicCatalogProductPropertiesLoadBalancerNodeType(
851+
field
852+
)
853+
else:
854+
args["node"] = None
855+
856+
field = data.get("ipv4", None)
857+
if field is not None:
858+
args["ipv4"] = unmarshal_PublicCatalogProductPropertiesLoadBalancerIPV4Type(
859+
field
860+
)
861+
else:
862+
args["ipv4"] = None
863+
802864
return PublicCatalogProductPropertiesLoadBalancer(**args)
803865

804866

scaleway-async/scaleway_async/product_catalog/v2alpha1/types.py

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,29 @@ class PublicCatalogProductPropertiesKubernetesKosmosNodeType:
355355
pass
356356

357357

358+
@dataclass
359+
class PublicCatalogProductPropertiesLoadBalancerIPV4Type:
360+
pass
361+
362+
363+
@dataclass
364+
class PublicCatalogProductPropertiesLoadBalancerNodeType:
365+
offer_id: str
366+
"""
367+
The offer ID of the Load Balancer product.
368+
"""
369+
370+
multi_cloud_provider: bool
371+
"""
372+
Whether the Load Balancer product is available for multi-cloud providers.
373+
"""
374+
375+
bandwidth: int
376+
"""
377+
The bandwidth of the Load Balancer product in bits per second.
378+
"""
379+
380+
358381
@dataclass
359382
class PublicCatalogProductPropertiesManagedMongoDBManagementType:
360383
pass
@@ -447,12 +470,12 @@ class PublicCatalogProductPropertiesAppleSilicon:
447470

448471
@dataclass
449472
class PublicCatalogProductPropertiesBlockStorage:
450-
min_volume_size: int
473+
min_volume_size: Optional[int] = None
451474
"""
452475
The minimum size of storage volume for this product in bytes. Deprecated.
453476
"""
454477

455-
max_volume_size: int
478+
max_volume_size: Optional[int] = None
456479
"""
457480
The maximum size of storage volume for this product in bytes. Deprecated.
458481
"""
@@ -557,7 +580,9 @@ class PublicCatalogProductPropertiesKubernetes:
557580

558581
@dataclass
559582
class PublicCatalogProductPropertiesLoadBalancer:
560-
pass
583+
node: Optional[PublicCatalogProductPropertiesLoadBalancerNodeType] = None
584+
585+
ipv4: Optional[PublicCatalogProductPropertiesLoadBalancerIPV4Type] = None
561586

562587

563588
@dataclass

scaleway/scaleway/product_catalog/v2alpha1/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
from .types import PublicCatalogProductPropertiesKubernetesKapsuleControlPlaneType
2727
from .types import PublicCatalogProductPropertiesKubernetesKosmosControlPlaneType
2828
from .types import PublicCatalogProductPropertiesKubernetesKosmosNodeType
29+
from .types import PublicCatalogProductPropertiesLoadBalancerIPV4Type
30+
from .types import PublicCatalogProductPropertiesLoadBalancerNodeType
2931
from .types import PublicCatalogProductPropertiesManagedMongoDBManagementType
3032
from .types import PublicCatalogProductPropertiesManagedMongoDBNodeType
3133
from .types import PublicCatalogProductPropertiesManagedMongoDBStorageType
@@ -86,6 +88,8 @@
8688
"PublicCatalogProductPropertiesKubernetesKapsuleControlPlaneType",
8789
"PublicCatalogProductPropertiesKubernetesKosmosControlPlaneType",
8890
"PublicCatalogProductPropertiesKubernetesKosmosNodeType",
91+
"PublicCatalogProductPropertiesLoadBalancerIPV4Type",
92+
"PublicCatalogProductPropertiesLoadBalancerNodeType",
8993
"PublicCatalogProductPropertiesManagedMongoDBManagementType",
9094
"PublicCatalogProductPropertiesManagedMongoDBNodeType",
9195
"PublicCatalogProductPropertiesManagedMongoDBStorageType",

scaleway/scaleway/product_catalog/v2alpha1/marshalling.py

Lines changed: 64 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
PublicCatalogProductPropertiesKubernetesKapsuleControlPlaneType,
2727
PublicCatalogProductPropertiesKubernetesKosmosControlPlaneType,
2828
PublicCatalogProductPropertiesKubernetesKosmosNodeType,
29+
PublicCatalogProductPropertiesLoadBalancerIPV4Type,
30+
PublicCatalogProductPropertiesLoadBalancerNodeType,
2931
PublicCatalogProductPropertiesManagedMongoDBManagementType,
3032
PublicCatalogProductPropertiesManagedMongoDBNodeType,
3133
PublicCatalogProductPropertiesManagedMongoDBStorageType,
@@ -341,6 +343,50 @@ def unmarshal_PublicCatalogProductPropertiesKubernetesKosmosNodeType(
341343
return PublicCatalogProductPropertiesKubernetesKosmosNodeType(**args)
342344

343345

346+
def unmarshal_PublicCatalogProductPropertiesLoadBalancerIPV4Type(
347+
data: Any,
348+
) -> PublicCatalogProductPropertiesLoadBalancerIPV4Type:
349+
if not isinstance(data, dict):
350+
raise TypeError(
351+
"Unmarshalling the type 'PublicCatalogProductPropertiesLoadBalancerIPV4Type' failed as data isn't a dictionary."
352+
)
353+
354+
args: dict[str, Any] = {}
355+
356+
return PublicCatalogProductPropertiesLoadBalancerIPV4Type(**args)
357+
358+
359+
def unmarshal_PublicCatalogProductPropertiesLoadBalancerNodeType(
360+
data: Any,
361+
) -> PublicCatalogProductPropertiesLoadBalancerNodeType:
362+
if not isinstance(data, dict):
363+
raise TypeError(
364+
"Unmarshalling the type 'PublicCatalogProductPropertiesLoadBalancerNodeType' failed as data isn't a dictionary."
365+
)
366+
367+
args: dict[str, Any] = {}
368+
369+
field = data.get("offer_id", None)
370+
if field is not None:
371+
args["offer_id"] = field
372+
else:
373+
args["offer_id"] = None
374+
375+
field = data.get("multi_cloud_provider", None)
376+
if field is not None:
377+
args["multi_cloud_provider"] = field
378+
else:
379+
args["multi_cloud_provider"] = False
380+
381+
field = data.get("bandwidth", None)
382+
if field is not None:
383+
args["bandwidth"] = field
384+
else:
385+
args["bandwidth"] = 0
386+
387+
return PublicCatalogProductPropertiesLoadBalancerNodeType(**args)
388+
389+
344390
def unmarshal_PublicCatalogProductPropertiesManagedMongoDBManagementType(
345391
data: Any,
346392
) -> PublicCatalogProductPropertiesManagedMongoDBManagementType:
@@ -569,13 +615,13 @@ def unmarshal_PublicCatalogProductPropertiesBlockStorage(
569615
if field is not None:
570616
args["min_volume_size"] = field
571617
else:
572-
args["min_volume_size"] = 0
618+
args["min_volume_size"] = None
573619

574620
field = data.get("max_volume_size", None)
575621
if field is not None:
576622
args["max_volume_size"] = field
577623
else:
578-
args["max_volume_size"] = 0
624+
args["max_volume_size"] = None
579625

580626
return PublicCatalogProductPropertiesBlockStorage(**args)
581627

@@ -799,6 +845,22 @@ def unmarshal_PublicCatalogProductPropertiesLoadBalancer(
799845

800846
args: dict[str, Any] = {}
801847

848+
field = data.get("node", None)
849+
if field is not None:
850+
args["node"] = unmarshal_PublicCatalogProductPropertiesLoadBalancerNodeType(
851+
field
852+
)
853+
else:
854+
args["node"] = None
855+
856+
field = data.get("ipv4", None)
857+
if field is not None:
858+
args["ipv4"] = unmarshal_PublicCatalogProductPropertiesLoadBalancerIPV4Type(
859+
field
860+
)
861+
else:
862+
args["ipv4"] = None
863+
802864
return PublicCatalogProductPropertiesLoadBalancer(**args)
803865

804866

scaleway/scaleway/product_catalog/v2alpha1/types.py

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,29 @@ class PublicCatalogProductPropertiesKubernetesKosmosNodeType:
355355
pass
356356

357357

358+
@dataclass
359+
class PublicCatalogProductPropertiesLoadBalancerIPV4Type:
360+
pass
361+
362+
363+
@dataclass
364+
class PublicCatalogProductPropertiesLoadBalancerNodeType:
365+
offer_id: str
366+
"""
367+
The offer ID of the Load Balancer product.
368+
"""
369+
370+
multi_cloud_provider: bool
371+
"""
372+
Whether the Load Balancer product is available for multi-cloud providers.
373+
"""
374+
375+
bandwidth: int
376+
"""
377+
The bandwidth of the Load Balancer product in bits per second.
378+
"""
379+
380+
358381
@dataclass
359382
class PublicCatalogProductPropertiesManagedMongoDBManagementType:
360383
pass
@@ -447,12 +470,12 @@ class PublicCatalogProductPropertiesAppleSilicon:
447470

448471
@dataclass
449472
class PublicCatalogProductPropertiesBlockStorage:
450-
min_volume_size: int
473+
min_volume_size: Optional[int] = None
451474
"""
452475
The minimum size of storage volume for this product in bytes. Deprecated.
453476
"""
454477

455-
max_volume_size: int
478+
max_volume_size: Optional[int] = None
456479
"""
457480
The maximum size of storage volume for this product in bytes. Deprecated.
458481
"""
@@ -557,7 +580,9 @@ class PublicCatalogProductPropertiesKubernetes:
557580

558581
@dataclass
559582
class PublicCatalogProductPropertiesLoadBalancer:
560-
pass
583+
node: Optional[PublicCatalogProductPropertiesLoadBalancerNodeType] = None
584+
585+
ipv4: Optional[PublicCatalogProductPropertiesLoadBalancerIPV4Type] = None
561586

562587

563588
@dataclass

0 commit comments

Comments
 (0)