HC2VPP-253 - Update routing csit jobs 75/12075/14
authorMichal Cmarada <michal.cmarada@pantheon.tech>
Wed, 9 May 2018 12:00:53 +0000 (14:00 +0200)
committerMichal Cmarada <michal.cmarada@pantheon.tech>
Thu, 10 May 2018 11:04:16 +0000 (11:04 +0000)
this fixes test failures caused by HC2VPP routing
models bump (https://gerrit.fd.io/r/#/c/10954)

- updates tests for bgp routing
- updates tests for routing
- updates SLAAC test because of changes in rt-advertisements

Change-Id: Iacc37b42e6523f440d77241c18ca8e61d1d01f23
Signed-off-by: Michal Cmarada <michal.cmarada@pantheon.tech>
resources/libraries/python/honeycomb/Routing.py
resources/templates/honeycomb/config_routing_table.url
resources/templates/honeycomb/config_slaac.url
resources/templates/honeycomb/oper_routing_table.url
resources/test_data/honeycomb/bgp.py
resources/test_data/honeycomb/routing.py
tests/honeycomb/func/mgmt-cfg-bgp-apihc-func.robot

index 520f53e..8d8f7f4 100644 (file)
@@ -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):
index f3b846f..2e484d9 100644 (file)
@@ -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
index 5b363ff..d74c35e 100644 (file)
@@ -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
index 8096dcb..1206301 100644 (file)
@@ -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
index 84c9431..c7a968c 100644 (file)
@@ -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
 }
index c28b221..25fefe9 100644 (file)
@@ -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": {}
         }
     }
 
index b5fed1e..b213abc 100644 (file)
 | | ... | ${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}