diff options
| author | Pavlo Shchelokovskyy <shchelokovskyy@gmail.com> | 2019-02-27 14:21:08 +0200 |
|---|---|---|
| committer | Pavlo Shchelokovskyy <shchelokovskyy@gmail.com> | 2019-02-28 20:27:04 +0200 |
| commit | c79de8a90bc1f1149b8302052580e5a76876724c (patch) | |
| tree | 03c74b3621bbab5479f37cf6fb7fc9749f1b7bf1 /openstackclient/tests/unit/compute | |
| parent | 55cbbbe4692002e58120b0c129eb2add4f0bc18a (diff) | |
| download | python-openstackclient-c79de8a90bc1f1149b8302052580e5a76876724c.tar.gz | |
Paginate over usage list to return all usages
since nova api 2.40 the os-simple-tenant-usage API supports pagination
and will by default return a number of entities configured internally in
Nova.
This means that when there are many enough projects,
the single call to usage.list() will not return usages for all projects.
This patch effectively copy-pastes the logic to paginate over usage list
results from novaclient/v2/shell.py code.
Change-Id: I1b639fe386b7b7db3223f6965495094b9d51533a
Story: #2005099
Task: #29713
Diffstat (limited to 'openstackclient/tests/unit/compute')
| -rw-r--r-- | openstackclient/tests/unit/compute/v2/fakes.py | 1 | ||||
| -rw-r--r-- | openstackclient/tests/unit/compute/v2/test_usage.py | 26 |
2 files changed, 27 insertions, 0 deletions
diff --git a/openstackclient/tests/unit/compute/v2/fakes.py b/openstackclient/tests/unit/compute/v2/fakes.py index 234bbd9b..38f4ff67 100644 --- a/openstackclient/tests/unit/compute/v2/fakes.py +++ b/openstackclient/tests/unit/compute/v2/fakes.py @@ -1304,6 +1304,7 @@ class FakeUsage(object): 'local_gb': 1, 'memory_mb': 512, 'name': 'usage-name-' + uuid.uuid4().hex, + 'instance_id': uuid.uuid4().hex, 'state': 'active', 'uptime': 3600, 'vcpus': 1 diff --git a/openstackclient/tests/unit/compute/v2/test_usage.py b/openstackclient/tests/unit/compute/v2/test_usage.py index a7aa1374..76dcc963 100644 --- a/openstackclient/tests/unit/compute/v2/test_usage.py +++ b/openstackclient/tests/unit/compute/v2/test_usage.py @@ -14,6 +14,7 @@ import datetime import mock +from novaclient import api_versions from openstackclient.compute.v2 import usage from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes @@ -104,6 +105,31 @@ class TestUsageList(TestUsage): self.assertEqual(self.columns, columns) self.assertEqual(tuple(self.data), tuple(data)) + def test_usage_list_with_pagination(self): + arglist = [] + verifylist = [ + ('start', None), + ('end', None), + ] + + self.app.client_manager.compute.api_version = api_versions.APIVersion( + '2.40') + self.usage_mock.list.reset_mock() + self.usage_mock.list.side_effect = [self.usages, []] + + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + columns, data = self.cmd.take_action(parsed_args) + + self.projects_mock.list.assert_called_with() + self.usage_mock.list.assert_has_calls([ + mock.call(mock.ANY, mock.ANY, detailed=True), + mock.call(mock.ANY, mock.ANY, detailed=True, + marker=self.usages[0]['server_usages'][0]['instance_id']) + ]) + self.assertEqual(self.columns, columns) + self.assertEqual(tuple(self.data), tuple(data)) + class TestUsageShow(TestUsage): |
