def delete_volume(volume_name_or_id, **attrs): """ Delete a volume, given its name or ID """ caller_user = _check_authenticated(attrs) volume = Volume.Read(volume_name_or_id) if volume is None or volume.deleted: return {"result": True} if volume.owner_id != caller_user.owner_id and not caller_user.is_admin: raise Exception("Caller cannot delete volume") ret = Volume.Delete(volume.volume_id) if ret: # delete succeeded. # Blow away cert bundle, in deferred task storagetypes.deferred.defer(VolumeCertBundle.Delete, volume.volume_id) # Blow away the MSEntries, in a deferred task storagetypes.deferred.defer(MSEntry.DeleteAll, volume) # Blow away the Gateways, in a deferred task storagetypes.deferred.defer(Gateway.DeleteAll, volume) return {'result': ret}
def _get_volume_id(volume_name_or_id): try: volume_id = int(volume_name_or_id) return volume_id except: volume = Volume.Read(volume_name_or_id) if volume == None: raise Exception("No such Volume '%s'" % volume_name_or_id) else: return volume.volume_id
def delete_volume(volume_name_or_id): volume = Volume.Read(volume_name_or_id) if volume is None: return True ret = Volume.Delete(volume.volume_id) if ret: # delete succeeded. # Blow away the MSEntries, in a deferred task storagetypes.deferred.defer(MSEntry.DeleteAll, volume) # Blow away the Gateways, in a deferred task storagetypes.deferred.defer(Gateway.DeleteAll, volume) return ret
def read_volume(volume_name_or_id): return Volume.Read(volume_name_or_id)