Merge "Change tc_trex files to execute standalone tests"
[yardstick.git] / yardstick / benchmark / scenarios / lib / get_server.py
index fcf47c8..f65fa9e 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__)
 
@@ -21,63 +18,58 @@ LOG = logging.getLogger(__name__)
 class GetServer(base.Scenario):
     """Get a server instance
 
-  Parameters
-    server_id - ID of the server
-        type:    string
-        unit:    N/A
-        default: null
-    server_name - name of the server
-        type:    string
-        unit:    N/A
-        default: null
-
-    Either server_id or server_name is required.
-
-  Outputs
+    Parameters:
+    name_or_id - Name or ID of the server
+        type: string
+    filters - meta data to use for further filtering
+        type: dict
+    detailed: Whether or not to add detailed additional information.
+        type: bool
+    bare: Whether to skip adding any additional information to the server
+          record.
+        type: bool
+    all_projects: Whether to get server from all projects or just the current
+                  auth scoped project.
+        type: bool
+
+    Outputs:
     rc - response code of getting server instance
-        0 for success
-        1 for failure
+        1 for success
+        0 for failure
         type:    int
-        unit:    N/A
     server - instance of the server
         type:    dict
-        unit:    N/A
+
     """
 
-    __scenario_type__ = "GetServer"
+    __scenario_type__ = 'GetServer'
 
     def __init__(self, scenario_cfg, context_cfg):
         self.scenario_cfg = scenario_cfg
         self.context_cfg = context_cfg
-        self.options = self.scenario_cfg.get('options', {})
+        self.options = self.scenario_cfg['options']
 
-        self.server_id = self.options.get("server_id")
-        if self.server_id:
-            LOG.debug('Server id is %s', self.server_id)
+        self.server_name_or_id = self.options.get('name_or_id')
+        self.filters = self.options.get('filters')
+        self.detailed = self.options.get('detailed', False)
+        self.bare = self.options.get('bare', False)
 
-        default_name = self.scenario_cfg.get('host',
-                                             self.scenario_cfg.get('target'))
-        self.server_name = self.options.get('server_name', default_name)
-        if self.server_name:
-            LOG.debug('Server name is %s', self.server_name)
-
-        self.nova_client = op_utils.get_nova_client()
+        self.shade_client = openstack_utils.get_shade_client()
 
     def run(self, result):
         """execute the test"""
 
-        if self.server_id:
-            server = self.nova_client.servers.get(self.server_id)
-        else:
-            server = op_utils.get_server_by_name(self.server_name)
-
-        keys = self.scenario_cfg.get('output', '').split()
+        server = openstack_utils.get_server(
+            self.shade_client, name_or_id=self.server_name_or_id,
+            filters=self.filters, detailed=self.detailed, bare=self.bare)
 
-        if server:
-            LOG.info("Get server successful!")
-            values = [0, self._change_obj_to_dict(server)]
-        else:
-            LOG.info("Get server failed!")
-            values = [1]
+        if not server:
+            result.update({'get_server': 0})
+            LOG.error('Get Server failed!')
+            raise exceptions.ScenarioGetServerError
 
+        result.update({'get_server': 1})
+        LOG.info('Get Server successful!')
+        keys = self.scenario_cfg.get('output', '').split()
+        values = [server]
         return self._push_to_outputs(keys, values)