:param node: Honeycomb node.
:param interface: The name of interface.
:type interface: str
- :type param: str
+ :type node: dict
:return: Operational data about bridge domain settings in the
interface.
:rtype: dict
:type network: str or int
:return: Content of response.
:rtype: bytearray
+ :raises HoneycombError: If the provided netmask or prefix is not valid.
"""
path = ("interfaces", ("interface", "name", interface), "ietf-ip:ipv4")
:type network: str or int
:return: Content of response.
:rtype: bytearray
+ :raises HoneycombError: If the provided netmask or prefix is not valid.
"""
path = ("interfaces", ("interface", "name", interface), "ietf-ip:ipv4",
return InterfaceKeywords._set_interface_properties(
node, interface, path, None)
- @staticmethod
- def add_first_ipv4_neighbor(node, interface, ip_addr, link_layer_address):
- """Add the first IPv4 neighbour.
-
- If there are any other neighbours configured, they will be removed.
-
- :param node: Honeycomb node.
- :param interface: The name of interface.
- :param ip_addr: IPv4 address of neighbour to be set.
- :param link_layer_address: Link layer address.
- :type node: dict
- :type interface: str
- :type ip_addr: str
- :type link_layer_address: str
- :return: Content of response.
- :rtype: bytearray
- """
-
- path = ("interfaces", ("interface", "name", interface), "ietf-ip:ipv4")
- neighbor = {"neighbor": [{"ip": ip_addr,
- "link-layer-address": link_layer_address}, ]}
- return InterfaceKeywords._set_interface_properties(
- node, interface, path, neighbor)
-
@staticmethod
def add_ipv4_neighbor(node, interface, ip_addr, link_layer_address):
"""Add the IPv4 neighbour.
return InterfaceKeywords._set_interface_properties(
node, interface, path, None)
- @staticmethod
- def add_first_ipv6_neighbor(node, interface, ip_addr, link_layer_address):
- """Add the first IPv6 neighbour.
-
- If there are any other neighbours configured, they will be removed.
-
- :param node: Honeycomb node.
- :param interface: The name of interface.
- :param ip_addr: IPv6 address of neighbour to be set.
- :param link_layer_address: Link layer address.
- :type node: dict
- :type interface: str
- :type ip_addr: str
- :type link_layer_address: str
- :return: Content of response.
- :rtype: bytearray
- """
-
- path = ("interfaces", ("interface", "name", interface), "ietf-ip:ipv6")
- neighbor = {"neighbor": [{"ip": ip_addr,
- "link-layer-address": link_layer_address}, ]}
- return InterfaceKeywords._set_interface_properties(
- node, interface, path, neighbor)
-
@staticmethod
def add_ipv6_neighbor(node, interface, ip_addr, link_layer_address):
"""Add the IPv6 neighbour.
raise HoneycombError("The operational data does not contain "
"information about the tag-rewrite.")
+ @staticmethod
+ def add_ipv4_address_to_sub_interface(node, super_interface, identifier,
+ ip_addr, network):
+ """Add an ipv4 address to the specified sub-interface, with the provided
+ netmask or network prefix length. Any existing ipv4 addresses on the
+ sub-interface will be replaced.
+
+ :param node: Honeycomb node.
+ :param super_interface: Super interface.
+ :param identifier: The ID of sub-interface.
+ :param ip_addr: IPv4 address to be set.
+ :param network: Network mask or network prefix length.
+ :type node: dict
+ :type super_interface: str
+ :type identifier: int
+ :type ip_addr: str
+ :type network: str or int
+ :return: Content of response.
+ :rtype: bytearray
+ :raises HoneycombError: If the provided netmask or prefix is not valid.
+ """
+
+ path = ("interfaces",
+ ("interface", "name", super_interface),
+ "vpp-vlan:sub-interfaces",
+ ("sub-interface", "identifier", int(identifier)),
+ "ipv4")
+
+ if isinstance(network, basestring):
+ address = {"address": [{"ip": ip_addr, "netmask": network}, ]}
+
+ elif isinstance(network, int) and 0 < network < 33:
+ address = {"address": [{"ip": ip_addr, "prefix-length": network}, ]}
+
+ else:
+ raise HoneycombError("{0} is not a valid netmask or prefix length."
+ .format(network))
+
+ return InterfaceKeywords._set_interface_properties(
+ node, super_interface, path, address)
+
+ @staticmethod
+ def remove_all_ipv4_addresses_from_sub_interface(node, super_interface, # pylint: disable=invalid-name
+ identifier):
+ """Remove all ipv4 addresses from the specified sub-interface.
+
+ :param node: Honeycomb node.
+ :param super_interface: Super interface.
+ :param identifier: The ID of sub-interface.
+ :type node: dict
+ :type super_interface: str
+ :type identifier: int
+ :return: Content of response.
+ :rtype: bytearray
+ """
+
+ path = ("interfaces",
+ ("interface", "name", super_interface),
+ "vpp-vlan:sub-interfaces",
+ ("sub-interface", "identifier", int(identifier)),
+ "ipv4", "address")
+
+ return InterfaceKeywords._set_interface_properties(
+ node, super_interface, path, None)
+
@staticmethod
def compare_data_structures(data, ref):
"""Checks if data obtained from UUT is as expected.
vxlan_gpe_structure = [new_vxlan_gpe, ]
return InterfaceKeywords._set_interface_properties(
node, interface, path, vxlan_gpe_structure)
+
+ @staticmethod
+ def enable_acl_on_interface(node, interface, table_name):
+ """Enable ACL on the given interface.
+
+ :param node: Honeycomb node.
+ :param interface: The interface where the ACL will be enabled.
+ :param table_name: Name of the classify table.
+ :type node: dict
+ :type interface: str
+ :type table_name: str
+ :return: Content of response.
+ :rtype: bytearray
+ :raises HoneycombError: If the configuration of interface is not
+ successful.
+ """
+
+ interface = interface.replace("/", "%2F")
+
+ data = {
+ "v3po:acl": {
+ "l2-acl": {
+ "classify-table": table_name
+ },
+ "ip4-acl": {
+ "classify-table": table_name
+ }
+ }
+ }
+
+ path = "/interface/" + interface + "/v3po:acl"
+ status_code, resp = HcUtil.\
+ put_honeycomb_data(node, "config_vpp_interfaces", data, path,
+ data_representation=DataRepresentation.JSON)
+ if status_code != HTTPCodes.OK:
+ raise HoneycombError(
+ "The configuration of interface '{0}' was not successful. "
+ "Status code: {1}.".format(interface, status_code))
+ return resp
+
+ @staticmethod
+ def disable_acl_on_interface(node, interface):
+ """Disable ACL on the given interface.
+
+ :param node: Honeycomb node.
+ :param interface: The interface where the ACL will be disabled.
+ :type node: dict
+ :type interface: str
+ :return: Content of response.
+ :rtype: bytearray
+ :raises HoneycombError: If the configuration of interface is not
+ successful.
+ """
+
+ interface = interface.replace("/", "%2F")
+
+ path = "/interface/" + interface + "/v3po:acl"
+
+ status_code, resp = HcUtil.\
+ delete_honeycomb_data(node, "config_vpp_interfaces", path)
+
+ if status_code != HTTPCodes.OK:
+ raise HoneycombError(
+ "The configuration of interface '{0}' was not successful. "
+ "Status code: {1}.".format(interface, status_code))
+ return resp