X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=blobdiff_plain;f=resources%2Flibraries%2Fpython%2FIPv4Setup.py;h=b018bceacf128624bd01a4c38ab948aa5db03f47;hp=07089025b0fc2fc7cbc00d1c8c50d24405fd07ab;hb=67f247b4015b76641c6fab7c49e7d9862043c856;hpb=a912d105f3a1d8fed0b4cf6b18e0ef7789be81bf diff --git a/resources/libraries/python/IPv4Setup.py b/resources/libraries/python/IPv4Setup.py index 07089025b0..b018bceacf 100644 --- a/resources/libraries/python/IPv4Setup.py +++ b/resources/libraries/python/IPv4Setup.py @@ -1,4 +1,4 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. +# Copyright (c) 2018 Cisco and/or its affiliates. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at: @@ -38,8 +38,7 @@ class IPv4Node(object): :param prefix_length: Length of network prefix. :type prefix_length: int - - :return: Network mask. + :returns: Network mask. :rtype: str """ @@ -56,23 +55,25 @@ class IPv4Node(object): :type interface: str :type address: str :type prefix_length: int - :return: nothing + :returns: nothing """ pass @abstractmethod - def set_route(self, network, prefix_length, gateway, interface): + def set_route(self, network, prefix_length, gateway, interface, count=1): """Configure IPv4 route. :param network: Network IPv4 address. :param prefix_length: IPv4 prefix length. :param gateway: IPv4 address of the gateway. :param interface: Interface name. + :param count: Number of consecutive routes to add. :type network: str :type prefix_length: int :type gateway: str :type interface: str - :return: nothing + :type route: int + :returns: nothing """ pass @@ -88,7 +89,7 @@ class IPv4Node(object): :type prefix_length: int :type gateway: str :type interface: str - :return: nothing + :returns: nothing """ pass @@ -98,7 +99,7 @@ class IPv4Node(object): :param interface: Interface name. :type interface: str - :return: nothing + :returns: nothing """ pass @@ -110,23 +111,22 @@ class IPv4Node(object): :param source_interface: Source interface name. :type destination_address: str :type source_interface: str - :return: nothing + :returns: nothing """ pass class Tg(IPv4Node): """Traffic generator node""" - def __init__(self, node_info): - super(Tg, self).__init__(node_info) + + # Implicit constructor is inherited. def _execute(self, cmd): """Executes the specified command on TG using SSH. :param cmd: Command to be executed. :type cmd: str - - :return: Content of stdout and stderr returned by command. + :returns: Content of stdout and stderr returned by command. :rtype: tuple """ return exec_cmd_no_error(self.node_info, cmd) @@ -136,8 +136,7 @@ class Tg(IPv4Node): :param cmd: Command to be executed. :type cmd: str - - :return: Content of stdout and stderr returned by command. + :returns: Content of stdout and stderr returned by command. :rtype: tuple """ return exec_cmd_no_error(self.node_info, cmd, sudo=True) @@ -149,7 +148,7 @@ class Tg(IPv4Node): interface) self._sudo_execute(cmd) - def set_route(self, network, prefix_length, gateway, interface): + def set_route(self, network, prefix_length, gateway, interface, count=1): netmask = self._get_netmask(prefix_length) cmd = 'route add -net {} netmask {} gw {}'.\ format(network, netmask, gateway) @@ -180,15 +179,15 @@ class Tg(IPv4Node): class Dut(IPv4Node): """Device under test""" - def __init__(self, node_info): - super(Dut, self).__init__(node_info) + + # Implicit contructor is inherited. def get_sw_if_index(self, interface): """Get sw_if_index of specified interface from current node. :param interface: Interface name. :type interface: str - :return: sw_if_index of the interface or None. + :returns: sw_if_index of the interface or None. :rtype: int """ return Topology().get_interface_sw_index(self.node_info, interface) @@ -200,28 +199,24 @@ class Dut(IPv4Node): :param args: Parameters to the script. :type script: str :type args: dict - :return: nothing + :returns: nothing """ # TODO: check return value VatExecutor.cmd_from_template(self.node_info, script, **args) - def set_arp(self, iface_key, ip_address, mac_address, vrf=None): + def set_arp(self, iface_key, ip_address, mac_address): """Set entry in ARP cache. :param iface_key: Interface key. :param ip_address: IP address. :param mac_address: MAC address. - :param vrf: VRF table ID (Optional). :type iface_key: str :type ip_address: str :type mac_address: str - :type vrf: int """ - vrf = "vrf {}".format(vrf) if vrf else '' self.exec_vat('add_ip_neighbor.vat', sw_if_index=self.get_sw_if_index(iface_key), - ip_address=ip_address, mac_address=mac_address, - vrf=vrf) + ip_address=ip_address, mac_address=mac_address) def set_ip(self, interface, address, prefix_length): self.exec_vat('add_ip_address.vat', @@ -255,7 +250,7 @@ def get_node(node_info): :param node_info: Dictionary containing information on nodes in topology. :type node_info: dict - :return: Class instance that is derived from Node. + :returns: Class instance that is derived from Node. """ if node_info['type'] == NodeType.TG: return Tg(node_info) @@ -277,7 +272,7 @@ class IPv4Setup(object): :param nodes_addr: Available nodes IPv4 addresses. :type nodes: dict :type nodes_addr: dict - :return: Affected interfaces as list of (node, interface) tuples. + :returns: Affected interfaces as list of (node, interface) tuples. :rtype: list """ interfaces = [] @@ -310,7 +305,7 @@ class IPv4Setup(object): :type node: dict :type iface_key: str :type nodes_addr: dict - :return: IPv4 address. + :returns: IPv4 address. :rtype: str """ interface = Topology.get_interface_name(node, iface_key) @@ -336,7 +331,7 @@ class IPv4Setup(object): interfaces from topology and use them to setup ARP entries. :param nodes_info: Dictionary containing information on all nodes - in topology. + in topology. :param nodes_addr: Nodes IPv4 addresses. :type nodes_info: dict :type nodes_addr: dict @@ -353,18 +348,16 @@ class IPv4Setup(object): get_node(node).set_arp(iface_key, ip_address, mac_address) @staticmethod - def add_arp_on_dut(node, iface_key, ip_address, mac_address, vrf=None): + def add_arp_on_dut(node, iface_key, ip_address, mac_address): """Set ARP cache entree on DUT node. :param node: VPP Node in the topology. :param iface_key: Interface key. :param ip_address: IP address of the interface. :param mac_address: MAC address of the interface. - :param vrf: VRF table ID (Optional). :type node: dict :type iface_key: str :type ip_address: str :type mac_address: str - :type vrf: int """ - get_node(node).set_arp(iface_key, ip_address, mac_address, vrf) + get_node(node).set_arp(iface_key, ip_address, mac_address)