csit-validate-pylint-master/3731 for build 3731
[csit.git] / resources / libraries / python / honeycomb / proxyARP.py
index 78e71a7..9696bf4 100644 (file)
@@ -122,11 +122,11 @@ class ProxyARPKeywords(object):
         path = "/interface/{0}/proxy-arp".format(interface)
 
         if state == "disable":
-            status_code, resp = HcUtil.delete_honeycomb_data(
+            status_code, _ = HcUtil.delete_honeycomb_data(
                 node, "config_vpp_interfaces", path)
         elif state == "enable":
             data = {"proxy-arp": {}}
-            status_code, resp = HcUtil.put_honeycomb_data(
+            status_code, _ = HcUtil.put_honeycomb_data(
                 node, "config_vpp_interfaces", data, path)
         else:
             raise ValueError("State argument has to be enable or disable.")
@@ -134,7 +134,7 @@ class ProxyARPKeywords(object):
         if status_code not in (HTTPCodes.OK, HTTPCodes.ACCEPTED):
             raise HoneycombError(
                 "Interface proxyARP configuration on node {0} was not"
-                " successful.".format(node))
+                " successful.".format(node["host"]))
 
     @staticmethod
     def get_proxyarp_interface_assignment(node, interface):
@@ -150,3 +150,83 @@ class ProxyARPKeywords(object):
         """
 
         raise NotImplementedError("Not supported in VPP.")
+
+
+class IPv6NDProxyKeywords(object):
+    """Keywords for IPv6 Neighbor Discovery proxy configuration."""
+
+    def __init__(self):
+        pass
+
+    @staticmethod
+    def configure_ipv6nd(node, interface, addresses=None):
+        """Configure IPv6 Neighbor Discovery proxy on the specified interface,
+        or remove/replace an existing configuration.
+
+        :param node: Honeycomb node.
+        :param interface: Name of an interface on the node.
+        :param addresses: IPv6 addresses to configure ND proxy with. If no
+        address is provided, ND proxy configuration will be removed.
+        :type node: dict
+        :type interface: str
+        :type addresses: list
+        :returns: Content of response.
+        :rtype: bytearray
+        :raises HoneycombError: If the operation fails.
+        """
+
+        interface = Topology.convert_interface_reference(
+            node, interface, "name")
+        interface = interface.replace("/", "%2F")
+
+        path = "/interface/{0}/ietf-ip:ipv6/nd-proxies".format(interface)
+
+        if addresses is None:
+            status_code, resp = HcUtil. \
+                delete_honeycomb_data(node, "config_vpp_interfaces", path)
+        else:
+            data = {
+                "nd-proxies": {
+                    "nd-proxy": [{"address": x} for x in addresses]
+                }
+            }
+
+            status_code, resp = HcUtil. \
+                put_honeycomb_data(node, "config_vpp_interfaces", data, path,
+                                   data_representation=DataRepresentation.JSON)
+
+        if status_code not in (HTTPCodes.OK, HTTPCodes.ACCEPTED):
+            raise HoneycombError(
+                "IPv6 ND proxy configuration unsuccessful. "
+                "Status code: {0}.".format(status_code))
+        else:
+            return resp
+
+    @staticmethod
+    def get_ipv6nd_configuration(node, interface):
+        """Read IPv6 Neighbor Discovery proxy configuration on the specified
+        interface.
+
+        :param node: Honeycomb node.
+        :param interface: Name of an interface on the node.
+        :type node: dict
+        :type interface: str
+        :returns: Content of response.
+        :rtype: bytearray
+        :raises HoneycombError: If the configuration could not be read.
+        """
+
+        interface = Topology.convert_interface_reference(
+            node, interface, "name")
+        interface = interface.replace("/", "%2F")
+
+        path = "/interface/{0}/ietf-ip:ipv6/nd-proxies".format(interface)
+
+        status_code, resp = HcUtil.get_honeycomb_data(
+            node, "config_vpp_interfaces", path)
+        if status_code != HTTPCodes.OK:
+            raise HoneycombError(
+                "Could not read IPv6 ND proxy configuration. "
+                "Status code: {0}.".format(status_code))
+        else:
+            return resp