From: Thierry Parmentelat Date: Fri, 21 Sep 2012 16:48:32 +0000 (+0200) Subject: Merge branch 'geni-v2' of ssh://git.onelab.eu/git/sfa into geni-v2 X-Git-Tag: sfa-2.1-15~6 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=30b26f8f644e2c99673d15c96f2722b746f6fbe2;hp=cf802a4f0250de22a6f38f1ee97a89e86bfc1128;p=sfa.git Merge branch 'geni-v2' of ssh://git.onelab.eu/git/sfa into geni-v2 --- diff --git a/sfa/planetlab/pldriver.py b/sfa/planetlab/pldriver.py index 0fa8818f..49a325dc 100644 --- a/sfa/planetlab/pldriver.py +++ b/sfa/planetlab/pldriver.py @@ -736,15 +736,7 @@ class PlDriver (Driver): # add/remove slice from nodes requested_slivers = {} slivers = rspec.version.get_nodes_with_slivers() - for node in slivers: - hostname = None - if node.get('component_name'): - hostname = node.get('component_name').strip() - elif node.get('component_id'): - hostname = xrn_to_hostname(node.get('component_id').strip()) - if hostname: - requested_slivers[hostname] = node - nodes = slices.verify_slice_nodes(slice, requested_slivers.keys(), peer) + nodes = slices.verify_slice_nodes(slice, slivers, peer) # add/remove links links slices.verify_slice_links(slice, rspec.version.get_link_requests(), nodes) @@ -770,8 +762,7 @@ class PlDriver (Driver): slices.handle_peer(site, slice, persons, peer) return aggregate.get_rspec(slice_xrn=slice_urn, - version=rspec.version, - requested_slivers = requested_slivers) + version=rspec.version) def delete_sliver (self, slice_urn, slice_hrn, creds, options): slicename = hrn_to_pl_slicename(slice_hrn) diff --git a/sfa/planetlab/plslices.py b/sfa/planetlab/plslices.py index eb600665..be540bb6 100644 --- a/sfa/planetlab/plslices.py +++ b/sfa/planetlab/plslices.py @@ -179,11 +179,27 @@ class PlSlices: return leases - def verify_slice_nodes(self, slice, requested_slivers, peer): + def verify_slice_nodes(self, slice, slivers, peer): nodes = self.driver.shell.GetNodes(slice['node_ids'], ['node_id', 'hostname', 'interface_ids']) current_slivers = [node['hostname'] for node in nodes] + requested_slivers = [] + tags = [] + for node in slivers: + hostname = None + if node.get('component_name'): + hostname = node.get('component_name').strip() + elif node.get('component_id'): + hostname = xrn_to_hostname(node.get('component_id').strip()) + if node.get('client_id'): + tags.append({'slicename': slice['name'], + 'tagname': 'client_id', + 'value': node['client_id'], + 'node': hostname}) + if hostname: + requested_slivers.append(hostname) + # remove nodes not in rspec deleted_nodes = list(set(current_slivers).difference(requested_slivers)) @@ -195,9 +211,16 @@ class PlSlices: self.driver.shell.UnBindObjectFromPeer('slice', slice['slice_id'], peer['shortname']) self.driver.shell.AddSliceToNodes(slice['name'], added_nodes) self.driver.shell.DeleteSliceFromNodes(slice['name'], deleted_nodes) - + except: logger.log_exc('Failed to add/remove slice from nodes') + + # add tags + for tag in tags: + try: + self.driver.shell.AddSliceTag(tag['slicename'], tag['tagname'], tag['value'], tag['node']) + except: + logger.log_exc('Failed to add slice tag') return nodes def free_egre_key(self): diff --git a/sfa/rspecs/elements/versions/pgv2SliverType.py b/sfa/rspecs/elements/versions/pgv2SliverType.py index c19cd0a1..1f3ec0c7 100644 --- a/sfa/rspecs/elements/versions/pgv2SliverType.py +++ b/sfa/rspecs/elements/versions/pgv2SliverType.py @@ -34,7 +34,7 @@ class PGv2SliverType: for attribute in attributes: if attribute['name'] == 'initscript': xml.add_element('{%s}initscript' % xml.namespaces['planetlab'], name=attribute['value']) - elif tag['tagname'] == 'flack_info': + elif attribute['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():