4 from PyQt4.QtCore import *
5 from PyQt4.QtGui import *
8 from sfa.util.xrn import hrn_to_urn, urn_to_hrn
9 from sfa.rspecs.rspec import RSpec
10 from sface.config import config
16 def getAuthorityHrns(self, type=None):
18 if os.path.exists(config.getAuthorityListFile()):
19 xml = open(config.getAuthorityListFile()).read()
20 tree = etree.fromstring(xml)
21 records = tree.xpath("//recordlist/record")
23 for record in records:
24 recType = record.attrib.get("type", None)
25 recHrn = record.attrib.get("hrn", None)
26 if (type==None) or (type==recType):
31 def getSliceRecord(self):
32 rec_file = config.getSliceRecordFile()
33 if os.path.exists(rec_file):
35 from sfa.storage.record import SliceRecord
36 xml = open(rec_file).read()
38 rec.load_from_string(xml)
41 from sfa.storage.model import make_record
42 obj=make_record (xml=file(rec_file).read())
43 # consider as a dict for smooth transition
47 def getUserRecord(self):
48 rec_file = config.getUserRecordFile()
49 if os.path.exists(rec_file):
51 from sfa.storage.record import SliceUser
52 xml = open(rec_file).read()
54 rec.load_from_string(xml)
57 from sfa.storage.model import make_record
58 obj=make_record (xml=file(rec_file).read())
59 # consider as a dict for smooth transition
63 def getUserSliceHrns(self):
64 rec = self.getUserRecord()
66 slices = rec.get_field("slices")
67 if (type(slices)!=list) or (len(slices)<1):
70 # get_field("slices") is returning [{"text": name}, {"text": name}, ...]
71 if (type(slices[0])==dict):
72 if "text" in slices[0]:
73 slices = [x["text"] for x in slices]
79 def purgeNonSliceResources(self, rspec):
80 # This can probably go away once the new slice manager is fully
82 networks = rspec.get_networks()
83 for network in networks:
84 all_nodes = rspec.get_nodes(network)
85 sliver_nodes = rspec.get_nodes_with_slivers(network)
86 available_nodes = [ node for node in all_nodes if node not in sliver_nodes ]
88 for node in available_nodes:
89 node_elem = rspec.get_node_element(node, network)
90 parent = node_elem.xpath("..")[0]
91 parent.remove(node_elem)
93 def getSliceRSpec(self):
94 rspec_file = config.getSliceRSpecFile()
95 if os.path.exists(rspec_file):
96 xml = open(rspec_file).read()
101 rspec = RSpec(rspec=xml)
106 def getResourcesRSpec(self):
107 rspec_file = config.getResourcesRSpecFile()
108 if os.path.exists(rspec_file):
109 xml = open(rspec_file).read()
111 if (xml.strip()==""):
114 rspec = RSpec(rspec=xml)
118 def getSliverStatus(self, slice=None):
120 slice = config.getSlice()
125 filename = config.fullpath(slice+".sliverstatus")
127 if os.path.exists(filename):
128 data = open(filename).read()
130 if hasattr(json, "loads"):
131 return json.loads(data) # python 2.6
133 return json.read(data) # python 2.5
135 print "Exception in getSliverStatus"
140 def getSliceMgrVersion(self):
141 filename = config.fullpath("slicemgr.version")
143 if os.path.exists(filename):
144 data = open(filename).read()
145 return pickle.loads(data)