Specify full filename path; don't rely on default behavior of sfi.py
[sfa-gui.git] / SfaData.py
index 88d2b13..c0bdf5b 100644 (file)
@@ -4,32 +4,36 @@ from subprocess import *
 from sfa.util.rspecHelper import RSpec
 
 class SfaData:
-    authority = "plc.princeton"
-    user = "plc.princeton.acb"
-    slice = "plc.princeton.sapan"
-
     def __init__(self):
         self.registry = None
         self.slicemgr = None
+        filename = os.path.expanduser("~/.sfi/sfi_config")
+        execfile(filename, SfaData.__dict__)
+        if not hasattr(SfaData, 'SFI_AUTH'): 
+            SfaData.SFI_AUTH = None
+        if not hasattr(SfaData, 'SFI_USER'): 
+            SfaData.SFI_USER = None
+        if not hasattr(SfaData, 'SFI_SLICE'): 
+            SfaData.SFI_SLICE = None
 
     def getAuthority(self):
-        return SfaData.authority
+        return SfaData.SFI_AUTH
 
     def getUser(self):
-        return SfaData.user
+        return SfaData.SFI_USER
 
     def setUser(self, user):
-        SfaData.user = user
+        SfaData.SFI_USER = user
 
         # Should probably get authority from user record instead...
-        a = SfaData.user.split('.')
-        SfaData.authority = '.'.join(a[:len(a)-1])
+        a = user.split('.')
+        SfaData.SFI_AUTH = '.'.join(a[:len(a)-1])
 
     def getSlice(self):
-        return SfaData.slice
+        return SfaData.SFI_SLICE
 
     def setSlice(self, slice):
-        SfaData.slice = slice
+        SfaData.SFI_SLICE = slice
 
     def getRecord(self, hrn):
         text = Popen(["sfi.py", "-u", self.getUser(), "-a", 
@@ -56,10 +60,13 @@ class SfaData:
         slice = self.getSlice()
         # Write RSpec to file for testing.
         filename = os.path.expanduser("~/.sfi/" + slice + ".rspec")
-        os.remove(filename)
+        try:
+            os.remove(filename)
+        except:
+            pass
         call(["sfi.py", "-u", self.getUser(), "-a", self.getAuthority(), 
               "-r", self.registry, "-s", self.slicemgr, "resources", 
-              "-o", slice, slice])
+              "-o", filename, slice])
         f = open(filename, "r")
         xml = f.read()
         f.close()
@@ -68,7 +75,6 @@ class SfaData:
     def applyRSpec(self, xml):
         slice = self.getSlice()
         filename = os.path.expanduser("~/.sfi/" + slice + ".rspec")
-        os.remove(filename)
         f = open(filename, "w")
         f.write(xml)
         f.close()