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.storage.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 add_slivers(self, slivers, network=None, sliver_urn=None, no_dupes=False):
- # return self.version.add_slivers(slivers, network, sliver_urn, no_dupes)
-
- def merge_node(self, source_node_tag, network, no_dupes=False):
- return self.version.merge_node(source_node_tag, network, no_dupes)
-
- # sfav1.add_slivers isn't working for us...
- def add_slivers_xxx(self, slivers, network=None, sliver_urn=None, no_dupes=False):
- # add slice name to network tag
- network_tags = self.xml.xpath('//network')
- if network_tags:
- network_tag = network_tags[0]
- network_tag.set('slice', urn_to_hrn(sliver_urn)[0])
-
- # add slivers
- for sliver in slivers:
- node_elem = self.get_node_element(sliver['hostname'], network)
- if not node_elem: continue
- sliver_elem = etree.SubElement(node_elem, 'sliver')
- if 'tags' in sliver:
- for tag in sliver['tags']:
- etree.SubElement(sliver_elem, tag['tagname']).text = value=tag['value']
-
- 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
rspec_file = config.getSliceRSpecFile()
if os.path.exists(rspec_file):
xml = open(rspec_file).read()
- rspec = SfaceRSpec(rspec=xml) #rspec = parse_rspec(xml)
- #self.purgeNonSliceResources(rspec)
+ if (xml.strip()==""):
+ return None
+
+ rspec = RSpec(rspec=xml)
return rspec
return None
rspec_file = config.getResourcesRSpecFile()
if os.path.exists(rspec_file):
xml = open(rspec_file).read()
- rspec = SfaceRSpec(rspec=xml) #rspec= parse_rspec(xml)
+
+ if (xml.strip()==""):
+ return None
+
+ rspec = RSpec(rspec=xml)
return rspec
return None
if not slice:
slice = config.getSlice()
+ if not slice:
+ return None
+
filename = config.fullpath(slice+".sliverstatus")
if os.path.exists(filename):