X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=resources%2Flibraries%2Fpython%2FInterfaceUtil.py;h=6790fb7221a4dc049b633e334cad6a75636367e2;hb=981bc57e281bc2f6920f7690eccc3106419474d2;hp=ec2ef69dfc66de879155a1c002e800210c3c5f91;hpb=c478afc5aec0161cc66e837c1ab919542b68ebbc;p=csit.git diff --git a/resources/libraries/python/InterfaceUtil.py b/resources/libraries/python/InterfaceUtil.py index ec2ef69dfc..6790fb7221 100644 --- a/resources/libraries/python/InterfaceUtil.py +++ b/resources/libraries/python/InterfaceUtil.py @@ -493,6 +493,41 @@ class InterfaceUtil(object): raise RuntimeError('Unable to create VXLAN interface on node {}' .format(node)) + @staticmethod + def vxlan_dump(node, interface=None): + """Get VxLAN data for the given interface. + + :param node: VPP node to get interface data from. + :param interface: Numeric index or name string of a specific interface. + If None, information about all VxLAN interfaces is returned. + :type node: dict + :type interface: int or str + :return: Dictionary containing data for the given VxLAN interface or if + interface=None, the list of dictionaries with all VxLAN interfaces. + :rtype dict or list + """ + param = "sw_if_index" + if interface is None: + param = '' + sw_if_index = '' + elif isinstance(interface, basestring): + sw_if_index = Topology.get_interface_sw_index(node, interface) + elif isinstance(interface, int): + sw_if_index = interface + else: + raise Exception("Wrong interface format {0}".format(interface)) + + with VatTerminal(node) as vat: + response = vat.vat_terminal_exec_cmd_from_template( + "vxlan_dump.vat", param=param, sw_if_index=sw_if_index) + + if sw_if_index: + for vxlan in response[0]: + if vxlan["sw_if_index"] == sw_if_index: + return vxlan + return {} + return response[0] + @staticmethod def create_subinterface(node, interface, sub_id, outer_vlan_id, inner_vlan_id, type_subif): @@ -554,3 +589,28 @@ class InterfaceUtil(object): else: raise RuntimeError('Create loopback failed on node "{}"' .format(node['host'])) + + @staticmethod + def vpp_enable_input_acl_interface(node, interface, ip_version, + table_index): + """Enable input acl on interface. + + :param node: VPP node to setup interface for input acl. + :param interface: Interface to setup input acl. + :param ip_version: Version of IP protocol. + :param table_index: Classify table index. + :type node: dict + :type interface: str or int + :type ip_version: str + :type table_index: int + """ + if isinstance(interface, basestring): + sw_if_index = Topology.get_interface_sw_index(node, interface) + else: + sw_if_index = interface + + with VatTerminal(node) as vat: + vat.vat_terminal_exec_cmd_from_template("input_acl_int.vat", + sw_if_index=sw_if_index, + ip_version=ip_version, + table_index=table_index)