Пример #1
0
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}
Пример #2
0
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
Пример #3
0
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
Пример #4
0
def read_volume(volume_name_or_id):
    return Volume.Read(volume_name_or_id)