From 3b98a10239c828ebe5f3c1991667697bea00407b Mon Sep 17 00:00:00 2001 From: Mohamed Larabi Date: Fri, 4 Oct 2013 18:49:25 +0200 Subject: [PATCH] various fixes --- sfa/planetlab/plaggregate.py | 2 +- sfa/planetlab/pldriver.py | 12 ++++++++++-- sfa/planetlab/plslices.py | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/sfa/planetlab/plaggregate.py b/sfa/planetlab/plaggregate.py index bdece6c7..879f9bb9 100644 --- a/sfa/planetlab/plaggregate.py +++ b/sfa/planetlab/plaggregate.py @@ -1,6 +1,6 @@ #!/usr/bin/python from collections import defaultdict -from sfa.util.xrn import Xrn, hrn_to_urn, urn_to_hrn +from sfa.util.xrn import Xrn, hrn_to_urn, urn_to_hrn, get_authority, get_leaf from sfa.util.sfatime import utcparse, datetime_to_string from sfa.util.sfalogging import logger from sfa.util.faults import SliverDoesNotExist diff --git a/sfa/planetlab/pldriver.py b/sfa/planetlab/pldriver.py index 88a58182..ac83f1d7 100644 --- a/sfa/planetlab/pldriver.py +++ b/sfa/planetlab/pldriver.py @@ -676,7 +676,7 @@ class PlDriver (Driver): peer = slices.get_peer(slice['hrn']) sfa_peer = slices.get_sfa_peer(slice['hrn']) users = options.get('geni_users', []) - persons = slices.verify_persons(None, slice, users, peer, sfa_peer, options=options) + persons = slices.verify_persons(slice['hrn'], slice, users, peer, sfa_peer, options=options) slices.handle_peer(None, None, persons, peer) # update sliver allocation states and set them to geni_provisioned sliver_ids = [sliver['sliver_id'] for sliver in slivers] @@ -692,23 +692,31 @@ class PlDriver (Driver): slivers = aggregate.get_slivers(urns) if slivers: slice_id = slivers[0]['slice_id'] + slice_name = slivers[0]['name'] node_ids = [] sliver_ids = [] for sliver in slivers: node_ids.append(sliver['node_id']) sliver_ids.append(sliver['sliver_id']) + # leases + leases = self.shell.GetLeases({'name': slice_name}) + leases_ids = [lease['lease_id'] for lease in leases ] + # 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() + #slice_hrn = PlXrn(auth=self.hrn, slice_name).get_hrn() + slice_hrn = self.shell.GetSliceHrn(int(slice_id)) peer = peers.get_peer(self, slice_hrn) try: if peer: self.shell.UnBindObjectFromPeer('slice', slice_id, peer) self.shell.DeleteSliceFromNodes(slice_id, node_ids) + if len(leases_ids) > 0: + self.shell.DeleteLeases(leases_ids) # delete sliver allocation states SliverAllocation.delete_allocations(sliver_ids) diff --git a/sfa/planetlab/plslices.py b/sfa/planetlab/plslices.py index a40762f9..ed8c15b1 100644 --- a/sfa/planetlab/plslices.py +++ b/sfa/planetlab/plslices.py @@ -424,7 +424,7 @@ class PlSlices: login_base = parts[0] else: login_base = '8'.join(site_hrn.split('.')) - slice_name = '_'.join([login_base, slice_hrn.split('.')[-1]]) + slicename = '_'.join([login_base, slice_hrn.split('.')[-1]]) slices = self.driver.shell.GetSlices([slicename]) expires = int(datetime_to_epoch(utcparse(expiration))) -- 2.43.0