-# Copyright (c) 2017 Cisco and/or its affiliates.
+# Copyright (c) 2018 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:
"""
from robot.api import logger
-from resources.libraries.python.topology import Topology
from resources.libraries.python.HTTPRequest import HTTPCodes
from resources.libraries.python.honeycomb.HoneycombSetup import HoneycombError
from resources.libraries.python.honeycomb.HoneycombUtil \
import DataRepresentation
from resources.libraries.python.honeycomb.HoneycombUtil \
import HoneycombUtil as HcUtil
+from resources.libraries.python.topology import Topology
class InterfaceKeywords(object):
VXLAN_PARAMS = ("src", "dst", "vni", "encap-vrf-id")
L2_PARAMS = ("bridge-domain", "split-horizon-group",
"bridged-virtual-interface")
- TAP_PARAMS = ("tap-name", "mac", "device-instance")
+ TAP_PARAMS = ("id", "tx-ring-size", "rx-ring-size", "host-mac",
+ "host-interface-name", "host-namespace", "host-bridge",
+ "host-ipv4-address", "host-ipv6-address", "tag",
+ "host-ipv4-gateway", "host-ipv6-gateway", "mac")
VHOST_USER_PARAMS = ("socket", "role")
SUB_IF_PARAMS = ("identifier",
"vlan-type",
:returns: Content of response.
:rtype: bytearray
:raises HoneycombError: If the status code in response on PUT is not
- 200 = OK.
+ 200 = OK.
"""
status_code, resp = HcUtil.\
:param interface: The name of interface.
:param path: Path to data we want to change / create / remove.
:param new_value: The new value to be set. If None, the item will be
- removed.
+ removed.
:type node: dict
:type interface: str
:type path: tuple
:param node: Honeycomb node.
:param interface: Interface name, key, link name or sw_if_index.
:param state: The requested state, only "up" and "down" are valid
- values.
+ values.
:type node: dict
:type interface: str
:type state: str
:param interface: Interface name, key, link name or sw_if_index.
:type node: dict
:type interface: str or int
-
:raises HoneycombError: If the operation fails.
"""
:type node: dict
:type interface: str
:returns: Operational data about bridge domain settings in the
- interface.
+ interface.
:rtype: dict
"""
:param interface: The name of interface.
:param param: Parameter to configure (set, change, remove)
:param value: The value of parameter. If None, the parameter will be
- removed.
+ removed.
:type node: dict
:type interface: str
:type param: str
:param interface: The name of interface.
:param param: Parameter to configure (set, change, remove)
:param value: The value of parameter. If None, the parameter will be
- removed.
+ removed.
:type node: dict
:type interface: str
:type param: str
:param interface: The name of interface.
:param param: Parameter to configure (set, change, remove)
:param value: The value of parameter. If None, the parameter will be
- removed.
+ removed.
:type node: dict
:type interface: str
:type param: str
:param interface: The name of interface.
:param param: Parameter to configure (set, change, remove)
:param value: The value of parameter. If None, the parameter will be
- removed.
+ removed.
:type node: dict
:type interface: str
:type param: str
:param interface: The name of interface.
:param param: Parameter to configure (set, change, remove)
:param value: The value of parameter. If None, the parameter will be
- removed.
+ removed.
:type node: dict
:type interface: str
:type param: str
:param node: Honeycomb node.
:param interface: The name of interface.
:param kwargs: Parameters and their values. The accepted parameters are
- defined in InterfaceKeywords.VXLAN_PARAMS.
+ defined in InterfaceKeywords.VXLAN_PARAMS.
:type node: dict
:type interface: str
:type kwargs: dict
:returns: Content of response.
:rtype: bytearray
:raises HoneycombError: If it is not possible to get information about
- interfaces or it is not possible to delete the interface.
+ interfaces or it is not possible to delete the interface.
"""
path = ("interfaces", ("interface", "name", interface))
:param node: Honeycomb node.
:param interface: The name of interface.
:param kwargs: Parameters and their values. The accepted parameters are
- defined in InterfaceKeywords.VXLAN_PARAMS.
+ defined in InterfaceKeywords.VXLAN_PARAMS.
:type node: dict
:type interface: str
:type kwargs: dict
:param interface: The name of interface.
:param param: Parameter to configure (set, change, remove)
:param value: The value of parameter. If None, the parameter will be
- removed.
+ removed.
:type node: dict
:type interface: str
:type param: str
:param node: Honeycomb node.
:param interface: The name of interface.
:param kwargs: Parameters and their values. The accepted parameters are
- defined in InterfaceKeywords.TAP_PARAMS.
+ defined in InterfaceKeywords.TAP_PARAMS.
:type node: dict
:type interface: str
:type kwargs: dict
new_tap = {
"name": interface,
- "type": "v3po:tap",
- "v3po:tap": {}
+ "type": "v3po:tap-v2",
+ "v3po:tap-v2": {}
}
for param, value in kwargs.items():
if param not in InterfaceKeywords.TAP_PARAMS:
- raise HoneycombError("The parameter {0} is invalid.".
- format(param))
- new_tap["v3po:tap"][param] = value
+ raise HoneycombError(
+ "The parameter {0} is invalid.".format(param))
+ new_tap["v3po:tap-v2"][param] = value
path = ("interfaces", "interface")
new_tap_structure = [new_tap, ]
"""Configure TAP on the interface.
The keyword configures TAP parameters on the given interface. The type
- of interface must be set to "v3po:tap".
+ of interface must be set to "v3po:tap-v2".
The new TAP parameters overwrite the current configuration. If a
parameter in new configuration is missing, it is removed from TAP
configuration.
:param node: Honeycomb node.
:param interface: The name of interface.
:param kwargs: Parameters and their values. The accepted parameters are
- defined in InterfaceKeywords.TAP_PARAMS.
+ defined in InterfaceKeywords.TAP_PARAMS.
:type node: dict
:type interface: str
:type kwargs: dict
format(param))
tap_structure[param] = value
- path = ("interfaces", ("interface", "name", interface), "v3po:tap")
+ path = ("interfaces", ("interface", "name", interface), "v3po:tap-v2")
return InterfaceKeywords._set_interface_properties(
node, interface, path, tap_structure)
:param node: Honeycomb node.
:param interface: The name of interface.
:param kwargs: Parameters and their values. The accepted parameters are
- defined in InterfaceKeywords.VHOST_USER_PARAMS.
+ defined in InterfaceKeywords.VHOST_USER_PARAMS.
:type node: dict
:type interface: str
:type kwargs: dict
:param node: Honeycomb node.
:param interface: The name of interface.
:param kwargs: Parameters and their values. The accepted parameters are
- defined in InterfaceKeywords.VHOST_USER_PARAMS.
+ defined in InterfaceKeywords.VHOST_USER_PARAMS.
:type node: dict
:type interface: str
:type kwargs: dict
:param node: Honeycomb node.
:param super_interface: Super interface.
:param match: Match type. The valid values are defined in
- InterfaceKeywords.SUB_IF_MATCH.
+ InterfaceKeywords.SUB_IF_MATCH.
:param tags: List of tags.
:param kwargs: Parameters and their values. The accepted parameters are
- defined in InterfaceKeywords.SUB_IF_PARAMS.
+ defined in InterfaceKeywords.SUB_IF_PARAMS.
:type node: dict
:type super_interface: str
:type match: str
:raises KeyError: If the parameter 'match' is invalid.
"""
+ super_interface = Topology.convert_interface_reference(
+ node, super_interface, "name")
+
match_type = {
"default":
{"default": {}},
:param data: Data to be checked.
:param ref: Referential data used for comparison.
:param _path: Used in recursive calls, stores the path taken down
- the JSON tree.
+ the JSON tree.
:type data: dict
:type ref: dict
:type _path: str
:raises HoneycombError: If the data structures do not match in some way,
- or if they are not in deserialized JSON format.
+ or if they are not in deserialized JSON format.
"""
if data == ref:
:param node: Honeycomb node.
:param interface: The name of interface to be created.
:param kwargs: Parameters and their values. The accepted parameters are
- defined in InterfaceKeywords.VXLAN_GPE_PARAMS.
+ defined in InterfaceKeywords.VXLAN_GPE_PARAMS.
:type node: dict
:type interface: str
:type kwargs: dict
:returns: Content of response.
:rtype: bytearray
:raises HoneycombError: If the configuration of interface is not
- successful.
+ successful.
"""
interface = interface.replace("/", "%2F")
:returns: Content of response.
:rtype: bytearray
:raises HoneycombError: If the configuration of interface is not
- successful.
+ successful.
"""
interface = Topology.convert_interface_reference(
node, interface, "name")
:returns: Content of response.
:rtype: bytearray
:raises HoneycombError: If the configuration of interface is not
- successful.
+ successful.
"""
interface = Topology.convert_interface_reference(
node, interface, "name")
:returns: Content of response.
:rtype: bytearray
:raises HoneycombError: If the configuration of interface is not
- successful.
+ successful.
"""
interface = interface.replace("/", "%2F")
:param node: Honeycomb node.
:param intf: The interface where PBB sub-interface will be configured.
:param params: Configuration parameters of the sub-interface to be
- created.
+ created.
:type node: dict
:type intf: str
:type params: dict
:returns: Content of response.
:rtype: bytearray
:raises HoneycombError: If the configuration of sub-interface is not
- successful.
+ successful.
"""
interface = intf.replace("/", "%2F")
:returns: Content of response.
:rtype: bytearray
:raises HoneycombError: If the removal of sub-interface is not
- successful.
+ successful.
"""
interface = intf.replace("/", "%2F")
:returns: PBB sub-interface operational data.
:rtype: dict
:raises HoneycombError: If the removal of sub-interface is not
- successful.
+ successful.
"""
raise NotImplementedError
:returns: True if the interface exists in disabled interfaces.
:rtype: bool
:raises HoneycombError: If the interface is not present
- in retrieved list of disabled interfaces.
- """
+ in retrieved list of disabled interfaces.
+ """
data = InterfaceKeywords.get_disabled_interfaces_oper_data(node)
# decrement by one = conversion from HC if-index to VPP sw_if_index
interface -= 1
:param node: Honeycomb node.
:param super_interface: Name, link name or sw_if_index
- of the destination interface's super-interface.
+ of the destination interface's super-interface.
:param dst_interface_index: Index of sub-interface to mirror packets to.
:param src_interfaces: List of interfaces to mirror packets from.
:type node: dict
:param node: Honeycomb node.
:param interface: Name, link name or sw_if_index of an interface,
- name of a custom interface or name of a sub-interface.
+ name of a custom interface or name of a sub-interface.
:type node: Honeycomb node.
:type interface: str or int
:returns: Name of interface that can be used in Honeycomb requests.