X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=blobdiff_plain;f=resources%2Flibraries%2Fpython%2FDhcp.py;h=2b4d03ec9e928a9628caaae31d4ee731afd9b5bd;hp=5f76e434eca74a8ec6bf6082d7ec18a0c4cfa6bf;hb=6da5a6920171682bd5bf6a77517bedfef91cbd0e;hpb=d30aa3a0c0e64682266b0fbf5c8506952e39e414 diff --git a/resources/libraries/python/Dhcp.py b/resources/libraries/python/Dhcp.py index 5f76e434ec..2b4d03ec9e 100644 --- a/resources/libraries/python/Dhcp.py +++ b/resources/libraries/python/Dhcp.py @@ -1,4 +1,4 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. +# Copyright (c) 2021 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: @@ -14,66 +14,12 @@ """DHCP utilities for VPP.""" -from resources.libraries.python.VatExecutor import VatExecutor -from resources.libraries.python.topology import Topology +from resources.libraries.python.PapiExecutor import PapiSocketExecutor -class DhcpClient(object): - """DHCP Client utilities.""" - - @staticmethod - def set_dhcp_client_on_interface(vpp_node, interface, hostname=None): - """Set DHCP client on interface. - - :param vpp_node: VPP node to set DHCP client on. - :param interface: Interface name to set DHCP client on. - :param hostname: Hostname used in DHCP DISCOVER. - :type vpp_node: dict - :type interface: str - :type hostname: str - :raises RuntimeError: If unable to set DHCP client on interface. - """ - sw_if_index = Topology.get_interface_sw_index(vpp_node, interface) - interface = 'sw_if_index {}'.format(sw_if_index) - hostname = 'hostname {}'.format(hostname) if hostname else '' - output = VatExecutor.cmd_from_template(vpp_node, - "dhcp_client.vat", - interface=interface, - hostname=hostname) - output = output[0] - - if output["retval"] != 0: - raise RuntimeError('Unable to set DHCP client on node {} and' - ' interface {}.' - .format(vpp_node, interface)) - - -class DhcpProxy(object): +class DhcpProxy: """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. @@ -85,7 +31,11 @@ class DhcpProxy(object): :returns: DHCP relay data. :rtype: list """ + cmd = u"dhcp_proxy_dump" + args = dict(is_ip6=1 if ip_version == u"ipv6" else 0) + err_msg = f"Failed to get DHCP proxy dump on host {node[u'host']}" + + with PapiSocketExecutor(node) as papi_exec: + details = papi_exec.add(cmd, **args).get_details(err_msg) - return VatExecutor.cmd_from_template( - node, "dhcp_proxy_dump.vat", - ipv6="ipv6" if ip_version == "ipv6" else "") + return details