remove obsolete code
[sface.git] / sface / sfidata.py
1 import os
2 import pickle
3 from PyQt4.QtCore import *
4 from PyQt4.QtGui import *
5
6 from lxml import etree
7 from sfa.util.xrn import hrn_to_urn, urn_to_hrn
8 from sfa.util.record import SfaRecord, SliceRecord, AuthorityRecord, UserRecord
9 from sfa.rspecs.rspec import RSpec
10 from sface.config import config
11
12 class SfiData:
13     def __init__(self):
14         pass
15
16     def getAuthorityHrns(self, type=None):
17         names = []
18         if os.path.exists(config.getAuthorityListFile()):
19             xml = open(config.getAuthorityListFile()).read()
20             tree = etree.fromstring(xml)
21             records = tree.xpath("//recordlist/record")
22
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):
27                     names.append(recHrn)
28
29         return names
30
31     def getSliceRecord(self):
32         rec_file = config.getSliceRecordFile()
33         if os.path.exists(rec_file):
34             xml = open(rec_file).read()
35             rec = SliceRecord()
36             rec.load_from_string(xml)
37             return rec
38         return None
39
40     def getUserRecord(self):
41         rec_file = config.getUserRecordFile()
42         if os.path.exists(rec_file):
43             xml = open(rec_file).read()
44             rec = UserRecord()
45             rec.load_from_string(xml)
46             return rec
47         return None
48
49     def getUserSliceHrns(self):
50         rec = self.getUserRecord()
51         if rec:
52             slices = rec.get_field("slices")
53             if (type(slices)!=list) or (len(slices)<1):
54                 return []
55
56             # get_field("slices") is returning [{"text": name}, {"text": name}, ...]
57             if (type(slices[0])==dict):
58                 if "text" in slices[0]:
59                     slices = [x["text"] for x in slices]
60
61             return slices
62
63         return []
64
65     def purgeNonSliceResources(self, rspec):
66         # This can probably go away once the new slice manager is fully
67         # deployed.
68         networks = rspec.get_networks()
69         for network in networks:
70             all_nodes = rspec.get_nodes(network)
71             sliver_nodes = rspec.get_nodes_with_slivers(network)
72             available_nodes = [ node for node in all_nodes if node not in sliver_nodes ]
73
74             for node in available_nodes:
75                 node_elem = rspec.get_node_element(node, network)
76                 parent = node_elem.xpath("..")[0]
77                 parent.remove(node_elem)
78
79     def getSliceRSpec(self):
80         rspec_file = config.getSliceRSpecFile()
81         if os.path.exists(rspec_file):
82             xml = open(rspec_file).read()
83             rspec = RSpec(rspec=xml) #rspec = parse_rspec(xml)
84
85             #self.purgeNonSliceResources(rspec)
86
87             return rspec
88         return None
89
90     def getResourcesRSpec(self):
91         rspec_file = config.getResourcesRSpecFile()
92         if os.path.exists(rspec_file):
93             xml = open(rspec_file).read()
94             rspec = RSpec(rspec=xml) #rspec= parse_rspec(xml)
95             return rspec
96         return None
97
98     def getSliverStatus(self, slice=None):
99         if not slice:
100             slice = config.getSlice()
101
102         filename = config.fullpath(slice+".sliverstatus")
103
104         if os.path.exists(filename):
105             data = open(filename).read()
106             return pickle.loads(data)
107
108         return None
109
110     def getSliceMgrVersion(self):
111         filename = config.fullpath("slicemgr.version")
112
113         if os.path.exists(filename):
114             data = open(filename).read()
115             return pickle.loads(data)
116
117         return None
118