python3 - 2to3 + miscell obvious tweaks
[sfa.git] / sfa / rspecs / versions / sfav1.py
index 964da05..9b77837 100644 (file)
@@ -1,3 +1,5 @@
+
+
 from copy import deepcopy
 from lxml import etree
 
@@ -8,25 +10,26 @@ from sfa.rspecs.elements.element import Element
 from sfa.rspecs.elements.versions.pgv2Link import PGv2Link
 from sfa.rspecs.elements.versions.sfav1Node import SFAv1Node
 from sfa.rspecs.elements.versions.sfav1Sliver import SFAv1Sliver
+from sfa.rspecs.elements.versions.sfav1Lease import SFAv1Lease
+
 
 class SFAv1(RSpecVersion):
     enabled = True
     type = 'SFA'
     content_type = '*'
     version = '1'
-    schema = None
-    namespace = None
+    schema = ''
+    namespace = ''
     extensions = {}
     namespaces = None
     template = '<RSpec type="%s"></RSpec>' % type
 
-    # Network 
+    # Network
     def get_networks(self):
         network_elems = self.xml.xpath('//network')
-        networks = [network_elem.get_instance(fields=['name', 'slice']) for \
+        networks = [network_elem.get_instance(fields=['name', 'slice']) for
                     network_elem in network_elems]
-        return networks    
-
+        return networks
 
     def add_network(self, network):
         network_tags = self.xml.xpath('//network[@name="%s"]' % network)
@@ -36,17 +39,16 @@ class SFAv1(RSpecVersion):
             network_tag = network_tags[0]
         return network_tag
 
-
     # Nodes
-    
+
     def get_nodes(self, filter=None):
         return SFAv1Node.get_nodes(self.xml, filter)
 
     def get_nodes_with_slivers(self):
         return SFAv1Node.get_nodes_with_slivers(self.xml)
 
-    def add_nodes(self, nodes, network = None, no_dupes=False):
-        SFAv1Node.add_nodes(self.xml, nodes)
+    def add_nodes(self, nodes, network=None, no_dupes=False, rspec_content_type=None):
+        SFAv1Node.add_nodes(self.xml, nodes, rspec_content_type)
 
     def merge_node(self, source_node_tag, network, no_dupes=False):
         if no_dupes and self.get_node_element(node['hostname']):
@@ -57,8 +59,10 @@ class SFAv1(RSpecVersion):
         network_tag.append(deepcopy(source_node_tag))
 
     # Slivers
-   
-    def add_slivers(self, hostnames, attributes=[], sliver_urn=None, append=False):
+
+    def add_slivers(self, hostnames, attributes=None, sliver_urn=None, append=False):
+        if attributes is None:
+            attributes = []
         # add slice name to network tag
         network_tags = self.xml.xpath('//network')
         if network_tags:
@@ -66,7 +70,7 @@ class SFAv1(RSpecVersion):
             network_tag.set('slice', urn_to_hrn(sliver_urn)[0])
 
         # add slivers
-        sliver = {'name':sliver_urn,
+        sliver = {'name': sliver_urn,
                   'pl_tags': attributes}
         for hostname in hostnames:
             if sliver_urn:
@@ -84,10 +88,9 @@ class SFAv1(RSpecVersion):
                     parent = node_elem.element.getparent()
                     parent.remove(node_elem.element)
 
-
     def remove_slivers(self, slivers, network=None, no_dupes=False):
         SFAv1Node.remove_slivers(self.xml, slivers)
+
     def get_slice_attributes(self, network=None):
         attributes = []
         nodes_with_slivers = self.get_nodes_with_slivers()
@@ -96,14 +99,13 @@ class SFAv1(RSpecVersion):
             attribute['node_id'] = None
             attributes.append(attribute)
         for node in nodes_with_slivers:
-            nodename=node['component_name']
+            nodename = node['component_name']
             sliver_attributes = self.get_sliver_attributes(nodename, network)
             for sliver_attribute in sliver_attributes:
                 sliver_attribute['node_id'] = nodename
                 attributes.append(sliver_attribute)
         return attributes
 
-
     def add_sliver_attribute(self, component_id, name, value, network=None):
         nodes = self.get_nodes({'component_id': '*%s*' % component_id})
         if nodes is not None and isinstance(nodes, list) and len(nodes) > 0:
@@ -114,7 +116,8 @@ class SFAv1(RSpecVersion):
                 SFAv1Sliver.add_sliver_attribute(sliver, name, value)
         else:
             # should this be an assert / raise an exception?
-            logger.error("WARNING: failed to find component_id %s" % component_id)
+            logger.error("WARNING: failed to find component_id %s" %
+                         component_id)
 
     def get_sliver_attributes(self, component_id, network=None):
         nodes = self.get_nodes({'component_id': '*%s*' % component_id})
@@ -131,20 +134,21 @@ class SFAv1(RSpecVersion):
         attribs = self.get_sliver_attributes(component_id)
         for attrib in attribs:
             if attrib['name'] == name and attrib['value'] == value:
-                #attrib.element.delete()
+                # attrib.element.delete()
                 parent = attrib.element.getparent()
                 parent.remove(attrib.element)
 
     def add_default_sliver_attribute(self, name, value, network=None):
         if network:
-            defaults = self.xml.xpath("//network[@name='%s']/sliver_defaults" % network)
+            defaults = self.xml.xpath(
+                "//network[@name='%s']/sliver_defaults" % network)
         else:
             defaults = self.xml.xpath("//sliver_defaults")
         if not defaults:
             if network:
                 network_tag = self.xml.xpath("//network[@name='%s']" % network)
             else:
-                network_tag = self.xml.xpath("//network")    
+                network_tag = self.xml.xpath("//network")
             if isinstance(network_tag, list):
                 network_tag = network_tag[0]
             defaults = network_tag.add_element('sliver_defaults')
@@ -154,17 +158,19 @@ class SFAv1(RSpecVersion):
 
     def get_default_sliver_attributes(self, network=None):
         if network:
-            defaults = self.xml.xpath("//network[@name='%s']/sliver_defaults" % network)
+            defaults = self.xml.xpath(
+                "//network[@name='%s']/sliver_defaults" % network)
         else:
             defaults = self.xml.xpath("//sliver_defaults")
-        if not defaults: return []
+        if not defaults:
+            return []
         return SFAv1Sliver.get_sliver_attributes(defaults[0])
-    
+
     def remove_default_sliver_attribute(self, name, value, network=None):
         attribs = self.get_default_sliver_attributes(network)
         for attrib in attribs:
             if attrib['name'] == name and attrib['value'] == value:
-                #attrib.element.delete()
+                # attrib.element.delete()
                 parent = attrib.element.getparent()
                 parent.remove(attrib.element)
 
@@ -174,7 +180,7 @@ class SFAv1(RSpecVersion):
         return PGv2Link.get_links(self.xml)
 
     def get_link_requests(self):
-        return PGv2Link.get_link_requests(self.xml) 
+        return PGv2Link.get_link_requests(self.xml)
 
     def add_links(self, links):
         networks = self.get_networks()
@@ -216,9 +222,25 @@ class SFAv1(RSpecVersion):
                 self.xml.append(network.element)
                 current_networks.append(current_network)
 
+    # Leases
+
+    def get_leases(self, filter=None):
+        return SFAv1Lease.get_leases(self.xml, filter)
+
+    def add_leases(self, leases, network=None, no_dupes=False):
+        SFAv1Lease.add_leases(self.xml, leases)
+
+    # Spectrum
+
+    def get_channels(self, filter=None):
+        return []
+
+    def add_channels(self, channels, network=None, no_dupes=False):
+        pass
+
 if __name__ == '__main__':
     from sfa.rspecs.rspec import RSpec
     from sfa.rspecs.rspec_elements import *
     r = RSpec('/tmp/resources.rspec')
     r.load_rspec_elements(SFAv1.elements)
-    print r.get(RSpecElements.NODE)
+    print(r.get(RSpecElements.NODE))