Kubernetes context adoption when run in CI
[yardstick.git] / yardstick / benchmark / core / task.py
index dd35bd4..a49a2cb 100644 (file)
@@ -21,18 +21,19 @@ import ipaddress
 import time
 import logging
 import uuid
-import errno
 import collections
 
 from six.moves import filter
+from jinja2 import Environment
 
 from yardstick.benchmark.contexts.base import Context
 from yardstick.benchmark.runners import base as base_runner
+from yardstick.common.yaml_loader import yaml_load
 from yardstick.dispatcher.base import Base as DispatcherBase
 from yardstick.common.task_template import TaskTemplate
-from yardstick.common.utils import source_env
 from yardstick.common import utils
 from yardstick.common import constants
+from yardstick.common.html_template import report_template
 
 output_file_default = "/tmp/yardstick.out"
 config_file = '/etc/yardstick/yardstick.conf'
@@ -67,8 +68,6 @@ class Task(object):     # pragma: no cover
 
         self._set_log()
 
-        check_environment()
-
         try:
             output_config = utils.parse_ini_file(config_file)
         except Exception:
@@ -146,6 +145,7 @@ class Task(object):     # pragma: no cover
         result = self._get_format_result(testcases)
 
         self._do_output(output_config, result)
+        self._generate_reporting(result)
 
         total_end_time = time.time()
         LOG.info("total finished in %d secs",
@@ -158,10 +158,18 @@ class Task(object):     # pragma: no cover
         print("Done, exiting")
         return result
 
+    def _generate_reporting(self, result):
+        env = Environment()
+        with open(constants.REPORTING_FILE, 'w') as f:
+            f.write(env.from_string(report_template).render(result))
+
+        LOG.info('yardstick reporting generate in %s', constants.REPORTING_FILE)
+
     def _set_log(self):
         log_format = '%(asctime)s %(name)s %(filename)s:%(lineno)d %(levelname)s %(message)s'
         log_formatter = logging.Formatter(log_format)
 
+        utils.makedirs(constants.TASK_LOG_DIR)
         log_path = os.path.join(constants.TASK_LOG_DIR, '{}.log'.format(self.task_id))
         log_handler = logging.FileHandler(log_path)
         log_handler.setFormatter(log_formatter)
@@ -427,7 +435,7 @@ class TaskParser(object):       # pragma: no cover
 
         try:
             with open(self.path) as stream:
-                cfg = yaml.load(stream)
+                cfg = yaml_load(stream)
         except IOError as ioerror:
             sys.exit(ioerror)
 
@@ -491,7 +499,7 @@ class TaskParser(object):       # pragma: no cover
                     raise e
                 print("Input task is:\n%s\n" % rendered_task)
 
-                cfg = yaml.load(rendered_task)
+                cfg = yaml_load(rendered_task)
         except IOError as ioerror:
             sys.exit(ioerror)
 
@@ -647,7 +655,7 @@ def parse_task_args(src_name, args):
         return args
 
     try:
-        kw = args and yaml.safe_load(args)
+        kw = args and yaml_load(args)
         kw = {} if kw is None else kw
     except yaml.parser.ParserError as e:
         print_invalid_header(src_name, args)
@@ -663,17 +671,6 @@ def parse_task_args(src_name, args):
     return kw
 
 
-def check_environment():
-    auth_url = os.environ.get('OS_AUTH_URL', None)
-    if not auth_url:
-        try:
-            source_env(constants.OPENRC)
-        except IOError as e:
-            if e.errno != errno.EEXIST:
-                raise
-            LOG.debug('OPENRC file not found')
-
-
 def change_server_name(scenario, suffix):
     try:
         host = scenario['host']