l3-router fixes 41/69941/3
authormklyus <mklyus@cisco.com>
Mon, 13 Apr 2020 07:36:08 +0000 (10:36 +0300)
committermklyus <mklyus@cisco.com>
Mon, 27 Apr 2020 19:36:54 +0000 (22:36 +0300)
Change-Id: I025c97af8003e797b8cd3133e0b2d64694fe4b58
Signed-off-by: mklyus <mklyus@cisco.com>
nfvbench/cfg.default.yaml
nfvbench/chain_router.py
nfvbench/chaining.py

index d154318..1c4e20b 100755 (executable)
@@ -172,8 +172,8 @@ traffic_generator:
     # `tg_gateway_ip_addrs` base IP for traffic generator ports in the left and right networks to the VNFs
     #                       chain count consecutive IP addresses spaced by tg_gateway_ip_addrs_step will be used
     # `tg_gateway_ip_addrs__step`: step for generating traffic generator gateway sequences. default is 0.0.0.1
-    tg_gateway_ip_addrs: ['1.1.0.100', '2.2.0.100']
-    tg_gateway_ip_cidrs: ['1.1.0.0/24','2.2.0.0/24']
+    tg_gateway_ip_addrs: ['192.168.1.100', '192.168.2.100']
+    tg_gateway_ip_cidrs: ['192.168.1.0/24','192.168.2.0/24']
     tg_gateway_ip_addrs_step: 0.0.0.1
     # `gateway_ip_addrs`: base IPs of VNF router gateways (left and right), quantity used depends on chain count
     #                     must correspond to the public IP on the left and right networks
@@ -181,7 +181,7 @@ traffic_generator:
     #                     must be the same subnet but not same IP as tg_gateway_ip_addrs.
     #                     chain count consecutive IP addresses spaced by gateway_ip_addrs_step will be used
     # `gateway_ip_addrs_step`: step for generating router gateway sequences. default is 0.0.0.1
-    gateway_ip_addrs: ['1.1.0.2', '2.2.0.2']
+    gateway_ip_addrs: ['192.168.1.1', '192.168.2.1']
     gateway_ip_addrs_step: 0.0.0.1
 
     # UDP DEFINED VARIABLES
index ac89476..99114e0 100644 (file)
@@ -80,6 +80,11 @@ class ChainRouter(object):
                                              .format(router=self.name,
                                                      sub_id=subnet.network['subnets'][0]))
                 interfaces = self.manager.neutron_client.list_ports(device_id=router['id'])['ports']
+                # This string filters nfvbench networks in case when some other specific networks
+                # created and attached to the test nfvebnch router manually or automatically
+                # like in case of HA when neutron router virtually present on several network nodes
+                interfaces = [x for x in interfaces if x['fixed_ips'][0]['subnet_id'] in
+                              [s.network['subnets'][0] for s in self.subnets]]
                 for interface in interfaces:
                     if self.is_ip_in_network(
                             interface['fixed_ips'][0]['ip_address'],
@@ -125,6 +130,8 @@ class ChainRouter(object):
                 router_interface = {'subnet_id': subnet.network['subnets'][0]}
                 self.manager.neutron_client.add_interface_router(router_id, router_interface)
             interfaces = self.manager.neutron_client.list_ports(device_id=router_id)['ports']
+            interfaces = [x for x in interfaces if x['fixed_ips'][0]['subnet_id'] in
+                          [s.network['subnets'][0] for s in self.subnets]]
             for interface in interfaces:
                 itf = interface['fixed_ips'][0]['ip_address']
                 cidr0 = self.manager.config.traffic_generator.tg_gateway_ip_cidrs[0]
index b9ed48b..a52c7e9 100644 (file)
@@ -245,6 +245,7 @@ class ChainNetwork(object):
         self.reuse = False
         self.network = None
         self.vlan = None
+        self.router_name = None
         if manager.config.l3_router and hasattr(network_config, 'router_name'):
             self.router_name = network_config.router_name
         try:
@@ -924,7 +925,10 @@ class Chain(object):
         if port_index:
             # this will pick the last item in array
             port_index = -1
-        return self.networks[port_index].get_vlan()
+        # This string filters networks connected to TG, in case of
+        # l3-router feature we have 4 networks instead of 2
+        networks = [x for x in self.networks if not x.router_name]
+        return networks[port_index].get_vlan()
 
     def get_vxlan(self, port_index):
         """Get the VXLAN id on a given port.