Ejemplo n.º 1
0
    def describe_admin_node(self, name, networks):
        node = self.add_node(
            memory=settings.HARDWARE.get("admin_node_memory", 1024),
            vcpu=settings.HARDWARE.get("admin_node_cpu", 1),
            name=name,
            boot=['hd', 'cdrom'])
        self.create_interfaces(networks, node)

        if self.os_image is None:
            self.add_empty_volume(node, name + '-system')
            self.add_empty_volume(
                node,
                name + '-iso',
                capacity=_get_file_size(settings.ISO_PATH),
                format='raw',
                device='cdrom',
                bus='ide')
        else:
            volume = self.manager.volume_get_predefined(self.os_image)
            vol_child = self.manager.volume_create_child(
                name=name + '-system',
                backing_store=volume,
                environment=self.get_virtual_environment()
            )
            self.manager.node_attach_volume(
                node=node,
                volume=vol_child
            )
        return node
Ejemplo n.º 2
0
 def describe_master_node(self, name, networks, memory=1024):
     node = self.add_node(memory, name, boot=['cdrom', 'hd'])
     for network in networks:
         self.manager.interface_create(network, node=node)
     self.add_empty_volume(node, name + '-system')
     self.add_empty_volume(node, name + '-iso', capacity=_get_file_size(ISO_IMAGE), format='raw', device='cdrom', bus='ide')
     return node
Ejemplo n.º 3
0
    def admin_add(self, networks=None):
        vcpu = self.params.admin_vcpu_count
        ram = self.params.admin_ram_size
        iso_path = self.params.iso_path
        iso_size = _get_file_size(iso_path)

        if not (iso_size > 0):
            print("Please, set correct ISO file")
            sys.exit(1)
        if networks is None:
            networks = []
            interfaces = settings.INTERFACE_ORDER
            for name in interfaces:
                networks.append(self.env.create_networks(name))

        admin_node = create_admin_config(
            admin_vcpu=vcpu,
            admin_memory=ram,
            admin_sysvolume_capacity=settings.ADMIN_NODE_VOLUME_SIZE,
            admin_iso_path=iso_path,
            boot_from="cdrom",
            interfaceorder=settings.INTERFACE_ORDER,
        )

        return self.env.create_node(admin_node)
Ejemplo n.º 4
0
    def describe_admin_node(self, name, networks):
        node = self.add_node(
            memory=settings.HARDWARE.get("admin_node_memory", 1024),
            vcpu=settings.HARDWARE.get("admin_node_cpu", 1),
            name=name,
            boot=['hd', 'cdrom'])
        self.create_interfaces(networks, node)

        if self.os_image is None:
            self.add_empty_volume(node, name + '-system')
            self.add_empty_volume(
                node,
                name + '-iso',
                capacity=_get_file_size(settings.ISO_PATH),
                format='raw',
                device='cdrom',
                bus='ide')
        else:
            volume = self.manager.volume_get_predefined(self.os_image)
            vol_child = self.manager.volume_create_child(
                name=name + '-system',
                backing_store=volume,
                environment=self.get_virtual_environment()
            )
            self.manager.node_attach_volume(
                node=node,
                volume=vol_child
            )
        return node
Ejemplo n.º 5
0
 def describe_admin_node(self, name, networks, memory=1024):
     node = self.add_node(memory=memory, name=name, boot=["hd", "cdrom"])
     self.create_interfaces(networks, node)
     self.add_empty_volume(node, name + "-system")
     self.add_empty_volume(
         node, name + "-iso", capacity=_get_file_size(ISO_PATH), format="raw", device="cdrom", bus="ide"
     )
     return node
Ejemplo n.º 6
0
 def describe_admin_node(self, name, networks, memory=1024):
     node = self.add_node(memory=memory, name=name, boot=['hd', 'cdrom'])
     self.create_interfaces(networks, node)
     self.add_empty_volume(node, name + '-system')
     self.add_empty_volume(
         node, name + '-iso', capacity=_get_file_size(ISO_PATH),
         format='raw', device='cdrom', bus='ide')
     return node
Ejemplo n.º 7
0
 def volume_upload(self, volume, path):
     size = _get_file_size(path)
     with open(path, 'rb') as fd:
         stream = self.conn.newStream(0)
         self.conn.storageVolLookupByKey(volume.uuid).upload(
             stream=stream, offset=0,
             length=size, flags=0)
         stream.sendAll(self.chunk_render, fd)
         stream.finish()
Ejemplo n.º 8
0
 def describe_admin_node(self, name, networks, memory=1024):
     node = self.add_node(memory=memory, name=name, boot=['hd', 'cdrom'])
     self.create_interfaces(networks, node)
     self.add_empty_volume(node, name + '-system')
     self.add_empty_volume(node,
                           name + '-iso',
                           capacity=_get_file_size(ISO_PATH),
                           format='raw',
                           device='cdrom',
                           bus='ide')
     return node
Ejemplo n.º 9
0
 def describe_master_node(self, name, networks, memory=1024):
     node = self.add_node(memory, name, boot=['cdrom', 'hd'])
     for network in networks:
         self.manager.interface_create(network, node=node)
     self.add_empty_volume(node, name + '-system')
     self.add_empty_volume(node,
                           name + '-iso',
                           capacity=_get_file_size(ISO_IMAGE),
                           format='raw',
                           device='cdrom',
                           bus='ide')
     return node
Ejemplo n.º 10
0
    def test_volumes_for_pptesting(self):
        images_for_upload = {
            'ubuntu-12.04.3-desktop-amd64.iso': '%s' % (
                '/tmp/ubuntu-12.04.3-desktop-amd64.iso'),
            'centos6.4-base.qcow2': '/tmp/centos6.4-base.qcow2',
        }

        for name, vol in images_for_upload.iteritems():
            v = Volume.volume_create(name, _get_file_size(vol))
            if not self.driver.volume_exists(v):
                self.driver.volume_define(v)
                self.driver.volume_upload(v, vol)
Ejemplo n.º 11
0
    def describe_admin_node(self, name, networks, memory=DEFAULT_RAM_SIZE, boot=boot):
        node = self.add_node(memory=memory, name=name, boot=boot)
        self.create_interfaces(node, networks)

        if self.base_image is None:
            self.add_empty_volume(node, name + '-system')
            self.add_empty_volume(node, name + '-iso', capacity=_get_file_size(ISO_PATH), format='raw', device='cdrom', bus='ide')
        else:
            volume = self.manager.volume_get_predefined(self.base_image)
            v = self.manager.volume_create_child(name + '-system', backing_store=volume, environment=self.environment)
            self.manager.node_attach_volume(node=node, volume=v)

        return node
Ejemplo n.º 12
0
    def test_volumes_for_pptesting(self):
        images_for_upload = {
            'ubuntu-12.04.3-desktop-amd64.iso': '%s' % (
                '/tmp/ubuntu-12.04.3-desktop-amd64.iso'),
            'centos6.4-base.qcow2': '/tmp/centos6.4-base.qcow2',
        }

        for name, vol in images_for_upload.iteritems():
            v = self.manager.volume_create(name,
                                           _get_file_size(vol))
            if not self.driver.volume_exists(v):
                self.driver.volume_define(v)
                self.driver.volume_upload(v, vol)
Ejemplo n.º 13
0
 def describe_admin_node(self, name, networks):
     node = self.add_node(
         memory=settings.HARDWARE.get("admin_node_memory", 1024),
         vcpu=settings.HARDWARE.get("admin_node_cpu", 1),
         name=name,
         boot=['hd', 'cdrom'])
     self.create_interfaces(networks, node)
     self.add_empty_volume(node, name + '-system')
     self.add_empty_volume(
         node,
         name + '-iso',
         capacity=_get_file_size(settings.ISO_PATH),
         format='raw',
         device='cdrom',
         bus='ide')
     return node
Ejemplo n.º 14
0
    def describe_admin_node(self, name, networks, boot_from='cdrom',
                            vcpu=None, memory=None,
                            iso_path=None):
        if boot_from == 'cdrom':
            boot_device = ['hd', 'cdrom']
            device = 'cdrom'
            bus = 'ide'
        elif boot_from == 'usb':
            boot_device = ['hd']
            device = 'disk'
            bus = 'usb'

        node = self.add_node(
            memory=memory or settings.HARDWARE["admin_node_memory"],
            vcpu=vcpu or settings.HARDWARE["admin_node_cpu"],
            name=name,
            role='admin',
            boot=boot_device)
        self.create_interfaces(networks, node)

        if self.os_image is None:
            iso = iso_path or settings.ISO_PATH
            self.add_empty_volume(node, name + '-system',
                                  capacity=settings.ADMIN_NODE_VOLUME_SIZE
                                  * 1024 ** 3)
            self.add_empty_volume(
                node,
                name + '-iso',
                capacity=_get_file_size(iso),
                format='raw',
                device=device,
                bus=bus)
        else:
            volume = Volume.volume_get_predefined(self.os_image)
            vol_child = Volume.volume_create_child(
                name=name + '-system',
                backing_store=volume,
                environment=self
            )
            DiskDevice.node_attach_volume(
                node=node,
                volume=vol_child
            )
        return node
Ejemplo n.º 15
0
    def admin_add(self, networks=None):
        vcpu = self.params.admin_vcpu_count
        ram = self.params.admin_ram_size
        iso_path = self.params.iso_path
        iso_size = _get_file_size(iso_path)

        if not (iso_size > 0):
            print("Please, set correct ISO file")
            sys.exit(1)
        if networks is None:
            networks = []
            interfaces = settings.INTERFACE_ORDER
            for name in interfaces:
                networks.append(self.env.create_networks(name))
        return self.env.describe_admin_node(name="admin",
                                            vcpu=vcpu,
                                            networks=networks,
                                            memory=ram,
                                            iso_path=iso_path)
Ejemplo n.º 16
0
    def admin_add(self, networks=None):
        vcpu = self.params.admin_vcpu_count
        ram = self.params.admin_ram_size
        iso_path = self.params.iso_path
        iso_size = _get_file_size(iso_path)

        if not (iso_size > 0):
            print("Please, set correct ISO file")
            sys.exit(1)
        if networks is None:
            networks = []
            interfaces = settings.INTERFACE_ORDER
            for name in interfaces:
                networks.append(self.env.create_networks(name))
        return self.env.describe_admin_node(name="admin",
                                            vcpu=vcpu,
                                            networks=networks,
                                            memory=ram,
                                            iso_path=iso_path)
Ejemplo n.º 17
0
    def describe_admin_node(self,
                            name,
                            networks,
                            boot_from='cdrom',
                            vcpu=None,
                            memory=None,
                            iso_path=None):
        if boot_from == 'cdrom':
            boot_device = ['hd', 'cdrom']
            device = 'cdrom'
            bus = 'ide'
        elif boot_from == 'usb':
            boot_device = ['hd']
            device = 'disk'
            bus = 'usb'

        node = self.add_node(
            memory=memory or settings.HARDWARE.get("admin_node_memory", 1024),
            vcpu=vcpu or settings.HARDWARE.get("admin_node_cpu", 1),
            name=name,
            boot=boot_device)
        self.create_interfaces(networks, node)

        if self.os_image is None:
            iso = iso_path or settings.ISO_PATH
            self.add_empty_volume(node, name + '-system')
            self.add_empty_volume(node,
                                  name + '-iso',
                                  capacity=_get_file_size(iso),
                                  format='raw',
                                  device=device,
                                  bus=bus)
        else:
            volume = Volume.volume_get_predefined(self.os_image)
            vol_child = Volume.volume_create_child(name=name + '-system',
                                                   backing_store=volume,
                                                   environment=self)
            DiskDevice.node_attach_volume(node=node, volume=vol_child)
        return node
Ejemplo n.º 18
0
    def create_node(self, config_node):
        node_params = config_node['params']
        node = self.add_node(
            name=config_node['name'],
            role=config_node['role'],
            memory=int(node_params['memory']),
            vcpu=int(node_params['vcpu']),
            boot=node_params['boot'])

        self.create_interfaces(node_params['interfaces'], node)

        for volume in node_params.get('volumes', None):
            volume_name = config_node['name'] + '-' + volume['name']
            if 'source_image' in volume:
                disk = self.add_empty_volume(
                    node,
                    volume_name,
                    capacity=_get_file_size(volume['source_image']),
                    format=volume.get('format', 'qcow2'),
                    device=volume.get('device', 'disk'),
                    bus=volume.get('bus', 'virtio')
                )
                disk.volume.define()
                disk.volume.upload(volume['source_image'])
            else:
                disk = self.add_empty_volume(
                    node,
                    volume_name,
                    capacity=int(volume['capacity']) * 1024 ** 3,
                    format=volume.get('format', 'qcow2'),
                    device=volume.get('device', 'disk'),
                    bus=volume.get('bus', 'virtio')
                )
                disk.volume.define()

        node.define()
        return node
Ejemplo n.º 19
0
    def admin_add(self, networks=None):
        vcpu = self.params.admin_vcpu_count
        ram = self.params.admin_ram_size
        iso_path = self.params.iso_path
        iso_size = _get_file_size(iso_path)

        if not (iso_size > 0):
            print("Please, set correct ISO file")
            sys.exit(1)
        if networks is None:
            networks = []
            interfaces = settings.INTERFACE_ORDER
            for name in interfaces:
                networks.append(self.env.create_networks(name))

        admin_node = create_admin_config(
            admin_vcpu=vcpu,
            admin_memory=ram,
            admin_sysvolume_capacity=settings.ADMIN_NODE_VOLUME_SIZE,
            admin_iso_path=iso_path,
            boot_from='cdrom',
            interfaceorder=settings.INTERFACE_ORDER)

        return self.env.create_node(admin_node)
Ejemplo n.º 20
0
def create_admin_config(admin_vcpu, admin_memory, admin_sysvolume_capacity,
                        admin_iso_path, boot_from, interfaceorder,
                        networks_bonding=None,
                        networks_bondinginterfaces=None):

    if networks_bonding:
        # Translate a dict of lists {net_name: [eth0, eth1],} into a new dict:
        # {eth0: net_name, eth1: net_name,}
        ifaces = {
            label: iname
            for iname in networks_bondinginterfaces
            for label in networks_bondinginterfaces[iname]
        }
        admin_interfaces = [
            {
                'label': label,
                'l2_network_device': ifaces[label]
            } for label in sorted(ifaces.keys())
        ]
    else:
        admin_interfaces = [
            {
                'label': 'eth' + str(n),
                'l2_network_device': iname
            } for n, iname in enumerate(interfaceorder)
        ]

    if boot_from == 'usb':
        boot_device_order = ['hd']
        iso_device = 'disk'
        iso_bus = 'usb'
    else:  # boot_from == 'cdrom':
        boot_device_order = ['hd', 'cdrom']
        iso_device = 'cdrom'
        iso_bus = 'ide'

    admin_config = {
        'name': 'admin',  # Custom name of VM for Fuel admin node
        'role': 'fuel_master',  # Fixed role for (Fuel admin) node properties
        'params': {
            'vcpu': admin_vcpu,
            'memory': admin_memory,
            'boot': boot_device_order,
            'volumes': [
                {
                    'name': 'system',
                    'capacity': admin_sysvolume_capacity,
                    'format': 'qcow2',
                },
                {
                    'name': 'iso',
                    'source_image': admin_iso_path,
                    'capacity': _get_file_size(admin_iso_path),
                    'format': 'raw',
                    'device': iso_device,
                    'bus': iso_bus,
                },
            ],
            'interfaces': admin_interfaces,
        },
    }
    return admin_config