diff options
-rw-r--r-- | resources/libraries/python/honeycomb/Routing.py | 25 | ||||
-rw-r--r-- | resources/templates/honeycomb/config_routing_table.url | 2 | ||||
-rw-r--r-- | resources/templates/honeycomb/config_slaac.url | 2 | ||||
-rw-r--r-- | resources/templates/honeycomb/oper_routing_table.url | 2 | ||||
-rw-r--r-- | resources/test_data/honeycomb/bgp.py | 16 | ||||
-rw-r--r-- | resources/test_data/honeycomb/routing.py | 186 | ||||
-rw-r--r-- | tests/honeycomb/func/mgmt-cfg-bgp-apihc-func.robot | 2 |
7 files changed, 125 insertions, 110 deletions
diff --git a/resources/libraries/python/honeycomb/Routing.py b/resources/libraries/python/honeycomb/Routing.py index 520f53e676..8d8f7f4401 100644 --- a/resources/libraries/python/honeycomb/Routing.py +++ b/resources/libraries/python/honeycomb/Routing.py @@ -98,11 +98,10 @@ class RoutingKeywords(object): protocol = "vpp-protocol-attributes" full_data = { - "routing-protocol": [ + "control-plane-protocol": [ { "name": name, "description": "hc2vpp-csit test route", - "enabled": "true", "type": "static", protocol: { "primary-vrf": vrf @@ -116,7 +115,7 @@ class RoutingKeywords(object): ] } - path = "/routing-protocol/{0}".format(name) + path = "/control-plane-protocol/hc2vpp-ietf-routing:static/{0}".format(name) return RoutingKeywords._set_routing_table_properties( node, path, full_data) @@ -132,7 +131,7 @@ class RoutingKeywords(object): :rtype: bytearray """ - path = "/routing-protocol/{0}".format(name) + path = "/control-plane-protocol/hc2vpp-ietf-routing:static/{0}".format(name) return RoutingKeywords._set_routing_table_properties(node, path) @staticmethod @@ -150,7 +149,7 @@ class RoutingKeywords(object): :raises HoneycombError: If the operation fails. """ - path = "/routing-protocol/{0}".format(name) + path = "/control-plane-protocol/hc2vpp-ietf-routing:static/{0}".format(name) status_code, resp = HcUtil.\ get_honeycomb_data(node, "oper_routing_table", path) @@ -160,7 +159,7 @@ class RoutingKeywords(object): "routing tables. Status code: {0}.".format(status_code)) data = RoutingKeywords.clean_routing_oper_data( - resp['routing-protocol'][0]['static-routes'] + resp['control-plane-protocol'][0]['static-routes'] ['hc2vpp-ietf-{0}-unicast-routing:{0}'.format(ip_version)]['route']) return data @@ -219,21 +218,15 @@ class RoutingKeywords(object): interface = Topology.convert_interface_reference( node, interface, 'name') - interface_orig = interface interface = interface.replace('/', '%2F') - path = 'interface/' + interface + path = 'interface/' + interface + '/ipv6/ipv6-router-advertisements' if not slaac_data: status_code, _ = HcUtil.delete_honeycomb_data( node, 'config_slaac', path) else: data = { - 'interface': [ - { - 'name': interface_orig, - 'ipv6-router-advertisements': slaac_data - } - ] + 'ipv6-router-advertisements': slaac_data } status_code, _ = HcUtil.put_honeycomb_data( @@ -258,7 +251,7 @@ class RoutingKeywords(object): interface = Topology.convert_interface_reference( node, interface, 'name') interface = interface.replace('/', '%2F') - path = 'interface/' + interface + path = 'interface/' + interface + '/ipv6/ipv6-router-advertisements' status_code, resp = HcUtil.\ get_honeycomb_data(node, "config_slaac", path) @@ -268,7 +261,7 @@ class RoutingKeywords(object): "Not possible to get operational information about SLAAC. " "Status code: {0}.".format(status_code)) try: - dict_of_str = resp['interface'][0][ + dict_of_str = resp[ 'hc2vpp-ietf-ipv6-unicast-routing:ipv6-router-advertisements'] return {k: str(v) for k, v in dict_of_str.items()} except (KeyError, TypeError): diff --git a/resources/templates/honeycomb/config_routing_table.url b/resources/templates/honeycomb/config_routing_table.url index f3b846f8a3..2e484d9cfd 100644 --- a/resources/templates/honeycomb/config_routing_table.url +++ b/resources/templates/honeycomb/config_routing_table.url @@ -1 +1 @@ -/restconf/config{odl_url_part}/hc2vpp-ietf-routing:routing/routing-instance/vpp-routing-instance/routing-protocols
\ No newline at end of file +/restconf/config{odl_url_part}/hc2vpp-ietf-routing:routing/control-plane-protocols
\ No newline at end of file diff --git a/resources/templates/honeycomb/config_slaac.url b/resources/templates/honeycomb/config_slaac.url index 5b363ffa8b..d74c35ec3c 100644 --- a/resources/templates/honeycomb/config_slaac.url +++ b/resources/templates/honeycomb/config_slaac.url @@ -1 +1 @@ -/restconf/config{odl_url_part}/hc2vpp-ietf-routing:routing/routing-instance/vpp-routing-instance/interfaces/
\ No newline at end of file +/restconf/config{odl_url_part}/ietf-interfaces:interfaces/
\ No newline at end of file diff --git a/resources/templates/honeycomb/oper_routing_table.url b/resources/templates/honeycomb/oper_routing_table.url index 8096dcb69e..1206301186 100644 --- a/resources/templates/honeycomb/oper_routing_table.url +++ b/resources/templates/honeycomb/oper_routing_table.url @@ -1 +1 @@ -/restconf/operational{odl_url_part}/hc2vpp-ietf-routing:routing-state/routing-instance/vpp-routing-instance/routing-protocols
\ No newline at end of file +/restconf/operational{odl_url_part}/hc2vpp-ietf-routing:routing/control-plane-protocols
\ No newline at end of file diff --git a/resources/test_data/honeycomb/bgp.py b/resources/test_data/honeycomb/bgp.py index 84c9431e6b..c7a968cfd6 100644 --- a/resources/test_data/honeycomb/bgp.py +++ b/resources/test_data/honeycomb/bgp.py @@ -194,7 +194,7 @@ route_data_ipv6 = { table1_oper = { "destination-prefix": route_address_ipv4, "next-hop": "192.168.1.1", - "vpp-ipv4-route-state": {} + "vpp-ipv4-unicast-routing:vpp-ipv4-route": {} } # Peer configurations for traffic test @@ -306,18 +306,18 @@ rib_operational = { } route_operational = { - "vpp-ipv4-route-state": {}, - "next-hop": "192.168.1.3", + "next-hop": {"next-hop-address": "192.168.1.3"}, + "vpp-ipv4-unicast-routing:vpp-ipv4-route": {}, "destination-prefix": dut1_route_address } # IPv6 route for traffic test -dut1_route_ip6_address = "3ffe:62::1/64" +dut1_route_ip6_prefix = "3ffe:62::/64" dut1_route_ip6_id = 1 dut1_route_ip6 = { "bgp-inet:ipv6-route": [{ "path-id": dut1_route_ip6_id, - "prefix": dut1_route_ip6_address, + "prefix": dut1_route_ip6_prefix, "attributes": { "as-path": {}, "origin": { @@ -347,7 +347,7 @@ rib_ip6_operational = { } route_ip6_operational = { - "vpp-ipv6-route-state": {}, - "next-hop": "3ffe:63::1", - "destination-prefix": dut1_route_ip6_address + "next-hop": {"next-hop-address": "3ffe:63::1"}, + "vpp-ipv6-unicast-routing:vpp-ipv6-route": {}, + "destination-prefix": dut1_route_ip6_prefix } diff --git a/resources/test_data/honeycomb/routing.py b/resources/test_data/honeycomb/routing.py index c28b2212a4..25fefe9426 100644 --- a/resources/test_data/honeycomb/routing.py +++ b/resources/test_data/honeycomb/routing.py @@ -63,80 +63,86 @@ def get_variables(node, ip_version, out_interface): # route configuration used in tests tables_cfg = { "table1": { - "id": 1, "description": "single hop ipv4", "destination-prefix": "{0}/{1}".format(ipv4_base["dst_net"], ipv4_base["prefix_len"]), - "next-hop": ipv4_base["next_hop"], - "outgoing-interface": out_interface, - "vpp-ipv4-route": {} + "next-hop": { + "next-hop-address" : ipv4_base["next_hop"], + "outgoing-interface": out_interface + }, + "vpp-ipv4-unicast-routing:vpp-ipv4-route": {} }, "table2": { - "id": 1, "description": "multi hop ipv4", "destination-prefix": "{0}/{1}".format(ipv4_base["dst_net"], ipv4_base["prefix_len"]), - "next-hop-list": { - "next-hop": [ - { - "id": 1, - "address": ipv4_base["next_hop1"], - "outgoing-interface": out_interface, - "weight": "1" - }, - { - "id": 2, - "address": ipv4_base["next_hop2"], - "outgoing-interface": out_interface, - "weight": "1" - } - ] + "next-hop":{ + "next-hop-list": { + "next-hop": [ + { + "index": "1", + "next-hop-address": ipv4_base["next_hop1"], + "outgoing-interface": out_interface, + "weight": "1" + }, + { + "index": "2", + "next-hop-address": ipv4_base["next_hop2"], + "outgoing-interface": out_interface, + "weight": "1" + } + ] + } } }, "table3": { - "id": 1, "description": "blackhole ipv4", "destination-prefix": "{0}/{1}".format(ipv4_base["dst_net"], ipv4_base["prefix_len"]), - "special-next-hop": "receive" + "next-hop": { + "special-next-hop-enum": "blackhole" + } }, "table4": { - "id": 1, "description": "single hop ipv6", "destination-prefix": "{0}/{1}".format(ipv6_base["dst_net"], ipv6_base["prefix_len"]), - "next-hop": ipv6_base["next_hop"], - "outgoing-interface": out_interface, - "vpp-ipv6-route": {} + "next-hop": { + "next-hop-address": ipv6_base["next_hop"], + "outgoing-interface": out_interface + }, + "vpp-ipv6-unicast-routing:vpp-ipv6-route": {} }, "table5": { - "id": 1, "description": "multi hop ipv6", "destination-prefix": "{0}/{1}".format(ipv6_base["dst_net"], ipv6_base["prefix_len"]), - "next-hop-list": { - "next-hop": [ - { - "id": 1, - "address": ipv6_base["next_hop1"], - "outgoing-interface": out_interface, - "weight": "1" - }, - { - "id": 2, - "address": ipv6_base["next_hop2"], - "outgoing-interface": out_interface, - "weight": "1" - } - ] + "next-hop":{ + "next-hop-list": { + "next-hop": [ + { + "index": "1", + "next-hop-address": ipv6_base["next_hop1"], + "outgoing-interface": out_interface, + "weight": "1" + }, + { + "index": "2", + "next-hop-address": ipv6_base["next_hop2"], + "outgoing-interface": out_interface, + "weight": "1" + } + ] + } } }, "table6": { - "id": 1, "description": "blackhole ipv6", "destination-prefix": "{0}/{1}".format(ipv6_base["dst_net"], ipv6_base["prefix_len"]), - "special-next-hop": "blackhole" + "next-hop":{ + "special-next-hop-enum": "blackhole" + } } } @@ -145,69 +151,85 @@ def get_variables(node, ip_version, out_interface): "table1_oper": { "destination-prefix": "{0}/{1}".format(ipv4_base["dst_net"], ipv4_base["prefix_len"]), - "next-hop": ipv4_base["next_hop"], - "outgoing-interface": out_interface, - "vpp-ipv4-route-state": {} + "next-hop":{ + "next-hop-address": ipv4_base["next_hop"], + "outgoing-interface": out_interface + }, + "vpp-ipv4-unicast-routing:vpp-ipv4-route": {} }, "table2_oper": { "destination-prefix": "{0}/{1}".format(ipv4_base["dst_net"], ipv4_base["prefix_len"]), - "next-hop-list": { - "next-hop": [ - { - "address": ipv4_base["next_hop1"], - "outgoing-interface": out_interface, - "weight": 1 - }, - { - "address": ipv4_base["next_hop2"], - "outgoing-interface": out_interface, - "weight": 1 - } - ] + "next-hop":{ + "next-hop-list": { + "next-hop": [ + { + "index": "2", + "next-hop-address": ipv4_base["next_hop2"], + "outgoing-interface": out_interface, + "vpp-ipv4-unicast-routing:weight": 1 + }, + { + "index": "1", + "next-hop-address": ipv4_base["next_hop1"], + "outgoing-interface": out_interface, + "vpp-ipv4-unicast-routing:weight": 1 + } + ] + } }, - 'vpp-ipv4-route-state': {} + "vpp-ipv4-unicast-routing:vpp-ipv4-route": {} }, "table3_oper": { "destination-prefix": "{0}/{1}".format(ipv4_base["dst_net"], ipv4_base["prefix_len"]), - "special-next-hop": "receive", - "vpp-ipv4-route-state": {} + "next-hop":{ + "special-next-hop-enum": "blackhole" + }, + "vpp-ipv4-unicast-routing:vpp-ipv4-route": {} }, "table4_oper": { "destination-prefix": "{0}/{1}".format(ipv6_base["dst_net"], ipv6_base["prefix_len"]), - "next-hop": ipv6_base["next_hop"], - "outgoing-interface": out_interface, - "vpp-ipv6-route-state": {} + "next-hop":{ + "next-hop-address": ipv6_base["next_hop"], + "outgoing-interface": out_interface + }, + "vpp-ipv6-unicast-routing:vpp-ipv6-route": {} }, "table5_oper": { "destination-prefix": "{0}/{1}".format(ipv6_base["dst_net"], ipv6_base["prefix_len"]), - "next-hop-list": { - "next-hop": [ - { - "address": ipv6_base["next_hop1"], - "outgoing-interface": out_interface, - "weight": 1 - }, - { - "address": ipv6_base["next_hop2"], - "outgoing-interface": out_interface, - "weight": 1 - } - ] + "next-hop":{ + "next-hop-list": { + "next-hop": [ + { + "index": "2", + "next-hop-address": ipv6_base["next_hop2"], + "outgoing-interface": out_interface, + "vpp-ipv6-unicast-routing:weight": 1 + }, + { + "index": "1", + "next-hop-address": ipv6_base["next_hop1"], + "outgoing-interface": out_interface, + "vpp-ipv6-unicast-routing:weight": 1 + } + ] + } }, - "vpp-ipv6-route-state": {} + "vpp-ipv6-unicast-routing:vpp-ipv6-route": {} }, "table6_oper": { "destination-prefix": "{0}/{1}".format(ipv6_base["dst_net"], ipv6_base["prefix_len"]), - "special-next-hop": "blackhole", - 'vpp-ipv6-route-state': {} + "next-hop":{ + "special-next-hop-enum": "blackhole" + }, + "vpp-ipv6-unicast-routing:vpp-ipv6-route": {} } } diff --git a/tests/honeycomb/func/mgmt-cfg-bgp-apihc-func.robot b/tests/honeycomb/func/mgmt-cfg-bgp-apihc-func.robot index b5fed1e583..b213abc13a 100644 --- a/tests/honeycomb/func/mgmt-cfg-bgp-apihc-func.robot +++ b/tests/honeycomb/func/mgmt-cfg-bgp-apihc-func.robot @@ -268,7 +268,7 @@ | | ... | ${dut2_node} | ${address_application} | ${peer_application} | | And Honeycomb configures BGP route | | ... | ${dut2_node} | ${address_application} | ${dut1_route_ip6} -| | ... | ${dut1_route_ip6_address} | ${dut1_route_ip6_id} | ipv6 +| | ... | ${dut1_route_ip6_prefix} | ${dut1_route_ip6_id} | ipv6 | | And Sleep | 5s | Wait for route advertisement. Retry timer is 5 seconds. | | Then Routing data from Honeycomb should contain | | ... | ${dut1_node} | learned-protocol-0 | ipv6 | ${route_ip6_operational} |