Skip to content

Commit f7a1a79

Browse files
authored
feat(webhosting): add public offers control panels list (#1364)
1 parent eb9f1f1 commit f7a1a79

File tree

6 files changed

+152
-126
lines changed

6 files changed

+152
-126
lines changed

scaleway-async/scaleway_async/webhosting/v1/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
from .types import AutoConfigDomainDns
3434
from .types import PlatformControlPanelUrls
3535
from .types import HostingDomainCustomDomain
36+
from .types import ControlPanel
3637
from .types import OfferOption
3738
from .types import PlatformControlPanel
3839
from .types import BackupItem
@@ -49,7 +50,6 @@
4950
from .types import Platform
5051
from .types import BackupItemGroup
5152
from .types import Backup
52-
from .types import ControlPanel
5353
from .types import DatabaseUser
5454
from .types import Database
5555
from .types import FtpAccount
@@ -175,6 +175,7 @@
175175
"AutoConfigDomainDns",
176176
"PlatformControlPanelUrls",
177177
"HostingDomainCustomDomain",
178+
"ControlPanel",
178179
"OfferOption",
179180
"PlatformControlPanel",
180181
"BackupItem",
@@ -191,7 +192,6 @@
191192
"Platform",
192193
"BackupItemGroup",
193194
"Backup",
194-
"ControlPanel",
195195
"DatabaseUser",
196196
"Database",
197197
"FtpAccount",

scaleway-async/scaleway_async/webhosting/v1/marshalling.py

Lines changed: 46 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
DnsRecords,
5050
Domain,
5151
PlatformControlPanelUrls,
52+
ControlPanel,
5253
OfferOption,
5354
PlatformControlPanel,
5455
HostingUser,
@@ -59,7 +60,6 @@
5960
BackupItemGroup,
6061
ListBackupItemsResponse,
6162
ListBackupsResponse,
62-
ControlPanel,
6363
ListControlPanelsResponse,
6464
ListDatabaseUsersResponse,
6565
ListDatabasesResponse,
@@ -734,6 +734,43 @@ def unmarshal_PlatformControlPanelUrls(data: Any) -> PlatformControlPanelUrls:
734734
return PlatformControlPanelUrls(**args)
735735

736736

737+
def unmarshal_ControlPanel(data: Any) -> ControlPanel:
738+
if not isinstance(data, dict):
739+
raise TypeError(
740+
"Unmarshalling the type 'ControlPanel' failed as data isn't a dictionary."
741+
)
742+
743+
args: dict[str, Any] = {}
744+
745+
field = data.get("name", None)
746+
if field is not None:
747+
args["name"] = field
748+
else:
749+
args["name"] = None
750+
751+
field = data.get("available", None)
752+
if field is not None:
753+
args["available"] = field
754+
else:
755+
args["available"] = False
756+
757+
field = data.get("logo_url", None)
758+
if field is not None:
759+
args["logo_url"] = field
760+
else:
761+
args["logo_url"] = None
762+
763+
field = data.get("available_languages", None)
764+
if field is not None:
765+
args["available_languages"] = (
766+
[StdLanguageCode(v) for v in field] if field is not None else None
767+
)
768+
else:
769+
args["available_languages"] = []
770+
771+
return ControlPanel(**args)
772+
773+
737774
def unmarshal_OfferOption(data: Any) -> OfferOption:
738775
if not isinstance(data, dict):
739776
raise TypeError(
@@ -909,6 +946,14 @@ def unmarshal_Offer(data: Any) -> Offer:
909946
else:
910947
args["quota_warning"] = OfferOptionWarning.UNKNOWN_WARNING
911948

949+
field = data.get("control_panels", None)
950+
if field is not None:
951+
args["control_panels"] = (
952+
[unmarshal_ControlPanel(v) for v in field] if field is not None else None
953+
)
954+
else:
955+
args["control_panels"] = []
956+
912957
field = data.get("region", None)
913958
if field is not None:
914959
args["region"] = field
@@ -1200,43 +1245,6 @@ def unmarshal_ListBackupsResponse(data: Any) -> ListBackupsResponse:
12001245
return ListBackupsResponse(**args)
12011246

12021247

1203-
def unmarshal_ControlPanel(data: Any) -> ControlPanel:
1204-
if not isinstance(data, dict):
1205-
raise TypeError(
1206-
"Unmarshalling the type 'ControlPanel' failed as data isn't a dictionary."
1207-
)
1208-
1209-
args: dict[str, Any] = {}
1210-
1211-
field = data.get("name", None)
1212-
if field is not None:
1213-
args["name"] = field
1214-
else:
1215-
args["name"] = None
1216-
1217-
field = data.get("available", None)
1218-
if field is not None:
1219-
args["available"] = field
1220-
else:
1221-
args["available"] = False
1222-
1223-
field = data.get("logo_url", None)
1224-
if field is not None:
1225-
args["logo_url"] = field
1226-
else:
1227-
args["logo_url"] = None
1228-
1229-
field = data.get("available_languages", None)
1230-
if field is not None:
1231-
args["available_languages"] = (
1232-
[StdLanguageCode(v) for v in field] if field is not None else None
1233-
)
1234-
else:
1235-
args["available_languages"] = []
1236-
1237-
return ControlPanel(**args)
1238-
1239-
12401248
def unmarshal_ListControlPanelsResponse(data: Any) -> ListControlPanelsResponse:
12411249
if not isinstance(data, dict):
12421250
raise TypeError(

scaleway-async/scaleway_async/webhosting/v1/types.py

Lines changed: 28 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,29 @@ class HostingDomainCustomDomain:
367367
"""
368368

369369

370+
@dataclass
371+
class ControlPanel:
372+
name: str
373+
"""
374+
Control panel name.
375+
"""
376+
377+
available: bool
378+
"""
379+
Define if the control panel type is available to order.
380+
"""
381+
382+
logo_url: str
383+
"""
384+
URL of the control panel's logo.
385+
"""
386+
387+
available_languages: list[StdLanguageCode]
388+
"""
389+
List of available languages for the control panel.
390+
"""
391+
392+
370393
@dataclass
371394
class OfferOption:
372395
id: str
@@ -636,6 +659,11 @@ class Offer:
636659
Defines a warning if the maximum value for an option in the offer is exceeded.
637660
"""
638661

662+
control_panels: list[ControlPanel]
663+
"""
664+
Lists available control panels for the specified offer.
665+
"""
666+
639667
region: ScwRegion
640668
"""
641669
Region where the offer is hosted.
@@ -721,29 +749,6 @@ class Backup:
721749
"""
722750

723751

724-
@dataclass
725-
class ControlPanel:
726-
name: str
727-
"""
728-
Control panel name.
729-
"""
730-
731-
available: bool
732-
"""
733-
Define if the control panel type is available to order.
734-
"""
735-
736-
logo_url: str
737-
"""
738-
URL of the control panel's logo.
739-
"""
740-
741-
available_languages: list[StdLanguageCode]
742-
"""
743-
List of available languages for the control panel.
744-
"""
745-
746-
747752
@dataclass
748753
class DatabaseUser:
749754
username: str

scaleway/scaleway/webhosting/v1/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
from .types import AutoConfigDomainDns
3434
from .types import PlatformControlPanelUrls
3535
from .types import HostingDomainCustomDomain
36+
from .types import ControlPanel
3637
from .types import OfferOption
3738
from .types import PlatformControlPanel
3839
from .types import BackupItem
@@ -49,7 +50,6 @@
4950
from .types import Platform
5051
from .types import BackupItemGroup
5152
from .types import Backup
52-
from .types import ControlPanel
5353
from .types import DatabaseUser
5454
from .types import Database
5555
from .types import FtpAccount
@@ -175,6 +175,7 @@
175175
"AutoConfigDomainDns",
176176
"PlatformControlPanelUrls",
177177
"HostingDomainCustomDomain",
178+
"ControlPanel",
178179
"OfferOption",
179180
"PlatformControlPanel",
180181
"BackupItem",
@@ -191,7 +192,6 @@
191192
"Platform",
192193
"BackupItemGroup",
193194
"Backup",
194-
"ControlPanel",
195195
"DatabaseUser",
196196
"Database",
197197
"FtpAccount",

scaleway/scaleway/webhosting/v1/marshalling.py

Lines changed: 46 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
DnsRecords,
5050
Domain,
5151
PlatformControlPanelUrls,
52+
ControlPanel,
5253
OfferOption,
5354
PlatformControlPanel,
5455
HostingUser,
@@ -59,7 +60,6 @@
5960
BackupItemGroup,
6061
ListBackupItemsResponse,
6162
ListBackupsResponse,
62-
ControlPanel,
6363
ListControlPanelsResponse,
6464
ListDatabaseUsersResponse,
6565
ListDatabasesResponse,
@@ -734,6 +734,43 @@ def unmarshal_PlatformControlPanelUrls(data: Any) -> PlatformControlPanelUrls:
734734
return PlatformControlPanelUrls(**args)
735735

736736

737+
def unmarshal_ControlPanel(data: Any) -> ControlPanel:
738+
if not isinstance(data, dict):
739+
raise TypeError(
740+
"Unmarshalling the type 'ControlPanel' failed as data isn't a dictionary."
741+
)
742+
743+
args: dict[str, Any] = {}
744+
745+
field = data.get("name", None)
746+
if field is not None:
747+
args["name"] = field
748+
else:
749+
args["name"] = None
750+
751+
field = data.get("available", None)
752+
if field is not None:
753+
args["available"] = field
754+
else:
755+
args["available"] = False
756+
757+
field = data.get("logo_url", None)
758+
if field is not None:
759+
args["logo_url"] = field
760+
else:
761+
args["logo_url"] = None
762+
763+
field = data.get("available_languages", None)
764+
if field is not None:
765+
args["available_languages"] = (
766+
[StdLanguageCode(v) for v in field] if field is not None else None
767+
)
768+
else:
769+
args["available_languages"] = []
770+
771+
return ControlPanel(**args)
772+
773+
737774
def unmarshal_OfferOption(data: Any) -> OfferOption:
738775
if not isinstance(data, dict):
739776
raise TypeError(
@@ -909,6 +946,14 @@ def unmarshal_Offer(data: Any) -> Offer:
909946
else:
910947
args["quota_warning"] = OfferOptionWarning.UNKNOWN_WARNING
911948

949+
field = data.get("control_panels", None)
950+
if field is not None:
951+
args["control_panels"] = (
952+
[unmarshal_ControlPanel(v) for v in field] if field is not None else None
953+
)
954+
else:
955+
args["control_panels"] = []
956+
912957
field = data.get("region", None)
913958
if field is not None:
914959
args["region"] = field
@@ -1200,43 +1245,6 @@ def unmarshal_ListBackupsResponse(data: Any) -> ListBackupsResponse:
12001245
return ListBackupsResponse(**args)
12011246

12021247

1203-
def unmarshal_ControlPanel(data: Any) -> ControlPanel:
1204-
if not isinstance(data, dict):
1205-
raise TypeError(
1206-
"Unmarshalling the type 'ControlPanel' failed as data isn't a dictionary."
1207-
)
1208-
1209-
args: dict[str, Any] = {}
1210-
1211-
field = data.get("name", None)
1212-
if field is not None:
1213-
args["name"] = field
1214-
else:
1215-
args["name"] = None
1216-
1217-
field = data.get("available", None)
1218-
if field is not None:
1219-
args["available"] = field
1220-
else:
1221-
args["available"] = False
1222-
1223-
field = data.get("logo_url", None)
1224-
if field is not None:
1225-
args["logo_url"] = field
1226-
else:
1227-
args["logo_url"] = None
1228-
1229-
field = data.get("available_languages", None)
1230-
if field is not None:
1231-
args["available_languages"] = (
1232-
[StdLanguageCode(v) for v in field] if field is not None else None
1233-
)
1234-
else:
1235-
args["available_languages"] = []
1236-
1237-
return ControlPanel(**args)
1238-
1239-
12401248
def unmarshal_ListControlPanelsResponse(data: Any) -> ListControlPanelsResponse:
12411249
if not isinstance(data, dict):
12421250
raise TypeError(

0 commit comments

Comments
 (0)