X-Git-Url: http://git.onelab.eu/?p=sface.git;a=blobdiff_plain;f=sface%2Fsfidata.py;h=9a2710a41a07e4cf8b172ad7af56b129c12d2e78;hp=7b52b56d246f6bda2fa2e72ad8457d1620c94689;hb=72d17d9e61f0c38e293a3e8773b046975ac570d5;hpb=c4ae31dd3f7402ab6f6e2f563f887e0e6220c1e0 diff --git a/sface/sfidata.py b/sface/sfidata.py index 7b52b56..9a2710a 100644 --- a/sface/sfidata.py +++ b/sface/sfidata.py @@ -1,10 +1,12 @@ import os +import pickle from PyQt4.QtCore import * from PyQt4.QtGui import * from lxml import etree -from sfa.util.record import SfaRecord, SliceRecord, AuthorityRecord -from sfa.rspecs.rspec_parser import parse_rspec +from sfa.util.xrn import hrn_to_urn, urn_to_hrn +from sfa.storage.record import SfaRecord, SliceRecord, AuthorityRecord, UserRecord +from sfa.rspecs.rspec import RSpec from sface.config import config class SfiData: @@ -35,7 +37,34 @@ class SfiData: return rec return None + def getUserRecord(self): + rec_file = config.getUserRecordFile() + if os.path.exists(rec_file): + xml = open(rec_file).read() + rec = UserRecord() + rec.load_from_string(xml) + return rec + return None + + def getUserSliceHrns(self): + rec = self.getUserRecord() + if rec: + slices = rec.get_field("slices") + if (type(slices)!=list) or (len(slices)<1): + return [] + + # get_field("slices") is returning [{"text": name}, {"text": name}, ...] + if (type(slices[0])==dict): + if "text" in slices[0]: + slices = [x["text"] for x in slices] + + return slices + + return [] + def purgeNonSliceResources(self, rspec): + # This can probably go away once the new slice manager is fully + # deployed. networks = rspec.get_networks() for network in networks: all_nodes = rspec.get_nodes(network) @@ -51,9 +80,11 @@ class SfiData: rspec_file = config.getSliceRSpecFile() if os.path.exists(rspec_file): xml = open(rspec_file).read() - rspec = parse_rspec(xml) - self.purgeNonSliceResources(rspec) + if (xml.strip()==""): + return None + + rspec = RSpec(rspec=xml) return rspec return None @@ -62,5 +93,32 @@ class SfiData: rspec_file = config.getResourcesRSpecFile() if os.path.exists(rspec_file): xml = open(rspec_file).read() - return parse_rspec(xml) + + if (xml.strip()==""): + return None + + rspec = RSpec(rspec=xml) + return rspec + return None + + def getSliverStatus(self, slice=None): + if not slice: + slice = config.getSlice() + + filename = config.fullpath(slice+".sliverstatus") + + if os.path.exists(filename): + data = open(filename).read() + return pickle.loads(data) + + return None + + def getSliceMgrVersion(self): + filename = config.fullpath("slicemgr.version") + + if os.path.exists(filename): + data = open(filename).read() + return pickle.loads(data) + return None +