# Note that Geniwrapper does not access any of the PLC databases directly via
# a mysql connection; All PLC databases are accessed via PLCAPI.
-import os
-import sys
+### $Id$
+### $URL$
-# If we have been checked out into a directory at the same
-# level as myplc, where plc_config.py lives. If we are in a
-# MyPLC environment, plc_config.py has already been installed
-# in site-packages.
-myplc = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + \
- os.sep + "myplc"
+import os.path
+import traceback
+
+from geni.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:
"""
fast but no type conversions.
"""
- def __init__(self, file = "/usr/share/geniwrapper/util/geni_config"):
+ def __init__(self, filepath = "/etc/sfa/sfa_config"):
# Load plc_config
- loaded = False
- path = os.path.dirname(os.path.abspath(__file__))
- filename = file.split(os.sep)[-1]
- alt_file = path + os.sep + filename
- myplc_file = myplc + os.sep + filename
- files = [file, alt_file, myplc_file]
-
- for file in files:
- try:
- execfile(file, self.__dict__)
- loaded = True
- except:
- pass
-
- if not loaded:
- raise Exception, "Could not find config in " + ", ".join(files)
-
-
- def load(self, file):
- try:
- execfile(file, self.__dict__)
- except:
- raise Exception, "Could not find config in " + file
+ 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
+
+ if not loaded:
+ raise Exception, "Could not find config in " + ", ".join(files)
+
+ # set up some useful variables
+
+ def load(self, filepath):
+ try:
+ execfile(filepath, self.__dict__)
+ except:
+ raise Exception, "Could not find config in " + filepath
plcConfig = Config("/etc/planetlab/plc_config")
def get_pl_auth():
pl_auth = {'Username': plcConfig.PLC_API_MAINTENANCE_USER,
'AuthMethod': 'capability',
- 'AuthString': plcConfig.PLC_MAINTENANCE_PASSWORD,
+ 'AuthString': plcConfig.PLC_API_MAINTENANCE_PASSWORD,
"Url": 'https://%s:%s%s' %(plcConfig.PLC_API_HOST, plcConfig.PLC_API_PORT, plcConfig.PLC_API_PATH)
}