def modify_server(self, UUID, **kwargs): """ modify_server allows updating the server's updateable_fields. Note: Server's IP-addresses and Storages are managed by their own add/remove methods. """ body = dict() body['server'] = {} for arg in kwargs: if arg not in Server.updateable_fields: Exception('{0} is not an updateable field'.format(arg)) body['server'][arg] = kwargs[arg] res = self.put_request('/server/{0}'.format(UUID), body) server = res['server'] # Populate subobjects IPAddresses = IPAddress._create_ip_address_objs( server.pop('ip_addresses'), cloud_manager=self) storages = Storage._create_storage_objs(server.pop('storage_devices'), cloud_manager=self) return Server(server, ip_addresses=IPAddresses, storage_devices=storages, populated=True, cloud_manager=self)
def modify_server(self, UUID, **kwargs): """ modify_server allows updating the server's updateable_fields. Note: Server's IP-addresses and Storages are managed by their own add/remove methods. """ body = dict() body['server'] = {} for arg in kwargs: if arg not in Server.updateable_fields: Exception('{0} is not an updateable field'.format(arg)) body['server'][arg] = kwargs[arg] res = self.request('PUT', '/server/{0}'.format(UUID), body) server = res['server'] # Populate subobjects IPAddresses = IPAddress._create_ip_address_objs(server.pop('ip_addresses'), cloud_manager=self) storages = Storage._create_storage_objs(server.pop('storage_devices'), cloud_manager=self) return Server( server, ip_addresses=IPAddresses, storage_devices=storages, populated=True, cloud_manager=self )
def detach_storage(self, server_uuid, address): """ Detach a Storage object to a Server. Return a list of the server's storages. """ body = {'storage_device': {'address': address}} url = '/server/{0}/storage/detach'.format(server_uuid) res = self.post_request(url, body) return Storage._create_storage_objs(res['server']['storage_devices'], cloud_manager=self)
def get_storages(self, storage_type='normal'): """ Return a list of Storage objects from the API. Storage types: public, private, normal, backup, cdrom, template, favorite """ res = self.get_request('/storage/' + storage_type) return Storage._create_storage_objs(res['storages'], cloud_manager=self)
def eject_cd_rom(self, server): """ Ejects the storage from the CD-ROM device of a server. """ url = '/server/{0}/cdrom/eject'.format(server) res = self.post_request(url) return Storage._create_storage_objs(res['server']['storage_devices'], cloud_manager=self)
def load_cd_rom(self, server, address): """ Loads a storage as a CD-ROM in the CD-ROM device of a server. """ body = {'storage_device': {'storage': address}} url = '/server/{0}/cdrom/load'.format(server) res = self.post_request(url, body) return Storage._create_storage_objs(res['server']['storage_devices'], cloud_manager=self)
def get_server_data(self, uuid): server_data = {} servers = self.read_json_data("server_populated").get("servers").get( "server") for server in servers: if server.get("uuid") == uuid: server_data = server IPAddresses = IPAddress._create_ip_address_objs( server.pop("ip_addresses"), cloud_manager=self) storages = Storage._create_storage_objs(server.pop("storage_devices"), cloud_manager=self) return server_data, IPAddresses, storages
def _handle_server_subobjs(cls, server, cloud_manager): ip_data = server.pop('ip_addresses', None) storage_data = server.pop('storage_devices', None) tags = server.pop('tags', None) if ip_data: ip_addresses = IP_address._create_ip_address_objs(ip_data, cloud_manager=cloud_manager) server['ip_addresses'] = ip_addresses if storage_data: storages = Storage._create_storage_objs(storage_data, cloud_manager=cloud_manager) server['storage_devices'] = storages if tags and 'tag' in tags: server['tags'] = tags['tag']
def _handle_server_subobjs(cls, server, cloud_manager): ip_data = server.pop('ip_addresses', None) storage_data = server.pop('storage_devices', None) tags = server.pop('tags', None) if ip_data: ip_addresses = IP_address._create_ip_address_objs(ip_data, cloud_manager=cloud_manager) server['ip_addresses'] = ip_addresses if storage_data: storages = Storage._create_storage_objs(storage_data, cloud_manager=cloud_manager) server['storage_devices'] = storages if tags and 'tag' in tags: server['tags'] = tags['tag']
def get_server_data(self, UUID): """ Return '/server/uuid' data in Python dict. Creates object representations of any IP-address and Storage. """ data = self.get_request('/server/{0}'.format(UUID)) server = data['server'] # Populate subobjects IPAddresses = IPAddress._create_ip_address_objs(server.pop('ip_addresses'), cloud_manager=self) storages = Storage._create_storage_objs(server.pop('storage_devices'), cloud_manager=self) return server, IPAddresses, storages
def attach_storage(self, server_uuid, storage_uuid, storage_type, address): """ Attach a Storage object to a Server. Return a list of the server's storages. """ body = {'storage_device': {}} if storage_uuid: body['storage_device']['storage'] = storage_uuid if storage_type: body['storage_device']['type'] = storage_type if address: body['storage_device']['address'] = address url = '/server/{0}/storage/attach'.format(server_uuid) res = self.post_request(url, body) return Storage._create_storage_objs(res['server']['storage_devices'], cloud_manager=self)
def get_server_data(self, UUID): """ Return '/server/uuid' data in Python dict. Creates object representations of any IP-address and Storage. """ data = self.get_request('/server/{0}'.format(UUID)) server = data['server'] # Populate subobjects IPAddresses = IPAddress._create_ip_address_objs( server.pop('ip_addresses'), cloud_manager=self) storages = Storage._create_storage_objs(server.pop('storage_devices'), cloud_manager=self) return server, IPAddresses, storages