X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fplanetlab%2Fpldriver.py;h=43ee799bc846ffde64d557a9f29b2e74033ed84a;hb=f189c9fd5c1cd852fdff0bdab92fe26d6ef2b7de;hp=138e254965019d6442608bd9a52413a9f035bf36;hpb=3f8ecb2aa170dedfea669617b6ecdabb3df7792d;p=sfa.git diff --git a/sfa/planetlab/pldriver.py b/sfa/planetlab/pldriver.py index 138e2549..43ee799b 100644 --- a/sfa/planetlab/pldriver.py +++ b/sfa/planetlab/pldriver.py @@ -662,39 +662,39 @@ class PlDriver (Driver): # we remove the slivers. aggregate = PlAggregate(self) slivers = aggregate.get_slivers(urns) - slice_id = slivers[0]['slice_id'] - node_ids = [] - sliver_ids = [] - for sliver in slivers: - node_ids.append(sliver['node_id']) - sliver_ids.append(sliver['sliver_id']) - - # determine if this is a peer slice - # xxx I wonder if this would not need to use PlSlices.get_peer instead - # in which case plc.peers could be deprecated as this here - # is the only/last call to this last method in plc.peers - slice_hrn = PlXrn(auth=self.hrn, slicename=slivers[0]['name']).get_hrn() - peer = peers.get_peer(self, slice_hrn) - try: - if peer: - self.shell.UnBindObjectFromPeer('slice', slice_id, peer) - - self.shell.DeleteSliceFromNodes(slice_id, node_ids) - - # delete sliver allocation states - SliverAllocation.delete_allocations(sliver_ids) - finally: - if peer: - self.shell.BindObjectToPeer('slice', slice_id, peer, slice['peer_slice_id']) + if slivers: + slice_id = slivers[0]['slice_id'] + node_ids = [] + sliver_ids = [] + for sliver in slivers: + node_ids.append(sliver['node_id']) + sliver_ids.append(sliver['sliver_id']) + + # determine if this is a peer slice + # xxx I wonder if this would not need to use PlSlices.get_peer instead + # in which case plc.peers could be deprecated as this here + # is the only/last call to this last method in plc.peers + slice_hrn = PlXrn(auth=self.hrn, slicename=slivers[0]['name']).get_hrn() + peer = peers.get_peer(self, slice_hrn) + try: + if peer: + self.shell.UnBindObjectFromPeer('slice', slice_id, peer) + + self.shell.DeleteSliceFromNodes(slice_id, node_ids) + + # delete sliver allocation states + SliverAllocation.delete_allocations(sliver_ids) + finally: + if peer: + self.shell.BindObjectToPeer('slice', slice_id, peer, slice['peer_slice_id']) # prepare return struct geni_slivers = [] - for node_id in node_ids: - sliver_hrn = '%s.%s-%s' % (self.hrn, slice_id, node_id) + for sliver in slivers: geni_slivers.append( - {'geni_sliver_urn': Xrn(sliver_hrn, type='sliver').urn, + {'geni_sliver_urn': sliver['sliver_id'], 'geni_allocation_status': 'geni_unallocated', - 'geni_expires': datetime_to_string(utcparse(slivers[0]['expires']))}) + 'geni_expires': datetime_to_string(utcparse(sliver['expires']))}) return geni_slivers def renew (self, urns, expiration_time, options={}):