2 from PyQt4.QtCore import *
3 from PyQt4.QtGui import *
6 from sfa.util.record import SfaRecord, SliceRecord, AuthorityRecord, UserRecord
7 from sfa.rspecs.rspec_parser import parse_rspec
8 from sface.config import config
14 def getAuthorityHrns(self, type=None):
16 if os.path.exists(config.getAuthorityListFile()):
17 xml = open(config.getAuthorityListFile()).read()
18 tree = etree.fromstring(xml)
19 records = tree.xpath("//recordlist/record")
21 for record in records:
22 recType = record.attrib.get("type", None)
23 recHrn = record.attrib.get("hrn", None)
24 if (type==None) or (type==recType):
29 def getSliceRecord(self):
30 rec_file = config.getSliceRecordFile()
31 if os.path.exists(rec_file):
32 xml = open(rec_file).read()
34 rec.load_from_string(xml)
38 def getUserRecord(self):
39 rec_file = config.getUserRecordFile()
40 if os.path.exists(rec_file):
41 xml = open(rec_file).read()
43 rec.load_from_string(xml)
47 def getUserSliceHrns(self):
48 rec = self.getUserRecord()
50 return rec.get_field("slices")
54 def purgeNonSliceResources(self, rspec):
55 # This can probably go away once the new slice manager is fully
57 networks = rspec.get_networks()
58 for network in networks:
59 all_nodes = rspec.get_nodes(network)
60 sliver_nodes = rspec.get_nodes_with_slivers(network)
61 available_nodes = [ node for node in all_nodes if node not in sliver_nodes ]
63 for node in available_nodes:
64 node_elem = rspec.get_node_element(node, network)
65 parent = node_elem.xpath("..")[0]
66 parent.remove(node_elem)
68 def getSliceRSpec(self):
69 rspec_file = config.getSliceRSpecFile()
70 if os.path.exists(rspec_file):
71 xml = open(rspec_file).read()
72 rspec = parse_rspec(xml)
74 self.purgeNonSliceResources(rspec)
79 def getResourcesRSpec(self):
80 rspec_file = config.getResourcesRSpecFile()
81 if os.path.exists(rspec_file):
82 xml = open(rspec_file).read()
83 return parse_rspec(xml)