Bottlenecks stack environment prepare
[bottlenecks.git] / utils / parser.py
index 7ddf02a..ce5096a 100644 (file)
@@ -7,50 +7,63 @@
 # which accompanies this distribution, and is available at
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
-from logger import Logger
 import os
 import yaml
 
 
 class Parser():
-    def __init__(self):
-        self.code_dir = os.path.dirname(os.path.abspath(__file__))
-        self.root_dir = os.path.dirname(self.code_dir)
-        self.test_dir = os.path.join(self.root_dir, 'testsuites')
+
+    bottlenecks_config = {}
+
+    @classmethod
+    def config_init(cls):
+        cls.code_dir = os.path.dirname(os.path.abspath(__file__))
+        cls.root_dir = os.path.dirname(cls.code_dir)
+        cls.test_dir = os.path.join(cls.root_dir, 'testsuites')
         config_dir = os.path.join(
-            self.root_dir,
+            cls.root_dir,
             'config',
             'config.yaml')
+
         with open(config_dir) as file:
-            log_info = yaml.load(file)
-            self.logdir = log_info['common_config']
-        self.LOG = Logger(__name__).getLogger()
-
-    def config_read(self, testcase, story_name):
-        self.LOG.info("begin to parser config file!")
-        testcase_parser = {}
-        self.story_dir = os.path.join(
-            self.test_dir,
+            config_info = yaml.load(file)
+            common_config = config_info['common_config']
+            cls.bottlenecks_config["releng_dir"] = common_config["releng_dir"]
+            cls.bottlenecks_config["fetch_os"] = common_config["fetch_os_file"]
+            cls.bottlenecks_config["log_dir"] = common_config['log_dir']
+            cls.bottlenecks_config["rc_dir"] = common_config['rc_dir']
+            cls.config_dir_check(cls.bottlenecks_config["log_dir"])
+
+    @classmethod
+    def config_read(cls, testcase, story_name):
+        story_dir = os.path.join(
+            cls.test_dir,
             testcase,
             'testsuite_story',
             story_name)
-        with open(self.story_dir) as file:
-            self.LOG.info('testsuite:' + testcase + 'story:' + story_name)
+        with open(story_dir) as file:
             story_parser = yaml.load(file)
         for case_name in story_parser['testcase']:
             testcase_dir = os.path.join(
-                self.test_dir,
+                cls.test_dir,
                 testcase,
                 'testcase_cfg',
                 case_name)
             with open(testcase_dir) as f:
-                self.LOG.info('story: %s, testcase: %s' % (story_name, case_name))
-                testcase_parser[case_name] = yaml.load(f)
+                cls.bottlenecks_config[case_name] = yaml.load(f)
+
+        return cls.bottlenecks_config
 
-        return testcase_parser
+    @classmethod
+    def config_dir_check(cls, dirname):
+        if dirname is None:
+            dirname = '/tmp/'
+        if not os.path.exists(dirname):
+            os.makedirs(dirname)
 
-    def config_parser(self, testcase_cfg, parameters):
+    @staticmethod
+    def config_parser(testcase_cfg, parameters):
         test_cfg = testcase_cfg['test_config']
         stack_cfg = testcase_cfg['stack_config']
         # TO-DO add cli parameters to stack_config.
-        return test_cfg, stack_cfg
\ No newline at end of file
+        return test_cfg, stack_cfg