Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions scaleway-async/scaleway_async/webhosting/v1/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@
from .types import AutoConfigDomainDns
from .types import PlatformControlPanelUrls
from .types import HostingDomainCustomDomain
from .types import ControlPanel
from .types import OfferCommitment
from .types import ControlPanel
from .types import OfferOption
from .types import PlatformControlPanel
from .types import BackupItem
Expand All @@ -48,6 +48,7 @@
from .types import SyncDomainDnsRecordsRequestRecord
from .types import DnsRecord
from .types import Nameserver
from .types import HostingCommitment
from .types import HostingUser
from .types import Offer
from .types import Platform
Expand Down Expand Up @@ -185,8 +186,8 @@
"AutoConfigDomainDns",
"PlatformControlPanelUrls",
"HostingDomainCustomDomain",
"ControlPanel",
"OfferCommitment",
"ControlPanel",
"OfferOption",
"PlatformControlPanel",
"BackupItem",
Expand All @@ -198,6 +199,7 @@
"SyncDomainDnsRecordsRequestRecord",
"DnsRecord",
"Nameserver",
"HostingCommitment",
"HostingUser",
"Offer",
"Platform",
Expand Down
3 changes: 3 additions & 0 deletions scaleway-async/scaleway_async/webhosting/v1/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -1517,6 +1517,7 @@ async def create_hosting(
domain_configuration: Optional[CreateHostingRequestDomainConfiguration] = None,
skip_welcome_email: Optional[bool] = None,
auto_config_domain_dns: Optional[AutoConfigDomainDns] = None,
offer_commitment_id: Optional[str] = None,
) -> Hosting:
"""
Order a Web Hosting plan.
Expand All @@ -1533,6 +1534,7 @@ async def create_hosting(
:param domain_configuration: Indicates whether to update hosting domain name servers and DNS records for domains managed by Scaleway Elements (deprecated, use auto_config_domain_dns instead).
:param skip_welcome_email: Indicates whether to skip a welcome email to the contact email containing hosting info.
:param auto_config_domain_dns: Indicates whether to update hosting domain name servers and DNS records for domains managed by Scaleway Elements (deprecated, use auto_update_* fields instead).
:param offer_commitment_id: Offer commitment ID to which the hosting will be engaged.
:return: :class:`Hosting <Hosting>`

Usage:
Expand Down Expand Up @@ -1566,6 +1568,7 @@ async def create_hosting(
domain_configuration=domain_configuration,
skip_welcome_email=skip_welcome_email,
auto_config_domain_dns=auto_config_domain_dns,
offer_commitment_id=offer_commitment_id,
),
self.client,
),
Expand Down
121 changes: 83 additions & 38 deletions scaleway-async/scaleway_async/webhosting/v1/marshalling.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,11 @@
DnsRecords,
Domain,
PlatformControlPanelUrls,
ControlPanel,
OfferCommitment,
ControlPanel,
OfferOption,
PlatformControlPanel,
HostingCommitment,
HostingUser,
Offer,
Platform,
Expand Down Expand Up @@ -740,43 +741,6 @@ def unmarshal_PlatformControlPanelUrls(data: Any) -> PlatformControlPanelUrls:
return PlatformControlPanelUrls(**args)


def unmarshal_ControlPanel(data: Any) -> ControlPanel:
if not isinstance(data, dict):
raise TypeError(
"Unmarshalling the type 'ControlPanel' failed as data isn't a dictionary."
)

args: dict[str, Any] = {}

field = data.get("name", None)
if field is not None:
args["name"] = field
else:
args["name"] = None

field = data.get("available", None)
if field is not None:
args["available"] = field
else:
args["available"] = False

field = data.get("logo_url", None)
if field is not None:
args["logo_url"] = field
else:
args["logo_url"] = None

field = data.get("available_languages", None)
if field is not None:
args["available_languages"] = (
[StdLanguageCode(v) for v in field] if field is not None else None
)
else:
args["available_languages"] = []

return ControlPanel(**args)


def unmarshal_OfferCommitment(data: Any) -> OfferCommitment:
if not isinstance(data, dict):
raise TypeError(
Expand Down Expand Up @@ -830,6 +794,43 @@ def unmarshal_OfferCommitment(data: Any) -> OfferCommitment:
return OfferCommitment(**args)


def unmarshal_ControlPanel(data: Any) -> ControlPanel:
if not isinstance(data, dict):
raise TypeError(
"Unmarshalling the type 'ControlPanel' failed as data isn't a dictionary."
)

args: dict[str, Any] = {}

field = data.get("name", None)
if field is not None:
args["name"] = field
else:
args["name"] = None

field = data.get("available", None)
if field is not None:
args["available"] = field
else:
args["available"] = False

field = data.get("logo_url", None)
if field is not None:
args["logo_url"] = field
else:
args["logo_url"] = None

field = data.get("available_languages", None)
if field is not None:
args["available_languages"] = (
[StdLanguageCode(v) for v in field] if field is not None else None
)
else:
args["available_languages"] = []

return ControlPanel(**args)


def unmarshal_OfferOption(data: Any) -> OfferOption:
if not isinstance(data, dict):
raise TypeError(
Expand Down Expand Up @@ -912,6 +913,41 @@ def unmarshal_PlatformControlPanel(data: Any) -> PlatformControlPanel:
return PlatformControlPanel(**args)


def unmarshal_HostingCommitment(data: Any) -> HostingCommitment:
if not isinstance(data, dict):
raise TypeError(
"Unmarshalling the type 'HostingCommitment' failed as data isn't a dictionary."
)

args: dict[str, Any] = {}

field = data.get("delete_hosting_at_end", None)
if field is not None:
args["delete_hosting_at_end"] = field
else:
args["delete_hosting_at_end"] = False

field = data.get("offer_commitment", None)
if field is not None:
args["offer_commitment"] = unmarshal_OfferCommitment(field)
else:
args["offer_commitment"] = None

field = data.get("start_at", None)
if field is not None:
args["start_at"] = parser.isoparse(field) if isinstance(field, str) else field
else:
args["start_at"] = None

field = data.get("end_at", None)
if field is not None:
args["end_at"] = parser.isoparse(field) if isinstance(field, str) else field
else:
args["end_at"] = None

return HostingCommitment(**args)


def unmarshal_HostingUser(data: Any) -> HostingUser:
if not isinstance(data, dict):
raise TypeError(
Expand Down Expand Up @@ -1187,6 +1223,12 @@ def unmarshal_Hosting(data: Any) -> Hosting:
else:
args["domain_info"] = None

field = data.get("commitment", None)
if field is not None:
args["commitment"] = unmarshal_HostingCommitment(field)
else:
args["commitment"] = None

return Hosting(**args)


Expand Down Expand Up @@ -2138,6 +2180,9 @@ def marshal_HostingApiCreateHostingRequest(
request.auto_config_domain_dns, defaults
)

if request.offer_commitment_id is not None:
output["offer_commitment_id"] = request.offer_commitment_id

return output


Expand Down
81 changes: 58 additions & 23 deletions scaleway-async/scaleway_async/webhosting/v1/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -385,29 +385,6 @@ class HostingDomainCustomDomain:
"""


@dataclass
class ControlPanel:
name: str
"""
Control panel name.
"""

available: bool
"""
Define if the control panel type is available to order.
"""

logo_url: str
"""
URL of the control panel's logo.
"""

available_languages: list[StdLanguageCode]
"""
List of available languages for the control panel.
"""


@dataclass
class OfferCommitment:
id: str
Expand Down Expand Up @@ -446,6 +423,29 @@ class OfferCommitment:
"""


@dataclass
class ControlPanel:
name: str
"""
Control panel name.
"""

available: bool
"""
Define if the control panel type is available to order.
"""

logo_url: str
"""
URL of the control panel's logo.
"""

available_languages: list[StdLanguageCode]
"""
List of available languages for the control panel.
"""


@dataclass
class OfferOption:
id: str
Expand Down Expand Up @@ -650,6 +650,31 @@ class Nameserver:
"""


@dataclass
class HostingCommitment:
delete_hosting_at_end: bool
"""
The hosting may be deleted, automatically renewed, or switched to
its configured post-commitment offer, which may have a different
price and billing period.
"""

offer_commitment: Optional[OfferCommitment] = None
"""
Offer commitment for the specified hosting.
"""

start_at: Optional[datetime] = None
"""
Date and time the commitment started.
"""

end_at: Optional[datetime] = None
"""
Date and time the commitment ends.
"""


@dataclass
class HostingUser:
username: str
Expand Down Expand Up @@ -1824,6 +1849,11 @@ class Hosting:
Domain configuration block (subdomain, optional custom domain, and DNS settings).
"""

commitment: Optional[HostingCommitment] = None
"""
Commitment details to which the hosting is engaged.
"""


@dataclass
class HostingApiAddCustomDomainRequest:
Expand Down Expand Up @@ -1905,6 +1935,11 @@ class HostingApiCreateHostingRequest:
Indicates whether to update hosting domain name servers and DNS records for domains managed by Scaleway Elements (deprecated, use auto_update_* fields instead).
"""

offer_commitment_id: Optional[str] = None
"""
Offer commitment ID to which the hosting will be engaged.
"""


@dataclass
class HostingApiCreateSessionRequest:
Expand Down
6 changes: 4 additions & 2 deletions scaleway/scaleway/webhosting/v1/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@
from .types import AutoConfigDomainDns
from .types import PlatformControlPanelUrls
from .types import HostingDomainCustomDomain
from .types import ControlPanel
from .types import OfferCommitment
from .types import ControlPanel
from .types import OfferOption
from .types import PlatformControlPanel
from .types import BackupItem
Expand All @@ -48,6 +48,7 @@
from .types import SyncDomainDnsRecordsRequestRecord
from .types import DnsRecord
from .types import Nameserver
from .types import HostingCommitment
from .types import HostingUser
from .types import Offer
from .types import Platform
Expand Down Expand Up @@ -185,8 +186,8 @@
"AutoConfigDomainDns",
"PlatformControlPanelUrls",
"HostingDomainCustomDomain",
"ControlPanel",
"OfferCommitment",
"ControlPanel",
"OfferOption",
"PlatformControlPanel",
"BackupItem",
Expand All @@ -198,6 +199,7 @@
"SyncDomainDnsRecordsRequestRecord",
"DnsRecord",
"Nameserver",
"HostingCommitment",
"HostingUser",
"Offer",
"Platform",
Expand Down
Loading
Loading