- logger.debug("Installing VPP")
-
- for node in nodes.values():
- if node['type'] == NodeType.DUT:
- logger.debug("Installing VPP on node {0}".format(node['host']))
-
- ssh = SSH()
- ssh.connect(node)
-
- cmd = "[[ -f /etc/redhat-release ]]"
- return_code, _, _ = ssh.exec_command(cmd)
- if int(return_code) == 0:
- # workaroud - uninstall existing vpp installation until
- # start-testcase script is updated on all virl servers
- rpm_pkgs_remove = "vpp*"
- cmd_u = 'yum -y remove "{0}"'.format(rpm_pkgs_remove)
- r_rcode, _, r_err = ssh.exec_command_sudo(cmd_u, timeout=90)
- if int(r_rcode) != 0:
- raise RuntimeError('Failed to remove previous VPP'
- 'installation on host {0}:\n{1}'
- .format(node['host'], r_err))
-
- rpm_pkgs = "*.rpm ".join(str(vpp_pkg_dir + pkg)
- for pkg in vpp_rpm_pkgs) + "*.rpm"
- cmd_i = "rpm -ivh {0}".format(rpm_pkgs)
- ret_code, _, err = ssh.exec_command_sudo(cmd_i, timeout=90)
- if int(ret_code) != 0:
- raise RuntimeError('Failed to install VPP on host {0}:'
- '\n{1}'.format(node['host'], err))
- else:
- ssh.exec_command_sudo("rpm -qai vpp*")
- logger.info("VPP installed on node {0}".
- format(node['host']))
- else:
- # workaroud - uninstall existing vpp installation until
- # start-testcase script is updated on all virl servers
- deb_pkgs_remove = "vpp*"
- cmd_u = 'apt-get purge -y "{0}"'.format(deb_pkgs_remove)
- r_rcode, _, r_err = ssh.exec_command_sudo(cmd_u, timeout=90)
- if int(r_rcode) != 0:
- raise RuntimeError('Failed to remove previous VPP'
- 'installation on host {0}:\n{1}'
- .format(node['host'], r_err))
- deb_pkgs = "*.deb ".join(str(vpp_pkg_dir + pkg)
- for pkg in vpp_deb_pkgs) + "*.deb"
- cmd_i = "dpkg -i --force-all {0}".format(deb_pkgs)
- ret_code, _, err = ssh.exec_command_sudo(cmd_i, timeout=90)
- if int(ret_code) != 0:
- raise RuntimeError('Failed to install VPP on host {0}:'
- '\n{1}'.format(node['host'], err))
- else:
- ssh.exec_command_sudo("dpkg -l | grep vpp")
- logger.info("VPP installed on node {0}".
- format(node['host']))
-
- ssh.disconnect(node)