From ecffc10b1613b6a9b5fbf75506675b1099f997c1 Mon Sep 17 00:00:00 2001 From: chenying Date: Wed, 14 Dec 2016 22:34:21 +0800 Subject: [PATCH] Support plan and date filter in the checkpoint list API Change-Id: Ice96a168bca9a26146c688147059c6b914f60b4c Partial-Bug: #1569657 --- karborclient/v1/shell.py | 38 ++++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/karborclient/v1/shell.py b/karborclient/v1/shell.py index b458812..28d4a3f 100644 --- a/karborclient/v1/shell.py +++ b/karborclient/v1/shell.py @@ -13,6 +13,7 @@ import argparse import os +from datetime import datetime from oslo_serialization import jsonutils from oslo_utils import uuidutils @@ -638,10 +639,18 @@ def _extract_extra_info(args): @utils.arg('provider_id', metavar='', help='ID of provider.') -@utils.arg('--status', - metavar='', +@utils.arg('--plan_id', + metavar='', default=None, - help='Filters results by a status. Default=None.') + help='Filters results by a plan_id. Default=None.') +@utils.arg('--start_date', + metavar='', + default=None, + help='Filters results by a start_date("%Y-%m-%d"). Default=None.') +@utils.arg('--end_date', + metavar='', + default=None, + help='Filters results by a end_date("%Y-%m-%d"). Default=None.') @utils.arg('--project_id', metavar='', default=None, @@ -673,9 +682,30 @@ def _extract_extra_info(args): 'Default=None.') % ', '.join(base.SORT_KEY_VALUES))) def do_checkpoint_list(cs, args): """Lists all checkpoints.""" + if args.plan_id is not None: + if not uuidutils.is_uuid_like(args.plan_id): + raise exceptions.CommandError('The plan_id must be a uuid') + + if args.start_date: + try: + datetime.strptime( + args.start_date, "%Y-%m-%d") + except (ValueError, SyntaxError): + raise exceptions.CommandError( + "The format of start_date should be %Y-%m-%d") + + if args.start_date: + try: + datetime.strptime( + args.end_date, "%Y-%m-%d") + except (ValueError, SyntaxError): + raise exceptions.CommandError( + "The format of end_date should be %Y-%m-%d") search_opts = { - 'status': args.status, + 'plan_id': args.plan_id, + 'start_date': args.start_date, + 'end_date': args.end_date, 'project_id': args.project_id, }