define Config.config_path which stores the path to the directory where the config...
[sfa.git] / geni / util / config.py
index 6ce9e4e..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 =  os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))+ os.sep + "geni"
+geni =  join(dirname(dirname(dirname(abspath(__file__)))), "geni")
 
 class Config:
     """
@@ -31,20 +26,28 @@ class Config:
     fast but no type conversions.
     """
 
-    def __init__(self, file = "/etc/geni/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 + 'util' + os.sep + filename
-        geni_file = geni + os.sep + 'util' + os.sep + filename
-        files = [file, alt_file, myplc_file]
-
-        for file in files:
-            try: 
-                execfile(file, self.__dict__)
+        # 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
 
@@ -53,11 +56,11 @@ class Config:
 
         # set up some useful variables
 
-    def load(self, file):
+    def load(self, filepath):
         try:
-            execfile(file, self.__dict__)
+            execfile(filepath, self.__dict__)
         except:
-            raise Exception, "Could not find config in " + file
+            raise Exception, "Could not find config in " + filepath
 
 plcConfig = Config("/etc/planetlab/plc_config")