diff options
Diffstat (limited to 'resources/libraries/python/InterfaceUtil.py')
-rw-r--r-- | resources/libraries/python/InterfaceUtil.py | 33 |
1 files changed, 23 insertions, 10 deletions
diff --git a/resources/libraries/python/InterfaceUtil.py b/resources/libraries/python/InterfaceUtil.py index 2e44e913aa..2eea8e6f1b 100644 --- a/resources/libraries/python/InterfaceUtil.py +++ b/resources/libraries/python/InterfaceUtil.py @@ -580,28 +580,41 @@ class InterfaceUtil(object): return {} @staticmethod - def create_subinterface(node, interface, sub_id, outer_vlan_id, - inner_vlan_id, type_subif): - """Create sub-interface on node. + def create_subinterface(node, interface, sub_id, outer_vlan_id=None, + inner_vlan_id=None, type_subif=None): + """Create sub-interface on node. It is possible to set required + sub-interface type and VLAN tag(s). :param node: Node to add sub-interface. :param interface: Interface name on which create sub-interface. :param sub_id: ID of the sub-interface to be created. - :param outer_vlan_id: Outer VLAN ID. - :param inner_vlan_id: Inner VLAN ID. - :param type_subif: Type of sub-interface. + :param outer_vlan_id: Optional outer VLAN ID. + :param inner_vlan_id: Optional inner VLAN ID. + :param type_subif: Optional type of sub-interface. Values supported by + VPP: [no_tags] [one_tag] [two_tags] [dot1ad] [exact_match] [default_sub] :type node: dict :type interface: str or int :type sub_id: int :type outer_vlan_id: int :type inner_vlan_id: int :type type_subif: str - :return: name and index of created sub-interface + :return: Name and index of created sub-interface. :rtype: tuple + :raises RuntimeError: If it is not possible to create sub-interface. """ + outer_vlan_id = 'outer_vlan_id {0}'.format(outer_vlan_id)\ + if outer_vlan_id else '' + + inner_vlan_id = 'inner_vlan_id {0}'.format(inner_vlan_id)\ + if inner_vlan_id else '' + + if type_subif is None: + type_subif = '' + if isinstance(interface, basestring): - sw_if_index = Topology.get_interface_sw_index(node, interface) + iface_key = Topology.get_interface_by_name(node, interface) + sw_if_index = Topology.get_interface_sw_index(node, iface_key) else: sw_if_index = interface @@ -617,10 +630,10 @@ class InterfaceUtil(object): logger.trace('Created subinterface with index {}' .format(sw_subif_index)) else: - raise RuntimeError('Unable to create subinterface on node {}' + raise RuntimeError('Unable to create sub-interface on node {}' .format(node['host'])) - with VatTerminal(node) as vat: + with VatTerminal(node, json_param=False) as vat: vat.vat_terminal_exec_cmd('exec show interfaces') name = '{}.{}'.format(interface, sub_id) |