From ac1440bdb6bfe8825d2c1e913a0458add730efe3 Mon Sep 17 00:00:00 2001 From: Tony Mack Date: Mon, 14 Nov 2011 21:55:22 -0500 Subject: [PATCH] fix add_slivers --- sfa/rspecs/elements/versions/pgv2Node.py | 2 +- .../elements/versions/pgv2SliverType.py | 24 +++++++++++++++---- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/sfa/rspecs/elements/versions/pgv2Node.py b/sfa/rspecs/elements/versions/pgv2Node.py index b180310c..68e184b5 100644 --- a/sfa/rspecs/elements/versions/pgv2Node.py +++ b/sfa/rspecs/elements/versions/pgv2Node.py @@ -60,7 +60,7 @@ class PGv2Node: return PGv2Node.get_node_objs(node_elems) @staticmethod - def get_nodes_with_sliver(xml): + def get_nodes_with_sliver(xml, filter={}): xpath = '//node/sliver_type | //default:node/default:sliver_type' node_elems = xml.xpath(xpath) return PGv2Node.get_node_objs(node_elems) diff --git a/sfa/rspecs/elements/versions/pgv2SliverType.py b/sfa/rspecs/elements/versions/pgv2SliverType.py index 70878ff6..5b47eb77 100644 --- a/sfa/rspecs/elements/versions/pgv2SliverType.py +++ b/sfa/rspecs/elements/versions/pgv2SliverType.py @@ -5,14 +5,24 @@ class PGv2SliverType: @staticmethod def add_slivers(xml, sliver): + if not slivers: + return if not isinstance(slivers, list): slivers = [slivers] for sliver in slivers: sliver_elem = Element.add(xml, 'sliver_type', sliver, ['type', 'client_id']) - for tag in sliver.get('tags', []): - if tag['name'] == 'initscript': - sliver_elem.add_element('{%s}initscript' % xml.namespaces['planetlab'], name=tag['value']) - + PGv2Sliver.add_sliver_attributes(sliver_elem, sliver.get('pl_tags', [])) + + @staticmethod + def add_sliver_attributes(xml, attributes): + for attribute in attributes: + if attribute['name'] == 'initscript': + xml.add_element('{%s}initscript' % xml.namespaces['planetlab'], name=attribute['value']) + elif tag['tagname'] == 'flack_info': + attrib_elem = xml.add_element('{%s}info' % self.namespaces['flack']) + attrib_dict = eval(tag['value']) + for (key, value) in attrib_dict.items(): + attrib_elem.set(key, value) @staticmethod def get_slivers(xml, filter={}): xpath = './default:sliver_type | ./sliver_type' @@ -23,4 +33,8 @@ class PGv2SliverType: if 'component_id' in xml.attrib: sliver['component_id'] = xml.attrib['component_id'] slivers.append(sliver) - return slivers + return slivers + + @staticmethod + def get_sliver_attributes(xml, filter={}): + return [] -- 2.43.0