Merge "Change tc_trex files to execute standalone tests"
[yardstick.git] / yardstick / benchmark / scenarios / lib / create_server.py
index 31ba18e..e2748ae 100644 (file)
@@ -6,14 +6,11 @@
 # which accompanies this distribution, and is available at
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
-
-from __future__ import print_function
-from __future__ import absolute_import
-
 import logging
 
 from yardstick.benchmark.scenarios import base
-import yardstick.common.openstack_utils as op_utils
+from yardstick.common import openstack_utils
+from yardstick.common import exceptions
 
 LOG = logging.getLogger(__name__)
 
@@ -26,15 +23,27 @@ class CreateServer(base.Scenario):
     def __init__(self, scenario_cfg, context_cfg):
         self.scenario_cfg = scenario_cfg
         self.context_cfg = context_cfg
-        self.options = self.scenario_cfg['options']
-
-        self.image_name = self.options.get("image_name", None)
-        self.flavor_name = self.options.get("flavor_name", None)
-        self.openstack = self.options.get("openstack_paras", None)
-
-        self.glance_client = op_utils.get_glance_client()
-        self.neutron_client = op_utils.get_neutron_client()
-        self.nova_client = op_utils.get_nova_client()
+        self.options = self.scenario_cfg["options"]
+
+        self.name = self.options["name"]
+        self.image = self.options["image"]
+        self.flavor = self.options["flavor"]
+        self.auto_ip = self.options.get("auto_ip", True)
+        self.ips = self.options.get("ips")
+        self.ip_pool = self.options.get("ip_pool")
+        self.root_volume = self.options.get("root_volume")
+        self.terminate_volume = self.options.get("terminate_volume", False)
+        self.wait = self.options.get("wait", True)
+        self.timeout = self.options.get("timeout", 180)
+        self.reuse_ips = self.options.get("reuse_ips", True)
+        self.network = self.options.get("network")
+        self.boot_from_volume = self.options.get("boot_from_volume", False)
+        self.volume_size = self.options.get("volume_size", "20")
+        self.boot_volume = self.options.get("boot_volume")
+        self.volumes = self.options.get("volumes")
+        self.nat_destination = self.options.get("nat_destination")
+
+        self.shade_client = openstack_utils.get_shade_client()
 
         self.setup_done = False
 
@@ -49,26 +58,23 @@ class CreateServer(base.Scenario):
         if not self.setup_done:
             self.setup()
 
-        if self.image_name is not None:
-            self.openstack['image'] = op_utils.get_image_id(self.glance_client,
-                                                            self.image_name)
-        if self.flavor_name is not None:
-            self.openstack['flavor'] = op_utils.get_flavor_id(self.nova_client,
-                                                              self.flavor_name)
-
-        vm = op_utils.create_instance_and_wait_for_active(self.openstack)
-
-        if vm:
-            result.update({"instance_create": 1})
-            LOG.info("Create server successful!")
-        else:
+        server = openstack_utils.create_instance_and_wait_for_active(
+            self.shade_client, self.name, self.image,
+            self.flavor, auto_ip=self.auto_ip, ips=self.ips,
+            ip_pool=self.ip_pool, root_volume=self.root_volume,
+            terminate_volume=self.terminate_volume, wait=self.wait,
+            timeout=self.timeout, reuse_ips=self.reuse_ips,
+            network=self.network, boot_from_volume=self.boot_from_volume,
+            volume_size=self.volume_size, boot_volume=self.boot_volume,
+            volumes=self.volumes, nat_destination=self.nat_destination)
+
+        if not server:
             result.update({"instance_create": 0})
             LOG.error("Create server failed!")
+            raise exceptions.ScenarioCreateServerError
 
-        try:
-            keys = self.scenario_cfg.get('output', '').split()
-        except KeyError:
-            pass
-        else:
-            values = [vm.id]
-            return self._push_to_outputs(keys, values)
+        result.update({"instance_create": 1})
+        LOG.info("Create instance successful!")
+        keys = self.scenario_cfg.get("output", '').split()
+        values = [server["id"]]
+        return self._push_to_outputs(keys, values)