VXLAN test with dot1q tagging.
[csit.git] / resources / libraries / python / InterfaceUtil.py
index 4631ccc..6526fe8 100644 (file)
@@ -399,6 +399,38 @@ class InterfaceUtil(object):
             elif node_data['type'] == NodeType.TG:
                 InterfaceUtil.update_tg_interface_data_on_node(node_data)
 
+    @staticmethod
+    def create_vlan_subinterface(node, interface, vlan):
+        """Create VLAN subinterface on node.
+
+        :param node: Node to add VLAN subinterface on.
+        :param interface: Interface name on which create VLAN subinterface.
+        :param vlan: VLAN ID of the subinterface to be created.
+        :type node: dict
+        :type interface: str
+        :type vlan: int
+        :return: Name and index of created subinterface.
+        :rtype: tuple
+        """
+        sw_if_index = Topology.get_interface_sw_index(node, interface)
+
+        output = VatExecutor.cmd_from_template(node, "create_vlan_subif.vat",
+                                               sw_if_index=sw_if_index,
+                                               vlan=vlan)
+        if output[0]["retval"] == 0:
+            sw_subif_index = output[0]["sw_if_index"]
+            logger.trace('VLAN subinterface with sw_if_index {} and VLAN ID {} '
+                         'created on node {}'.format(sw_subif_index,
+                                                     vlan, node['host']))
+        else:
+            raise RuntimeError('Unable to create VLAN subinterface on node {}'
+                               .format(node['host']))
+
+        with VatTerminal(node, False) as vat:
+            vat.vat_terminal_exec_cmd('exec show interfaces')
+
+        return '{}.{}'.format(interface, vlan), sw_subif_index
+
     @staticmethod
     def create_vxlan_interface(node, vni, source_ip, destination_ip):
         """Create VXLAN interface and return sw if index of created interface.