HC Test: update routing test keyword due to namespace changes
[csit.git] / resources / libraries / python / Dhcp.py
index 8b78f45..5f76e43 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2016 Cisco and/or its affiliates.
+# Copyright (c) 2017 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:
@@ -46,3 +46,46 @@ class DhcpClient(object):
             raise RuntimeError('Unable to set DHCP client on node {} and'
                                ' interface {}.'
                                .format(vpp_node, interface))
+
+
+class DhcpProxy(object):
+    """DHCP Proxy utilities."""
+
+    @staticmethod
+    def dhcp_proxy_config(vpp_node, server_address, source_address):
+        """Set DHCP proxy.
+
+        :param vpp_node: VPP node to set DHCP proxy.
+        :param server_address: DHCP server IP address.
+        :param source_address: DHCP proxy address.
+        :type vpp_node: dict
+        :type server_address: str
+        :type source_address: str
+        :raises RuntimeError: If unable to set DHCP proxy.
+        """
+
+        output = VatExecutor.cmd_from_template(vpp_node,
+                                               "dhcp_proxy_config.vat",
+                                               server_address=server_address,
+                                               source_address=source_address)
+        output = output[0]
+
+        if output["retval"] != 0:
+            raise RuntimeError('Unable to set DHCP proxy on node {}'
+                               .format(vpp_node))
+
+    @staticmethod
+    def vpp_get_dhcp_proxy(node, ip_version):
+        """Retrieve DHCP relay configuration.
+
+        :param node: VPP node.
+        :param ip_version: IP protocol version: ipv4 or ipv6.
+        :type node: dict
+        :type ip_version: str
+        :returns: DHCP relay data.
+        :rtype: list
+        """
+
+        return VatExecutor.cmd_from_template(
+            node, "dhcp_proxy_dump.vat",
+            ipv6="ipv6" if ip_version == "ipv6" else "")