From 1ef2a5abcdacf3274e4ed17c612835ae10cb34d8 Mon Sep 17 00:00:00 2001 From: Nikolas Hermanns Date: Fri, 4 Mar 2016 10:01:22 +0100 Subject: Make number of cpus configurable in dha file Some compones of openstack produce a lot of CPU load. With this commit it is possible to make more use of the Hypervisor where the virtual nodes runs on. Change-Id: Ide567dd0823c5526171c29073f2a36aa5f27d4b6 --- deploy/environments/execution_environment.py | 8 ++++++-- deploy/environments/libvirt_environment.py | 12 +++++------- deploy/environments/virtual_fuel.py | 3 ++- 3 files changed, 13 insertions(+), 10 deletions(-) (limited to 'deploy/environments') diff --git a/deploy/environments/execution_environment.py b/deploy/environments/execution_environment.py index 38e5bcdf7..c2e7a0b23 100644 --- a/deploy/environments/execution_environment.py +++ b/deploy/environments/execution_environment.py @@ -50,7 +50,7 @@ class ExecutionEnvironment(object): for file in disk_files: delete(file) - def define_vm(self, vm_name, temp_vm_file, disk_path): + def define_vm(self, vm_name, temp_vm_file, disk_path, number_cpus): log('Creating VM %s with disks %s' % (vm_name, disk_path)) with open(temp_vm_file) as f: vm_xml = etree.parse(f) @@ -60,10 +60,14 @@ class ExecutionEnvironment(object): uuids = vm_xml.xpath('/domain/uuid') for uuid in uuids: uuid.getparent().remove(uuid) + if number_cpus: + vcpus = vm_xml.xpath('/domain/vcpu') + for vcpu in vcpus: + vcpu.text = str(number_cpus) disks = vm_xml.xpath('/domain/devices/disk') for disk in disks: if (disk.get('type') == 'file' and - disk.get('device') == 'disk'): + disk.get('device') == 'disk'): sources = disk.xpath('source') for source in sources: disk.remove(source) diff --git a/deploy/environments/libvirt_environment.py b/deploy/environments/libvirt_environment.py index 2a09117bc..380262c7e 100644 --- a/deploy/environments/libvirt_environment.py +++ b/deploy/environments/libvirt_environment.py @@ -34,12 +34,8 @@ class LibvirtEnvironment(ExecutionEnvironment): self.net_names = self.collect_net_names() def create_storage(self, node_id, disk_path, disk_sizes): - if node_id == self.fuel_node_id: - disk_size = disk_sizes['fuel'] - else: - roles = self.dea.get_node_role(node_id) - role = 'controller' if 'controller' in roles else 'compute' - disk_size = disk_sizes[role] + role = self.dea.get_node_main_role(node_id, self.fuel_node_id) + disk_size = disk_sizes[role] exec_cmd('qemu-img create -f qcow2 %s %s' % (disk_path, disk_size)) def create_vms(self): @@ -53,9 +49,11 @@ class LibvirtEnvironment(ExecutionEnvironment): check_file_exists(vm_template) disk_path = '%s/%s.raw' % (self.storage_dir, vm_name) self.create_storage(node_id, disk_path, disk_sizes) + number_cpus = self.dha.get_number_cpus( + self.dea.get_node_main_role(node_id, self.fuel_node_id)) temp_vm_file = '%s/%s' % (temp_dir, vm_name) exec_cmd('cp %s %s' % (vm_template, temp_vm_file)) - self.define_vm(vm_name, temp_vm_file, disk_path) + self.define_vm(vm_name, temp_vm_file, disk_path, number_cpus) delete(temp_dir) def start_vms(self): diff --git a/deploy/environments/virtual_fuel.py b/deploy/environments/virtual_fuel.py index 0e7f27365..62082185f 100644 --- a/deploy/environments/virtual_fuel.py +++ b/deploy/environments/virtual_fuel.py @@ -55,11 +55,12 @@ class VirtualFuel(ExecutionEnvironment): disk_path = '%s/%s.raw' % (self.storage_dir, vm_name) disk_sizes = self.dha.get_disks() disk_size = disk_sizes['fuel'] + number_cpus = self.dha.get_number_cpus('fuel') exec_cmd('qemu-img create -f qcow2 %s %s' % (disk_path, disk_size)) temp_vm_file = '%s/%s' % (temp_dir, vm_name) exec_cmd('cp %s %s' % (vm_template, temp_vm_file)) self.set_vm_nic(temp_vm_file) - self.define_vm(vm_name, temp_vm_file, disk_path) + self.define_vm(vm_name, temp_vm_file, disk_path, number_cpus) delete(temp_dir) def setup_environment(self): -- cgit 1.2.3-korg