Exemplo n.º 1
0
def reconstruct_files():
    count = 0
    for file in File.objects(fragments__is_clean=False):
        logger.debug('Reconstructing {}'.format(file))
        file.reconstruct()
        count += 1
    return count
Exemplo n.º 2
0
def post_file(request):
    files = File.objects(Q(source=request.parameters['source']) &
                         Q(collection=request.parameters['collection']) &
                         Q(filename=request.parameters['name'])).all()
    if len(files) == 0:
        file = File()
        file.collection = request.parameters['collection']
        file.filename = request.parameters['name']
        file.encoding = Encoding(**DEFAULT_ENCODING)
        hubs = Hub.objects(cumulus_id=request.parameters['source'])
        if len(hubs) == 0:
            raise ObjectDoesNotExist('Source does not exist')
        elif len(hubs) == 1:
            hub = hubs[0]
        else:
            raise MultipleObjectsFound('Multiple files found for source')
        file.source = hub
    elif len(files) == 1:
        file = files[0]
    else:
        raise MultipleObjectsFound('Multiple objects found for the search query')

    with file as f:
        f.write(request.data)

    return FileSerializer(file).data
Exemplo n.º 3
0
def get_file(request):
    files = File.objects(Q(source=request.parameters['source']) &
                         Q(collection=request.parameters['collection']) &
                         Q(filename=request.parameters['name'])).all()
    if len(files) == 0:
        raise ObjectDoesNotExist('File does not exist')
    elif len(files) == 1:
        file = files[0]
    else:
        raise MultipleObjectsFound('Multiple files found for the search query')

    return FileContentSerializer(file).data
Exemplo n.º 4
0
def v_random(func):
    pipeline = [{
        '$sample': {
            'size': int(len(File.objects) * VERIFY_FRACTION)
        }
    }]
    files_to_reconstruct = list()

    for file_dict in File.objects.aggregate(*pipeline):
        file = one(File.objects(uuid=file_dict['uuid']))
        if not getattr(file, func)():
            files_to_reconstruct.append(file.uuid)
            logger.debug('{} check failed: {}: {}/{}/{}'.format(
                func, file.uid, file.source, file.collection, file.filename))

    logger.info('Files to reconstruct: {}'.format(len(files_to_reconstruct)))