Skip to content

Commit 1b76029

Browse files
fix(instance): activate attach/detach filesystems in the sdk (#962)
Co-authored-by: Jonathan R. <[email protected]>
1 parent 16f23df commit 1b76029

File tree

8 files changed

+400
-0
lines changed

8 files changed

+400
-0
lines changed

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

+8
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@
7878
from .types import VolumeImageUpdateTemplate
7979
from .types import SecurityGroupTemplate
8080
from .types import ApplyBlockMigrationRequest
81+
from .types import AttachServerFileSystemRequest
82+
from .types import AttachServerFileSystemResponse
8183
from .types import AttachServerVolumeRequest
8284
from .types import AttachServerVolumeResponse
8385
from .types import CheckBlockMigrationOrganizationQuotasRequest
@@ -109,6 +111,8 @@
109111
from .types import DeleteServerUserDataRequest
110112
from .types import DeleteSnapshotRequest
111113
from .types import DeleteVolumeRequest
114+
from .types import DetachServerFileSystemRequest
115+
from .types import DetachServerFileSystemResponse
112116
from .types import DetachServerVolumeRequest
113117
from .types import DetachServerVolumeResponse
114118
from .types import ExportSnapshotRequest
@@ -277,6 +281,8 @@
277281
"VolumeImageUpdateTemplate",
278282
"SecurityGroupTemplate",
279283
"ApplyBlockMigrationRequest",
284+
"AttachServerFileSystemRequest",
285+
"AttachServerFileSystemResponse",
280286
"AttachServerVolumeRequest",
281287
"AttachServerVolumeResponse",
282288
"CheckBlockMigrationOrganizationQuotasRequest",
@@ -308,6 +314,8 @@
308314
"DeleteServerUserDataRequest",
309315
"DeleteSnapshotRequest",
310316
"DeleteVolumeRequest",
317+
"DetachServerFileSystemRequest",
318+
"DetachServerFileSystemResponse",
311319
"DetachServerVolumeRequest",
312320
"DetachServerVolumeResponse",
313321
"ExportSnapshotRequest",

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

+92
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@
4343
SnapshotVolumeType,
4444
VolumeVolumeType,
4545
ApplyBlockMigrationRequest,
46+
AttachServerFileSystemRequest,
47+
AttachServerFileSystemResponse,
4648
AttachServerVolumeRequest,
4749
AttachServerVolumeResponse,
4850
Bootscript,
@@ -65,6 +67,8 @@
6567
CreateSnapshotResponse,
6668
CreateVolumeRequest,
6769
CreateVolumeResponse,
70+
DetachServerFileSystemRequest,
71+
DetachServerFileSystemResponse,
6872
DetachServerVolumeRequest,
6973
DetachServerVolumeResponse,
7074
ExportSnapshotRequest,
@@ -151,6 +155,7 @@
151155
)
152156
from .marshalling import (
153157
unmarshal_PrivateNIC,
158+
unmarshal_AttachServerFileSystemResponse,
154159
unmarshal_AttachServerVolumeResponse,
155160
unmarshal_CreateImageResponse,
156161
unmarshal_CreateIpResponse,
@@ -161,6 +166,7 @@
161166
unmarshal_CreateServerResponse,
162167
unmarshal_CreateSnapshotResponse,
163168
unmarshal_CreateVolumeResponse,
169+
unmarshal_DetachServerFileSystemResponse,
164170
unmarshal_DetachServerVolumeResponse,
165171
unmarshal_ExportSnapshotResponse,
166172
unmarshal_GetDashboardResponse,
@@ -209,6 +215,7 @@
209215
unmarshal__SetServerResponse,
210216
unmarshal__SetSnapshotResponse,
211217
marshal_ApplyBlockMigrationRequest,
218+
marshal_AttachServerFileSystemRequest,
212219
marshal_AttachServerVolumeRequest,
213220
marshal_CheckBlockMigrationOrganizationQuotasRequest,
214221
marshal_CreateImageRequest,
@@ -220,6 +227,7 @@
220227
marshal_CreateServerRequest,
221228
marshal_CreateSnapshotRequest,
222229
marshal_CreateVolumeRequest,
230+
marshal_DetachServerFileSystemRequest,
223231
marshal_DetachServerVolumeRequest,
224232
marshal_ExportSnapshotRequest,
225233
marshal_PlanBlockMigrationRequest,
@@ -1167,6 +1175,90 @@ async def detach_server_volume(
11671175
self._throw_on_error(res)
11681176
return unmarshal_DetachServerVolumeResponse(res.json())
11691177

1178+
async def attach_server_file_system(
1179+
self,
1180+
*,
1181+
server_id: str,
1182+
filesystem_id: str,
1183+
zone: Optional[ScwZone] = None,
1184+
) -> AttachServerFileSystemResponse:
1185+
"""
1186+
Attach a filesystem volume to an Instance.
1187+
:param server_id:
1188+
:param filesystem_id:
1189+
:param zone: Zone to target. If none is passed will use default zone from the config.
1190+
:return: :class:`AttachServerFileSystemResponse <AttachServerFileSystemResponse>`
1191+
1192+
Usage:
1193+
::
1194+
1195+
result = await api.attach_server_file_system(
1196+
server_id="example",
1197+
filesystem_id="example",
1198+
)
1199+
"""
1200+
1201+
param_zone = validate_path_param("zone", zone or self.client.default_zone)
1202+
param_server_id = validate_path_param("server_id", server_id)
1203+
1204+
res = self._request(
1205+
"POST",
1206+
f"/instance/v1/zones/{param_zone}/servers/{param_server_id}/attach-filesystem",
1207+
body=marshal_AttachServerFileSystemRequest(
1208+
AttachServerFileSystemRequest(
1209+
server_id=server_id,
1210+
filesystem_id=filesystem_id,
1211+
zone=zone,
1212+
),
1213+
self.client,
1214+
),
1215+
)
1216+
1217+
self._throw_on_error(res)
1218+
return unmarshal_AttachServerFileSystemResponse(res.json())
1219+
1220+
async def detach_server_file_system(
1221+
self,
1222+
*,
1223+
server_id: str,
1224+
filesystem_id: str,
1225+
zone: Optional[ScwZone] = None,
1226+
) -> DetachServerFileSystemResponse:
1227+
"""
1228+
Detach a filesystem volume to an Instance.
1229+
:param server_id:
1230+
:param filesystem_id:
1231+
:param zone: Zone to target. If none is passed will use default zone from the config.
1232+
:return: :class:`DetachServerFileSystemResponse <DetachServerFileSystemResponse>`
1233+
1234+
Usage:
1235+
::
1236+
1237+
result = await api.detach_server_file_system(
1238+
server_id="example",
1239+
filesystem_id="example",
1240+
)
1241+
"""
1242+
1243+
param_zone = validate_path_param("zone", zone or self.client.default_zone)
1244+
param_server_id = validate_path_param("server_id", server_id)
1245+
1246+
res = self._request(
1247+
"POST",
1248+
f"/instance/v1/zones/{param_zone}/servers/{param_server_id}/detach-filesystem",
1249+
body=marshal_DetachServerFileSystemRequest(
1250+
DetachServerFileSystemRequest(
1251+
server_id=server_id,
1252+
filesystem_id=filesystem_id,
1253+
zone=zone,
1254+
),
1255+
self.client,
1256+
),
1257+
)
1258+
1259+
self._throw_on_error(res)
1260+
return unmarshal_DetachServerFileSystemResponse(res.json())
1261+
11701262
async def list_images(
11711263
self,
11721264
*,

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

+66
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
ServerMaintenance,
3838
VolumeServer,
3939
Server,
40+
AttachServerFileSystemResponse,
4041
AttachServerVolumeResponse,
4142
CreateImageResponse,
4243
Ip,
@@ -53,6 +54,7 @@
5354
Task,
5455
CreateSnapshotResponse,
5556
CreateVolumeResponse,
57+
DetachServerFileSystemResponse,
5658
DetachServerVolumeResponse,
5759
ExportSnapshotResponse,
5860
Dashboard,
@@ -109,6 +111,7 @@
109111
UpdateSnapshotResponse,
110112
UpdateVolumeResponse,
111113
ApplyBlockMigrationRequest,
114+
AttachServerFileSystemRequest,
112115
AttachServerVolumeRequest,
113116
CheckBlockMigrationOrganizationQuotasRequest,
114117
VolumeTemplate,
@@ -122,6 +125,7 @@
122125
CreateServerRequest,
123126
CreateSnapshotRequest,
124127
CreateVolumeRequest,
128+
DetachServerFileSystemRequest,
125129
DetachServerVolumeRequest,
126130
ExportSnapshotRequest,
127131
PlanBlockMigrationRequest,
@@ -917,6 +921,25 @@ def unmarshal_Server(data: Any) -> Server:
917921
return Server(**args)
918922

919923

924+
def unmarshal_AttachServerFileSystemResponse(
925+
data: Any,
926+
) -> AttachServerFileSystemResponse:
927+
if not isinstance(data, dict):
928+
raise TypeError(
929+
"Unmarshalling the type 'AttachServerFileSystemResponse' failed as data isn't a dictionary."
930+
)
931+
932+
args: Dict[str, Any] = {}
933+
934+
field = data.get("server", None)
935+
if field is not None:
936+
args["server"] = unmarshal_Server(field)
937+
else:
938+
args["server"] = None
939+
940+
return AttachServerFileSystemResponse(**args)
941+
942+
920943
def unmarshal_AttachServerVolumeResponse(data: Any) -> AttachServerVolumeResponse:
921944
if not isinstance(data, dict):
922945
raise TypeError(
@@ -1451,6 +1474,25 @@ def unmarshal_CreateVolumeResponse(data: Any) -> CreateVolumeResponse:
14511474
return CreateVolumeResponse(**args)
14521475

14531476

1477+
def unmarshal_DetachServerFileSystemResponse(
1478+
data: Any,
1479+
) -> DetachServerFileSystemResponse:
1480+
if not isinstance(data, dict):
1481+
raise TypeError(
1482+
"Unmarshalling the type 'DetachServerFileSystemResponse' failed as data isn't a dictionary."
1483+
)
1484+
1485+
args: Dict[str, Any] = {}
1486+
1487+
field = data.get("server", None)
1488+
if field is not None:
1489+
args["server"] = unmarshal_Server(field)
1490+
else:
1491+
args["server"] = None
1492+
1493+
return DetachServerFileSystemResponse(**args)
1494+
1495+
14541496
def unmarshal_DetachServerVolumeResponse(data: Any) -> DetachServerVolumeResponse:
14551497
if not isinstance(data, dict):
14561498
raise TypeError(
@@ -2766,6 +2808,18 @@ def marshal_ApplyBlockMigrationRequest(
27662808
return output
27672809

27682810

2811+
def marshal_AttachServerFileSystemRequest(
2812+
request: AttachServerFileSystemRequest,
2813+
defaults: ProfileDefaults,
2814+
) -> Dict[str, Any]:
2815+
output: Dict[str, Any] = {}
2816+
2817+
if request.filesystem_id is not None:
2818+
output["filesystem_id"] = request.filesystem_id
2819+
2820+
return output
2821+
2822+
27692823
def marshal_AttachServerVolumeRequest(
27702824
request: AttachServerVolumeRequest,
27712825
defaults: ProfileDefaults,
@@ -3240,6 +3294,18 @@ def marshal_CreateVolumeRequest(
32403294
return output
32413295

32423296

3297+
def marshal_DetachServerFileSystemRequest(
3298+
request: DetachServerFileSystemRequest,
3299+
defaults: ProfileDefaults,
3300+
) -> Dict[str, Any]:
3301+
output: Dict[str, Any] = {}
3302+
3303+
if request.filesystem_id is not None:
3304+
output["filesystem_id"] = request.filesystem_id
3305+
3306+
return output
3307+
3308+
32433309
def marshal_DetachServerVolumeRequest(
32443310
request: DetachServerVolumeRequest,
32453311
defaults: ProfileDefaults,

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

+34
Original file line numberDiff line numberDiff line change
@@ -1514,6 +1514,23 @@ class ApplyBlockMigrationRequest:
15141514
snapshot_id: Optional[str]
15151515

15161516

1517+
@dataclass
1518+
class AttachServerFileSystemRequest:
1519+
server_id: str
1520+
1521+
filesystem_id: str
1522+
1523+
zone: Optional[ScwZone]
1524+
"""
1525+
Zone to target. If none is passed will use default zone from the config.
1526+
"""
1527+
1528+
1529+
@dataclass
1530+
class AttachServerFileSystemResponse:
1531+
server: Optional[Server]
1532+
1533+
15171534
@dataclass
15181535
class AttachServerVolumeRequest:
15191536
server_id: str
@@ -2120,6 +2137,23 @@ class DeleteVolumeRequest:
21202137
"""
21212138

21222139

2140+
@dataclass
2141+
class DetachServerFileSystemRequest:
2142+
server_id: str
2143+
2144+
filesystem_id: str
2145+
2146+
zone: Optional[ScwZone]
2147+
"""
2148+
Zone to target. If none is passed will use default zone from the config.
2149+
"""
2150+
2151+
2152+
@dataclass
2153+
class DetachServerFileSystemResponse:
2154+
server: Optional[Server]
2155+
2156+
21232157
@dataclass
21242158
class DetachServerVolumeRequest:
21252159
server_id: str

scaleway/scaleway/instance/v1/__init__.py

+8
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@
7878
from .types import VolumeImageUpdateTemplate
7979
from .types import SecurityGroupTemplate
8080
from .types import ApplyBlockMigrationRequest
81+
from .types import AttachServerFileSystemRequest
82+
from .types import AttachServerFileSystemResponse
8183
from .types import AttachServerVolumeRequest
8284
from .types import AttachServerVolumeResponse
8385
from .types import CheckBlockMigrationOrganizationQuotasRequest
@@ -109,6 +111,8 @@
109111
from .types import DeleteServerUserDataRequest
110112
from .types import DeleteSnapshotRequest
111113
from .types import DeleteVolumeRequest
114+
from .types import DetachServerFileSystemRequest
115+
from .types import DetachServerFileSystemResponse
112116
from .types import DetachServerVolumeRequest
113117
from .types import DetachServerVolumeResponse
114118
from .types import ExportSnapshotRequest
@@ -277,6 +281,8 @@
277281
"VolumeImageUpdateTemplate",
278282
"SecurityGroupTemplate",
279283
"ApplyBlockMigrationRequest",
284+
"AttachServerFileSystemRequest",
285+
"AttachServerFileSystemResponse",
280286
"AttachServerVolumeRequest",
281287
"AttachServerVolumeResponse",
282288
"CheckBlockMigrationOrganizationQuotasRequest",
@@ -308,6 +314,8 @@
308314
"DeleteServerUserDataRequest",
309315
"DeleteSnapshotRequest",
310316
"DeleteVolumeRequest",
317+
"DetachServerFileSystemRequest",
318+
"DetachServerFileSystemResponse",
311319
"DetachServerVolumeRequest",
312320
"DetachServerVolumeResponse",
313321
"ExportSnapshotRequest",

0 commit comments

Comments
 (0)