Skip to content

Commit bd6d794

Browse files
authored
feat(baremetal): add support for MigrateServerToMonthlyOfferRequest (#868)
1 parent 0a00c58 commit bd6d794

File tree

10 files changed

+120
-0
lines changed

10 files changed

+120
-0
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@
8181
from .types import ListServersResponse
8282
from .types import ListSettingsRequest
8383
from .types import ListSettingsResponse
84+
from .types import MigrateServerToMonthlyOfferRequest
8485
from .types import PrivateNetworkApiAddServerPrivateNetworkRequest
8586
from .types import PrivateNetworkApiDeleteServerPrivateNetworkRequest
8687
from .types import PrivateNetworkApiListServerPrivateNetworksRequest
@@ -180,6 +181,7 @@
180181
"ListServersResponse",
181182
"ListSettingsRequest",
182183
"ListSettingsResponse",
184+
"MigrateServerToMonthlyOfferRequest",
183185
"PrivateNetworkApiAddServerPrivateNetworkRequest",
184186
"PrivateNetworkApiDeleteServerPrivateNetworkRequest",
185187
"PrivateNetworkApiListServerPrivateNetworksRequest",

scaleway-async/scaleway_async/baremetal/v1/api.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1035,6 +1035,38 @@ async def delete_option_server(
10351035
self._throw_on_error(res)
10361036
return unmarshal_Server(res.json())
10371037

1038+
async def migrate_server_to_monthly_offer(
1039+
self,
1040+
*,
1041+
server_id: str,
1042+
zone: Optional[ScwZone] = None,
1043+
) -> Server:
1044+
"""
1045+
Migrate server offer.
1046+
Migrate server with hourly offer to monthly offer.
1047+
:param server_id: ID of the server.
1048+
:param zone: Zone to target. If none is passed will use default zone from the config.
1049+
:return: :class:`Server <Server>`
1050+
1051+
Usage:
1052+
::
1053+
1054+
result = await api.migrate_server_to_monthly_offer(
1055+
server_id="example",
1056+
)
1057+
"""
1058+
1059+
param_zone = validate_path_param("zone", zone or self.client.default_zone)
1060+
param_server_id = validate_path_param("server_id", server_id)
1061+
1062+
res = self._request(
1063+
"POST",
1064+
f"/baremetal/v1/zones/{param_zone}/servers/{param_server_id}/migrate-offer-monthly",
1065+
)
1066+
1067+
self._throw_on_error(res)
1068+
return unmarshal_Server(res.json())
1069+
10381070
async def list_offers(
10391071
self,
10401072
*,

scaleway-async/scaleway_async/baremetal/v1/content.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
ServerStatus.DELETING,
3030
ServerStatus.ORDERED,
3131
ServerStatus.RESETTING,
32+
ServerStatus.MIGRATING,
3233
]
3334
"""
3435
Lists transient statutes of the enum :class:`ServerStatus <ServerStatus>`.

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -781,6 +781,12 @@ def unmarshal_Offer(data: Any) -> Offer:
781781
else:
782782
args["fee"] = None
783783

784+
field = data.get("monthly_offer_id", None)
785+
if field is not None:
786+
args["monthly_offer_id"] = field
787+
else:
788+
args["monthly_offer_id"] = None
789+
784790
return Offer(**args)
785791

786792

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

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,7 @@ class ServerStatus(str, Enum, metaclass=StrEnumMeta):
203203
OUT_OF_STOCK = "out_of_stock"
204204
ORDERED = "ordered"
205205
RESETTING = "resetting"
206+
MIGRATING = "migrating"
206207

207208
def __str__(self) -> str:
208209
return str(self.value)
@@ -824,6 +825,11 @@ class Offer:
824825
One time fee invoiced by Scaleway for the setup and activation of the server.
825826
"""
826827

828+
monthly_offer_id: Optional[str]
829+
"""
830+
Exist only for hourly offers, to migrate to the monthly offer.
831+
"""
832+
827833

828834
@dataclass
829835
class Option:
@@ -1589,6 +1595,19 @@ class ListSettingsResponse:
15891595
"""
15901596

15911597

1598+
@dataclass
1599+
class MigrateServerToMonthlyOfferRequest:
1600+
server_id: str
1601+
"""
1602+
ID of the server.
1603+
"""
1604+
1605+
zone: Optional[ScwZone]
1606+
"""
1607+
Zone to target. If none is passed will use default zone from the config.
1608+
"""
1609+
1610+
15921611
@dataclass
15931612
class PrivateNetworkApiAddServerPrivateNetworkRequest:
15941613
server_id: str

scaleway/scaleway/baremetal/v1/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@
8181
from .types import ListServersResponse
8282
from .types import ListSettingsRequest
8383
from .types import ListSettingsResponse
84+
from .types import MigrateServerToMonthlyOfferRequest
8485
from .types import PrivateNetworkApiAddServerPrivateNetworkRequest
8586
from .types import PrivateNetworkApiDeleteServerPrivateNetworkRequest
8687
from .types import PrivateNetworkApiListServerPrivateNetworksRequest
@@ -180,6 +181,7 @@
180181
"ListServersResponse",
181182
"ListSettingsRequest",
182183
"ListSettingsResponse",
184+
"MigrateServerToMonthlyOfferRequest",
183185
"PrivateNetworkApiAddServerPrivateNetworkRequest",
184186
"PrivateNetworkApiDeleteServerPrivateNetworkRequest",
185187
"PrivateNetworkApiListServerPrivateNetworksRequest",

scaleway/scaleway/baremetal/v1/api.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1035,6 +1035,38 @@ def delete_option_server(
10351035
self._throw_on_error(res)
10361036
return unmarshal_Server(res.json())
10371037

1038+
def migrate_server_to_monthly_offer(
1039+
self,
1040+
*,
1041+
server_id: str,
1042+
zone: Optional[ScwZone] = None,
1043+
) -> Server:
1044+
"""
1045+
Migrate server offer.
1046+
Migrate server with hourly offer to monthly offer.
1047+
:param server_id: ID of the server.
1048+
:param zone: Zone to target. If none is passed will use default zone from the config.
1049+
:return: :class:`Server <Server>`
1050+
1051+
Usage:
1052+
::
1053+
1054+
result = api.migrate_server_to_monthly_offer(
1055+
server_id="example",
1056+
)
1057+
"""
1058+
1059+
param_zone = validate_path_param("zone", zone or self.client.default_zone)
1060+
param_server_id = validate_path_param("server_id", server_id)
1061+
1062+
res = self._request(
1063+
"POST",
1064+
f"/baremetal/v1/zones/{param_zone}/servers/{param_server_id}/migrate-offer-monthly",
1065+
)
1066+
1067+
self._throw_on_error(res)
1068+
return unmarshal_Server(res.json())
1069+
10381070
def list_offers(
10391071
self,
10401072
*,

scaleway/scaleway/baremetal/v1/content.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
ServerStatus.DELETING,
3030
ServerStatus.ORDERED,
3131
ServerStatus.RESETTING,
32+
ServerStatus.MIGRATING,
3233
]
3334
"""
3435
Lists transient statutes of the enum :class:`ServerStatus <ServerStatus>`.

scaleway/scaleway/baremetal/v1/marshalling.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -781,6 +781,12 @@ def unmarshal_Offer(data: Any) -> Offer:
781781
else:
782782
args["fee"] = None
783783

784+
field = data.get("monthly_offer_id", None)
785+
if field is not None:
786+
args["monthly_offer_id"] = field
787+
else:
788+
args["monthly_offer_id"] = None
789+
784790
return Offer(**args)
785791

786792

scaleway/scaleway/baremetal/v1/types.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,7 @@ class ServerStatus(str, Enum, metaclass=StrEnumMeta):
203203
OUT_OF_STOCK = "out_of_stock"
204204
ORDERED = "ordered"
205205
RESETTING = "resetting"
206+
MIGRATING = "migrating"
206207

207208
def __str__(self) -> str:
208209
return str(self.value)
@@ -824,6 +825,11 @@ class Offer:
824825
One time fee invoiced by Scaleway for the setup and activation of the server.
825826
"""
826827

828+
monthly_offer_id: Optional[str]
829+
"""
830+
Exist only for hourly offers, to migrate to the monthly offer.
831+
"""
832+
827833

828834
@dataclass
829835
class Option:
@@ -1589,6 +1595,19 @@ class ListSettingsResponse:
15891595
"""
15901596

15911597

1598+
@dataclass
1599+
class MigrateServerToMonthlyOfferRequest:
1600+
server_id: str
1601+
"""
1602+
ID of the server.
1603+
"""
1604+
1605+
zone: Optional[ScwZone]
1606+
"""
1607+
Zone to target. If none is passed will use default zone from the config.
1608+
"""
1609+
1610+
15921611
@dataclass
15931612
class PrivateNetworkApiAddServerPrivateNetworkRequest:
15941613
server_id: str

0 commit comments

Comments
 (0)