Example #1
0
def list_pending_volumes(email, **q_opts):
    caller_user = _check_authenticated(q_opts)

    # user must exist
    user = read_user(email)
    if user == None:
        raise Exception("No such user '%s'" % email)

    # privilege check--only admin can list other users' pending volumes
    if user.owner_id != caller_user.owner_id and not caller_user.is_admin:
        raise Exception("User '%s' is not sufficiently privileged" %
                        caller_user.email)

    def __volume_from_access_request(var):
        return Volume.Read(var.volume_id, async=True)

    q_opts["map_func"] = __volume_from_access_request
    vols = VolumeAccessRequest.ListAll(
        {
            "VolumeAccessRequest.requester_owner_id ==": user.owner_id,
            "VolumeAccessRequest.status ==": VolumeAccessRequest.STATUS_PENDING
        }, **q_opts)

    ret = filter(lambda x: x != None, vols)
    return ret
Example #2
0
def list_volume_user_ids(volume_name_or_id, **q_opts):
    caller_user = _check_authenticated(q_opts)

    volume_id = _get_volume_id(volume_name_or_id)

    def __user_from_access_request(req):
        return SyndicateUser.Read_ByOwnerID(req.requester_owner_id, async=True)

    q_opts["map_func"] = __user_from_access_request
    user_futs = VolumeAccessRequest.ListAll(
        {"VolumeAccessRequest.volume_id ==": volume_id}, **q_opts)

    storagetypes.wait_futures(user_futs)

    ret = [
        u.email for u in filter(lambda x: x != None,
                                [uf.get_result() for uf in user_futs])
    ]
    return ret