Skip to content

Commit 4013dcd

Browse files
author
Elias Nygren
committed
server and storage optional POST body variables
1 parent 3c428cf commit 4013dcd

File tree

3 files changed

+43
-1
lines changed

3 files changed

+43
-1
lines changed

tests/test_server_creation.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,17 @@ def test_storage_prepare_post_body(self, manager):
2727
assert body2['action'] == 'create'
2828
assert body2['size'] == 100
2929

30+
def test_storage_prepare_post_body_optional_attributes(self, manager):
31+
s2 = Storage(size=100, address="virtio:0", type="disk")
32+
body2 = s2.prepare_post_body("my.example.com", 1)
33+
34+
assert body2['title'] == 'my.example.com storage disk 1'
35+
assert body2['tier'] == 'maxiops'
36+
assert body2['action'] == 'create'
37+
assert body2['size'] == 100
38+
assert body2['address'] == "virtio:0"
39+
assert body2['type'] == "disk"
40+
3041
def test_server_init(self, manager):
3142
server1 = Server(core_number=2, memory_amount=1024, hostname="my.example.com",zone=ZONE.Chicago, storage_devices=[
3243
Storage(os="Ubuntu 14.04", size=10),
@@ -65,6 +76,21 @@ def test_server_prepare_post_body(self):
6576
assert body["server"]["hostname"] == server.title
6677
assert body["server"]["zone"] == "us-chi1"
6778

79+
def test_server_prepare_post_body_optional_attributes(self):
80+
server = Server(core_number=2, memory_amount=1024,
81+
hostname="my.example.com",zone=ZONE.Chicago,
82+
storage_devices=[ Storage(os="Ubuntu 14.04", size=10)],
83+
vnc_password="my-passwd", password_delivery="email" )
84+
85+
body = server.prepare_post_body()
86+
assert body["server"]["title"] == "my.example.com"
87+
assert body["server"]["core_number"] == 2
88+
assert body["server"]["memory_amount"] == 1024
89+
assert body["server"]["hostname"] == server.title
90+
assert body["server"]["zone"] == "us-chi1"
91+
assert body["server"]["vnc_password"] == "my-passwd"
92+
assert body["server"]["password_delivery"] == "email"
93+
6894
@responses.activate
6995
def test_create_server(self, manager):
7096

upcloud/server.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ class Server(BaseAPI):
1212
updateable_fields = [ "boot_order", "core_number", "firewall", "hostname", "memory_amount",
1313
"nic_model", "title", "timezone", "video_model", "vnc", "vnc_password" ]
1414

15+
post_fields = []
16+
1517

1618
def __init__(self, *initial_data, **kwargs):
1719
object.__setattr__(self, "populated", False)
@@ -162,11 +164,21 @@ def prepare_post_body(self):
162164
"title": self.title,
163165
"storage_devices": {}
164166
}
167+
168+
# optionals
169+
if hasattr(self, "boot_order"): body["server"]["boot_order"] = self.boot_order
170+
if hasattr(self, "firewall"): body["server"]["firewall"] = self.firewall
171+
if hasattr(self, "nic_model"): body["server"]["nic_model"] = self.nic_model
172+
if hasattr(self, "password_delivery"): body["server"]["password_delivery"] = self.password_delivery
173+
if hasattr(self, "timezone"): body["server"]["timezone"] = self.timezone
174+
if hasattr(self, "video_model"): body["server"]["video_model"] = self.video_model
175+
if hasattr(self, "vnc_password"): body["server"]["vnc_password"] = self.vnc_password
176+
177+
165178
body["server"]["storage_devices"] = {
166179
"storage_device": []
167180
}
168181

169-
170182
storage_title_id = 0 # running number for unique storage titles
171183
for storage in self.storage_devices:
172184
if storage.os == None:

upcloud/storage.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,10 @@ def prepare_post_body(self, hostname, storage_title_id):
8787
if body["action"] == "attach" or body["action"] == "clone":
8888
body["storage"] = OperatingSystems.get_OS_UUID(self.os)
8989

90+
# optionals
91+
if self.type: body["type"] = self.type
92+
if self.address: body["address"] = self.address
93+
9094
return body
9195

9296
@staticmethod

0 commit comments

Comments
 (0)