From: Tony Mack Date: Thu, 7 Jul 2011 19:02:30 +0000 (-0400) Subject: just store the string representation of flack:info attributes X-Git-Tag: sfa-1.0-27~12 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=dd72ae9e93f8c3a7a23c6b42bb818b4ad7616aad;p=sfa.git just store the string representation of flack:info attributes --- diff --git a/sfa/rspecs/pg_rspec.py b/sfa/rspecs/pg_rspec.py index e86e13cc..c3c88437 100755 --- a/sfa/rspecs/pg_rspec.py +++ b/sfa/rspecs/pg_rspec.py @@ -75,7 +75,7 @@ class PGRSpec(RSpec): return set(networks) def get_node_element(self, hostname, network=None): - nodes = self.xml.xpath('//rspecv2:node[@component_id[contains(., "%s")]]' % hostname, namespaces=self.namespaces) + nodes = self.xml.xpath('//rspecv2:node[@component_id[contains(., "%s")]] | node[@component_id[contains(., "%s")]]' % (hostname, hostname), namespaces=self.namespaces) if isinstance(nodes,list) and nodes: return nodes[0] else: @@ -112,7 +112,6 @@ class PGRSpec(RSpec): def get_slice_attributes(self, network=None): slice_attributes = [] nodes_with_slivers = self.get_nodes_with_slivers(network) - from sfa.util.sfalogging import logger # TODO: default sliver attributes in the PG rspec? default_ns_prefix = self.namespaces['rspecv2'] for node in nodes_with_slivers: @@ -122,8 +121,7 @@ class PGRSpec(RSpec): value=str(sliver_attribute[1]) # we currently only suppor the and attributes if 'info' in name: - value = ",".join(["%s=%s" %(a,b) for (a,b) in sliver_attribute[2].items()]) - attribute = {'name': 'flack_info', 'value': value, 'node_id': node} + attribute = {'name': 'flack_info', 'value': str(sliver_attribute[2]), 'node_id': node} slice_attributes.append(attribute) elif 'initscript' in name: attribute = {'name': 'initscript', 'value': value, 'node_id': node} @@ -194,6 +192,19 @@ class PGRSpec(RSpec): node.set('client_id', hostname) if sliver_urn: node.set('sliver_id', sliver_urn) + from sfa.util.sfalogging import logger + # add sliver info + for sliver in slivers: + if 'tags' in sliver: + logger.info(sliver['hostname']) + node_elem = self.get_node_element(sliver['hostname']) + sliver_elem = node_elem.xpath('//rspecv2:sliver_type | //sliver_type', namespaces=self.namespaces) + if isinstance(sliver_elem, list) and sliver_elem: + sliver_elem = sliver_elem[0] + for tag in sliver['tags']: + if tag['name'] == 'flack_info': + etree.SubElement(sliver_elem, 'flack:info', attrib=eval(tag['value'])) + def add_default_sliver_attribute(self, name, value, network=None): pass