diff options
-rw-r--r-- | resources/api/vpp/supported_crcs.yaml | 8 | ||||
-rw-r--r-- | resources/libraries/python/Cop.py | 71 |
2 files changed, 35 insertions, 44 deletions
diff --git a/resources/api/vpp/supported_crcs.yaml b/resources/api/vpp/supported_crcs.yaml index dd68e1591a..43eb76987b 100644 --- a/resources/api/vpp/supported_crcs.yaml +++ b/resources/api/vpp/supported_crcs.yaml @@ -63,9 +63,9 @@ # classify_table_info / reply # honeycomb cli_inband: '0xf8377302' # dev setup cli_inband_reply: '0x05879051' # dev setup - cop_interface_enable_disable: '0x69d24598' # dev + cop_interface_enable_disable: '0x35049db2' # dev cop_interface_enable_disable_reply: '0xe8d4e804' # dev - cop_whitelist_enable_disable: '0x8bb8f6dc' # dev + cop_whitelist_enable_disable: '0xe89bc1f3' # dev cop_whitelist_enable_disable_reply: '0xe8d4e804' # dev create_loopback: '0x16e13d38' # dev create_loopback_reply: '0x903324db' # dev @@ -284,9 +284,9 @@ # classify_table_info / reply # honeycomb cli_inband: '0xf8377302' # dev setup cli_inband_reply: '0x05879051' # dev setup - cop_interface_enable_disable: '0x69d24598' # dev + cop_interface_enable_disable: '0x35049db2' # dev cop_interface_enable_disable_reply: '0xe8d4e804' # dev - cop_whitelist_enable_disable: '0x8bb8f6dc' # dev + cop_whitelist_enable_disable: '0xe89bc1f3' # dev cop_whitelist_enable_disable_reply: '0xe8d4e804' # dev create_loopback: '0x42bb5d22' # dev create_loopback_reply: '0x5383d31f' # dev diff --git a/resources/libraries/python/Cop.py b/resources/libraries/python/Cop.py index d875323b91..24b0debdc4 100644 --- a/resources/libraries/python/Cop.py +++ b/resources/libraries/python/Cop.py @@ -21,42 +21,39 @@ class Cop(object): """COP utilities.""" @staticmethod - def cop_add_whitelist_entry(node, interface, ip_format, fib_id, - default_cop=0): + def cop_add_whitelist_entry( + node, interface, ip_version, fib_id, default_cop=0): """Add cop whitelisted entry. :param node: Node to add COP whitelist on. :param interface: Interface of the node where the COP is added. - :param ip_format: IP format : ip4 or ip6 are valid formats. + :param ip_version: IP version. 'ip4' and 'ip6' are valid values. :param fib_id: Specify the fib table ID. - :param default_cop: 1 => enable non-ip4, non-ip6 filtration. + :param default_cop: 1 => enable non-ip4, non-ip6 filtration, + 0 => disable it. :type node: dict :type interface: str - :type ip_format: str + :type ip_version: str :type fib_id: int :type default_cop: int + :raises ValueError: If parameter 'ip_version' has incorrect value. """ - if ip_format not in ('ip4', 'ip6'): - raise ValueError("Ip not in correct format!") - ip4 = ip6 = 0 - if ip_format == 'ip4': - ip4 = 1 - else: - ip6 = 1 - sw_if_index = Topology.get_interface_sw_index(node, interface) + if ip_version not in ('ip4', 'ip6'): + raise ValueError('IP version is not in correct format') + cmd = 'cop_whitelist_enable_disable' - err_msg = 'Failed to add COP whitelist on ifc {ifc}'\ - .format(ifc=interface) - args_in = dict( - sw_if_index=int(sw_if_index), + err_msg = 'Failed to add COP whitelist on interface {ifc} on host' \ + ' {host}'.format(ifc=interface, host=node['host']) + args = dict( + sw_if_index=Topology.get_interface_sw_index(node, interface), fib_id=int(fib_id), - ip4=ip4, - ip6=ip6, + ip4=True if ip_version == 'ip4' else False, + ip6=True if ip_version == 'ip6' else False, default_cop=default_cop ) with PapiSocketExecutor(node) as papi_exec: - papi_exec.add(cmd, **args_in).get_reply(err_msg) + papi_exec.add(cmd, **args).get_reply(err_msg) @staticmethod def cop_interface_enable_or_disable(node, interface, state): @@ -64,31 +61,25 @@ class Cop(object): :param node: Node to add COP whitelist on. :param interface: Interface of the node where the COP is added. - :param state: disable/enable COP on the interface. + :param state: Enable or disable COP on the interface. :type node: dict :type interface: str :type state: str + :raises ValueError: If parameter 'state' has incorrect value. """ state = state.lower() if state in ('enable', 'disable'): - if state == 'enable': - enable_disable = 1 - else: - enable_disable = 0 - sw_if_index = Topology.get_interface_sw_index(node, interface) - cmd = 'cop_interface_enable_disable' - err_msg = 'Failed to enable or disable on {ifc}'\ - .format(ifc=interface) - - args_in = dict( - sw_if_index=int(sw_if_index), - enable_disable=enable_disable - ) + enable = True if state == 'enable' else False + else: + raise ValueError("Possible state values are 'enable' or 'disable'") - with PapiSocketExecutor(node) as papi_exec: - papi_exec.add(cmd, **args_in).get_reply(err_msg) + cmd = 'cop_interface_enable_disable' + err_msg = 'Failed to enable/disable COP on interface {ifc} on host' \ + ' {host}'.format(ifc=interface, host=node['host']) + args = dict( + sw_if_index=Topology.get_interface_sw_index(node, interface), + enable_disable=enable + ) - else: - raise ValueError( - "Possible values are 'enable' or 'disable'!" - ) + with PapiSocketExecutor(node) as papi_exec: + papi_exec.add(cmd, **args).get_reply(err_msg) |