Refactor filter_* methods as module functions
The various filter_* methods of the DiskCommon class don't operate on the DiskCommon object instance itself, but always on the list of objects passed in to it. This change does not modify those functions' behaviors but simply refactors them to live at the module level. Change-Id: Ic0f578d94aab65a524470278f10d1fdc8b1d6392 Signed-off-by: Peter Portante <peter.portante@redhat.com> Reviewed-on: http://review.gluster.org/5138 Reviewed-by: Luis Pabon <lpabon@redhat.com> Tested-by: Luis Pabon <lpabon@redhat.com>
This commit is contained in:
parent
3435c59ba3
commit
006c3599cb
|
@ -53,74 +53,79 @@ def _read_metadata(dd):
|
|||
return metadata
|
||||
|
||||
|
||||
def filter_prefix(objects, prefix):
|
||||
"""
|
||||
Accept sorted list.
|
||||
"""
|
||||
found = 0
|
||||
filtered_objs = []
|
||||
for object_name in objects:
|
||||
if object_name.startswith(prefix):
|
||||
filtered_objs.append(object_name)
|
||||
found = 1
|
||||
else:
|
||||
if found:
|
||||
break
|
||||
return filtered_objs
|
||||
|
||||
|
||||
def filter_delimiter(objects, delimiter, prefix):
|
||||
"""
|
||||
Accept sorted list.
|
||||
Objects should start with prefix.
|
||||
"""
|
||||
filtered_objs = []
|
||||
for object_name in objects:
|
||||
tmp_obj = object_name.replace(prefix, '', 1)
|
||||
sufix = tmp_obj.split(delimiter, 1)
|
||||
new_obj = prefix + sufix[0]
|
||||
if new_obj and new_obj not in filtered_objs:
|
||||
filtered_objs.append(new_obj)
|
||||
|
||||
return filtered_objs
|
||||
|
||||
|
||||
def filter_marker(objects, marker):
|
||||
"""
|
||||
TODO: We can traverse in reverse order to optimize.
|
||||
Accept sorted list.
|
||||
"""
|
||||
filtered_objs = []
|
||||
if objects[-1] < marker:
|
||||
return filtered_objs
|
||||
for object_name in objects:
|
||||
if object_name > marker:
|
||||
filtered_objs.append(object_name)
|
||||
|
||||
return filtered_objs
|
||||
|
||||
|
||||
def filter_end_marker(objects, end_marker):
|
||||
"""
|
||||
Accept sorted list.
|
||||
"""
|
||||
filtered_objs = []
|
||||
for object_name in objects:
|
||||
if object_name < end_marker:
|
||||
filtered_objs.append(object_name)
|
||||
else:
|
||||
break
|
||||
|
||||
return filtered_objs
|
||||
|
||||
|
||||
def filter_limit(objects, limit):
|
||||
filtered_objs = []
|
||||
for i in range(0, limit):
|
||||
filtered_objs.append(objects[i])
|
||||
|
||||
return filtered_objs
|
||||
|
||||
|
||||
class DiskCommon(object):
|
||||
def is_deleted(self):
|
||||
return not os_path.exists(self.datadir)
|
||||
|
||||
def filter_prefix(self, objects, prefix):
|
||||
"""
|
||||
Accept sorted list.
|
||||
"""
|
||||
found = 0
|
||||
filtered_objs = []
|
||||
for object_name in objects:
|
||||
if object_name.startswith(prefix):
|
||||
filtered_objs.append(object_name)
|
||||
found = 1
|
||||
else:
|
||||
if found:
|
||||
break
|
||||
return filtered_objs
|
||||
|
||||
def filter_delimiter(self, objects, delimiter, prefix):
|
||||
"""
|
||||
Accept sorted list.
|
||||
Objects should start with prefix.
|
||||
"""
|
||||
filtered_objs = []
|
||||
for object_name in objects:
|
||||
tmp_obj = object_name.replace(prefix, '', 1)
|
||||
sufix = tmp_obj.split(delimiter, 1)
|
||||
new_obj = prefix + sufix[0]
|
||||
if new_obj and new_obj not in filtered_objs:
|
||||
filtered_objs.append(new_obj)
|
||||
|
||||
return filtered_objs
|
||||
|
||||
def filter_marker(self, objects, marker):
|
||||
"""
|
||||
TODO: We can traverse in reverse order to optimize.
|
||||
Accept sorted list.
|
||||
"""
|
||||
filtered_objs = []
|
||||
if objects[-1] < marker:
|
||||
return filtered_objs
|
||||
for object_name in objects:
|
||||
if object_name > marker:
|
||||
filtered_objs.append(object_name)
|
||||
|
||||
return filtered_objs
|
||||
|
||||
def filter_end_marker(self, objects, end_marker):
|
||||
"""
|
||||
Accept sorted list.
|
||||
"""
|
||||
filtered_objs = []
|
||||
for object_name in objects:
|
||||
if object_name < end_marker:
|
||||
filtered_objs.append(object_name)
|
||||
else:
|
||||
break
|
||||
|
||||
return filtered_objs
|
||||
|
||||
def filter_limit(self, objects, limit):
|
||||
filtered_objs = []
|
||||
for i in range(0, limit):
|
||||
filtered_objs.append(objects[i])
|
||||
|
||||
return filtered_objs
|
||||
|
||||
|
||||
class DiskDir(DiskCommon):
|
||||
"""
|
||||
|
@ -273,20 +278,20 @@ class DiskDir(DiskCommon):
|
|||
objects.sort()
|
||||
|
||||
if objects and prefix:
|
||||
objects = self.filter_prefix(objects, prefix)
|
||||
objects = filter_prefix(objects, prefix)
|
||||
|
||||
if objects and delimiter:
|
||||
objects = self.filter_delimiter(objects, delimiter, prefix)
|
||||
objects = filter_delimiter(objects, delimiter, prefix)
|
||||
|
||||
if objects and marker:
|
||||
objects = self.filter_marker(objects, marker)
|
||||
objects = filter_marker(objects, marker)
|
||||
|
||||
if objects and end_marker:
|
||||
objects = self.filter_end_marker(objects, end_marker)
|
||||
objects = filter_end_marker(objects, end_marker)
|
||||
|
||||
if objects and limit:
|
||||
if len(objects) > limit:
|
||||
objects = self.filter_limit(objects, limit)
|
||||
objects = filter_limit(objects, limit)
|
||||
|
||||
container_list = []
|
||||
if objects:
|
||||
|
@ -526,20 +531,20 @@ class DiskAccount(DiskDir):
|
|||
containers.sort()
|
||||
|
||||
if containers and prefix:
|
||||
containers = self.filter_prefix(containers, prefix)
|
||||
containers = filter_prefix(containers, prefix)
|
||||
|
||||
if containers and delimiter:
|
||||
containers = self.filter_delimiter(containers, delimiter, prefix)
|
||||
containers = filter_delimiter(containers, delimiter, prefix)
|
||||
|
||||
if containers and marker:
|
||||
containers = self.filter_marker(containers, marker)
|
||||
containers = filter_marker(containers, marker)
|
||||
|
||||
if containers and end_marker:
|
||||
containers = self.filter_end_marker(containers, end_marker)
|
||||
containers = filter_end_marker(containers, end_marker)
|
||||
|
||||
if containers and limit:
|
||||
if len(containers) > limit:
|
||||
containers = self.filter_limit(containers, limit)
|
||||
containers = filter_limit(containers, limit)
|
||||
|
||||
account_list = []
|
||||
if containers:
|
||||
|
|
Loading…
Reference in New Issue