From 711356bf60f81831da0e844ffefe03787a752ea3 Mon Sep 17 00:00:00 2001
From: Tony Mack <tmack@paris.CS.Princeton.EDU>
Date: Mon, 25 Apr 2011 14:09:29 -0400
Subject: [PATCH] added merge() method

---
 sfa/rspecs/sfa_rspec.py | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/sfa/rspecs/sfa_rspec.py b/sfa/rspecs/sfa_rspec.py
index 2b573462..9f41ec2b 100755
--- a/sfa/rspecs/sfa_rspec.py
+++ b/sfa/rspecs/sfa_rspec.py
@@ -211,8 +211,6 @@ class SfaRSpec(RSpec):
             sliver = node.find('sliver')
             if sliver:    
                 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 = [
-- 
2.47.0