CSIT-768: Refactor Python container libraries
[csit.git] / resources / libraries / python / VppConfigGenerator.py
index dac8bae..7bd0175 100644 (file)
@@ -61,6 +61,23 @@ class VppConfigGenerator(object):
         """
         self._vpp_config_filename = filename
 
         """
         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.
 
     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))
         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))