From e6ac76af8cdf65194b5f3e8c500218fdeaa9ee3d Mon Sep 17 00:00:00 2001 From: Tony Mack Date: Fri, 30 Sep 2011 22:27:07 -0400 Subject: [PATCH] fix add_slivers() --- sfa/rspecs/versions/pgv2.py | 37 ++++++++++++++---------------------- sfa/rspecs/versions/sfav1.py | 6 +++++- 2 files changed, 19 insertions(+), 24 deletions(-) diff --git a/sfa/rspecs/versions/pgv2.py b/sfa/rspecs/versions/pgv2.py index 5f5ae703..3f808514 100644 --- a/sfa/rspecs/versions/pgv2.py +++ b/sfa/rspecs/versions/pgv2.py @@ -7,6 +7,16 @@ from sfa.rspecs.rspec_version import BaseVersion from sfa.rspecs.rspec_elements import RSpecElement, RSpecElements class PGv2(BaseVersion): + type = 'ProtoGENI' + content_type = 'ad' + version = '2' + schema = 'http://www.protogeni.net/resources/rspec/2/ad.xsd' + namespace = 'http://www.protogeni.net/resources/rspec/2' + extensions = { + 'flack': "http://www.protogeni.net/resources/rspec/ext/flack/1", + 'planetlab': "http://www.planet-lab.org/resources/sfa/ext/planetlab/1", + } + namespaces = dict(extensions.items() + [('default', namespace)]) elements = [ RSpecElement(RSpecElements.NETWORK, 'network', '//default:node[@component_manager_id][1]'), RSpecElement(RSpecElements.NODE, 'node', '//default:node | //node'), @@ -143,10 +153,12 @@ class PGv2(BaseVersion): # all nodes hould already be present in the rspec. Remove all # nodes that done have slivers - slivers = self._process_slivers(slivers) slivers_dict = {} for sliver in slivers: - slivers_dict[sliver['hostname']] = sliver + if isinstance(sliver, basestring): + slivers_dict[sliver] = {'hostname': sliver} + elif isinstance(sliver, dict): + slivers_dict[sliver['hostname']] = sliver nodes = self.get_node_elements() for node in nodes: @@ -207,41 +219,20 @@ class PGv2(BaseVersion): class PGv2Ad(PGv2): enabled = True - type = 'ProtoGENI' content_type = 'ad' - version = '2' schema = 'http://www.protogeni.net/resources/rspec/2/ad.xsd' - namespace = 'http://www.protogeni.net/resources/rspec/2' - extensions = { - 'flack': "http://www.protogeni.net/resources/rspec/ext/flack/1", - 'planetlab': "http://www.planet-lab.org/resources/sfa/ext/planetlab/1", - } template = '' class PGv2Request(PGv2): enabled = True - type = 'ProtoGENI' content_type = 'request' - version = '2' schema = 'http://www.protogeni.net/resources/rspec/2/request.xsd' - namespace = 'http://www.protogeni.net/resources/rspec/2' - extensions = { - 'flack': "http://www.protogeni.net/resources/rspec/ext/flack/1", - 'planetlab': "http://www.planet-lab.org/resources/sfa/ext/planetlab/1", - } template = '' class PGv2Manifest(PGv2): enabled = True - type = 'ProtoGENI' content_type = 'manifest' - version = '2' schema = 'http://www.protogeni.net/resources/rspec/2/manifest.xsd' - namespace = 'http://www.protogeni.net/resources/rspec/2' - extensions = { - 'flack': "http://www.protogeni.net/resources/rspec/ext/flack/1", - 'planetlab': "http://www.planet-lab.org/resources/sfa/ext/planetlab/1", - } template = '' diff --git a/sfa/rspecs/versions/sfav1.py b/sfa/rspecs/versions/sfav1.py index 9de83aa0..7cd8a149 100644 --- a/sfa/rspecs/versions/sfav1.py +++ b/sfa/rspecs/versions/sfav1.py @@ -1,3 +1,5 @@ +from lxml import etree +from sfa.util.xrn import hrn_to_urn, urn_to_hrn from sfa.rspecs.rspec_version import BaseVersion from sfa.rspecs.rspec_elements import RSpecElement, RSpecElements @@ -254,9 +256,11 @@ class SFAv1(BaseVersion): if network_tags: network_tag = network_tags[0] network_tag.set('slice', urn_to_hrn(sliver_urn)[0]) - slivers = self._process_slivers(slivers) + nodes_with_slivers = self.get_nodes_with_slivers(network) for sliver in slivers: + if isinstance(sliver, basestring): + sliver = {'hostname': sliver} if sliver['hostname'] in nodes_with_slivers: continue node_elem = self.get_node_element(sliver['hostname'], network) -- 2.43.0