diff options
author | Peter Mikus <pmikus@cisco.com> | 2018-07-01 06:13:54 +0000 |
---|---|---|
committer | Peter Mikus <pmikus@cisco.com> | 2018-07-02 09:10:09 +0000 |
commit | a28f1efe6803b70c3e2d2bdb74d55c88ffa8f9e1 (patch) | |
tree | cc87a4d85f4f5312ceba68724d2e752666233df0 /resources/libraries/python | |
parent | 8a5ef28ce07926ea81337ef7a997a2cf19e3cb4a (diff) |
Compatibility fixes with Ubuntu 18.04
Currently we are using ip:port socket to for VPP to listen for incoming
connections. There is only one place in code this socket is used for
detection if VPP is responding after restart. This patch is supposed to
change ip:port to sock:file which is default preffered way in VPP. This
way we can start using vppctl. netcat on the other side with ip:port
remains hanged in console for infinite time not returning back.
There is also need to check whether uio_module is loaded and eventually
load it. As uio_pci_generic is not working there, we will fallback to
main igb_uio (uio_pci_generic being only lightweight subset of igb_uio).
This patch also add additional verbose output to console during setup to
better understand if failure happens during copy/extract/setup.
Change-Id: I0b8a3b76dce3316496a3ad928f58718b6e73057d
Signed-off-by: Peter Mikus <pmikus@cisco.com>
Diffstat (limited to 'resources/libraries/python')
-rw-r--r-- | resources/libraries/python/DUTSetup.py | 22 | ||||
-rw-r--r-- | resources/libraries/python/SetupFramework.py | 7 | ||||
-rw-r--r-- | resources/libraries/python/VppConfigGenerator.py | 7 |
3 files changed, 26 insertions, 10 deletions
diff --git a/resources/libraries/python/DUTSetup.py b/resources/libraries/python/DUTSetup.py index 5e07ee0e7a..4ead76281f 100644 --- a/resources/libraries/python/DUTSetup.py +++ b/resources/libraries/python/DUTSetup.py @@ -442,19 +442,17 @@ class DUTSetup(object): @staticmethod def kernel_module_verify(node, module, force_load=False): - """Verify if kernel module is loaded on all DUTs. If parameter force + """Verify if kernel module is loaded on node. If parameter force load is set to True, then try to load the modules. - :param node: DUT node. + :param node: Node. :param module: Module to verify. :param force_load: If True then try to load module. :type node: dict :type module: str :type force_load: bool - :returns: nothing :raises RuntimeError: If module is not loaded or failed to load. """ - ssh = SSH() ssh.connect(node) @@ -470,6 +468,22 @@ class DUTSetup(object): '{1}'.format(module, node['host'])) @staticmethod + def kernel_module_verify_on_all_duts(nodes, module, force_load=False): + """Verify if kernel module is loaded on all DUTs. If parameter force + load is set to True, then try to load the modules. + + :param node: DUT nodes. + :param module: Module to verify. + :param force_load: If True then try to load module. + :type node: dict + :type module: str + :type force_load: bool + """ + for node in nodes.values(): + if node['type'] == NodeType.DUT: + DUTSetup.kernel_module_verify(node, module, force_load) + + @staticmethod def kernel_module_load(node, module): """Load kernel module on node. diff --git a/resources/libraries/python/SetupFramework.py b/resources/libraries/python/SetupFramework.py index ccf4e4fada..558d5d4097 100644 --- a/resources/libraries/python/SetupFramework.py +++ b/resources/libraries/python/SetupFramework.py @@ -84,6 +84,7 @@ def copy_tarball_to_node(tarball, node): ssh.connect(node) ssh.scp(tarball, "/tmp/") + logger.console('Copying tarball to {0} done'.format(node['host'])) def extract_tarball_at_node(tarball, node): @@ -108,6 +109,8 @@ def extract_tarball_at_node(tarball, node): if ret_code != 0: raise RuntimeError('Failed to extract {0} at node {1}' .format(tarball, node['host'])) + logger.console('Extracting tarball to {0} on {1} done' + .format(con.REMOTE_FW_DIR, node['host'])) def create_env_directory_at_node(node): @@ -131,8 +134,8 @@ def create_env_directory_at_node(node): if ret_code != 0: raise RuntimeError('Virtualenv setup including requirements.txt on {0}' .format(node['host'])) - else: - logger.console('Virtualenv on {0} created'.format(node['host'])) + + logger.console('Virtualenv on {0} created'.format(node['host'])) def setup_node(args): diff --git a/resources/libraries/python/VppConfigGenerator.py b/resources/libraries/python/VppConfigGenerator.py index e9933f2a18..4e1ec74c63 100644 --- a/resources/libraries/python/VppConfigGenerator.py +++ b/resources/libraries/python/VppConfigGenerator.py @@ -160,7 +160,7 @@ class VppConfigGenerator(object): value = self._vpp_logfile self.add_config_item(self._nodeconfig, value, path) - def add_unix_cli_listen(self, value='localhost:5002'): + def add_unix_cli_listen(self, value='/run/vpp/cli.sock'): """Add UNIX cli-listen configuration. :param value: CLI listen address and port or path to CLI socket. @@ -590,9 +590,8 @@ class VppConfigGenerator(object): for _ in range(retries): time.sleep(1) ret, stdout, _ = \ - ssh.exec_command('echo show pci | nc 0 5002 || ' - 'echo "VPP not yet running"') - if ret == 0 and 'VPP not yet running' not in stdout: + ssh.exec_command_sudo('vppctl show pci') + if ret == 0 and 'Connection refused' not in stdout: break else: raise RuntimeError('VPP failed to restart on node {name}'. |