From 71f835c9e990c3c1ebf214bd87fef6c34f8ef6aa Mon Sep 17 00:00:00 2001 From: =?utf8?q?Bar=C4=B1=C5=9F=20Metin?= Date: Mon, 6 Jul 2009 16:34:47 +0000 Subject: [PATCH] - don't depend on plc_config, make sfa-config self-contained. - report the index error on sfi list - add empty __init__.py to be able to import modules in util --- config/sfa-config-tty | 24 +++++--------- config/sfa_config | 17 +++++++++- sfa/__init__.py | 0 sfa/client/sfi.py | 6 +++- sfa/util/__init__.py | 0 sfa/util/config.py | 77 ++++++++++++++----------------------------- 6 files changed, 55 insertions(+), 69 deletions(-) create mode 100644 sfa/__init__.py create mode 100644 sfa/util/__init__.py diff --git a/config/sfa-config-tty b/config/sfa-config-tty index da238875..dc8355a5 100755 --- a/config/sfa-config-tty +++ b/config/sfa-config-tty @@ -38,11 +38,19 @@ all_variables = ["GENI_REGISTRY_ROOT_AUTH", "GENI_PLC_USER", "GENI_PLC_PASSWORD", "GENI_PLC_URL", + "GENI_PLC_DB_NAME", + "GENI_PLC_DB_HOST", + "GENI_PLC_DB_PORT", + "GENI_PLC_DB_USER", + "GENI_PLC_DB_PASSWORD", ] usual_variables = ["GENI_REGISTRY_ROOT_AUTH", "GENI_REGISTRY_LEVEL1_AUTH", "GENI_PLC_USER", - "GENI_PLC_PASSWORD", + "GENI_PLC_PASSWORD", + "GENI_PLC_API_HOST", + "GENI_PLC_DB_USER", + "GENI_PLC_DB_PASSWORD", ] @@ -129,14 +137,6 @@ def validate(changes): def get_defaults(): sfa_config = Config() - plc_vars = {'PLC_API_MAINTENANCE_PASSWORD': 'GENI_PLC_PASSWORD', - 'PLC_API_MAINTENANCE_USER': 'GENI_PLC_USER' - } - try: - from sfa.util.config import plcConfig - plc_config = plcConfig - except: - plc_config = None defaults = {} for var in dir(sfa_config): @@ -144,12 +144,6 @@ def get_defaults(): value = eval("sfa_config.%s" % var) defaults[var] = value - # some defaults come from plc_config - for var in dir(plc_config): - if var in plc_vars: - value = eval("plc_config.%s" % var) - defaults[plc_vars[var]] = value - return defaults def prompt_variable(variable, default_config): diff --git a/config/sfa_config b/config/sfa_config index c72e80ed..7c78b0fb 100644 --- a/config/sfa_config +++ b/config/sfa_config @@ -69,7 +69,7 @@ GENI_SM_PORT=12347 GENI_PLC_USER='root@localhost.localdomain' -# Passowrd +# Password # Password for user account GENI_PLC_PASSWORD='root' @@ -81,3 +81,18 @@ GENI_PLC_URL='https://localhost:443/PLCAPI/' # Path of PLC shell. This only applies if Geni interfaces and PLC interface are running on the same # machine GENI_PLC_SHELL_PATH='/usr/share/plc_api' + +# PLC DB Name +GENI_PLC_DB_NAME='planetlab5' + +# PLC DB Host +GENI_PLC_DB_HOST='www.planet-lab.org' + +# PLC DB port +GENI_PLC_DB_PORT=5432 + +# PLC DB User +GENI_PLC_DB_USER='pgsqluser' + +# PLC DB Password +GENI_PLC_DB_PASSWORD='' diff --git a/sfa/__init__.py b/sfa/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/sfa/client/sfi.py b/sfa/client/sfi.py index d3c320f9..ffd63b63 100755 --- a/sfa/client/sfi.py +++ b/sfa/client/sfi.py @@ -397,7 +397,11 @@ def main(): def list(opts, args): global registry user_cred = get_user_cred() - list = registry.list(user_cred, args[0]) + try: + list = registry.list(user_cred, args[0]) + except IndexError: + raise Exception, "Not enough parameters for the 'list' command" + # filter on person, slice, site, node, etc. # THis really should be in the filter_records funct def comment... list = filter_records(opts.type, list) diff --git a/sfa/util/__init__.py b/sfa/util/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/sfa/util/config.py b/sfa/util/config.py index cef2fdd8..b832d8fb 100644 --- a/sfa/util/config.py +++ b/sfa/util/config.py @@ -22,63 +22,35 @@ import traceback from sfa.util.debug import log -# xxx the path-search part could use a cleanup; -# why would anyone want to store the config in /usr/share/geniwrapper at all ? -# also, if users want to use this, it might help to store stuff in ~/.sfirc or something - -# this would denote "/usr/share/geniwrapper/geni" -# geni = join(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))), "geni") - class Config: """ Parse the bash/Python/PHP version of the configuration file. Very fast but no type conversions. """ - def __init__(self, filepath = "/etc/sfa/sfa_config"): - # Load plc_config - - loaded = False - # path to config.py source - this would be '/usr/share/geniwrapper/geni/util' - path = os.path.dirname(os.path.abspath(__file__)) - # parent directory of config.py source - self.basepath = os.path.dirname(path) - # path to actual config file - filename = os.path.basename(filepath) - alt_file = os.path.join(path, 'util', filename) - files = [filepath, alt_file] - - for config_file in files: - try: - execfile(config_file, self.__dict__) - loaded = True - self.config_file = config_file - self.config_path = os.path.dirname(config_file) - break - except: - pass + def __init__(self, config_file = "/etc/sfa/sfa_config"): + self.config_file = None + self.config_path = None + self.load(config_file) - if not loaded: - raise Exception, "Could not find config in " + ", ".join(files) - - # set up some useful variables - - def load(self, filepath): + def load(self, config_file): try: - execfile(filepath, self.__dict__) - except: - raise Exception, "Could not find config in " + filepath + execfile(self.config_file, self.__dict__) + self.config_file = config_file + self.config_path = os.path.dirname(config_file) + except IOError, e: + raise IOError, "Could not find the configuration file: %s" % config_file -plcConfig = Config("/etc/planetlab/plc_config") def get_default_dbinfo(): - dbinfo={ 'dbname' : plcConfig.PLC_DB_NAME, - 'address' : plcConfig.PLC_DB_HOST, - 'port' : plcConfig.PLC_DB_PORT, - 'user' : plcConfig.PLC_DB_USER, - 'password' : plcConfig.PLC_DB_PASSWORD - } - + config = Config() + dbinfo={ + 'dbname' : config.GENI_PLC_DB_NAME, + 'address' : config.GENI_PLC_DB_HOST, + 'port' : config.GENI_PLC_DB_PORT, + 'user' : config.GENI_PLC_DB_USER, + 'password' : config.GENI_PLC_DB_PASSWORD + } return dbinfo ## @@ -92,10 +64,11 @@ def get_default_dbinfo(): # field from the dictionary. def get_pl_auth(): - pl_auth = {'Username': plcConfig.PLC_API_MAINTENANCE_USER, - 'AuthMethod': 'capability', - 'AuthString': plcConfig.PLC_API_MAINTENANCE_PASSWORD, - "Url": 'https://%s:%s%s' %(plcConfig.PLC_API_HOST, plcConfig.PLC_API_PORT, plcConfig.PLC_API_PATH) - } - + config = Config() + pl_auth = { + 'Username': config.GENI_PLC_USER, + 'AuthMethod': 'capability', + 'AuthString': config.GENI_PLC_PASSWORD, + "Url": config.GENI_PLC_URL + } return pl_auth -- 2.43.0