Skip to content

Commit 57a22d5

Browse files
committed
add set_all_user_data
1 parent 4bde6ef commit 57a22d5

File tree

3 files changed

+33
-7
lines changed

3 files changed

+33
-7
lines changed

scaleway/scaleway/instance/v1/custom_api.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from mypy.semanal import names_modified_in_lvalue
44
from requests import Response
55

6-
from scaleway_core.bridge import Zone
6+
from scaleway_core.bridge import Zone as ScwZone
77
from scaleway_core.utils import validate_path_param
88
from .api import InstanceV1API
99
from .custom_marshalling import marshal_GetServerUserDataRequest
@@ -17,7 +17,7 @@ class InstanceUtilsV1API(InstanceV1API):
1717
"""
1818

1919
def get_server_user_data(
20-
self, server_id: str, key: str, zone: Optional[Zone] = None
20+
self, server_id: str, key: str, zone: Optional[ScwZone] = None
2121
) -> Response:
2222
"""
2323
GetServerUserData gets the content of a user data on a server for the given key.
@@ -53,7 +53,7 @@ def get_server_user_data(
5353
return res
5454

5555
def set_server_user_data(
56-
self, server_id: str, key: str, content: bytes, zone: Optional[Zone] = None
56+
self, server_id: str, key: str, content: bytes, zone: Optional[ScwZone] = None
5757
) -> Response:
5858
"""
5959
Sets the content of a user data on a server for the given key.
@@ -78,7 +78,7 @@ def set_server_user_data(
7878
self._throw_on_error(res)
7979
return res
8080

81-
def get_all_server_user_data(self, server_id: str, zone: Optional[Zone] = None) -> GetAllServerUserDataResponse:
81+
def get_all_server_user_data(self, server_id: str, zone: Optional[ScwZone] = None) -> GetAllServerUserDataResponse:
8282
param_zone = validate_path_param("zone", zone or self.client.default_zone)
8383
param_server_id = validate_path_param("server_id", server_id)
8484

@@ -94,5 +94,20 @@ def get_all_server_user_data(self, server_id: str, zone: Optional[Zone] = None)
9494

9595
return res
9696

97+
def set_all_server_user_data(self, server_id: str, user_data: Dict[str, bytes], zone: Optional[ScwZone] = None):
98+
param_zone = validate_path_param("zone", zone or self.client.default_zone)
99+
param_server_id = validate_path_param("server_id", server_id)
100+
101+
all_user_data_res = InstanceUtilsV1API.list_server_user_data(self, server_id=param_server_id, zone=param_zone)
102+
for key in all_user_data_res.user_data:
103+
if user_data.get(key) is not None:
104+
continue
105+
InstanceUtilsV1API.delete_server_user_data(self, server_id=param_server_id, key=key)
106+
107+
for key in user_data:
108+
InstanceUtilsV1API.set_server_user_data(self, server_id=param_server_id, zone=param_zone, key=key, content=user_data[key])
109+
110+
111+
97112

98113

scaleway/scaleway/instance/v1/custom_marshalling.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from scaleway.instance.v1.custom_types import (
44
GetServerUserDataRequest,
5-
ListServerUserDataRequest,
5+
GetAllServerUserDataRequest,
66
)
77
from scaleway_core.profile import ProfileDefaults
88

@@ -21,7 +21,7 @@ def marshal_GetServerUserDataRequest(
2121

2222
return output
2323

24-
def marshal_ListServerUserDataRequest(request: ListServerUserDataRequest, defaults: ProfileDefaults) -> Dict[str, Any]:
24+
def marshal_ListServerUserDataRequest(request: GetAllServerUserDataRequest, defaults: ProfileDefaults) -> Dict[str, Any]:
2525
output: Dict[str, Any] = {}
2626

2727
if request.server_id is not None:

scaleway/scaleway/instance/v1/custom_types.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class GetServerUserDataRequest:
1919
"""
2020

2121
@dataclass
22-
class ListServerUserDataRequest:
22+
class GetAllServerUserDataRequest:
2323
zone: Optional[Zone]
2424
"""
2525
Zone of the user data to get
@@ -30,3 +30,14 @@ class ListServerUserDataRequest:
3030
@dataclass
3131
class GetAllServerUserDataResponse:
3232
user_data: Dict[str, bytes]
33+
34+
@dataclass
35+
class SetAllServerUserDataRequest:
36+
zone: Optional[Zone]
37+
"""
38+
Zone of the user data to set
39+
"""
40+
41+
server_id: str
42+
43+
user_data: Dict[str, bytes]

0 commit comments

Comments
 (0)