From db1a02f22c50b93dc09924f8ceb492e5d45740de Mon Sep 17 00:00:00 2001 From: smbaker Date: Mon, 26 Sep 2011 19:59:00 -0700 Subject: [PATCH] add merge_node methods --- sfa/rspecs/pg_rspec.py | 6 +++++- sfa/rspecs/sfa_rspec.py | 19 ++++++++++++++----- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/sfa/rspecs/pg_rspec.py b/sfa/rspecs/pg_rspec.py index 2d27edbe..405a8202 100755 --- a/sfa/rspecs/pg_rspec.py +++ b/sfa/rspecs/pg_rspec.py @@ -1,4 +1,5 @@ -#!/usr/bin/python +#!/usr/bin/python +from copy import deepcopy from lxml import etree from StringIO import StringIO from sfa.rspecs.rspec import RSpec @@ -187,6 +188,9 @@ class PGRSpec(RSpec): location_tag = etree.SubElement(node_tag, 'location', country="us", \ longitude=str(longitude), latitude=str(latitude)) + def merge_node(self, source_node_tag): + # this is untested + self.xml.append(deepcopy(source_node_tag)) def add_slivers(self, slivers, sliver_urn=None, no_dupes=False): diff --git a/sfa/rspecs/sfa_rspec.py b/sfa/rspecs/sfa_rspec.py index 3d729a6b..56e302b6 100755 --- a/sfa/rspecs/sfa_rspec.py +++ b/sfa/rspecs/sfa_rspec.py @@ -1,4 +1,5 @@ -#!/usr/bin/python +#!/usr/bin/python +from copy import deepcopy from lxml import etree from StringIO import StringIO from sfa.rspecs.rspec import RSpec @@ -194,7 +195,7 @@ class SfaRSpec(RSpec): def add_network(self, network): network_tags = self.xml.xpath('//network[@name="%s"]' % network) - if not network_tags: + if not network_tags: network_tag = etree.SubElement(self.xml, 'network', name=network) else: network_tag = network_tags[0] @@ -241,14 +242,22 @@ class SfaRSpec(RSpec): longitude = str(node['site']['longitude']) latitude = str(node['site']['latitude']) location = etree.SubElement(node_tag, 'location', country='unknown', \ - longitude=longitude, latitude=latitude) + longitude=longitude, latitude=latitude) + + def merge_node(self, source_node_tag, network, no_dupes=False): + if no_dupes and self.get_node_element(node['hostname']): + # node already exists + return + + network_tag = self.add_network(network) + network_tag.append(deepcopy(source_node_tag)) def add_interfaces(self, interfaces): - pass + pass def add_links(self, links): pass - + def add_slivers(self, slivers, network=None, sliver_urn=None, no_dupes=False): # add slice name to network tag network_tags = self.xml.xpath('//network') -- 2.47.0