fix bug in remove_slivers()
[sfa.git] / sfa / rspecs / sfa_rspec.py
index 2b57346..2202158 100755 (executable)
@@ -11,7 +11,7 @@ class SfaRSpec(RSpec):
     xml = None
     header = '<?xml version="1.0"?>\n'
     namespaces = {}
-
+    type = 'sfa'
     ###################
     # Parser
     ###################
@@ -209,10 +209,8 @@ class SfaRSpec(RSpec):
         for hostname in hostnames:
             node = self.get_node_element(hostname, network)
             sliver = node.find('sliver')
-            if sliver:    
+            if sliver != None:
                 node.remove(sliver)                 
-
-    
     
     def add_default_sliver_attribute(self, name, value, network=None):
         if network:
@@ -260,6 +258,24 @@ class SfaRSpec(RSpec):
         for vlink in vlinks:
             vlink.getparent().remove(vlink)
 
+
+    def merge(self, in_rspec):
+        """
+        Merge contents for specified rspec with current rspec 
+        """
+
+        # just copy over all networks
+        current_networks = self.get_networks()
+        rspec = SfaRSpec(rspec=in_rspec)
+        networks = rspec.get_network_elements()
+        for network in networks:
+            current_network = network.get('name')
+            if not current_network in current_networks:
+                self.xml.append(network)
+                current_networks.append(current_network)
+        
+         
+
 if __name__ == '__main__':
     rspec = SfaRSpec()
     nodes = [