Finished first cut at VINI's LinkPanel
[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
63     def getRSpec(self):
64         xml = SfaData.getRSpec(self)
65         return RSpec(xml)
66
67     def applyRSpec(self, rspec):
68         xml = rspec.toxml()
69         SfaData.applyRSpec(self, xml)
70
71 class PlanetLabData(SfaData):
72     def __init__(self):
73         SfaData.__init__(self)
74         self.registry = "http://www.planet-lab.org:12345"
75         self.slicemgr = "http://www.planet-lab.org:12346"
76
77     def getRSpec(self):
78         xml = SfaData.getRSpec(self)
79         return RSpec(xml)
80
81     def applyRSpec(self, rspec):
82         xml = rspec.toxml()
83         SfaData.applyRSpec(self, xml)
84
85 class OpenCirrusData(SfaData):
86     def __init__(self):
87         SfaData.__init__(self)
88         self.registry = "http://www.planet-lab.org:12345"
89         self.slicemgr = "http://www.planet-lab.org:12346"
90