2 from PyQt4.QtCore import *
3 from PyQt4.QtGui import *
6 from sfa.util.record import SfaRecord, SliceRecord, AuthorityRecord
7 from sfa.rspecs.rspec_parser import parse_rspec
8 from sface.config import config
9 from distutils.version import LooseVersion
10 from sfa.util.version import version_core
16 def getAuthorityHrns_old(self, type=None):
20 while os.path.exists(config.getAuthorityListRecordFile(i)):
21 rec_file = config.getAuthorityListRecordFile(i)
22 xml = open(rec_file).read()
23 rec = SfaRecord(string = xml)
24 if (type==None) or (type==rec.get_type()):
25 names.append(rec.get_name())
30 def getAuthorityHrns(self, type=None):
31 if LooseVersion(version_core()['code_tag']) <= LooseVersion("1.0-35"):
32 return self.getAuthorityHrns_old(type)
35 if os.path.exists(config.getAuthorityListFile()):
36 xml = open(config.getAuthorityListFile()).read()
37 tree = etree.fromstring(xml)
38 records = tree.xpath("//recordlist/record")
40 for record in records:
41 recType = record.attrib.get("type", None)
42 recHrn = record.attrib.get("hrn", None)
43 if (type==None) or (type==recType):
48 def getSliceRecord(self):
49 rec_file = config.getSliceRecordFile()
50 if os.path.exists(rec_file):
51 xml = open(rec_file).read()
53 rec.load_from_string(xml)
57 def purgeNonSliceResources(self, rspec):
58 networks = rspec.get_networks()
59 for network in networks:
60 all_nodes = rspec.get_nodes(network)
61 sliver_nodes = rspec.get_nodes_with_slivers(network)
62 available_nodes = [ node for node in all_nodes if node not in sliver_nodes ]
64 for node in available_nodes:
65 node_elem = rspec.get_node_element(node, network)
66 parent = node_elem.xpath("..")[0]
67 parent.remove(node_elem)
69 def getSliceRSpec(self):
70 rspec_file = config.getSliceRSpecFile()
71 if os.path.exists(rspec_file):
72 xml = open(rspec_file).read()
73 rspec = parse_rspec(xml)
75 self.purgeNonSliceResources(rspec)
80 def getResourcesRSpec(self):
81 rspec_file = config.getResourcesRSpecFile()
82 if os.path.exists(rspec_file):
83 xml = open(rspec_file).read()
84 return parse_rspec(xml)