From fada471714cca0c2370ef9de3cd15928aa386535 Mon Sep 17 00:00:00 2001 From: suzhengwei Date: Fri, 3 Nov 2017 15:54:18 +0800 Subject: [PATCH] marker when retrive audit Change-Id: I72078850152e0ccf2abc0d35b06a5142df35c312 --- watcherclient/tests/unit/v1/test_audit.py | 21 +++++++++++++++++++ .../tests/unit/v1/test_audit_shell.py | 17 +++++++++++++++ watcherclient/v1/audit.py | 7 +++++-- watcherclient/v1/audit_shell.py | 7 +++++++ 4 files changed, 50 insertions(+), 2 deletions(-) diff --git a/watcherclient/tests/unit/v1/test_audit.py b/watcherclient/tests/unit/v1/test_audit.py index b4b755b..91c2110 100644 --- a/watcherclient/tests/unit/v1/test_audit.py +++ b/watcherclient/tests/unit/v1/test_audit.py @@ -145,6 +145,16 @@ fake_responses_strategy = { }, } +fake_responses_marker = { + '/v1/audits/?marker=5869da81-4876-4687-a1ed-12cd64cf53d9': + { + 'GET': ( + {}, + {"audits": [AUDIT2]} + ), + }, +} + class AuditManagerTest(testtools.TestCase): def setUp(self): @@ -229,6 +239,17 @@ class AuditManagerTest(testtools.TestCase): self.assertEqual(expect, self.api.calls) self.assertEqual(1, len(audits)) + def test_audits_list_marker(self): + self.api = utils.FakeAPI(fake_responses_marker) + self.mgr = watcherclient.v1.audit.AuditManager(self.api) + audits = self.mgr.list(marker=AUDIT1['uuid']) + expect = [ + ('GET', '/v1/audits/?marker=5869da81-4876-4687-a1ed-12cd64cf53d9', + {}, None), + ] + self.assertEqual(expect, self.api.calls) + self.assertEqual(1, len(audits)) + def test_audits_show(self): audit = self.mgr.get(AUDIT1['uuid']) expect = [ diff --git a/watcherclient/tests/unit/v1/test_audit_shell.py b/watcherclient/tests/unit/v1/test_audit_shell.py index f196b84..56942bb 100755 --- a/watcherclient/tests/unit/v1/test_audit_shell.py +++ b/watcherclient/tests/unit/v1/test_audit_shell.py @@ -172,6 +172,23 @@ class AuditShellTest(base.CommandTestCase): self.m_audit_mgr.list.assert_called_once_with(detail=False) + def test_do_audit_list_marker(self): + audit2 = resource.Audit(mock.Mock(), AUDIT_2) + self.m_audit_mgr.list.return_value = [audit2] + + exit_code, results = self.run_cmd( + 'audit list --marker 5869da81-4876-4687-a1ed-12cd64cf53d9') + + self.assertEqual(0, exit_code) + self.assertEqual( + [self.resource_as_dict(audit2, self.SHORT_LIST_FIELDS, + self.SHORT_LIST_FIELD_LABELS)], + results) + + self.m_audit_mgr.list.assert_called_once_with( + detail=False, + marker='5869da81-4876-4687-a1ed-12cd64cf53d9') + def test_do_audit_list_detail(self): audit1 = resource.Audit(mock.Mock(), AUDIT_1) audit2 = resource.Audit(mock.Mock(), AUDIT_2) diff --git a/watcherclient/v1/audit.py b/watcherclient/v1/audit.py index 81e0b5b..d2b9098 100644 --- a/watcherclient/v1/audit.py +++ b/watcherclient/v1/audit.py @@ -36,7 +36,8 @@ class AuditManager(base.Manager): return '/v1/audits/%s' % id if id else '/v1/audits' def list(self, audit_template=None, limit=None, sort_key=None, - sort_dir=None, detail=False, goal=None, strategy=None): + sort_dir=None, detail=False, goal=None, strategy=None, + marker=None): """Retrieve a list of audit. :param audit_template: Name of the audit template @@ -57,13 +58,15 @@ class AuditManager(base.Manager): :param detail: Optional, boolean whether to return detailed information about audits. + :param marker: Optional, UUID of the last audit in the previous page. + :returns: A list of audits. """ if limit is not None: limit = int(limit) - filters = utils.common_filters(limit, sort_key, sort_dir) + filters = utils.common_filters(limit, sort_key, sort_dir, marker) if audit_template is not None: filters.append('audit_template=%s' % audit_template) if goal is not None: diff --git a/watcherclient/v1/audit_shell.py b/watcherclient/v1/audit_shell.py index ce05937..3734fb6 100644 --- a/watcherclient/v1/audit_shell.py +++ b/watcherclient/v1/audit_shell.py @@ -88,6 +88,13 @@ class ListAudit(command.Lister): metavar='', choices=['asc', 'desc'], help=_('Sort direction: "asc" (the default) or "desc".')) + parser.add_argument( + '--marker', + dest='marker', + metavar='', + default=None, + help=_('UUID of the last audit in the previous page; ' + 'displays list of audits after "marker".')) return parser