From 4a7a4a4fb1f93b2e6d3fef7e33f5904f586a883f Mon Sep 17 00:00:00 2001 From: Tony Mack Date: Mon, 3 Oct 2011 15:48:50 -0400 Subject: [PATCH] added remove_slivers() method --- sfa/rspecs/versions/pgv2.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/sfa/rspecs/versions/pgv2.py b/sfa/rspecs/versions/pgv2.py index d5680c95..e2303d1c 100644 --- a/sfa/rspecs/versions/pgv2.py +++ b/sfa/rspecs/versions/pgv2.py @@ -183,13 +183,19 @@ class PGv2(BaseVersion): node.remove(sliver_elem) sliver_elem = etree.SubElement(node, 'sliver_type', name='plab-vnode') - for tag in sliver_info['tags']: + for tag in sliver_info.get('tags', []): if tag['tagname'] == 'flack_info': e = etree.SubElement(sliver_elem, '{%s}info' % self.namespaces['flack'], attrib=eval(tag['value'])) elif tag['tagname'] == 'initscript': e = etree.SubElement(sliver_elem, '{%s}initscript' % self.namespaces['planetlab'], attrib={'name': tag['value']}) + def remove_slivers(self, slivers, network=None, no_dupes=False): + for sliver in slivers: + node_elem = self.get_node_element(sliver['hostname']) + sliver_elem = node_elem.xpath('./default:sliver_type', self.namespaces) + if sliver_elem != None and sliver_elem != []: + node_elem.remove(sliver_elem[0]) def add_default_sliver_attribute(self, name, value, network=None): pass @@ -204,8 +210,10 @@ class PGv2(BaseVersion): """ Merge contents for specified rspec with current rspec """ - + from sfa.rspecs.rspec import RSpec # just copy over all the child elements under the root element + if isinstance(in_rspec, RSpec): + in_rspec = in_rspec.toxml() tree = etree.parse(StringIO(in_rspec)) root = tree.getroot() for child in root.getchildren(): -- 2.43.0