remove obsolete code
[sface.git] / sface / sfidata.py
index 315fddc..284c090 100644 (file)
@@ -1,12 +1,69 @@
 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.util.record import SfaRecord, SliceRecord, AuthorityRecord, UserRecord
+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
@@ -35,6 +92,31 @@ 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.
@@ -53,9 +135,9 @@ class SfiData:
         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
@@ -64,5 +146,28 @@ class SfiData:
         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):
+        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
+