--- /dev/null
+"""
+Created on 2015-7-8
+
+@author: y00228926
+"""
+import logging
+
+import stevedore
+
+LOG = logging.getLogger(__name__)
+
+
+class PluginManager(object):
+ def __init__(self):
+ self.instance = None
+ self.saved = {}
+
+ def build(self, cfg):
+ scheme = cfg["scheme"]
+ if scheme in self.saved:
+ # reuse old instance
+ self.instance = self.saved[scheme]
+ else:
+ mgr = stevedore.driver.DriverManager(namespace="env_build.plugins",
+ name=scheme,
+ invoke_on_load=False)
+ self.instance = mgr.driver()
+ self.saved[scheme] = self.instance
+
+ self.instance.clean()
+ return self.instance.build(cfg)
+
+ def clean(self):
+ if self.instance:
+ self.instance.clean()
+ self.instance = None
+
+
+if __name__ == "__main__":
+ import argparse
+ from vstf.controller.env_build.env_build import IntentParser
+
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--config', help='config file to parse')
+ args = parser.parse_args()
+ logging.basicConfig(level=logging.INFO)
+ parser = IntentParser(args.config)
+ cfg_intent = parser.parse_cfg_file()
+ for host_cfg in cfg_intent['env-build']:
+ tn = PluginManager()
+ tn.build(host_cfg)