11# Copyright 2016 Cloudbase Solutions Srl
22# All Rights Reserved.
33
4+ import copy
45import uuid
56
67from oslo_config import cfg
@@ -281,6 +282,7 @@ def get_transfer_tasks_executions(context, transfer_id, include_tasks=False,
281282 limit = None ,
282283 sort_keys : list [str ] | None = None ,
283284 sort_dirs : list [str ] | None = None ,
285+ filters : dict | None = None ,
284286 to_dict = False ):
285287 q = _soft_delete_aware_query (context , models .TasksExecution )
286288 q = q .join (models .Transfer )
@@ -293,6 +295,13 @@ def get_transfer_tasks_executions(context, transfer_id, include_tasks=False,
293295
294296 q = q .filter (models .Transfer .id == transfer_id )
295297
298+ filters = copy .deepcopy (filters or {})
299+ if "status" in filters :
300+ status = filters .pop ("status" )
301+ q = q .filter (models .TasksExecution .status == status )
302+ if filters :
303+ raise ValueError ("Unsupported filters: %s" % filters )
304+
296305 sort_keys , sort_dirs = process_sort_params (
297306 sort_keys ,
298307 sort_dirs ,
@@ -458,6 +467,7 @@ def get_transfers(context,
458467 limit = None ,
459468 sort_keys : list [str ] | None = None ,
460469 sort_dirs : list [str ] | None = None ,
470+ filters : dict | None = None ,
461471 to_dict = False ):
462472 q = _soft_delete_aware_query (context , models .Transfer )
463473 if include_tasks_executions :
@@ -471,6 +481,13 @@ def get_transfers(context,
471481 q = q .filter (
472482 models .Transfer .project_id == context .project_id )
473483
484+ filters = copy .deepcopy (filters or {})
485+ if "status" in filters :
486+ status = filters .pop ("status" )
487+ q = q .filter (models .Transfer .last_execution_status == status )
488+ if filters :
489+ raise ValueError ("Unsupported filters: %s" % filters )
490+
474491 sort_keys , sort_dirs = process_sort_params (
475492 sort_keys ,
476493 sort_dirs ,
@@ -588,6 +605,7 @@ def get_deployments(context,
588605 limit = None ,
589606 sort_keys : list [str ] | None = None ,
590607 sort_dirs : list [str ] | None = None ,
608+ filters : dict | None = None ,
591609 to_dict = False ):
592610 q = _soft_delete_aware_query (context , models .Deployment )
593611 if include_tasks :
@@ -600,6 +618,13 @@ def get_deployments(context,
600618 if is_user_context (context ):
601619 q = q .filter_by (project_id = context .project_id )
602620
621+ filters = copy .deepcopy (filters or {})
622+ if "status" in filters :
623+ status = filters .pop ("status" )
624+ q = q .filter (models .Deployment .last_execution_status == status )
625+ if filters :
626+ raise ValueError ("Unsupported filters: %s" % filters )
627+
603628 sort_keys , sort_dirs = process_sort_params (
604629 sort_keys ,
605630 sort_dirs ,
0 commit comments