Esempio n. 1
0
    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)
Esempio n. 5
0
 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)
Esempio n. 6
0
 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)
Esempio n. 7
0
    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
Esempio n. 8
0
    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']
Esempio n. 9
0
    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
Esempio n. 11
0
    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)
Esempio n. 12
0
    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