Skip to content

Commit 671b396

Browse files
committed
fix import syntax
1 parent fa6fe59 commit 671b396

File tree

3 files changed

+145
-131
lines changed

3 files changed

+145
-131
lines changed

scaleway/scaleway/instance/custom_api.py

Lines changed: 0 additions & 131 deletions
This file was deleted.
Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
from dataclasses import dataclass
2+
from typing import Dict, Any, Optional, BinaryIO
3+
4+
from scaleway_core.bridge import Zone
5+
from scaleway_core.profile import ProfileDefaults
6+
from scaleway_core.utils import validate_path_param
7+
from .api import InstanceV1API
8+
9+
@dataclass
10+
class GetServerUserDataRequest:
11+
zone: Optional[Zone]
12+
"""
13+
Zone of the user data to get
14+
"""
15+
16+
server_id: str
17+
18+
key: str
19+
"""
20+
Key defines the user data key to get
21+
"""
22+
23+
24+
def marshal_GetServerUserDataRequest(request: GetServerUserDataRequest, defaults: ProfileDefaults) -> Dict[str, Any]:
25+
output: Dict[str, Any] = {}
26+
27+
if request.server_id is not None:
28+
output["server_id"] = request.server_id
29+
if request.key is not None:
30+
output["key"] = request.key
31+
if request.zone is not None:
32+
output["zone"] = request.zone
33+
34+
return output
35+
36+
@dataclass
37+
class SetServerUserDataRequest:
38+
zone: Optional[Zone]
39+
"""
40+
Zone of the user data to set
41+
"""
42+
43+
server_id: str
44+
45+
key: str
46+
"""
47+
Key defines the user data key to set
48+
"""
49+
50+
content: BinaryIO
51+
"""
52+
Content defines the data to set
53+
"""
54+
55+
def marshal_SetServerUserDataRequest(request: SetServerUserDataRequest, defaults: ProfileDefaults) -> Dict[str, Any]:
56+
output: Dict[str, Any] = {}
57+
58+
if request.server_id is not None:
59+
output["server_id"] = request.server_id
60+
if request.key is not None:
61+
output["key"] = request.key
62+
if request.zone is not None:
63+
output["zone"] = request.zone
64+
if request.content is not None:
65+
output["content"] = request.content
66+
67+
return output
68+
69+
70+
class InstanceUtilsV1API(InstanceV1API):
71+
"""
72+
This API extends InstanceV1API by adding utility methods for managing Instance resources,
73+
such as getting and setting server user data, while inheriting all methods of InstanceV1API.
74+
"""
75+
76+
def get_server_user_data(self, server_id: str, key: str, zone: Optional[Zone] = None):
77+
"""
78+
GetServerUserData gets the content of a user data on a server for the given key.
79+
:param zone: Zone to target. If none is passed will use default zone from the config.
80+
:param server_id:
81+
:param key:
82+
:return: A plain text response with data user information
83+
84+
Usage:
85+
::
86+
87+
result = api.get_server_user_data(
88+
server_id="example",
89+
key="example",
90+
)
91+
"""
92+
param_zone = validate_path_param("zone", zone or self.client.default_zone)
93+
param_server_id = validate_path_param("server_id", server_id)
94+
95+
res = self._request(
96+
"GET",
97+
f"/instance/v1/zones/{param_zone}/servers/{param_server_id}/user_data/{key}",
98+
body=marshal_GetServerUserDataRequest(
99+
GetServerUserDataRequest(
100+
zone= zone,
101+
server_id= server_id,
102+
key=key,
103+
),
104+
self.client,
105+
),
106+
)
107+
108+
self._throw_on_error(res)
109+
return res.json()
110+
111+
def set_server_user_data(self, server_id: str, key: str, content: BinaryIO, zone: Optional[Zone] = None):
112+
"""
113+
Sets the content of a user data on a server for the given key.
114+
:param zone: Zone to target. If none is passed, it will use the default zone from the config.
115+
:param server_id: The ID of the server.
116+
:param key: The user data key.
117+
:param content: The content to set as user data.
118+
:return: A plain text response confirming the operation.
119+
"""
120+
param_zone = validate_path_param("zone", zone or self.client.default_zone)
121+
param_server_id = validate_path_param("server_id", server_id)
122+
123+
res = self._request(
124+
"PATCH",
125+
f"/instance/v1/zones/{param_zone}/servers/{param_server_id}/user_data/{key}",
126+
body=marshal_SetServerUserDataRequest(
127+
SetServerUserDataRequest(
128+
zone= zone,
129+
server_id= server_id,
130+
key=key,
131+
content=content,
132+
),
133+
self.client,
134+
),
135+
)
136+
137+
self._throw_on_error(res)
138+
return res.json()
139+
140+
141+
142+
def test_method(self):
143+
print("hello")
144+
145+
InstanceV1API.test_method = test_method

scaleway/scaleway/instance/v1/tests.py

Whitespace-only changes.

0 commit comments

Comments
 (0)