"""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
from resources.libraries.python.HTTPRequest import HTTPCodes
status_code, resp = HcUtil.\
delete_honeycomb_data(node, "config_classify_table", path)
- if status_code != HTTPCodes.OK:
- raise HoneycombError(
- "The configuration of classify table was not successful. "
- "Status code: {0}.".format(status_code))
+ if status_code not in (HTTPCodes.OK, HTTPCodes.ACCEPTED):
+ if data is None and '"error-tag":"data-missing"' in resp:
+ logger.debug("data does not exist in path.")
+ else:
+ raise HoneycombError(
+ "The configuration of classify table was not successful. "
+ "Status code: {0}.".format(status_code))
return resp
@staticmethod
suffix_dict = {"l2": "eth",
"l3_ip4": "ipv4",
"l3_ip6": "ipv6",
- "mixed": "mixed"
- }
- if layer == "l4":
- raise NotImplementedError
+ "mixed": "mixed"}
try:
suffix = suffix_dict[layer]
except KeyError:
status_code, resp = HcUtil.put_honeycomb_data(
node, "config_ietf_classify_chain", data, path)
- if status_code != HTTPCodes.OK:
+ if status_code not in (HTTPCodes.OK, HTTPCodes.ACCEPTED):
raise HoneycombError(
"Could not create classify chain."
"Status code: {0}.".format(status_code))
"mixed": {"mode": mode, "acl_type": types['vpp'].format("mixed")}
}
- if layer == "L4":
- raise NotImplementedError
- else:
- try:
- data = {
- "access-lists": {
- "acl": [
- {
- "type": layers[layer]['acl_type'],
- "name": list_name
- }
- ],
- "default-action": default_action,
- "mode": layers[layer]['mode']
- }
+ try:
+ data = {
+ "access-lists": {
+ "acl": [
+ {
+ "type": layers[layer]['acl_type'],
+ "name": list_name
+ }
+ ],
+ "default-action": default_action,
+ "mode": layers[layer]['mode']
}
- except KeyError:
- raise ValueError("Unknown network layer {0}. "
- "Valid options are: {1}".format(
- layer, layers.keys()))
+ }
+ except KeyError:
+ raise ValueError("Unknown network layer {0}. "
+ "Valid options are: {1}".
+ format(layer, layers.keys()))
status_code, resp = HcUtil.put_honeycomb_data(
node, "config_vpp_interfaces", data, path)
- if status_code != HTTPCodes.OK:
+ if status_code not in (HTTPCodes.OK, HTTPCodes.ACCEPTED):
raise HoneycombError(
"Could not configure ACL on interface. "
"Status code: {0}.".format(status_code))