diff options
Diffstat (limited to 'testsuites/vstf/vstf_scripts/vstf/agent/env/vswitch_plugins/manager.py')
-rw-r--r-- | testsuites/vstf/vstf_scripts/vstf/agent/env/vswitch_plugins/manager.py | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/testsuites/vstf/vstf_scripts/vstf/agent/env/vswitch_plugins/manager.py b/testsuites/vstf/vstf_scripts/vstf/agent/env/vswitch_plugins/manager.py new file mode 100644 index 00000000..785a1db8 --- /dev/null +++ b/testsuites/vstf/vstf_scripts/vstf/agent/env/vswitch_plugins/manager.py @@ -0,0 +1,35 @@ +############################################################################## +# Copyright (c) 2015 Huawei Technologies Co.,Ltd and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +import stevedore + + +class VswitchPluginManager(object): + def __init__(self): + self.plugin = None + self.mgr = stevedore.extension.ExtensionManager(namespace="vswitch.plugins", invoke_on_load=True) + + def clean(self): + if self.plugin: + self.plugin.clean() + self.plugin = None + for plugin in self.mgr.names(): + self.mgr[plugin].obj.clean() + return True + + def get_vs_plugin(self, plugin): + if plugin in self.mgr.names(): + ext = self.mgr[plugin] + self.plugin = ext.obj + return self.plugin + else: + raise Exception("unsupported vswitch plugin: %s" % plugin) + + def get_supported_plugins(self): + return self.mgr.names() |