Skip to content

Commit 4af6685

Browse files
author
Elias Nygren
committed
improve Storage and IP-address factories
1 parent 0efc981 commit 4af6685

File tree

2 files changed

+29
-7
lines changed

2 files changed

+29
-7
lines changed

upcloud_api/ip_address.py

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,18 @@ def family(self): # noqa
7373
return self._family
7474

7575
@staticmethod
76-
def _create_ip_address_objs(IP_addrs, cloud_manager):
77-
IP_objs = list()
78-
for ip_addr in IP_addrs['ip_address']:
79-
IP_objs.append(IP_address(cloud_manager=cloud_manager, **ip_addr))
80-
return IP_objs
76+
def _create_ip_address_objs(ip_addresses, cloud_manager):
77+
78+
# ip-addresses might be provided as a flat array or as a following dict:
79+
# {'ip_addresses': {'ip_address': [...]}} || {'ip_address': [...]}
80+
81+
if 'ip_addresses' in ip_addresses:
82+
ip_addresses = ip_addresses['ip_addresses']
83+
84+
if 'ip_address' in ip_addresses:
85+
ip_addresses = ip_addresses['ip_address']
86+
87+
ip_address_objs = list()
88+
for ip_addr in ip_addresses:
89+
ip_address_objs.append(IP_address(cloud_manager=cloud_manager, **ip_addr))
90+
return ip_address_objs

upcloud_api/storage.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,12 +112,24 @@ def prepare_post_body(self, storage_title=None, storage_title_id=None):
112112

113113
@staticmethod
114114
def _create_storage_objs(storages, cloud_manager):
115-
if 'storage' in storages:
116-
storages = storages['storage']
115+
116+
# storages might be provided as a flat array or as a following dict:
117+
# {'storage_devices': {'storage_device': [...]}} || {'storage_device': [...]}
118+
119+
if 'storage_devices' in storages:
120+
storages = storages['storage_devices']
117121

118122
if 'storage_device' in storages:
119123
storages = storages['storage_device']
120124

125+
# or {'storages': {'storage': [...]}} || {'storage': [...]}
126+
127+
if 'storages' in storages:
128+
storages = storages['storages']
129+
130+
if 'storage' in storages:
131+
storages = storages['storage']
132+
121133
storage_objs = list()
122134
for storage in storages:
123135
storage_objs.append(Storage(cloud_manager=cloud_manager, **storage))

0 commit comments

Comments
 (0)