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
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
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)
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
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
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()
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
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)
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
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)
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
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
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)
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
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
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)
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