Exemplo n.º 1
0
def get_container_data(user_name, vol_name, prefix, delimiter, limit,
                       start_marker, end_marker):
    get_user_object(user_name)
    volume_meta = get_volume_meta(vol_name)

    file_objects = list_files(vol_name, prefix, delimiter, start_marker,
                              end_marker, limit)

    result = {
        'name': vol_name,
        'content': [],
        'meta': {
            'x-timestamp': 0,
            'x-container-object-count': 0,
            'x-container-bytes-used': 0
        },
    }
    result['meta'].update(volume_meta)

    for file_object in file_objects:
        if len(result['content']) >= limit:
            break
        name = file_object['name']
        if start_marker and name <= start_marker:
            continue

        if end_marker and name > end_marker:
            continue

        if not name.startswith(prefix):
            continue

        result['meta']['x-container-object-count'] += 1

        if delimiter:
            if prefix:
                name = name[len(prefix):]
            parts = name.split(delimiter)
            if len(parts) > 1:
                dirname = parts[0] + '/'
                if start_marker and prefix + dirname <= start_marker:
                    continue
                if dirname != prefix:
                    subdir = {'subdir': u'%s' % (prefix + dirname)}
                    if len(result['content']
                           ) > 0 and result['content'][-1] == subdir:
                        continue
                    result['content'].append(subdir)
                    continue

        if name.endswith('.sxnewdir'):
            continue

        result['meta']['x-container-bytes-used'] += file_object['bytes']
        result['content'].append(file_object)

    return result
Exemplo n.º 2
0
def update_container_meta(user_name, vol_name, remove_list, update_dict, new_size):
    get_user_object(user_name)
    meta = get_volume_meta(vol_name)

    for key in remove_list:
        meta.pop(key, None)

    meta.update(update_dict)
    modify_volume(vol_name, meta, new_size)
Exemplo n.º 3
0
def update_container_meta(user_name, vol_name, remove_list, update_dict,
                          new_size):
    get_user_object(user_name)
    meta = get_volume_meta(vol_name)

    for key in remove_list:
        meta.pop(key, None)

    meta.update(update_dict)
    modify_volume(vol_name, meta, new_size)
Exemplo n.º 4
0
def get_container_data(user_name, vol_name, prefix, delimiter, limit, start_marker, end_marker):
    get_user_object(user_name)
    volume_meta = get_volume_meta(vol_name)

    file_objects = list_files(vol_name, prefix, delimiter, start_marker, end_marker, limit)

    result = {
        "name": vol_name,
        "content": [],
        "meta": {"x-timestamp": 0, "x-container-object-count": 0, "x-container-bytes-used": 0},
    }
    result["meta"].update(volume_meta)

    for file_object in file_objects:
        if len(result["content"]) >= limit:
            break
        name = file_object["name"]
        if start_marker and name <= start_marker:
            continue

        if end_marker and name > end_marker:
            continue

        if not name.startswith(prefix):
            continue

        result["meta"]["x-container-object-count"] += 1

        if delimiter:
            if prefix:
                name = name[len(prefix) :]
            parts = name.split(delimiter)
            if len(parts) > 1:
                dirname = parts[0] + "/"
                if start_marker and prefix + dirname <= start_marker:
                    continue
                if dirname != prefix:
                    subdir = {"subdir": u"%s" % (prefix + dirname)}
                    if len(result["content"]) > 0 and result["content"][-1] == subdir:
                        continue
                    result["content"].append(subdir)
                    continue

        if name.endswith(".sxnewdir"):
            continue

        result["meta"]["x-container-bytes-used"] += file_object["bytes"]
        result["content"].append(file_object)

    return result