From fe5397031f42a9660637ea3dd6d0b7a44998aaea Mon Sep 17 00:00:00 2001 From: Graham Hayes Date: Tue, 29 Mar 2016 22:15:50 +0100 Subject: [PATCH] Add filtering to recordsets CLI Also cleaned up the display of records in the list view. Change-Id: I6d05dc387a9653c49bebb9d5f63282b8002ec32a --- designateclient/v2/cli/recordsets.py | 43 ++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/designateclient/v2/cli/recordsets.py b/designateclient/v2/cli/recordsets.py index 15c3d89..fc0f29a 100644 --- a/designateclient/v2/cli/recordsets.py +++ b/designateclient/v2/cli/recordsets.py @@ -31,6 +31,7 @@ def _format_recordset(recordset): # Remove unneeded fields for display output formatting recordset['records'] = "\n".join(recordset['records']) recordset.pop('links', None) + return recordset class ListRecordSetsCommand(lister.Lister): @@ -41,6 +42,19 @@ class ListRecordSetsCommand(lister.Lister): def get_parser(self, prog_name): parser = super(ListRecordSetsCommand, self).get_parser(prog_name) + parser.add_argument('--name', help="RecordSet Name", required=False) + parser.add_argument('--type', help="RecordSet Type", required=False) + parser.add_argument('--data', help="RecordSet Record Data", + required=False) + parser.add_argument('--ttl', help="Time To Live (Seconds)", + required=False) + parser.add_argument('--description', help="Description", + required=False) + parser.add_argument('--status', help="RecordSet Status", + required=False) + parser.add_argument('--action', help="RecordSet Action", + required=False) + parser.add_argument('zone_id', help="Zone ID") return parser @@ -48,11 +62,36 @@ class ListRecordSetsCommand(lister.Lister): def take_action(self, parsed_args): client = self.app.client_manager.dns + criterion = {} + if parsed_args.type is not None: + criterion["type"] = parsed_args.type + + if parsed_args.name is not None: + criterion["name"] = parsed_args.name + + if parsed_args.data is not None: + criterion["data"] = parsed_args.data + + if parsed_args.ttl is not None: + criterion["ttl"] = parsed_args.ttl + + if parsed_args.description is not None: + criterion["description"] = parsed_args.description + + if parsed_args.status is not None: + criterion["status"] = parsed_args.status + + if parsed_args.action is not None: + criterion["action"] = parsed_args.action + cols = self.columns - data = get_all(client.recordsets.list, args=[parsed_args.zone_id]) + data = get_all(client.recordsets.list, args=[parsed_args.zone_id], + criterion=criterion) + + for i, rs in enumerate(data): + data[i] = _format_recordset(rs) - six.moves.map(_format_recordset, data) return cols, (utils.get_item_properties(s, cols) for s in data)