3 from subprocess import *
4 from sfa.util.rspecHelper import RSpec
10 filename = os.path.expanduser("~/.sfi/sfi_config")
11 execfile(filename, SfaData.__dict__)
12 if not hasattr(SfaData, 'SFI_AUTH'):
13 SfaData.SFI_AUTH = None
14 if not hasattr(SfaData, 'SFI_USER'):
15 SfaData.SFI_USER = None
16 if not hasattr(SfaData, 'SFI_SLICE'):
17 SfaData.SFI_SLICE = None
19 def getAuthority(self):
20 return SfaData.SFI_AUTH
23 return SfaData.SFI_USER
25 def setUser(self, user):
26 SfaData.SFI_USER = user
28 # Should probably get authority from user record instead...
30 SfaData.SFI_AUTH = '.'.join(a[:len(a)-1])
33 return SfaData.SFI_SLICE
35 def setSlice(self, slice):
36 SfaData.SFI_SLICE = slice
38 def getRecord(self, hrn):
39 text = Popen(["sfi.py", "-u", self.getUser(), "-a",
40 self.getAuthority(), "-r", self.registry,
41 "-s", self.slicemgr, "show", hrn],
42 stdout=PIPE).communicate()[0]
45 def listChildren(self, hrn):
47 text = Popen(["sfi.py", "-u", self.getUser(), "-a",
48 self.getAuthority(), "-r", self.registry,
49 "-s", self.slicemgr, "list", hrn],
50 stdout=PIPE).communicate()[0]
51 lines = text.split('\n')
54 (hrn, kind) = line.split()
55 children.append((hrn, kind))
60 slice = self.getSlice()
61 # Write RSpec to file for testing.
62 filename = os.path.expanduser("~/.sfi/" + slice + ".rspec")
64 call(["sfi.py", "-u", self.getUser(), "-a", self.getAuthority(),
65 "-r", self.registry, "-s", self.slicemgr, "resources",
67 f = open(filename, "r")
72 def applyRSpec(self, xml):
73 slice = self.getSlice()
74 filename = os.path.expanduser("~/.sfi/" + slice + ".rspec")
76 f = open(filename, "w")
79 call(["sfi.py", "-u", self.getUser(), "-a", self.getAuthority(),
80 "-r", self.registry, "-s", self.slicemgr, "create",
83 class PlanetLabData(SfaData):
85 SfaData.__init__(self)
86 self.registry = "http://www.planet-lab.org:12345"
87 self.slicemgr = "http://www.planet-lab.org:12346"
90 def refreshRSpec(self):
91 xml = SfaData.getRSpec(self)
92 self.rspec = RSpec(xml)
95 if self.rspec is None:
100 xml = self.rspec.toxml()
101 SfaData.applyRSpec(self, xml)
103 class PLEData(PlanetLabData):
105 PlanetLabData.__init__(self)
106 self.slicemgr = "http://www.planet-lab.eu:12346"
108 class PLJData(PlanetLabData):
110 PlanetLabData.__init__(self)
111 self.slicemgr = "http://www.planet-lab.jp:12346"
113 class ViniData(PlanetLabData):
115 PlanetLabData.__init__(self)
116 self.slicemgr = "http://www.vini-veritas.net:12346"
118 class GpENIData(PlanetLabData):
120 PlanetLabData.__init__(self)
121 self.slicemgr = "http://198.248.241.100:12346"
123 class OpenCirrusData(SfaData):
125 SfaData.__init__(self)
126 self.registry = "http://198.55.37.29:12345"
127 self.slicemgr = "http://198.55.37.29:12346"
129 def refreshRSpec(self):
130 xml = SfaData.getRSpec(self)
134 if self.rspec is None:
138 def applyRSpec(self):
140 SfaData.applyRSpec(self, xml)