049b0d3015a651445126205b19a7fe04114d4975
[sfa-gui.git] / SfaData.py
1 import os
2 from subprocess import call
3 from sfa.util.rspecHelper import RSpec
4
5 class SfaData:
6     authority = "plc.princeton"
7     user = "plc.princeton.acb"
8     slice = "plc.princeton.iias"
9
10     def __init__(self):
11         self.registry = None
12         self.slicemgr = None
13
14     def getAuthority(self):
15         return SfaData.authority
16
17     def getUser(self):
18         return SfaData.user
19
20     def setUser(self, user):
21         SfaData.user = user
22
23         # Should probably get authority from user record instead...
24         a = SfaData.user.split('.')
25         SfaData.authority = '.'.join(a[:len(a)-1])
26
27     def getSlice(self):
28         return SfaData.slice
29
30     def setSlice(self, slice):
31         SfaData.slice = slice
32
33     def getRecord(self):
34         pass
35
36     def getRSpec(self):
37         slice = self.getSlice()
38         call(["sfi.py", "-u", self.getUser(), "-a", self.getAuthority(), 
39               "-r", self.registry, "-s", self.slicemgr, "resources", 
40               "-o", slice, slice])
41         filename = os.path.expanduser("~/.sfi/" + slice + ".rspec")
42         f = open(filename, "r")
43         xml = f.read()
44         f.close()
45         return xml
46
47     def applyRSpec(self, xml):
48         slice = self.getSlice()
49         filename = os.path.expanduser("~/.sfi/" + slice + ".rspec")
50         f = open(filename, "w")
51         f.write(xml)
52         f.close()
53         call(["sfi.py", "-u", self.getUser(), "-a", self.getAuthority(), 
54               "-r", self.registry, "-s", self.slicemgr, "create", 
55               slice, filename])
56
57 class ViniData(SfaData):
58     def __init__(self):
59         SfaData.__init__(self)
60         self.registry = "http://www.planet-lab.org:12345"
61         self.slicemgr = "http://www.vini-veritas.net:12346"
62         self.rspec = None
63
64     def refreshRSpec(self):
65         xml = SfaData.getRSpec(self)
66         self.rspec = RSpec(xml)
67
68     def getRSpec(self):
69         if self.rspec is None:
70             self.refreshRSpec()
71         return self.rspec
72     
73     def applyRSpec(self):
74         xml = self.rspec.toxml()
75         SfaData.applyRSpec(self, xml)
76
77 class PlanetLabData(SfaData):
78     def __init__(self):
79         SfaData.__init__(self)
80         self.registry = "http://www.planet-lab.org:12345"
81         self.slicemgr = "http://www.planet-lab.org:12346"
82         self.rspec = None
83
84     def refreshRSpec(self):
85         xml = SfaData.getRSpec(self)
86         self.rspec = RSpec(xml)
87
88     def getRSpec(self):
89         if self.rspec is None:
90             self.refreshRSpec()
91         return self.rspec
92     
93     def applyRSpec(self):
94         xml = self.rspec.toxml()
95         SfaData.applyRSpec(self, xml)
96
97 class OpenCirrusData(SfaData):
98     def __init__(self):
99         SfaData.__init__(self)
100         self.registry = "http://www.planet-lab.org:12345"
101         self.slicemgr = "http://www.planet-lab.org:12346"
102