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
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)
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