Ejemplo n.º 1
0
def full_info():
    # FIXME: optimization point.
    #  temporary size storage, recalculate every hour/day etc
    used = 0L
    size = 0L
    count = 0L
    for storage in storages.keys():
        size += int(storages[storage].allow_space) * 1024 * 1024L
        used_p, count_p = used_size_on_storage(storage)
        used += used_p
        count += count_p
    fs_items = len(files_rs.keys())
    return size, used, count, fs_items
Ejemplo n.º 2
0
def find_server(hash):
    """
    Returns server to place new chunk
    """
    old = chunk_places(hash)
    if not old or (old[0] not in storages.keys()):
        # FIXME: need to check free space on storage
        s_list, full_info = scan_stats()
        # >5*chunk MB free space
        min_size = 5 * settings.chunk_size
        # s_list = filter(lambda serv: (float(serv['size']) - float(serv['used'])) > min_size, s_list)
        if not s_list:
            raise ChunkError("All storages FULL!")
        return sorted(s_list, key=lambda x: x["chunks_count"])[0]["name"]
        # return random.choice(storages.keys())
    else:
        return old[0]