aboutsummaryrefslogtreecommitdiffstats
path: root/resources/libraries/python
diff options
context:
space:
mode:
Diffstat (limited to 'resources/libraries/python')
-rw-r--r--resources/libraries/python/QemuUtils.py22
-rw-r--r--resources/libraries/python/constants.py6
2 files changed, 23 insertions, 5 deletions
diff --git a/resources/libraries/python/QemuUtils.py b/resources/libraries/python/QemuUtils.py
index f926d63caf..244ece2258 100644
--- a/resources/libraries/python/QemuUtils.py
+++ b/resources/libraries/python/QemuUtils.py
@@ -628,19 +628,31 @@ class QemuUtils(object):
'error: {1}'.format(self._node['host'], json.dumps(err)))
@staticmethod
- def build_qemu(node):
+ def build_qemu(node, force_install=False, apply_patch=False):
"""Build QEMU from sources.
:param node: Node to build QEMU on.
+ :param force_install: If True, then remove previous build.
+ :param apply_patch: If True, then apply patches from qemu_patches dir.
:type node: dict
+ :type force_install: bool
+ :type apply_patch: bool
+ :raises: RuntimeError if building QEMU failed.
"""
ssh = SSH()
ssh.connect(node)
+ directory = ' --directory={0}'.format(Constants.QEMU_INSTALL_DIR)
+ version = ' --version={0}'.format(Constants.QEMU_INSTALL_VERSION)
+ force = ' --force' if force_install else ''
+ patch = ' --patch' if apply_patch else ''
+
(ret_code, stdout, stderr) = \
- ssh.exec_command('sudo -Sn bash {0}/{1}/qemu_build.sh'.format(
- Constants.REMOTE_FW_DIR, Constants.RESOURCES_LIB_SH), 1000)
- logger.trace(stdout)
+ ssh.exec_command(
+ "sudo -E sh -c '{0}/{1}/qemu_build.sh{2}{3}{4}{5}'"\
+ .format(Constants.REMOTE_FW_DIR, Constants.RESOURCES_LIB_SH,
+ version, directory, force, patch), 1000)
+
if int(ret_code) != 0:
- logger.debug('QEMU build failed {0}'.format(stderr))
+ logger.debug('QEMU build failed {0}'.format(stdout + stderr))
raise RuntimeError('QEMU build failed on {0}'.format(node['host']))
diff --git a/resources/libraries/python/constants.py b/resources/libraries/python/constants.py
index 4c3a8ff451..051a21cf02 100644
--- a/resources/libraries/python/constants.py
+++ b/resources/libraries/python/constants.py
@@ -29,6 +29,12 @@ class Constants(object):
# OpenVPP VAT binary name
VAT_BIN_NAME = 'vpp_api_test'
+ # QEMU version to install
+ QEMU_INSTALL_VERSION = 'qemu-2.5.0'
+
+ # QEMU install directory
+ QEMU_INSTALL_DIR = '/opt/qemu-2.5.0'
+
# Honeycomb directory location at topology nodes:
REMOTE_HC_DIR = '/opt/honeycomb'