Merge "Change PTL informatin in INFO"
[bottlenecks.git] / testsuites / vstf / vstf_scripts / vstf / agent / env / builder.py
1 ##############################################################################
2 # Copyright (c) 2015 Huawei Technologies Co.,Ltd and others.
3 #
4 # All rights reserved. This program and the accompanying materials
5 # are made available under the terms of the Apache License, Version 2.0
6 # which accompanies this distribution, and is available at
7 # http://www.apache.org/licenses/LICENSE-2.0
8 ##############################################################################
9
10 import logging
11
12 import stevedore
13
14 LOG = logging.getLogger(__name__)
15
16
17 class PluginManager(object):
18
19     def __init__(self):
20         self.instance = None
21         self.saved = {}
22
23     def build(self, cfg):
24         scheme = cfg["scheme"]
25         if scheme in self.saved:
26             # reuse old instance
27             self.instance = self.saved[scheme]
28         else:
29             mgr = stevedore.driver.DriverManager(namespace="env_build.plugins",
30                                                  name=scheme,
31                                                  invoke_on_load=False)
32             self.instance = mgr.driver()
33             self.saved[scheme] = self.instance
34
35         self.instance.clean()
36         return self.instance.build(cfg)
37
38     def clean(self):
39         if self.instance:
40             self.instance.clean()
41         self.instance = None
42
43
44 if __name__ == "__main__":
45     import argparse
46     from vstf.controller.env_build.env_build import IntentParser
47
48     parser = argparse.ArgumentParser()
49     parser.add_argument('--config', help='config file to parse')
50     args = parser.parse_args()
51     logging.basicConfig(level=logging.INFO)
52     parser = IntentParser(args.config)
53     cfg_intent = parser.parse_cfg_file()
54     for host_cfg in cfg_intent['env-build']:
55         tn = PluginManager()
56         tn.build(host_cfg)