88standard_library .install_aliases ()
99from builtins import object
1010from ..ip_address import IP_address
11- from ..storage import Storage
11+ from ..storage import Storage
1212
1313from ..server import Server
1414
@@ -22,15 +22,17 @@ class ServerManager(object):
2222
2323 def get_servers (self , populate = False ):
2424 """
25- Returns a list of (populated or unpopulated) Server instances.
25+ Returns a list of (populated or unpopulated) Server instances.
2626 Populate = False (default) => 1 API request, returns unpopulated Server instances.
2727 Populate = True => Does 1 + n API requests (n = # of servers), returns populated Server instances.
2828 """
29-
30- servers = self .get_request ("/server" )["servers" ]["server" ]
29+
30+ servers = self .get_request ("/server" )["servers" ]["server" ]
3131
3232 server_list = list ()
3333 for server in servers :
34+ # remove the extra "tag" dict to simplify accessing tags
35+ server ['tags' ] = server ['tags' ]['tag' ]
3436 server_list .append ( Server (server , cloud_manager = self ) )
3537
3638 if ( populate ):
@@ -39,30 +41,30 @@ def get_servers(self, populate=False):
3941
4042 return server_list
4143
42-
44+
4345 def get_server (self , UUID ):
4446 """
4547 Returns a (populated) Server instance.
4648 """
4749 server , IP_addresses , storages = self .get_server_data (UUID )
48-
49- return Server ( server ,
50- ip_addresses = IP_addresses ,
51- storage_devices = storages ,
50+
51+ return Server ( server ,
52+ ip_addresses = IP_addresses ,
53+ storage_devices = storages ,
5254 populated = True ,
5355 cloud_manager = self )
5456
5557
5658 def create_server (self , server ):
5759 """
58- Creates a server and its storages based on a (locally created) Server object.
60+ Creates a server and its storages based on a (locally created) Server object.
5961 Populates the given Server instance with the API response.
6062
6163 Example:
6264 server1 = Server( core_number = 1,
63- memory_amount = 512,
64- hostname = "my.example.1",
65- zone = ZONE.London,
65+ memory_amount = 512,
66+ hostname = "my.example.1",
67+ zone = ZONE.London,
6668 storage_devices = [
6769 Storage(os = "Ubuntu 14.04", size=10, tier=maxiops, title='The OS drive'),
6870 Storage(size=10),
@@ -75,7 +77,7 @@ def create_server(self, server):
7577 - size defaults to 10,
7678 - title defaults to hostname + " OS disk" and hostname + " storage disk id" (id is a running starting from 1)
7779 - tier defaults to maxiops
78- - valid operating systems are:
80+ - valid operating systems are:
7981 "CentOS 6.5", "CentOS 7.0"
8082 "Debian 7.8"
8183 "Ubuntu 12.04", "Ubuntu 14.04"
@@ -86,14 +88,14 @@ def create_server(self, server):
8688 body = server .prepare_post_body ()
8789
8890 res = self .post_request ("/server" , body )
89-
91+
9092 # Populate subobjects
9193 IP_addresses = IP_address ._create_ip_address_objs ( res ["server" ].pop ("ip_addresses" ), cloud_manager = self )
9294 storages = Storage ._create_storage_objs ( res ["server" ].pop ("storage_devices" ), cloud_manager = self )
9395
94- server ._reset ( res ["server" ],
95- ip_addresses = IP_addresses ,
96- storage_devices = storages ,
96+ server ._reset ( res ["server" ],
97+ ip_addresses = IP_addresses ,
98+ storage_devices = storages ,
9799 cloud_manager = self ,
98100 populated = True )
99101 return server
@@ -113,36 +115,39 @@ def modify_server(self, UUID, **kwargs):
113115
114116 res = self .request ("PUT" , "/server/" + UUID , body )
115117 server = res ["server" ]
116-
118+
117119 # Populate subobjects
118120 IP_addresses = IP_address ._create_ip_address_objs ( server .pop ("ip_addresses" ), cloud_manager = self )
119121 storages = Storage ._create_storage_objs ( server .pop ("storage_devices" ), cloud_manager = self )
120122
121- return Server ( server ,
122- ip_addresses = IP_addresses ,
123- storage_devices = storages ,
123+ return Server ( server ,
124+ ip_addresses = IP_addresses ,
125+ storage_devices = storages ,
124126 populated = True ,
125127 cloud_manager = self )
126128
127129
128130 def delete_server (self , UUID ):
129131 """
130- DELETE '/server/UUID'. Permanently destroys the virtual machine.
132+ DELETE '/server/UUID'. Permanently destroys the virtual machine.
131133 DOES NOT remove the storage disks.
132134
133135 Returns an empty object.
134136 """
135137 return self .request ("DELETE" , "/server/" + UUID )
136-
137-
138+
139+
138140 def get_server_data (self , UUID ):
139141 """
140- Returns '/server/uuid' data in Python dict.
142+ Returns '/server/uuid' data in Python dict.
141143 Creates object representations of any IP-address and Storage.
142144 """
143- data = self .get_request ("/server/" + UUID )
145+ data = self .get_request ("/server/" + UUID )
144146 server = data ["server" ]
145-
147+
148+ # remove the extra "tag" dict to simplify accessing tags
149+ server ['tags' ] = server ['tags' ]['tag' ]
150+
146151 # Populate subobjects
147152 IP_addresses = IP_address ._create_ip_address_objs ( server .pop ("ip_addresses" ), cloud_manager = self )
148153 storages = Storage ._create_storage_objs ( server .pop ("storage_devices" ), cloud_manager = self )
0 commit comments