summaryrefslogtreecommitdiffstats
path: root/deploy/environments
diff options
context:
space:
mode:
authorNikolas Hermanns <nikolas.hermanns@ericsson.com>2016-03-04 10:01:22 +0100
committerJonas Bjurel <jonas.bjurel@ericsson.com>2016-04-09 20:24:56 +0200
commite8d3f97a5fa317edc6aefb091da5318d946e82ce (patch)
treec2c84d4cff9f1842a0cb59b3503f9510ccbcbaaa /deploy/environments
parent5033efb4cbb8fb2b932846e5ac900c2ad042e28d (diff)
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
Diffstat (limited to 'deploy/environments')
-rw-r--r--deploy/environments/execution_environment.py8
-rw-r--r--deploy/environments/libvirt_environment.py12
-rw-r--r--deploy/environments/virtual_fuel.py3
3 files changed, 13 insertions, 10 deletions
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):