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.storage.record import SfaRecord, SliceRecord, AuthorityRecord, UserRecord
10 from sfa.rspecs.rspec import RSpec
11 from sface.config import config
17 def getAuthorityHrns(self, type=None):
19 if os.path.exists(config.getAuthorityListFile()):
20 xml = open(config.getAuthorityListFile()).read()
21 tree = etree.fromstring(xml)
22 records = tree.xpath("//recordlist/record")
24 for record in records:
25 recType = record.attrib.get("type", None)
26 recHrn = record.attrib.get("hrn", None)
27 if (type==None) or (type==recType):
32 def getSliceRecord(self):
33 rec_file = config.getSliceRecordFile()
34 if os.path.exists(rec_file):
35 xml = open(rec_file).read()
37 rec.load_from_string(xml)
41 def getUserRecord(self):
42 rec_file = config.getUserRecordFile()
43 if os.path.exists(rec_file):
44 xml = open(rec_file).read()
46 rec.load_from_string(xml)
50 def getUserSliceHrns(self):
51 rec = self.getUserRecord()
53 slices = rec.get_field("slices")
54 if (type(slices)!=list) or (len(slices)<1):
57 # get_field("slices") is returning [{"text": name}, {"text": name}, ...]
58 if (type(slices[0])==dict):
59 if "text" in slices[0]:
60 slices = [x["text"] for x in slices]
66 def purgeNonSliceResources(self, rspec):
67 # This can probably go away once the new slice manager is fully
69 networks = rspec.get_networks()
70 for network in networks:
71 all_nodes = rspec.get_nodes(network)
72 sliver_nodes = rspec.get_nodes_with_slivers(network)
73 available_nodes = [ node for node in all_nodes if node not in sliver_nodes ]
75 for node in available_nodes:
76 node_elem = rspec.get_node_element(node, network)
77 parent = node_elem.xpath("..")[0]
78 parent.remove(node_elem)
80 def getSliceRSpec(self):
81 rspec_file = config.getSliceRSpecFile()
82 if os.path.exists(rspec_file):
83 xml = open(rspec_file).read()
88 rspec = RSpec(rspec=xml)
93 def getResourcesRSpec(self):
94 rspec_file = config.getResourcesRSpecFile()
95 if os.path.exists(rspec_file):
96 xml = open(rspec_file).read()
101 rspec = RSpec(rspec=xml)
105 def getSliverStatus(self, slice=None):
107 slice = config.getSlice()
112 filename = config.fullpath(slice+".sliverstatus")
114 if os.path.exists(filename):
115 data = open(filename).read()
117 if hasattr(json, "loads"):
118 return json.loads(data) # python 2.6
120 return json.read(data) # python 2.5
122 print "Exception in getSliverStatus"
127 def getSliceMgrVersion(self):
128 filename = config.fullpath("slicemgr.version")
130 if os.path.exists(filename):
131 data = open(filename).read()
132 return pickle.loads(data)