Currently there is bug that Qemu path is not correctly composed and
cannot be properly overriden due to race condition in code. This patch
is fixing functions to properly work with path.
Change-Id: I276458d2d23c7a14441a4de4a56eff6431242ab9
Signed-off-by: Peter Mikus <pmikus@cisco.com>
def __init__(self, qemu_id=1):
self._qemu_id = qemu_id
# Path to QEMU binary. Use x86_64 by default
def __init__(self, qemu_id=1):
self._qemu_id = qemu_id
# Path to QEMU binary. Use x86_64 by default
- self._qemu_bin = '/usr/bin/qemu-system-x86_64'
+ self._qemu_path = '/usr/bin/'
+ self._qemu_bin = 'qemu-system-x86_64'
# QEMU Machine Protocol socket
self._qmp_sock = '/tmp/qmp{0}.sock'.format(self._qemu_id)
# QEMU Guest Agent socket
# QEMU Machine Protocol socket
self._qmp_sock = '/tmp/qmp{0}.sock'.format(self._qemu_id)
# QEMU Guest Agent socket
self._node = None
self._socks = [self._qmp_sock, self._qga_sock]
self._node = None
self._socks = [self._qmp_sock, self._qga_sock]
- def qemu_set_bin(self, path):
+ def qemu_set_path(self, path):
"""Set binary path for QEMU.
:param path: Absolute path in filesystem.
:type path: str
"""
"""Set binary path for QEMU.
:param path: Absolute path in filesystem.
:type path: str
"""
def qemu_set_smp(self, cpus, cores, threads, sockets):
"""Set SMP option for QEMU.
def qemu_set_smp(self, cpus, cores, threads, sockets):
"""Set SMP option for QEMU.
self._vm_info['host'] = node['host']
arch = Topology.get_node_arch(node)
self._vm_info['host'] = node['host']
arch = Topology.get_node_arch(node)
- self._qemu_bin = '/usr/bin/qemu-system-{0}'.format(arch)
+ self._qemu_bin = 'qemu-system-{arch}'.format(arch=arch)
def qemu_add_vhost_user_if(self, socket, server=True, mac=None):
"""Add Vhost-user interface.
def qemu_add_vhost_user_if(self, socket, server=True, mac=None):
"""Add Vhost-user interface.
.. note:: First set at least node to run QEMU on.
.. warning:: Starts only one VM on the node.
"""
.. note:: First set at least node to run QEMU on.
.. warning:: Starts only one VM on the node.
"""
+ # Qemu binary path
+ bin_path = '{0}{1}'.format(self._qemu_path, self._qemu_bin)
+
# SSH forwarding
ssh_fwd = '-net user,hostfwd=tcp::{0}-:22'.format(
self._qemu_opt.get('ssh_fwd_port'))
# SSH forwarding
ssh_fwd = '-net user,hostfwd=tcp::{0}-:22'.format(
self._qemu_opt.get('ssh_fwd_port'))
pid = '-pidfile {}'.format(self._pid_file)
# Run QEMU
pid = '-pidfile {}'.format(self._pid_file)
# Run QEMU
- cmd = '{0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10}'.format(
- self._qemu_bin, self._qemu_opt.get('smp'), mem, ssh_fwd,
- self._qemu_opt.get('options'),
- drive, qmp, serial, qga, graphic, pid)
+ cmd = '{0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10}'.format(bin_path,
+ self._qemu_opt.get('smp'), mem, ssh_fwd,
+ self._qemu_opt.get('options'), drive, qmp, serial, qga, graphic,
+ pid)
try:
(ret_code, _, _) = self._ssh.exec_command_sudo(cmd, timeout=300)
if int(ret_code) != 0:
try:
(ret_code, _, _) = self._ssh.exec_command_sudo(cmd, timeout=300)
if int(ret_code) != 0:
| | ... | ${True}
| | Run Keyword Unless | ${qemu_built} | ${vm_name}.Build QEMU | ${dut_node}
| | ... | force_install=${True} | apply_patch=${apply_patch}
| | ... | ${True}
| | Run Keyword Unless | ${qemu_built} | ${vm_name}.Build QEMU | ${dut_node}
| | ... | force_install=${True} | apply_patch=${apply_patch}
-| | Run keyword | ${vm_name}.Qemu Set Bin | ${perf_qemu_bin}
+| | Run keyword | ${vm_name}.Qemu Set Path | ${perf_qemu_path}
| | Run keyword | ${vm_name}.Qemu Set Node | ${dut_node}
| | Run keyword | ${vm_name}.Qemu Set Smp | ${count} | ${count} | 1 | 1
| | Run keyword | ${vm_name}.Qemu Set Mem Size | 2048
| | Run keyword | ${vm_name}.Qemu Set Node | ${dut_node}
| | Run keyword | ${vm_name}.Qemu Set Smp | ${count} | ${count} | 1 | 1
| | Run keyword | ${vm_name}.Qemu Set Mem Size | 2048
| | ... | ${True}
| | Run Keyword Unless | ${qemu_built} | ${vm_name}.Build QEMU | ${dut_node}
| | ... | force_install=${True} | apply_patch=${apply_patch}
| | ... | ${True}
| | Run Keyword Unless | ${qemu_built} | ${vm_name}.Build QEMU | ${dut_node}
| | ... | force_install=${True} | apply_patch=${apply_patch}
-| | Run keyword | ${vm_name}.Qemu Set Bin | ${perf_qemu_bin}
+| | Run keyword | ${vm_name}.Qemu Set Path | ${perf_qemu_path}
| | Run keyword | ${vm_name}.Qemu Set Node | ${dut_node}
| | Run keyword | ${vm_name}.Qemu Set Smp | ${count} | ${count} | 1 | 1
| | Run keyword | ${vm_name}.Qemu Set Mem Size | 2048
| | Run keyword | ${vm_name}.Qemu Set Node | ${dut_node}
| | Run keyword | ${vm_name}.Qemu Set Smp | ${count} | ${count} | 1 | 1
| | Run keyword | ${vm_name}.Qemu Set Mem Size | 2048
| | ... | ${True}
| | Run Keyword Unless | ${qemu_built} | ${vm_name}.Build QEMU | ${dut_node}
| | ... | force_install=${True} | apply_patch=${apply_patch}
| | ... | ${True}
| | Run Keyword Unless | ${qemu_built} | ${vm_name}.Build QEMU | ${dut_node}
| | ... | force_install=${True} | apply_patch=${apply_patch}
-| | Run keyword | ${vm_name}.Qemu Set Bin | ${perf_qemu_bin}
+| | Run keyword | ${vm_name}.Qemu Set Path | ${perf_qemu_path}
| | Run keyword | ${vm_name}.Qemu Set Node | ${dut_node}
| | Run keyword | ${vm_name}.Qemu Set Smp | ${count} | ${count} | 1 | 1
| | Run keyword | ${vm_name}.Qemu Set Mem Size | 2048
| | Run keyword | ${vm_name}.Qemu Set Node | ${dut_node}
| | Run keyword | ${vm_name}.Qemu Set Smp | ${count} | ${count} | 1 | 1
| | Run keyword | ${vm_name}.Qemu Set Mem Size | 2048
| | ... | ${True}
| | Run Keyword Unless | ${qemu_built} | ${vm_name}.Build QEMU | ${dut_node}
| | ... | force_install=${True} | apply_patch=${apply_patch}
| | ... | ${True}
| | Run Keyword Unless | ${qemu_built} | ${vm_name}.Build QEMU | ${dut_node}
| | ... | force_install=${True} | apply_patch=${apply_patch}
-| | Run keyword | ${vm_name}.Qemu Set Bin | ${perf_qemu_bin}
+| | Run keyword | ${vm_name}.Qemu Set Path | ${perf_qemu_path}
| | Run keyword | ${vm_name}.Qemu Set Node | ${dut_node}
| | Run keyword | ${vm_name}.Qemu Set Smp | ${count} | ${count} | 1 | 1
| | Run keyword | ${vm_name}.Qemu Set Mem Size | 2048
| | Run keyword | ${vm_name}.Qemu Set Node | ${dut_node}
| | Run keyword | ${vm_name}.Qemu Set Smp | ${count} | ${count} | 1 | 1
| | Run keyword | ${vm_name}.Qemu Set Mem Size | 2048
| | ... | ${True}
| | Run Keyword Unless | ${qemu_built} | ${vm_name}.Build QEMU | ${dut_node}
| | ... | force_install=${True} | apply_patch=${apply_patch}
| | ... | ${True}
| | Run Keyword Unless | ${qemu_built} | ${vm_name}.Build QEMU | ${dut_node}
| | ... | force_install=${True} | apply_patch=${apply_patch}
-| | Run keyword | ${vm_name}.Qemu Set Bin | ${perf_qemu_bin}
+| | Run keyword | ${vm_name}.Qemu Set Path | ${perf_qemu_path}
| | Run keyword | ${vm_name}.Qemu Set Node | ${dut_node}
| | Run keyword | ${vm_name}.Qemu Set Smp | ${count} | ${count} | 1 | 1
| | Run keyword | ${vm_name}.Qemu Set Mem Size | 2048
| | Run keyword | ${vm_name}.Qemu Set Node | ${dut_node}
| | Run keyword | ${vm_name}.Qemu Set Smp | ${count} | ${count} | 1 | 1
| | Run keyword | ${vm_name}.Qemu Set Mem Size | 2048
| | ... | ${True}
| | Run Keyword Unless | ${qemu_built} | ${vm_name}.Build QEMU | ${dut_node}
| | ... | force_install=${True} | apply_patch=${apply_patch}
| | ... | ${True}
| | Run Keyword Unless | ${qemu_built} | ${vm_name}.Build QEMU | ${dut_node}
| | ... | force_install=${True} | apply_patch=${apply_patch}
-| | Run keyword | ${vm_name}.Qemu Set Bin | ${perf_qemu_bin}
+| | Run keyword | ${vm_name}.Qemu Set Path | ${perf_qemu_path}
| | Run keyword | ${vm_name}.Qemu Set Node | ${dut_node}
| | Run keyword | ${vm_name}.Qemu Set Smp | ${count} | ${count} | 1 | 1
| | Run keyword | ${vm_name}.Qemu Set Mem Size | 2048
| | Run keyword | ${vm_name}.Qemu Set Node | ${dut_node}
| | Run keyword | ${vm_name}.Qemu Set Smp | ${count} | ${count} | 1 | 1
| | Run keyword | ${vm_name}.Qemu Set Mem Size | 2048
| | Set Global Variable | ${perf_pdr_loss_acceptance} | 0.5
| | Set Global Variable | ${perf_pdr_loss_acceptance_type} | percentage
| | Set Global Variable | ${perf_vm_image} | /var/lib/vm/csit-nested-1.7.img
| | Set Global Variable | ${perf_pdr_loss_acceptance} | 0.5
| | Set Global Variable | ${perf_pdr_loss_acceptance_type} | percentage
| | Set Global Variable | ${perf_vm_image} | /var/lib/vm/csit-nested-1.7.img
-| | Set Global Variable | ${perf_qemu_bin}
-| | ... | /opt/qemu-2.5.0/bin/qemu-system-x86_64
+| | Set Global Variable | ${perf_qemu_path} | /opt/qemu-2.5.0/bin/
| | Set Global Variable | ${perf_qemu_qsz} | 1024
| | Set Global Variable | ${use_tuned_cfs} | ${False}
| | Set Global Variable | ${qemu_built} | ${False}
| | Set Global Variable | ${perf_qemu_qsz} | 1024
| | Set Global Variable | ${use_tuned_cfs} | ${False}
| | Set Global Variable | ${qemu_built} | ${False}