define Config.config_path which stores the path to the directory where the config...
[sfa.git] / geni / util / config.py
index 36eacb1..9f9e018 100644 (file)
 # 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
+from os.path import join,dirname,basename,abspath
+from geni.util.debug import log
+import traceback
 
-# 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"
+geni =  join(dirname(dirname(dirname(abspath(__file__)))), "geni")
 
 class Config:
     """
@@ -30,32 +26,41 @@ class Config:
     fast but no type conversions.
     """
 
-    def __init__(self, file = "/usr/share/geniwrapper/util/geni_config"):
+    def __init__(self, filepath = "/etc/geni/geni_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 
+        path = dirname(abspath(__file__))
+        self.path = path
+        # parent directory of config.py source
+        self.basepath = dirname(self.path)
+        # path to actual config file
+        filename = basename(filepath)
+        alt_file = join(self.path, 'util', filename)
+        geni_file = join(geni, 'util', filename)
+        files = [filepath, alt_file, geni_file]
+
+        for config_file in files:
+            try:
+                execfile(config_file, self.__dict__)
+                loaded = True
+                self.config_file = config_file
+                self.config_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")
 
@@ -82,7 +87,7 @@ def get_default_dbinfo():
 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)
     }