aboutsummaryrefslogtreecommitdiffstats
path: root/resources/libraries/python
diff options
context:
space:
mode:
authorselias <samelias@cisco.com>2016-06-30 16:29:25 +0200
committerMatej Klotton <mklotton@cisco.com>2016-07-11 12:33:38 +0000
commitd5e00c67d229e6f6fd9461755423cee800a1635e (patch)
treea892530d93916bc75cd5b1403958a9f5eca76cf2 /resources/libraries/python
parent3bb84bee3516c1e7326becfc3c2f70bf6e3f59ce (diff)
CSIT-184: Add Honeycomb sub-interface ipv4 tests
- add tests for sub-interface ipv4 support - add keywords and methods used in tests Change-Id: I98af193a4c4f0d3822eb9637f01acead37accb8c Signed-off-by: selias <samelias@cisco.com>
Diffstat (limited to 'resources/libraries/python')
-rw-r--r--resources/libraries/python/InterfaceUtil.py2
-rw-r--r--resources/libraries/python/honeycomb/HcAPIKwInterfaces.py69
2 files changed, 69 insertions, 2 deletions
diff --git a/resources/libraries/python/InterfaceUtil.py b/resources/libraries/python/InterfaceUtil.py
index ace4453e54..2e44e913aa 100644
--- a/resources/libraries/python/InterfaceUtil.py
+++ b/resources/libraries/python/InterfaceUtil.py
@@ -227,7 +227,7 @@ class InterfaceUtil(object):
Note: A single interface may have multiple IP addresses assigned.
:rtype: list
"""
- sw_if_index = Topology.get_interface_sw_index(node, interface)
+ sw_if_index = InterfaceUtil.get_sw_if_index(node, interface)
with VatTerminal(node) as vat:
response = vat.vat_terminal_exec_cmd_from_template(
diff --git a/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py b/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py
index ec928a7567..4feb22e90a 100644
--- a/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py
+++ b/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py
@@ -308,7 +308,7 @@ class InterfaceKeywords(object):
:param node: Honeycomb node.
:param interface: The name of interface.
:type interface: str
- :type param: str
+ :type node: dict
:return: Operational data about bridge domain settings in the
interface.
:rtype: dict
@@ -390,6 +390,7 @@ class InterfaceKeywords(object):
:type network: str or int
:return: Content of response.
:rtype: bytearray
+ :raises HoneycombError: If the provided netmask or prefix is not valid.
"""
path = ("interfaces", ("interface", "name", interface), "ietf-ip:ipv4")
@@ -417,6 +418,7 @@ class InterfaceKeywords(object):
:type network: str or int
:return: Content of response.
:rtype: bytearray
+ :raises HoneycombError: If the provided netmask or prefix is not valid.
"""
path = ("interfaces", ("interface", "name", interface), "ietf-ip:ipv4",
@@ -1157,6 +1159,71 @@ class InterfaceKeywords(object):
"information about the tag-rewrite.")
@staticmethod
+ def add_ipv4_address_to_sub_interface(node, super_interface, identifier,
+ ip_addr, network):
+ """Add an ipv4 address to the specified sub-interface, with the provided
+ netmask or network prefix length. Any existing ipv4 addresses on the
+ sub-interface will be replaced.
+
+ :param node: Honeycomb node.
+ :param super_interface: Super interface.
+ :param identifier: The ID of sub-interface.
+ :param ip_addr: IPv4 address to be set.
+ :param network: Network mask or network prefix length.
+ :type node: dict
+ :type super_interface: str
+ :type identifier: int
+ :type ip_addr: str
+ :type network: str or int
+ :return: Content of response.
+ :rtype: bytearray
+ :raises HoneycombError: If the provided netmask or prefix is not valid.
+ """
+
+ path = ("interfaces",
+ ("interface", "name", super_interface),
+ "vpp-vlan:sub-interfaces",
+ ("sub-interface", "identifier", int(identifier)),
+ "ipv4")
+
+ if isinstance(network, basestring):
+ address = {"address": [{"ip": ip_addr, "netmask": network}, ]}
+
+ elif isinstance(network, int) and 0 < network < 33:
+ address = {"address": [{"ip": ip_addr, "prefix-length": network}, ]}
+
+ else:
+ raise HoneycombError("{0} is not a valid netmask or prefix length."
+ .format(network))
+
+ return InterfaceKeywords._set_interface_properties(
+ node, super_interface, path, address)
+
+ @staticmethod
+ def remove_all_ipv4_addresses_from_sub_interface(node, super_interface,
+ identifier):
+ """Remove all ipv4 addresses from the specified sub-interface.
+
+ :param node: Honeycomb node.
+ :param super_interface: Super interface.
+ :param identifier: The ID of sub-interface.
+ :type node: dict
+ :type super_interface: str
+ :type identifier: int
+ :return: Content of response.
+ :rtype: bytearray
+ """
+
+ path = ("interfaces",
+ ("interface", "name", super_interface),
+ "vpp-vlan:sub-interfaces",
+ ("sub-interface", "identifier", int(identifier)),
+ "ipv4", "address")
+
+ return InterfaceKeywords._set_interface_properties(
+ node, super_interface, path, None)
+
+ @staticmethod
def compare_data_structures(data, ref):
"""Checks if data obtained from UUT is as expected.