diff options
Diffstat (limited to 'resources/libraries/python/VppConfigGenerator.py')
-rw-r--r-- | resources/libraries/python/VppConfigGenerator.py | 75 |
1 files changed, 17 insertions, 58 deletions
diff --git a/resources/libraries/python/VppConfigGenerator.py b/resources/libraries/python/VppConfigGenerator.py index dac8bae6bb..7bd0175b3d 100644 --- a/resources/libraries/python/VppConfigGenerator.py +++ b/resources/libraries/python/VppConfigGenerator.py @@ -61,6 +61,23 @@ class VppConfigGenerator(object): """ self._vpp_config_filename = filename + def get_config_filename(self): + """Get startup configuration filename. + + :returns: Startup configuration filename. + :rtype: str + """ + return self._vpp_config_filename + + def get_config_str(self): + """Get dumped startup configuration in VPP config format. + + :returns: Startup configuration in VPP config format. + :rtype: str + """ + self.dump_config(self._nodeconfig) + return self._vpp_config + def add_config_item(self, config, value, path): """Add startup configuration item. @@ -349,61 +366,3 @@ class VppConfigGenerator(object): else: raise RuntimeError('VPP failed to restart on node {}'. format(self._hostname)) - - def apply_config_lxc(self, lxc_name, waittime=5, retries=12): - """Generate and apply VPP configuration for node in a container. - - Use data from calls to this class to form a startup.conf file and - replace /etc/vpp/startup.conf with it on node inside a container. - - :param lxc_name: LXC container name. - :param waittime: Time to wait for VPP to restart (default 5 seconds). - :param retries: Number of times (default 12) to re-try waiting. - :type lxc_name: str - :type waittime: int - :type retries: int - :raises RuntimeError: If writing config file failed, or restarting of - VPP failed. - """ - self.dump_config(self._nodeconfig) - - ssh = SSH() - ssh.connect(self._node) - - # We're using this "| sudo tee" construct because redirecting - # a sudo's output ("sudo echo xxx > /path/to/file") does not - # work on most platforms... - (ret, _, _) = \ - ssh.exec_command_lxc('echo "{0}" | sudo tee {1}'. - format(self._vpp_config, - self._vpp_config_filename), lxc_name) - - if ret != 0: - raise RuntimeError('Writing config file failed in {0} to node {1}'. - format(lxc_name, self._hostname)) - - # Instead of restarting, we'll do separate start and stop - # actions. This way we don't care whether VPP was running - # to begin with. - ssh.exec_command_lxc('service {0} stop'. - format(self._vpp_service_name), lxc_name) - (ret, _, _) = \ - ssh.exec_command_lxc('service {0} start'. - format(self._vpp_service_name), lxc_name) - if ret != 0: - raise RuntimeError('Restarting VPP failed in {0} on node {1}'. - format(lxc_name, self._hostname)) - - # Sleep <waittime> seconds, up to <retry> times, - # and verify if VPP is running. - for _ in range(retries): - time.sleep(waittime) - (ret, _, _) = \ - ssh.exec_command_lxc('echo show hardware-interfaces | ' - 'nc 0 5002 || echo "VPP not yet running"', - lxc_name) - if ret == 0: - break - else: - raise RuntimeError('VPP failed to restart in {0} on node {1}'. - format(lxc_name, self._hostname)) |