X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fplanetlab%2Fpldriver.py;h=d16b23a666186e317fa70ca8e83975875551acd6;hb=82d0355774b73966cbe0c838c611808dfd2f1c7a;hp=53f12563845251ad25ff97d886e29aa2e5ce34c6;hpb=4f9d407d0ce159bdb359e9ab500bf88b5f586e62;p=sfa.git diff --git a/sfa/planetlab/pldriver.py b/sfa/planetlab/pldriver.py index 53f12563..d16b23a6 100644 --- a/sfa/planetlab/pldriver.py +++ b/sfa/planetlab/pldriver.py @@ -23,7 +23,7 @@ from sfa.managers.driver import Driver from sfa.planetlab.plshell import PlShell from sfa.planetlab.plaggregate import PlAggregate from sfa.planetlab.plslices import PlSlices -from sfa.planetlab.plxrn import PlXrn, slicename_to_hrn, hostname_to_hrn, hrn_to_pl_slicename, xrn_to_hostname, top_auth, hash_loginbase +from sfa.planetlab.plxrn import PlXrn, slicename_to_hrn, hostname_to_hrn, hrn_to_pl_slicename, top_auth, hash_loginbase def list_to_dict(recs, key): @@ -692,17 +692,19 @@ class PlDriver (Driver): slivers = aggregate.get_slivers(urns) if not slivers: sliver_id_parts = Xrn(urns[0]).get_sliver_id_parts() - filter = {} - try: - filter['slice_id'] = int(sliver_id_parts[0]) - except ValueError: - filter['name'] = sliver_id_parts[0] - slices = self.shell.GetSlices(filter,['hrn']) - if not slices: - raise Forbidden("Unable to locate slice record for sliver: %s" % xrn) - slice = slices[0] - slice_urn = hrn_to_urn(slice['hrn'], type='slice') - urns = [slice_urn] + # allow to be called with an empty rspec, meaning flush reservations + if sliver_id_parts: + filter = {} + try: + filter['slice_id'] = int(sliver_id_parts[0]) + except ValueError: + filter['name'] = sliver_id_parts[0] + slices = self.shell.GetSlices(filter,['hrn']) + if not slices: + raise Forbidden("Unable to locate slice record for sliver: %s" % xrn) + slice = slices[0] + slice_urn = hrn_to_urn(slice['hrn'], type='slice') + urns = [slice_urn] else: slice_id = slivers[0]['slice_id'] slice_hrn = self.shell.GetSliceHrn(slice_id)