X-Git-Url: http://git.onelab.eu/?p=sfa.git;a=blobdiff_plain;f=sfa%2Frspecs%2Fversions%2Fpgv2.py;h=a4f59630beb2f61bbd09a65ecc1b4be435a1cd40;hp=21183bf79e7d2b5d4d9f643ed6f5683194134aaa;hb=796d35d54ab31e209ddf76b4584b6508b309c6c1;hpb=4a2337e7f70cef81a8de37829aa63fc941c4b96e diff --git a/sfa/rspecs/versions/pgv2.py b/sfa/rspecs/versions/pgv2.py index 21183bf7..a4f59630 100644 --- a/sfa/rspecs/versions/pgv2.py +++ b/sfa/rspecs/versions/pgv2.py @@ -1,12 +1,14 @@ +from __future__ import print_function + from copy import deepcopy -from StringIO import StringIO from sfa.util.xrn import Xrn from sfa.rspecs.version import RSpecVersion from sfa.rspecs.elements.versions.pgv2Link import PGv2Link from sfa.rspecs.elements.versions.pgv2Node import PGv2Node from sfa.rspecs.elements.versions.pgv2SliverType import PGv2SliverType from sfa.rspecs.elements.versions.pgv2Lease import PGv2Lease - +from sfa.util.sfalogging import logger + class PGv2(RSpecVersion): type = 'ProtoGENI' content_type = 'ad' @@ -18,12 +20,13 @@ class PGv2(RSpecVersion): 'planetlab': "http://www.planet-lab.org/resources/sfa/ext/planetlab/1", 'plos': "http://www.planet-lab.org/resources/sfa/ext/plos/1", } - namespaces = dict(extensions.items() + [('default', namespace)]) + namespaces = dict(list(extensions.items()) + [('default', namespace)]) # Networks def get_networks(self): network_names = set() - nodes = self.xml.xpath('//default:node[@component_manager_id] | //node[@component_manager_id]', namespaces=self.namespaces) + nodes = self.xml.xpath('//default:node[@component_manager_id] | //node[@component_manager_id]', + namespaces=self.namespaces) for node in nodes: if 'component_manager_id' in node.attrib: network_urn = node.get('component_manager_id') @@ -54,16 +57,18 @@ class PGv2(RSpecVersion): # Slivers - def get_sliver_attributes(self, hostname, network=None): - nodes = self.get_nodes({'component_id': '*%s*' %hostname}) - attribs = [] - if nodes is not None and isinstance(nodes, list) and len(nodes) > 0: + def get_sliver_attributes(self, component_id, network=None): + nodes = self.get_nodes({'component_id': '*%s*' %component_id}) + try: node = nodes[0] sliver = node.xpath('./default:sliver_type', namespaces=self.namespaces) if sliver is not None and isinstance(sliver, list) and len(sliver) > 0: sliver = sliver[0] - #attribs = self.attributes_list(sliver) - return attribs + return self.attributes_list(sliver) + else: + return [] + except: + return [] def get_slice_attributes(self, network=None): slice_attributes = [] @@ -71,7 +76,7 @@ class PGv2(RSpecVersion): # TODO: default sliver attributes in the PG rspec? default_ns_prefix = self.namespaces['default'] for node in nodes_with_slivers: - sliver_attributes = self.get_sliver_attributes(node, network) + sliver_attributes = self.get_sliver_attributes(node['component_id'], network) for sliver_attribute in sliver_attributes: name=str(sliver_attribute[0]) text =str(sliver_attribute[1]) @@ -209,7 +214,7 @@ class PGv2(RSpecVersion): if not node['component_name']: # this node element is part of a lease continue - if not node.has_key('sliver') or not node['sliver']: + if 'sliver' not in node or not node['sliver']: node['sliver'] = {'name': 'plab-vserver'} main_nodes.append(node) self.add_nodes(main_nodes) @@ -258,4 +263,4 @@ if __name__ == '__main__': r = RSpec('/tmp/pg.rspec') r.load_rspec_elements(PGv2.elements) r.namespaces = PGv2.namespaces - print r.get(RSpecElements.NODE) + print(r.get(RSpecElements.NODE))