from PyQt4.QtGui import *
from lxml import etree
+from sfa.util.xrn import hrn_to_urn, urn_to_hrn
from sfa.util.record import SfaRecord, SliceRecord, AuthorityRecord, UserRecord
-from sfa.rspecs.rspec_parser import parse_rspec
+from sfa.rspecs.rspec import RSpec
from sface.config import config
+# SfaceRSpec
+# temporary, until these references are tracked down and replaced with
+# rspec.version
+
+class SfaceRSpec(RSpec):
+ def __init__(self, rspec="", version=None, user_options={}):
+ RSpec.__init__(self, rspec, version, user_options)
+
+ def get_networks(self):
+ return self.version.get_networks()
+
+ def get_nodes(self, network):
+ return self.version.get_nodes(network)
+
+ def get_nodes_with_slivers(self, network):
+ return self.version.get_nodes_with_slivers(network)
+
+ def get_node_element(self, node, network=None):
+ return self.version.get_node_element(node, network)
+
+ def get_default_sliver_attributes(self, network):
+ return self.version.get_default_sliver_attributes(network)
+
+ def get_sliver_attributes(self, node, network):
+ return self.version.get_sliver_attributes(node, network)
+
+ def remove_slivers(self, slivers, network=None, no_dupes=False):
+ return self.version.remove_slivers(slivers, network, no_dupes)
+
+ def add_default_sliver_attribute(self, name, value, network=None):
+ self.version.add_default_sliver_attribute(name, value, network)
+
+ def add_sliver_attribute(self, hostname, name, value, network=None):
+ self.version.add_sliver_attribute(hostname, name, value, network)
+
+ def remove_default_sliver_attribute(self, name, value, network=None):
+ self.version.remove_default_sliver_attribute(name, value, network)
+
+ def remove_sliver_attribute(self, hostname, name, value, network=None):
+ self.version.remove_sliver_attribute(hostname, name, value, network)
+
+ def merge_node(self, source_node_tag, network, no_dupes=False):
+ return self.version.merge_node(source_node_tag, network, no_dupes)
+
+ def get_node_sliver_type(self, node, network):
+ node = self.get_node_element(node, network)
+ if node is None:
+ return ""
+
+ sliver_types = node.xpath("sliver_type")
+ if len(sliver_types)>0:
+ return sliver_types[0].attrib.get("name", "")
+
+ return ""
+
class SfiData:
def __init__(self):
pass
def getUserSliceHrns(self):
rec = self.getUserRecord()
if rec:
- return rec.get_field("slices")
+ 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 []
rspec_file = config.getSliceRSpecFile()
if os.path.exists(rspec_file):
xml = open(rspec_file).read()
- rspec = parse_rspec(xml)
+ rspec = SfaceRSpec(rspec=xml) #rspec = parse_rspec(xml)
- self.purgeNonSliceResources(rspec)
+ #self.purgeNonSliceResources(rspec)
return rspec
return None
rspec_file = config.getResourcesRSpecFile()
if os.path.exists(rspec_file):
xml = open(rspec_file).read()
- return parse_rspec(xml)
+ rspec = SfaceRSpec(rspec=xml) #rspec= parse_rspec(xml)
+ return rspec
return None
def getSliverStatus(self, slice=None):
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