diff --git a/coriolisclient/cli/deployments.py b/coriolisclient/cli/deployments.py index 848adc9..c8edf61 100644 --- a/coriolisclient/cli/deployments.py +++ b/coriolisclient/cli/deployments.py @@ -284,14 +284,21 @@ def get_parser(self, prog_name): help='Comma-separated list of sort keys and directions in the ' 'form of [:]. The direction defaults to ' 'descending if not specified.') + parser.add_argument( + '--status', + help='Search by deployment status.') return parser def take_action(self, args): + filters = {} + if args.status: + filters["status"] = args.status sort_keys, sort_dirs = cli_utils.parse_sort_arg(args.sort) obj_list = self.app.client_manager.coriolis.deployments.list( marker=args.marker, limit=args.limit, sort_keys=sort_keys, sort_dirs=sort_dirs, + filters=filters, ) return DeploymentFormatter().list_objects(obj_list) diff --git a/coriolisclient/cli/transfer_executions.py b/coriolisclient/cli/transfer_executions.py index 442dcc3..86516ad 100644 --- a/coriolisclient/cli/transfer_executions.py +++ b/coriolisclient/cli/transfer_executions.py @@ -192,14 +192,22 @@ def get_parser(self, prog_name): help='Comma-separated list of sort keys and directions in the ' 'form of [:]. The direction defaults to ' 'descending if not specified.') + parser.add_argument( + '--status', + help='Search by execution status.') return parser def take_action(self, args): + filters = {} + if args.status: + filters["status"] = args.status sort_keys, sort_dirs = cli_utils.parse_sort_arg(args.sort) obj_list = self.app.client_manager.coriolis.transfer_executions.list( args.transfer, marker=args.marker, limit=args.limit, sort_keys=sort_keys, - sort_dirs=sort_dirs) + sort_dirs=sort_dirs, + filters=filters, + ) return TransferExecutionFormatter().list_objects(obj_list) diff --git a/coriolisclient/cli/transfers.py b/coriolisclient/cli/transfers.py index 7ff54ed..cf3f610 100644 --- a/coriolisclient/cli/transfers.py +++ b/coriolisclient/cli/transfers.py @@ -331,15 +331,22 @@ def get_parser(self, prog_name): help='Comma-separated list of sort keys and directions in the ' 'form of [:]. The direction defaults to ' 'descending if not specified.') + parser.add_argument( + '--status', + help='Search by transfer status.') return parser def take_action(self, args): + filters = {} + if args.status: + filters["status"] = args.status sort_keys, sort_dirs = cli_utils.parse_sort_arg(args.sort) obj_list = self.app.client_manager.coriolis.transfers.list( marker=args.marker, limit=args.limit, sort_keys=sort_keys, sort_dirs=sort_dirs, + filters=filters, ) return TransferFormatter().list_objects(obj_list) diff --git a/coriolisclient/tests/cli/test_deployments.py b/coriolisclient/tests/cli/test_deployments.py index 0aefa8a..345b94a 100644 --- a/coriolisclient/tests/cli/test_deployments.py +++ b/coriolisclient/tests/cli/test_deployments.py @@ -348,4 +348,5 @@ def test_take_action(self, mock_parse_sort_arg): limit=mock_args.limit, sort_keys=mock.sentinel.sort_keys, sort_dirs=mock.sentinel.sort_dirs, + filters={'status': mock_args.status}, ) diff --git a/coriolisclient/tests/cli/test_transfer_executions.py b/coriolisclient/tests/cli/test_transfer_executions.py index 9dab178..bc5ab65 100644 --- a/coriolisclient/tests/cli/test_transfer_executions.py +++ b/coriolisclient/tests/cli/test_transfer_executions.py @@ -446,6 +446,7 @@ def test_take_action( limit=args.limit, sort_keys=mock.sentinel.sort_keys, sort_dirs=mock.sentinel.sort_dirs, + filters={'status': args.status}, ) mock_list_objects.assert_called_once_with( mock_transfer_list.return_value) diff --git a/coriolisclient/tests/cli/test_transfers.py b/coriolisclient/tests/cli/test_transfers.py index 1ee4788..5c093f5 100644 --- a/coriolisclient/tests/cli/test_transfers.py +++ b/coriolisclient/tests/cli/test_transfers.py @@ -494,6 +494,7 @@ def test_take_action(self, mock_parse_sort_arg, mock_list_objects): limit=args.limit, sort_keys=mock.sentinel.sort_keys, sort_dirs=mock.sentinel.sort_dirs, + filters={'status': args.status}, ) diff --git a/coriolisclient/tests/v1/test_deployments.py b/coriolisclient/tests/v1/test_deployments.py index 307d1ae..fd81b61 100644 --- a/coriolisclient/tests/v1/test_deployments.py +++ b/coriolisclient/tests/v1/test_deployments.py @@ -85,6 +85,7 @@ def test_list_with_pagination(self): limit=mock.sentinel.limit, sort_keys=[mock.sentinel.sort_key0, mock.sentinel.sort_key1], sort_dirs=[mock.sentinel.sort_dir0, mock.sentinel.sort_dir1], + filters={"status": mock.sentinel.status}, ) exp_query = [ ("marker", mock.sentinel.marker), @@ -93,6 +94,7 @@ def test_list_with_pagination(self): ("sort_key", mock.sentinel.sort_key1), ("sort_dir", mock.sentinel.sort_dir0), ("sort_dir", mock.sentinel.sort_dir1), + ("status", mock.sentinel.status), ] self.assertEqual(mock_list.return_value, result) mock_list.assert_called_once_with( diff --git a/coriolisclient/tests/v1/test_transfer_executions.py b/coriolisclient/tests/v1/test_transfer_executions.py index 11b20a2..7f13f81 100644 --- a/coriolisclient/tests/v1/test_transfer_executions.py +++ b/coriolisclient/tests/v1/test_transfer_executions.py @@ -60,6 +60,7 @@ def test_list_with_pagination(self, mock_list): limit=mock.sentinel.limit, sort_keys=[mock.sentinel.sort_key0, mock.sentinel.sort_key1], sort_dirs=[mock.sentinel.sort_dir0, mock.sentinel.sort_dir1], + filters={"status": mock.sentinel.status}, ) exp_query = [ ("marker", mock.sentinel.marker), @@ -68,6 +69,7 @@ def test_list_with_pagination(self, mock_list): ("sort_key", mock.sentinel.sort_key1), ("sort_dir", mock.sentinel.sort_dir0), ("sort_dir", mock.sentinel.sort_dir1), + ("status", mock.sentinel.status), ] self.assertEqual( mock_list.return_value, diff --git a/coriolisclient/tests/v1/test_transfers.py b/coriolisclient/tests/v1/test_transfers.py index 7987678..94ec783 100644 --- a/coriolisclient/tests/v1/test_transfers.py +++ b/coriolisclient/tests/v1/test_transfers.py @@ -94,7 +94,9 @@ def test_list_with_pagination(self, mock_list): marker=mock.sentinel.marker, limit=mock.sentinel.limit, sort_keys=[mock.sentinel.sort_key0, mock.sentinel.sort_key1], - sort_dirs=[mock.sentinel.sort_dir0, mock.sentinel.sort_dir1],) + sort_dirs=[mock.sentinel.sort_dir0, mock.sentinel.sort_dir1], + filters={"status": mock.sentinel.status}, + ) exp_query = [ ("marker", mock.sentinel.marker), ("limit", mock.sentinel.limit), @@ -102,6 +104,7 @@ def test_list_with_pagination(self, mock_list): ("sort_key", mock.sentinel.sort_key1), ("sort_dir", mock.sentinel.sort_dir0), ("sort_dir", mock.sentinel.sort_dir1), + ("status", mock.sentinel.status) ] self.assertEqual( mock_list.return_value, diff --git a/coriolisclient/v1/deployments.py b/coriolisclient/v1/deployments.py index a13e9a4..cb6a380 100644 --- a/coriolisclient/v1/deployments.py +++ b/coriolisclient/v1/deployments.py @@ -54,7 +54,7 @@ def __init__(self, api): def list(self, detail=False, marker=None, limit=None, - sort_keys=None, sort_dirs=None): + sort_keys=None, sort_dirs=None, filters=None): query = [] if marker is not None: query.append(("marker", marker)) @@ -66,6 +66,8 @@ def list(self, detail=False, if sort_dirs is not None: query.extend(('sort_dir', sort_dir) for sort_dir in sort_dirs) + if filters: + query.extend((key, value) for key, value in filters.items()) path = "/deployments" if detail: diff --git a/coriolisclient/v1/transfer_executions.py b/coriolisclient/v1/transfer_executions.py index c11efe6..f1a7d4d 100644 --- a/coriolisclient/v1/transfer_executions.py +++ b/coriolisclient/v1/transfer_executions.py @@ -35,7 +35,7 @@ def __init__(self, api): super(TransferExecutionManager, self).__init__(api) def list(self, transfer, marker=None, limit=None, - sort_keys=None, sort_dirs=None): + sort_keys=None, sort_dirs=None, filters=None): # List of key-value tuples. query = [] if marker is not None: @@ -48,6 +48,8 @@ def list(self, transfer, marker=None, limit=None, if sort_dirs is not None: query.extend(('sort_dir', sort_dir) for sort_dir in sort_dirs) + if filters: + query.extend((key, value) for key, value in filters.items()) return self._list( '/transfers/%s/executions' % base.getid(transfer), 'executions', diff --git a/coriolisclient/v1/transfers.py b/coriolisclient/v1/transfers.py index 6a30da5..52c6ba1 100644 --- a/coriolisclient/v1/transfers.py +++ b/coriolisclient/v1/transfers.py @@ -48,7 +48,7 @@ def __init__(self, api): super(TransferManager, self).__init__(api) def list(self, detail=False, marker=None, limit=None, - sort_keys=None, sort_dirs=None): + sort_keys=None, sort_dirs=None, filters=None): # List of key-value tuples. query = [] if marker is not None: @@ -61,6 +61,8 @@ def list(self, detail=False, marker=None, limit=None, if sort_dirs is not None: query.extend(('sort_dir', sort_dir) for sort_dir in sort_dirs) + if filters: + query.extend((key, value) for key, value in filters.items()) path = "/transfers" if detail: