From e2ff96618bc220125d3c465e6d7876140523e968 Mon Sep 17 00:00:00 2001 From: Tony Mack Date: Fri, 21 Sep 2012 11:25:38 -0400 Subject: [PATCH] cleanup --- sfa/planetlab/pldriver.py | 13 ++----------- sfa/planetlab/plslices.py | 27 +++++++++++++++++++++++++-- 2 files changed, 27 insertions(+), 13 deletions(-) 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): -- 2.43.0