diff options
4 files changed, 142 insertions, 344 deletions
diff --git a/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py b/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py index 035016c276..3271413d1c 100644 --- a/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py +++ b/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py @@ -85,7 +85,7 @@ class InterfaceKeywords(object): :type interface: str :type data: dict :type data_representation: DataRepresentation - :return: Content of response. + :returns: Content of response. :rtype: bytearray :raises HoneycombError: If the status code in response on PUT is not 200 = OK. @@ -106,7 +106,7 @@ class InterfaceKeywords(object): :param node: Honeycomb node. :type node: dict - :return: Configuration data about all interfaces from Honeycomb. + :returns: Configuration data about all interfaces from Honeycomb. :rtype: list :raises HoneycombError: If it is not possible to get configuration data. """ @@ -131,7 +131,7 @@ class InterfaceKeywords(object): :param interface: The name of interface. :type node: dict :type interface: str - :return: Configuration data about the given interface from Honeycomb. + :returns: Configuration data about the given interface from Honeycomb. :rtype: dict """ @@ -147,7 +147,7 @@ class InterfaceKeywords(object): :param node: Honeycomb node. :type node: dict - :return: Operational data about all interfaces from Honeycomb. + :returns: Operational data about all interfaces from Honeycomb. :rtype: list :raises HoneycombError: If it is not possible to get operational data. """ @@ -170,7 +170,7 @@ class InterfaceKeywords(object): :param node: Honeycomb node. :type node: dict - :return: Operational data about disabled interfaces. + :returns: Operational data about disabled interfaces. :rtype: list :raises HoneycombError: If it is not possible to get operational data. """ @@ -199,7 +199,7 @@ class InterfaceKeywords(object): :param interface: The name of interface. :type node: dict :type interface: str - :return: Operational data about the given interface from Honeycomb. + :returns: Operational data about the given interface from Honeycomb. :rtype: dict """ @@ -225,7 +225,7 @@ class InterfaceKeywords(object): :type interface: str :type path: tuple :type new_value: str, dict or list - :return: Content of response. + :returns: Content of response. :rtype: bytearray :raises HoneycombError: If it is not possible to get or set the data. """ @@ -257,7 +257,7 @@ class InterfaceKeywords(object): :type node: dict :type interface: str :type state: str - :return: Content of response. + :returns: Content of response. :rtype: bytearray :raises KeyError: If the argument "state" is nor "up" or "down". :raises HoneycombError: If the interface is not present on the node. @@ -298,7 +298,7 @@ class InterfaceKeywords(object): :param interface: The name of interface. :type node: dict :type interface: str - :return: Content of response + :returns: Content of response :rtype: bytearray """ @@ -312,7 +312,7 @@ class InterfaceKeywords(object): :param interface: The name of interface. :type node: dict :type interface: str - :return: Content of response. + :returns: Content of response. :rtype: bytearray """ @@ -333,7 +333,7 @@ class InterfaceKeywords(object): :type bd_name: str :type split_horizon_group: str :type bvi: str - :return: Content of response. + :returns: Content of response. :rtype: bytearray :raises HoneycombError: If the interface is not present on the node. """ @@ -391,7 +391,7 @@ class InterfaceKeywords(object): :param interface: The name of interface. :type node: dict :type interface: str - :return: Operational data about bridge domain settings in the + :returns: Operational data about bridge domain settings in the interface. :rtype: dict """ @@ -418,7 +418,7 @@ class InterfaceKeywords(object): :type interface: str :type param: str :type value: str - :return: Content of response. + :returns: Content of response. :rtype: bytearray :raises HoneycombError: If the parameter is not valid. """ @@ -443,7 +443,7 @@ class InterfaceKeywords(object): :type interface: str :type param: str :type value: str - :return: Content of response. + :returns: Content of response. :rtype: bytearray :raises HoneycombError: If the parameter is not valid. """ @@ -473,7 +473,7 @@ class InterfaceKeywords(object): :type interface: str :type ip_addr: str :type network: str or int - :return: Content of response. + :returns: Content of response. :rtype: bytearray :raises HoneycombError: If the provided netmask or prefix is not valid. """ @@ -504,7 +504,7 @@ class InterfaceKeywords(object): :type interface: str :type ip_addr: str :type network: str or int - :return: Content of response. + :returns: Content of response. :rtype: bytearray :raises HoneycombError: If the provided netmask or prefix is not valid. """ @@ -532,7 +532,7 @@ class InterfaceKeywords(object): :param interface: The name of interface. :type node: dict :type interface: str - :return: Content of response. + :returns: Content of response. :rtype: bytearray """ @@ -553,7 +553,7 @@ class InterfaceKeywords(object): :type interface: str :type ip_addr: str :type link_layer_address: str - :return: Content of response. + :returns: Content of response. :rtype: bytearray """ @@ -571,7 +571,7 @@ class InterfaceKeywords(object): :param interface: The name of interface. :type node: dict :type interface: str - :return: Content of response. + :returns: Content of response. :rtype: bytearray """ @@ -593,7 +593,7 @@ class InterfaceKeywords(object): :type interface: str :type param: str :type value: str - :return: Content of response. + :returns: Content of response. :rtype: bytearray :raises HoneycombError: If the parameter is not valid. """ @@ -624,7 +624,7 @@ class InterfaceKeywords(object): :type interface: str :type ip_addr: str :type prefix_len: str - :return: Content of response. + :returns: Content of response. :rtype: bytearray """ @@ -645,7 +645,7 @@ class InterfaceKeywords(object): :type interface: str :type ip_addr: str :type prefix_len: str - :return: Content of response. + :returns: Content of response. :rtype: bytearray """ @@ -663,7 +663,7 @@ class InterfaceKeywords(object): :param interface: The name of interface. :type node: dict :type interface: str - :return: Content of response. + :returns: Content of response. :rtype: bytearray """ @@ -684,7 +684,7 @@ class InterfaceKeywords(object): :type interface: str :type ip_addr: str :type link_layer_address: str - :return: Content of response. + :returns: Content of response. :rtype: bytearray """ @@ -702,7 +702,7 @@ class InterfaceKeywords(object): :param interface: The name of interface. :type node: dict :type interface: str - :return: Content of response. + :returns: Content of response. :rtype: bytearray """ @@ -724,7 +724,7 @@ class InterfaceKeywords(object): :type interface: str :type param: str :type value: str - :return: Content of response. + :returns: Content of response. :rtype: bytearray :raises HoneycombError: If the parameter is not valid. """ @@ -749,7 +749,7 @@ class InterfaceKeywords(object): :type interface: str :type param: str :type value: str - :return: Content of response. + :returns: Content of response. :rtype: bytearray :raises HoneycombError: If the parameter is not valid. """ @@ -773,7 +773,7 @@ class InterfaceKeywords(object): :type node: dict :type interface: str :type kwargs: dict - :return: Content of response. + :returns: Content of response. :rtype: bytearray :raises HoneycombError: If the parameter is not valid. """ @@ -802,7 +802,7 @@ class InterfaceKeywords(object): :param interface: The name of interface. :type node: dict :type interface: str - :return: Content of response. + :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. @@ -844,7 +844,7 @@ class InterfaceKeywords(object): :type node: dict :type interface: str :type kwargs: dict - :return: Content of response. + :returns: Content of response. :rtype: bytearray :raises HoneycombError: If the parameter is not valid. """ @@ -873,7 +873,7 @@ class InterfaceKeywords(object): :type interface: str :type param: str :type value: str - :return: Content of response. + :returns: Content of response. :rtype: bytearray :raises HoneycombError: If the parameter is not valid. """ @@ -896,7 +896,7 @@ class InterfaceKeywords(object): :type node: dict :type interface: str :type kwargs: dict - :return: Content of response. + :returns: Content of response. :rtype: bytearray :raises HoneycombError: If the parameter is not valid. """ @@ -935,7 +935,7 @@ class InterfaceKeywords(object): :type node: dict :type interface: str :type kwargs: dict - :return: Content of response. + :returns: Content of response. :rtype: bytearray :raises HoneycombError: If the parameter is not valid. """ @@ -969,7 +969,7 @@ class InterfaceKeywords(object): :type node: dict :type interface: str :type kwargs: dict - :return: Content of response. + :returns: Content of response. :rtype: bytearray :raises HoneycombError: If the parameter is not valid. """ @@ -997,7 +997,7 @@ class InterfaceKeywords(object): :type node: dict :type interface: str :type kwargs: dict - :return: Content of response. + :returns: Content of response. :rtype: bytearray :raises HoneycombError: If the parameter is not valid. """ @@ -1034,7 +1034,7 @@ class InterfaceKeywords(object): :type match: str :type tags: list :type kwargs: dict - :return: Content of response. + :returns: Content of response. :rtype: bytearray :raises HoneycombError: If the parameter is not valid. :raises KeyError: If the parameter 'match' is invalid. @@ -1090,7 +1090,7 @@ class InterfaceKeywords(object): :type node: dict :type super_interface: str :type identifier: int - :return: Sub-interface operational data. + :returns: Sub-interface operational data. :rtype: dict :raises HoneycombError: If there is no sub-interface with the given ID. """ @@ -1112,7 +1112,7 @@ class InterfaceKeywords(object): :param super_interface: Super interface. :type node: dict :type super_interface: str - :return: Content of response. + :returns: Content of response. :rtype: bytearray """ @@ -1135,7 +1135,7 @@ class InterfaceKeywords(object): :type super_interface: str :type identifier: int :type state: str - :return: Content of response. + :returns: Content of response. :rtype: bytearray """ @@ -1164,7 +1164,7 @@ class InterfaceKeywords(object): :type super_interface: str :type identifier: int :type config: dict - :return: Content of response. + :returns: Content of response. :rtype: bytearray """ @@ -1187,7 +1187,7 @@ class InterfaceKeywords(object): :type node: dict :type super_interface: str :type identifier: int - :return: Operational data about the bridge domain. + :returns: Operational data about the bridge domain. :rtype: dict :raises HoneycombError: If there is no sub-interface with the given ID. """ @@ -1212,7 +1212,7 @@ class InterfaceKeywords(object): :type super_interface: str :type identifier: int :type config: dict - :return: Content of response. + :returns: Content of response. :rtype: bytearray """ @@ -1236,7 +1236,7 @@ class InterfaceKeywords(object): :type node: dict :type super_interface: str :type identifier: int - :return: Operational data about tag rewrite. + :returns: Operational data about tag rewrite. :rtype: dict :raises HoneycombError: If there is no sub-interface with the given ID. """ @@ -1266,7 +1266,7 @@ class InterfaceKeywords(object): :type identifier: int :type ip_addr: str :type network: str or int - :return: Content of response. + :returns: Content of response. :rtype: bytearray :raises HoneycombError: If the provided netmask or prefix is not valid. """ @@ -1301,7 +1301,7 @@ class InterfaceKeywords(object): :type node: dict :type super_interface: str :type identifier: int - :return: Content of response. + :returns: Content of response. :rtype: bytearray """ @@ -1390,7 +1390,7 @@ class InterfaceKeywords(object): :type node: dict :type interface: str :type kwargs: dict - :return: Content of response. + :returns: Content of response. :rtype: bytearray :raises HoneycombError: If a parameter in kwargs is not valid. """ @@ -1423,7 +1423,7 @@ class InterfaceKeywords(object): :type node: dict :type interface: str :type table_name: str - :return: Content of response. + :returns: Content of response. :rtype: bytearray :raises HoneycombError: If the configuration of interface is not successful. @@ -1462,7 +1462,7 @@ class InterfaceKeywords(object): :param interface: The interface where the ACL will be disabled. :type node: dict :type interface: str - :return: Content of response. + :returns: Content of response. :rtype: bytearray :raises HoneycombError: If the configuration of interface is not successful. @@ -1482,28 +1482,25 @@ class InterfaceKeywords(object): return resp @staticmethod - def create_pbb_sub_interface(node, intf, sub_if_id, params): + def create_pbb_sub_interface(node, intf, params): """Creates a PBB sub-interface on the given interface and sets its parameters. :param node: Honeycomb node. :param intf: The interface where PBB sub-interface will be configured. - :param sub_if_id: Sub-interface ID. :param params: Configuration parameters of the sub-interface to be created. :type node: dict :type intf: str - :type sub_if_id: str or int :type params: dict - :return: Content of response. + :returns: Content of response. :rtype: bytearray :raises HoneycombError: If the configuration of sub-interface is not successful. """ interface = intf.replace("/", "%2F") - path = "/interface/{0}/sub-interfaces:sub-interfaces/sub-interface/" \ - "{1}".format(interface, sub_if_id) + path = "/interface/{0}/pbb-rewrite/".format(interface) status_code, resp = HcUtil. \ put_honeycomb_data(node, "config_vpp_interfaces", params, path, data_representation=DataRepresentation.JSON) @@ -1514,24 +1511,21 @@ class InterfaceKeywords(object): return resp @staticmethod - def delete_pbb_sub_interface(node, intf, sub_if_id): + def delete_pbb_sub_interface(node, intf): """Deletes the given PBB sub-interface. :param node: Honeycomb node. :param intf: The interface where PBB sub-interface will be deleted. - :param sub_if_id: ID of the PBB sub-interface to be deleted. :type node: dict :type intf: str - :type sub_if_id: str or int - :return: Content of response. + :returns: Content of response. :rtype: bytearray :raises HoneycombError: If the removal of sub-interface is not successful. """ interface = intf.replace("/", "%2F") - path = "/interface/{0}/sub-interfaces:sub-interfaces/sub-interface/" \ - "{1}".format(interface, sub_if_id) + path = "/interface/{0}/pbb-rewrite".format(interface) status_code, resp = HcUtil. \ delete_honeycomb_data(node, "config_vpp_interfaces", path) @@ -1551,14 +1545,13 @@ class InterfaceKeywords(object): :type node: dict :type intf: str :type sub_if_id: str or int - :return: PBB sub-interface operational data. + :returns: PBB sub-interface operational data. :rtype: dict :raises HoneycombError: If the removal of sub-interface is not successful. """ - interface = "{0}.{1}".format(intf, sub_if_id) - return InterfaceKeywords.get_interface_oper_data(node, interface) + raise NotImplementedError @staticmethod def check_disabled_interface(node, interface): @@ -1569,7 +1562,7 @@ class InterfaceKeywords(object): :param interface: Index number of an interface on the node. :type node: dict :type interface: int - :return: True if the interface exists in disabled interfaces. + :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. diff --git a/resources/libraries/robot/honeycomb/provider_backbone_bridge.robot b/resources/libraries/robot/honeycomb/provider_backbone_bridge.robot index e088e69a83..dc15742b5b 100644 --- a/resources/libraries/robot/honeycomb/provider_backbone_bridge.robot +++ b/resources/libraries/robot/honeycomb/provider_backbone_bridge.robot @@ -29,13 +29,13 @@ | | ... | | ... | *Example:* | | ... | \| Honeycomb creates PBB sub interface \| ${node} \| ${super_if}\ -| | ... | \| ${cfg_pbb_sub_if_1_ID} \| ${cfg_pbb_sub_if_1} \| +| | ... | \| ${cfg_pbb_sub_if_1} \| | | ... -| | [Arguments] | ${node} | ${super_if} | ${sub_if_id} | ${params} +| | [Arguments] | ${node} | ${super_if} | ${params} | | ... | | IfAPI.Set Interface Up | ${node} | ${super_if} | | IfAPI.Create PBB Sub Interface -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${params} +| | ... | ${node} | ${super_if} | ${params} | Honeycomb Removes PBB Sub Interface | | [Documentation] | Uses Honeycomb API to remove PBB sub-interface from its\ @@ -48,11 +48,11 @@ | | ... | | ... | *Example:* | | ... | \| Honeycomb Removes PBB sub interface\ -| | ... | \| ${node} \| ${super_if} \| ${cfg_pbb_sub_if_1_ID} \| +| | ... | \| ${node} \| ${super_if} \| | | ... -| | [Arguments] | ${node} | ${super_if} | ${sub_if_id} +| | [Arguments] | ${node} | ${super_if} | | ... -| | Delete PBB Sub Interface | ${node} | ${super_if} | ${sub_if_id} +| | Delete PBB Sub Interface | ${node} | ${super_if} | PBB Sub Interface Operational Data From Honeycomb Should Be | | [Documentation] | Retrieves PBB sub-interface operational data from @@ -107,12 +107,11 @@ | | ... | | ... | *Example:* | | ... | \| Honeycomb fails to create PBB sub interface\ -| | ... | \| ${node} \| ${super_if} \| ${cfg_pbb_sub_if_ID}\ -| | ... | \| ${cfg_pbb_sub_if_no_vlan_tag} \| +| | ... | \| ${node} \| ${super_if} \| ${cfg_pbb_sub_if_no_vlan_tag} \| | | ... -| | [Arguments] | ${node} | ${super_if} | ${sub_if_id} | ${params} +| | [Arguments] | ${node} | ${super_if} | ${params} | | ... | | IfAPI.Set Interface Up | ${node} | ${super_if} -| | Run keyword and expect error | *HoneycombError*not successful*code: *00. +| | Run keyword and expect error | *HoneycombError*not successful*. | | ... | IfAPI.Create PBB Sub Interface -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${params} +| | ... | ${node} | ${super_if} | ${params} diff --git a/resources/test_data/honeycomb/pbb/pbb.py b/resources/test_data/honeycomb/pbb/pbb.py index 93ef2e28cf..f71c70ebaf 100644 --- a/resources/test_data/honeycomb/pbb/pbb.py +++ b/resources/test_data/honeycomb/pbb/pbb.py @@ -17,135 +17,27 @@ # Add pbb sub interface # Configuration data -cfg_pbb_sub_if_1_ID = '1' cfg_pbb_sub_if_1 = { - "sub-interface": [ - { - "identifier": cfg_pbb_sub_if_1_ID, - "vlan-type": "dot1ah-types:802dot1ah", - "enabled": "true", - "admin-status": "up", - "oper-status": "up", - "pbb": { - "source-address": "aa:aa:aa:aa:aa:ab", - "destination-address": "bb:bb:bb:bb:bb:bc", - "b-vlan-tag-vlan-id": "2223", - "i-tag-isid": "12" - }, - } - ] -} - -# Expected operational data: -oper_pbb_sub_if_1 = { - 'admin-status': 'up', - 'ietf-ip:ipv4': {}, - 'oper-status': 'up', - 'sub-interfaces:sub-interfaces': {}, - 'type': 'iana-if-type:ethernetCsmacd', - 'v3po:ethernet': { - 'duplex': 'full', - 'mtu': 9216 + "pbb-rewrite": { + "source-address": "aa:aa:aa:aa:aa:ab", + "destination-address": "bb:bb:bb:bb:bb:bc", + "b-vlan-tag-vlan-id": "2223", + "outer-tag": "16", + "i-tag-isid": "12", + "interface-operation": "translate-2-1" } } # Modify pbb sub interface # Configuration data -cfg_pbb_sub_if_1_ID = '2' cfg_pbb_sub_if_1_mod = { - "sub-interface": [ - { - "identifier": cfg_pbb_sub_if_1_ID, - "vlan-type": "dot1ah-types:802dot1ah", - "enabled": "true", - "admin-status": "up", - "oper-status": "up", - "pbb": { - "source-address": "aa:aa:aa:aa:aa:de", - "destination-address": "bb:bb:bb:bb:bb:ed", - "b-vlan-tag-vlan-id": "2223", - "i-tag-isid": "12" - }, - } - ] -} - -# Expected operational data: -oper_pbb_sub_if_1_mod = { - 'admin-status': 'up', - 'ietf-ip:ipv4': {}, - 'oper-status': 'up', - 'sub-interfaces:sub-interfaces': {}, - 'type': 'iana-if-type:ethernetCsmacd', - 'v3po:ethernet': { - 'duplex': 'full', - 'mtu': 9216 - } -} - -# Configuration data -cfg_pbb_sub_if_2_ID = '3' -cfg_pbb_sub_if_2 = { - "sub-interface": [ - { - "identifier": cfg_pbb_sub_if_2_ID, - "vlan-type": "dot1ah-types:802dot1ah", - "enabled": "true", - "admin-status": "up", - "oper-status": "up", - "pbb": { - "source-address": "aa:aa:aa:aa:aa:cc", - "destination-address": "bb:bb:bb:bb:bb:dd", - "b-vlan-tag-vlan-id": "10", - "i-tag-isid": "20" - }, - } - ] -} - -# Expected operational data: -oper_pbb_sub_if_2 = { - 'admin-status': 'up', - 'ietf-ip:ipv4': {}, - 'oper-status': 'up', - 'sub-interfaces:sub-interfaces': {}, - 'type': 'iana-if-type:ethernetCsmacd', - 'v3po:ethernet': { - 'duplex': 'full', - 'mtu': 9216 - } -} - -# Configuration data -cfg_pbb_sub_if_3_ID = '4' -cfg_pbb_sub_if_3 = { - "sub-interface": [ - { - "identifier": cfg_pbb_sub_if_3_ID, - "vlan-type": "dot1ah-types:802dot1ah", - "enabled": "true", - "admin-status": "up", - "oper-status": "up", - "pbb": { - "source-address": "aa:aa:aa:aa:cc:aa", - "destination-address": "bb:bb:bb:bb:dd:bb", - "b-vlan-tag-vlan-id": "30", - "i-tag-isid": "40" - }, - } - ] -} - -# Expected operational data: -oper_pbb_sub_if_3 = { - 'admin-status': 'up', - 'ietf-ip:ipv4': {}, - 'oper-status': 'up', - 'sub-interfaces:sub-interfaces': {}, - 'type': 'iana-if-type:ethernetCsmacd', - 'v3po:ethernet': { - 'duplex': 'full', - 'mtu': 9216 + "pbb-rewrite": { + "source-address": "aa:aa:aa:aa:aa:ac", + "destination-address": "bb:bb:bb:bb:bb:bd", + "b-vlan-tag-vlan-id": "2224", + "outer-tag": "17", + "i-tag-isid": "13", + "interface-operation": "push-2" } } @@ -153,94 +45,59 @@ oper_pbb_sub_if_3 = { # Wrong source-address cfg_pbb_sub_if_ID = '5' cfg_pbb_sub_if_wrong_src_addr = { - "sub-interface": [ - { - "identifier": cfg_pbb_sub_if_ID, - "vlan-type": "dot1ah-types:802dot1ah", - "enabled": "true", - "admin-status": "up", - "oper-status": "up", - "pbb": { - "source-address": "ab:cd:ef:gh:ij", - "destination-address": "bb:bb:bb:bb:bb:bc", - "b-vlan-tag-vlan-id": "2223", - "i-tag-isid": "12" - }, - } - ] + "pbb-rewrite": { + "source-address": "aa:aa:aa:aa:aa:ag", + "destination-address": "bb:bb:bb:bb:bb:ce", + "b-vlan-tag-vlan-id": "2226", + "outer-tag": "19", + "i-tag-isid": "15", + "interface-operation": "pop-2" + } } # Wrong destination-address cfg_pbb_sub_if_wrong_dst_addr = { - "sub-interface": [ - { - "identifier": cfg_pbb_sub_if_ID, - "vlan-type": "dot1ah-types:802dot1ah", - "enabled": "true", - "admin-status": "up", - "oper-status": "up", - "pbb": { - "source-address": "aa:aa:aa:aa:aa:ab", - "destination-address": "ab:cd:ef:gh:ij", - "b-vlan-tag-vlan-id": "2223", - "i-tag-isid": "12" - }, - } - ] + "pbb-rewrite": { + "source-address": "aa:aa:aa:aa:aa:ae", + "destination-address": "bb:bb:bb:bb:bb:cg", + "b-vlan-tag-vlan-id": "2226", + "outer-tag": "19", + "i-tag-isid": "15", + "interface-operation": "pop-2" + } } # Wrong b-vlan-tag-vlan-id cfg_pbb_sub_if_wrong_vlan_tag = { - "sub-interface": [ - { - "identifier": cfg_pbb_sub_if_ID, - "vlan-type": "dot1ah-types:802dot1ah", - "enabled": "true", - "admin-status": "up", - "oper-status": "up", - "pbb": { - "source-address": "aa:aa:aa:aa:aa:ab", - "destination-address": "bb:bb:bb:bb:bb:bc", - "b-vlan-tag-vlan-id": "123456789", - "i-tag-isid": "12" - }, - } - ] + "pbb-rewrite": { + "source-address": "aa:aa:aa:aa:aa:ae", + "destination-address": "bb:bb:bb:bb:bb:ce", + "b-vlan-tag-vlan-id": "123456789", + "outer-tag": "19", + "i-tag-isid": "15", + "interface-operation": "pop-2" + } } # Wrong i-tag-isid cfg_pbb_sub_if_wrong_i_tag = { - "sub-interface": [ - { - "identifier": cfg_pbb_sub_if_ID, - "vlan-type": "dot1ah-types:802dot1ah", - "enabled": "true", - "admin-status": "up", - "oper-status": "up", - "pbb": { - "source-address": "aa:aa:aa:aa:aa:ab", - "destination-address": "bb:bb:bb:bb:bb:bc", - "b-vlan-tag-vlan-id": "2223", - "i-tag-isid": "167772152345" - }, - } - ] + "pbb-rewrite": { + "source-address": "aa:aa:aa:aa:aa:ae", + "destination-address": "bb:bb:bb:bb:bb:ce", + "b-vlan-tag-vlan-id": "2226", + "outer-tag": "19", + "i-tag-isid": "167772152345", + "interface-operation": "pop-2" + } } # b-vlan-tag-vlan-id is missing cfg_pbb_sub_if_no_vlan_tag = { - "sub-interface": [ - { - "identifier": cfg_pbb_sub_if_ID, - "vlan-type": "dot1ah-types:802dot1ah", - "enabled": "true", - "admin-status": "up", - "oper-status": "up", - "pbb": { - "source-address": "aa:aa:aa:aa:aa:ab", - "destination-address": "bb:bb:bb:bb:bb:bc", - "i-tag-isid": "12" - }, - } - ] + "pbb-rewrite": { + "source-address": "aa:aa:aa:aa:aa:ae", + "destination-address": "bb:bb:bb:bb:bb:ce", + "outer-tag": "19", + "i-tag-isid": "15", + "interface-operation": "pop-2" + } } diff --git a/tests/func/honeycomb/090_provider_backbone_bridge.robot b/tests/func/honeycomb/090_provider_backbone_bridge.robot index 65d5217eb8..16791e236b 100644 --- a/tests/func/honeycomb/090_provider_backbone_bridge.robot +++ b/tests/func/honeycomb/090_provider_backbone_bridge.robot @@ -15,6 +15,8 @@ | ${super_if}= | ${node['interfaces']['port1']['name']} *** Settings *** +| Resource | resources/libraries/robot/default.robot +| Resource | resources/libraries/robot/honeycomb/honeycomb.robot | Resource | resources/libraries/robot/honeycomb/provider_backbone_bridge.robot | Variables | resources/test_data/honeycomb/pbb/pbb.py | Documentation | *Honeycomb provider backbone bridge test suite.* @@ -23,111 +25,58 @@ | Force Tags | honeycomb_sanity *** Test Cases *** +# TODO: add verifications once operational data or VPP dump is available. | TC01: Honeycomb sets PBB sub-interface -| | [Documentation] | Honeycomb creates a new PBB sub-interface and checks its\ -| | ... | operational data. +| | [Documentation] | Honeycomb creates a new PBB sub-interface. | | ... -| | Given PBB sub interface operational data from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_1_ID} -| | When Honeycomb creates PBB sub interface | ${node} | ${super_if} -| | ... | ${cfg_pbb_sub_if_1_ID} | ${cfg_pbb_sub_if_1} -| | Then PBB sub interface operational data from Honeycomb should be -| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_1_ID} | ${oper_pbb_sub_if_1} +| | Honeycomb creates PBB sub interface | ${node} | ${super_if} +| | ... | ${cfg_pbb_sub_if_1} | TC02: Honeycomb modifies existing PBB sub-interface -| | [Documentation] | Honeycomb modifies an existing PBB sub-interface and\ -| | ... | checks its operational data. +| | [Documentation] | Honeycomb modifies an existing PBB sub-interface. | | ... -| | Given PBB sub interface operational data from Honeycomb should be -| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_1_ID} | ${oper_pbb_sub_if_1} -| | When Honeycomb creates PBB sub interface | ${node} | ${super_if} -| | ... | ${cfg_pbb_sub_if_1_ID} | ${cfg_pbb_sub_if_1_mod} -| | Then PBB sub interface operational data from Honeycomb should be -| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_1_ID} -| | ... | ${oper_pbb_sub_if_1_mod} +| | Honeycomb creates PBB sub interface | ${node} | ${super_if} +| | ... | ${cfg_pbb_sub_if_1_mod} | TC03: Honeycomb deletes existing PBB sub-interface -| | [Documentation] | Honeycomb deletes an existing PBB sub-interface and\ -| | ... | checks operational data. +| | [Documentation] | Honeycomb deletes an existing PBB sub-interface. | | ... -| | Given PBB sub interface operational data from Honeycomb should be -| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_1_ID} -| | ... | ${oper_pbb_sub_if_1_mod} -| | When Honeycomb Removes PBB sub interface -| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_1_ID} -| | Given PBB sub interface operational data from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_1_ID} - -| TC04: Honeycomb creates two PBB sub-interface -| | [Documentation] | Honeycomb creates two PBB sub-interfaces on the same\ -| | ... | super interface and checks their operational data. -| | ... -| | Given PBB sub interface operational data from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_2_ID} -| | And PBB sub interface operational data from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_3_ID} -| | When Honeycomb creates PBB sub interface | ${node} | ${super_if} -| | ... | ${cfg_pbb_sub_if_2_ID} | ${cfg_pbb_sub_if_2} -| | And Honeycomb creates PBB sub interface | ${node} | ${super_if} -| | ... | ${cfg_pbb_sub_if_3_ID} | ${cfg_pbb_sub_if_3} -| | Then PBB sub interface operational data from Honeycomb should be -| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_2_ID} | ${oper_pbb_sub_if_2} -| | And PBB sub interface operational data from Honeycomb should be -| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_3_ID} | ${oper_pbb_sub_if_3} +| | Honeycomb Removes PBB sub interface +| | ... | ${node} | ${super_if} | TC05: Honeycomb fails to set wrong destination-address for new PBB sub-interface | | [Documentation] | Honeycomb fails to create a new PBB sub-interface with\ | | ... | wrong value of parameter destination-address, type yang:mac-address. | | ... -| | Given PBB sub interface operational data from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_ID} -| | When Honeycomb fails to create PBB sub interface | ${node} | ${super_if} -| | ... | ${cfg_pbb_sub_if_ID} | ${cfg_pbb_sub_if_wrong_dst_addr} -| | Then PBB sub interface operational data from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_ID} +| | Honeycomb fails to create PBB sub interface | ${node} | ${super_if} +| | ... | ${cfg_pbb_sub_if_wrong_dst_addr} | TC06: Honeycomb fails to set wrong source-address for new PBB sub-interface | | [Documentation] | Honeycomb fails to create a new PBB sub-interface with\ | | ... | wrong value of parameter source-address, type yang:mac-address. | | ... -| | Given PBB sub interface operational data from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_ID} -| | When Honeycomb fails to create PBB sub interface | ${node} | ${super_if} -| | ... | ${cfg_pbb_sub_if_ID} | ${cfg_pbb_sub_if_wrong_src_addr} -| | Then PBB sub interface operational data from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_ID} +| | Honeycomb fails to create PBB sub interface | ${node} | ${super_if} +| | ... | ${cfg_pbb_sub_if_wrong_src_addr} | TC07: Honeycomb fails to set wrong b-vlan-tag-vlan-id for new PBB sub-interface | | [Documentation] | Honeycomb fails to create a new PBB sub-interface with\ | | ... | wrong value of parameter b-vlan-tag-vlan-id, type uint16, 12 bit\ | | ... | range, range "1..4095". | | ... -| | Given PBB sub interface operational data from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_ID} -| | When Honeycomb fails to create PBB sub interface | ${node} | ${super_if} -| | ... | ${cfg_pbb_sub_if_ID} | ${cfg_pbb_sub_if_wrong_vlan_tag} -| | Then PBB sub interface operational data from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_ID} +| | Honeycomb fails to create PBB sub interface | ${node} | ${super_if} +| | ... | ${cfg_pbb_sub_if_wrong_vlan_tag} | TC08: Honeycomb fails to set wrong i-tag-isid for new PBB sub-interface | | [Documentation] | Honeycomb fails to create a new PBB sub-interface with\ | | ... | wrong value of parameter i-tag-isid, type uint32, 24 bit range,\ | | ... | range "1..16777215". | | ... -| | Given PBB sub interface operational data from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_ID} -| | When Honeycomb fails to create PBB sub interface | ${node} | ${super_if} -| | ... | ${cfg_pbb_sub_if_ID} | ${cfg_pbb_sub_if_wrong_i_tag} -| | Then PBB sub interface operational data from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_ID} +| | Honeycomb fails to create PBB sub interface | ${node} | ${super_if} +| | ... | ${cfg_pbb_sub_if_wrong_i_tag} | TC07: Honeycomb fails to create new PBB sub-interface without vlan tag | | [Documentation] | Honeycomb fails to create a new PBB sub-interface without\ | | ... | parameter b-vlan-tag-vlan-id. | | ... -| | Given PBB sub interface operational data from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_ID} -| | When Honeycomb fails to create PBB sub interface | ${node} | ${super_if} -| | ... | ${cfg_pbb_sub_if_ID} | ${cfg_pbb_sub_if_no_vlan_tag} -| | Then PBB sub interface operational data from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_ID} +| | Honeycomb fails to create PBB sub interface | ${node} | ${super_if} +| | ... | ${cfg_pbb_sub_if_no_vlan_tag} |