-# Copyright (c) 2018 Cisco and/or its affiliates.
+# Copyright (c) 2019 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:
"""This module implements keywords to manipulate ACL data structures using
Honeycomb REST API."""
+
+
from robot.api import logger
from resources.libraries.python.topology import Topology
" under ACL table {1}.".format(session_match, table_name))
@staticmethod
- def create_acl_plugin_classify_chain(node, list_name, data, macip=False):
+ def create_acl_plugin_classify_chain(node, list_name, data):
"""Create classify chain using the ietf-acl node.
:param node: Honeycomb node.
:param list_name: Name for the classify list.
:param data: Dictionary of settings to send to Honeycomb.
- :param macip: Use simple MAC+IP classifier. Optional.
:type node: dict
:type list_name: str
:type data: dict
- :type macip: bool
:returns: Content of response.
:rtype: bytearray
:raises HoneycombError: If the operation fails.
"""
- if macip:
- path = "/acl/vpp-acl:vpp-macip-acl/{0}".format(list_name)
- else:
- path = "/acl/vpp-acl:vpp-acl/{0}".format(list_name)
+ path = "/acl/{0}".format(list_name)
status_code, resp = HcUtil.put_honeycomb_data(
node, "config_plugin_acl", data, path)
return resp
@staticmethod
- def set_acl_plugin_interface(node, interface, acl_name,
- direction, macip=False):
+ def set_acl_plugin_interface(node, interface, acl_name, direction):
"""Assign an interface to an ietf-acl classify chain.
:param node: Honeycomb node.
:param interface: Name of an interface on the node.
:param acl_name: Name of an ACL chain configured through ACL-plugin.
- :param direction: Classify incoming or outgiong packets.
+ :param direction: Classify incoming or outgoing packets.
Valid options are: ingress, egress
- :param macip: Use simple MAC+IP classifier. Optional.
:type node: dict
:type interface: str or int
:type acl_name: str
:type direction: str
- :type macip: bool
:returns: Content of response.
:rtype: bytearray
:raises ValueError: If the direction argument is incorrect.
"Valid options are: ingress, egress."
.format(direction))
- path = "/interface/{0}/interface-acl:acl/{1}".format(
+ path = "/attachment-points/interface/{0}/{1}/acl-sets/".format(
interface, direction)
- if macip:
- data = {
- direction: {
- "vpp-macip-acl": {
- "type": "vpp-acl:vpp-macip-acl",
- "name": acl_name
- }
- }
- }
- else:
- data = {
- direction: {
- "vpp-acls": [
- {
- "type": "vpp-acl:vpp-acl",
- "name": acl_name
- }
- ]
+ data = {
+ "acl-sets": {
+ "acl-set": {
+ "name": acl_name
}
}
+ }
status_code, resp = HcUtil.put_honeycomb_data(
- node, "config_vpp_interfaces", data, path)
+ node, "config_plugin_acl", data, path)
if status_code not in (HTTPCodes.OK, HTTPCodes.ACCEPTED):
raise HoneycombError(
interface = interface.replace("/", "%2F")
- path = "/interface/{0}/interface-acl:acl/".format(interface)
+ path = "/attachment-points/interface/{0}/".format(interface)
status_code, _ = HcUtil.delete_honeycomb_data(
- node, "config_vpp_interfaces", path)
+ node, "config_plugin_acl", path)
if status_code != HTTPCodes.OK:
raise HoneycombError(