diff --git a/quantum/common/utils.py b/quantum/common/utils.py index f35c1a12b3..435ec7b878 100644 --- a/quantum/common/utils.py +++ b/quantum/common/utils.py @@ -27,9 +27,10 @@ import random import subprocess import socket import sys +import ConfigParser -from quantum.common import exception -from quantum.common.exception import ProcessExecutionError +from common import exceptions +from exceptions import ProcessExecutionError TIME_FORMAT = "%Y-%m-%dT%H:%M:%SZ" @@ -184,6 +185,11 @@ def isotime(at=None): def parse_isotime(timestr): return datetime.datetime.strptime(timestr, TIME_FORMAT) +def getPluginFromConfig(file="config.ini"): + Config = ConfigParser.ConfigParser() + Config.read(file) + return Config.get("PLUGIN", "provider") + class LazyPluggable(object): """A pluggable backend loaded lazily based on some value.""" diff --git a/quantum/manager.py b/quantum/manager.py index cdf7505279..a36e9b28f4 100644 --- a/quantum/manager.py +++ b/quantum/manager.py @@ -24,20 +24,16 @@ plugin that concretely implement quantum_plugin_base class The caller should make sure that QuantumManager is a singleton. """ -import utils +from common import utils from quantum_plugin_base import QuantumPluginBase -CONFIG_FILE = "quantum_plugin.conf" +CONFIG_FILE = "plugins.ini" class QuantumManager(object): def __init__(self,config=CONFIG_FILE): self.configuration_file = CONFIG_FILE - #TODO(somik): plugin location should be grabbed from a - # configuration file as opposed to hard-coding the location - # - #plugin_location = get_plugin_location(configuration_file) - plugin_location = "plugins.SamplePlugin.DummyDataPlugin" + plugin_location = utils.getPluginFromConfig(CONFIG_FILE) plugin_klass = utils.import_class(plugin_location) if not issubclass(plugin_klass, QuantumPluginBase): raise Exception("Configured Quantum plug-in didn't pass compatibility test") diff --git a/quantum/plugins.ini b/quantum/plugins.ini new file mode 100644 index 0000000000..61c7694cdc --- /dev/null +++ b/quantum/plugins.ini @@ -0,0 +1,3 @@ +[PLUGIN] +# Quantum plugin provider module +provider = plugins.SamplePlugin.DummyDataPlugin