Honeycomb setup and utils
[csit.git] / resources / libraries / python / IPv6Setup.py
index 86c8876..5989057 100644 (file)
@@ -55,14 +55,19 @@ class IPv6Setup(object):
     def __init__(self):
         pass
 
-    def nodes_setup_ipv6_addresses(self, nodes, nodes_addr):
-        """Setup IPv6 addresses on all VPP nodes in topology.
+    def nodes_set_ipv6_addresses(self, nodes, nodes_addr):
+        """Set IPv6 addresses on all VPP nodes in topology.
 
            :param nodes: Nodes of the test topology.
            :param nodes_addr: Available nodes IPv6 adresses.
            :type nodes: dict
            :type nodes_addr: dict
+           :return: affected interfaces as list of (node, interface) tuples
+           :rtype: list
         """
+
+        interfaces = []
+
         for net in nodes_addr.values():
             for port in net['ports'].values():
                 host = port.get('node')
@@ -76,6 +81,9 @@ class IPv6Setup(object):
                     self.vpp_set_if_ipv6_addr(node, port['if'], port['addr'],
                                               net['prefix'])
 
+                    interfaces.append((node, port['if']))
+
+        return interfaces
     def nodes_clear_ipv6_addresses(self, nodes, nodes_addr):
         """Remove IPv6 addresses from all VPP nodes in topology.
 
@@ -161,15 +169,14 @@ class IPv6Setup(object):
            :type prefix: str
         """
         sw_if_index = Topology.get_interface_sw_index(node, interface)
-        vat = VatTerminal(node)
-        vat.vat_terminal_exec_cmd_from_template('add_ip_address.vat',
-                                                sw_if_index=sw_if_index,
-                                                address=addr,
-                                                prefix_length=prefix)
-        vat.vat_terminal_exec_cmd_from_template('set_if_state.vat',
-                                                sw_if_index=sw_if_index,
-                                                state='admin-up')
-        vat.vat_terminal_close()
+        with VatTerminal(node) as vat:
+            vat.vat_terminal_exec_cmd_from_template('add_ip_address.vat',
+                                                    sw_if_index=sw_if_index,
+                                                    address=addr,
+                                                    prefix_length=prefix)
+            vat.vat_terminal_exec_cmd_from_template('set_if_state.vat',
+                                                    sw_if_index=sw_if_index,
+                                                    state='admin-up')
 
         ssh = SSH()
         ssh.connect(node)
@@ -194,15 +201,14 @@ class IPv6Setup(object):
            :type prefix: str
         """
         sw_if_index = Topology.get_interface_sw_index(node, interface)
-        vat = VatTerminal(node)
-        vat.vat_terminal_exec_cmd_from_template('del_ip_address.vat',
-                                                sw_if_index=sw_if_index,
-                                                address=addr,
-                                                prefix_length=prefix)
-        vat.vat_terminal_exec_cmd_from_template('set_if_state.vat',
-                                                sw_if_index=sw_if_index,
-                                                state='admin-down')
-        vat.vat_terminal_close()
+        with VatTerminal(node) as vat:
+            vat.vat_terminal_exec_cmd_from_template('del_ip_address.vat',
+                                                    sw_if_index=sw_if_index,
+                                                    address=addr,
+                                                    prefix_length=prefix)
+            vat.vat_terminal_exec_cmd_from_template('set_if_state.vat',
+                                                    sw_if_index=sw_if_index,
+                                                    state='admin-down')
 
     @staticmethod
     def vpp_ra_supress_link_layer(node, interface):