[NFVBENCH-99] NFVbench should use NOVA scheduler by default 89/59589/2
authorYichen Wang <yicwang@cisco.com>
Fri, 6 Jul 2018 21:24:05 +0000 (14:24 -0700)
committerYichen Wang <yicwang@cisco.com>
Sun, 8 Jul 2018 17:28:02 +0000 (10:28 -0700)
Change-Id: I5fc2b0a26ba0b903d84655d3cc6ad7741314c14e
Signed-off-by: Yichen Wang <yicwang@cisco.com>
nfvbench/chain_clients.py

index faf7c2a..c9d89c0 100644 (file)
@@ -185,7 +185,7 @@ class BasicStageClient(object):
             return None
         return availability_zone + ':' + host
 
-    def _lookup_servers(self, name=None, nets=None, az=None, flavor_id=None):
+    def _lookup_servers(self, name=None, nets=None, flavor_id=None):
         error_msg = 'VM with the same name, but non-matching {} found. Aborting.'
         networks = set([net['name'] for net in nets]) if nets else None
         server_list = self.comp.get_server_list()
@@ -224,7 +224,10 @@ class BasicStageClient(object):
                                          files={nfvbenchvm_config_location: nfvbenchvm_config})
         if server:
             setattr(server, 'is_reuse', False)
-            LOG.info('Creating instance: %s on %s', name, az)
+            msg = 'Creating instance: %s' % name
+            if az:
+                msg += ' on %s' % az
+            LOG.info(msg)
         else:
             raise StageClientException('Unable to create instance: %s.' % (name))
         return server
@@ -380,8 +383,8 @@ class BasicStageClient(object):
             compute_nodes.append(az + ':' + hostname)
         return compute_nodes
 
-    def get_reusable_vm(self, name, nets, az):
-        servers = self._lookup_servers(name=name, nets=nets, az=az,
+    def get_reusable_vm(self, name, nets):
+        servers = self._lookup_servers(name=name, nets=nets,
                                        flavor_id=self.flavor_type['flavor'].id)
         if servers:
             server = servers[0]
@@ -477,15 +480,17 @@ class PVPStageClient(BasicStageClient):
         nets = self.config.internal_networks
         self.nets.extend([self._create_net(**n) for n in [nets.left, nets.right]])
 
-        az_list = self.comp.get_enabled_az_host_list(required_count=1)
-        if not az_list:
-            raise Exception('Not enough hosts found.')
+        if self.comp.config.compute_nodes:
+            az_list = self.comp.get_enabled_az_host_list(required_count=1)
+            if not az_list:
+                raise Exception('Not enough hosts found.')
+            az = az_list[0]
+        else:
+            az = None
 
-        az = az_list[0]
-        self.compute_nodes.add(az)
         for chain_index in xrange(self.config.service_chain_count):
             name = self.config.loop_vm_name + str(chain_index)
-            reusable_vm = self.get_reusable_vm(name, self.nets, az)
+            reusable_vm = self.get_reusable_vm(name, self.nets)
             if reusable_vm:
                 self.vms.append(reusable_vm)
             else:
@@ -498,7 +503,9 @@ class PVPStageClient(BasicStageClient):
                                                    ports[1]['mac_address'])
                 self.created_ports.extend(ports)
                 self.vms.append(self._create_server(name, ports, az, config_file))
+
         self._ensure_vms_active()
+        self.compute_nodes = set(self.get_loop_vm_compute_nodes())
         self.set_ports()
 
 
@@ -519,37 +526,36 @@ class PVVPStageClient(BasicStageClient):
         nets = self.config.internal_networks
         self.nets.extend([self._create_net(**n) for n in [nets.left, nets.right, nets.middle]])
 
-        required_count = 2 if self.config.inter_node else 1
-        az_list = self.comp.get_enabled_az_host_list(required_count=required_count)
-
-        if not az_list:
-            raise Exception('Not enough hosts found.')
-
-        az1 = az2 = az_list[0]
-        if self.config.inter_node:
-            if len(az_list) > 1:
-                az1 = az_list[0]
-                az2 = az_list[1]
-            else:
-                # fallback to intra-node
-                az1 = az2 = az_list[0]
-                self.config.inter_node = False
-                LOG.info('Using intra-node instead of inter-node.')
-
-        self.compute_nodes.add(az1)
-        self.compute_nodes.add(az2)
+        if self.comp.config.compute_nodes:
+            required_count = 2 if self.config.inter_node else 1
+            az_list = self.comp.get_enabled_az_host_list(required_count=required_count)
+            if not az_list:
+                raise Exception('Not enough hosts found.')
+
+            az1 = az2 = az_list[0]
+            if self.config.inter_node:
+                if len(az_list) > 1:
+                    az1 = az_list[0]
+                    az2 = az_list[1]
+                else:
+                    # fallback to intra-node
+                    az1 = az2 = az_list[0]
+                    self.config.inter_node = False
+                    LOG.info('Using intra-node instead of inter-node.')
+        else:
+            az1 = az2 = None
 
         # Create loop VMs
         for chain_index in xrange(self.config.service_chain_count):
             name0 = self.config.loop_vm_name + str(chain_index) + 'a'
             # Attach first VM to net0 and net2
             vm0_nets = self.nets[0::2]
-            reusable_vm0 = self.get_reusable_vm(name0, vm0_nets, az1)
+            reusable_vm0 = self.get_reusable_vm(name0, vm0_nets)
 
             name1 = self.config.loop_vm_name + str(chain_index) + 'b'
             # Attach second VM to net1 and net2
             vm1_nets = self.nets[1:]
-            reusable_vm1 = self.get_reusable_vm(name1, vm1_nets, az2)
+            reusable_vm1 = self.get_reusable_vm(name1, vm1_nets)
 
             if reusable_vm0 and reusable_vm1:
                 self.vms.extend([reusable_vm0, reusable_vm1])
@@ -593,4 +599,5 @@ class PVVPStageClient(BasicStageClient):
                                                     config_file1))
 
         self._ensure_vms_active()
+        self.compute_nodes = set(self.get_loop_vm_compute_nodes())
         self.set_ports()