+ 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, ignore=()):