diff options
| author | Richard Theis <rtheis@us.ibm.com> | 2015-12-21 16:17:34 -0600 |
|---|---|---|
| committer | Steve Martinelli <stevemar@ca.ibm.com> | 2016-02-02 02:02:53 +0000 |
| commit | 5d1a93362da1109a9f49c32c142a8a4df0a97a9e (patch) | |
| tree | e0ea53537bf4e78314b40e92466e5419fcabb682 /openstackclient | |
| parent | e9ff42eee73de147339c42bca90f777a8f40f5c1 (diff) | |
| download | python-openstackclient-5d1a93362da1109a9f49c32c142a8a4df0a97a9e.tar.gz | |
Fix showing network quotas for a project
The OpenStack SDK is now used for the network client. However,
the 'openstack quota show' command wasn't updated for the
client change. As a result, the command will fail to show
network quotas when a project name is specified. For example:
$ openstack quota show admin
'Proxy' object has no attribute 'show_quota'
This patch set fixes the command by using the OpenStack SDK
to get network quotas for a project.
Change-Id: I59a7b6780a7b80cd09e79d40d214751b25d3016e
Related-To: blueprint neutron-client
Closes-Bug: #1528249
Diffstat (limited to 'openstackclient')
| -rw-r--r-- | openstackclient/common/quota.py | 11 | ||||
| -rw-r--r-- | openstackclient/tests/common/test_quota.py | 25 | ||||
| -rw-r--r-- | openstackclient/tests/network/v2/fakes.py | 12 |
3 files changed, 37 insertions, 11 deletions
diff --git a/openstackclient/common/quota.py b/openstackclient/common/quota.py index 8a9b910f..56148790 100644 --- a/openstackclient/common/quota.py +++ b/openstackclient/common/quota.py @@ -196,10 +196,13 @@ class ShowQuota(show.ShowOne): def get_network_quota(self, parsed_args): if parsed_args.quota_class or parsed_args.default: return {} - service_catalog = self.app.client_manager.auth_ref.service_catalog - if 'network' in service_catalog.get_endpoints(): - network_client = self.app.client_manager.network - return network_client.show_quota(parsed_args.project)['quota'] + if self.app.client_manager.is_network_endpoint_enabled(): + identity_client = self.app.client_manager.identity + project = utils.find_resource( + identity_client.projects, + parsed_args.project, + ).id + return self.app.client_manager.network.get_quota(project) else: return {} diff --git a/openstackclient/tests/common/test_quota.py b/openstackclient/tests/common/test_quota.py index 485b8a8b..edf29c9b 100644 --- a/openstackclient/tests/common/test_quota.py +++ b/openstackclient/tests/common/test_quota.py @@ -214,13 +214,15 @@ class TestQuotaShow(TestQuota): loaded=True, ) - self.service_catalog_mock.get_endpoints.return_value = [ - fakes.FakeResource( - None, - copy.deepcopy(identity_fakes.ENDPOINT), - loaded=True, - ) - ] + fake_network_endpoint = fakes.FakeResource( + None, + copy.deepcopy(identity_fakes.ENDPOINT), + loaded=True, + ) + + self.service_catalog_mock.get_endpoints.return_value = { + 'network': fake_network_endpoint + } self.quotas_class_mock.get.return_value = FakeQuotaResource( None, @@ -244,6 +246,8 @@ class TestQuotaShow(TestQuota): endpoint=fakes.AUTH_URL, token=fakes.AUTH_TOKEN, ) + self.network = self.app.client_manager.network + self.network.get_quota = mock.Mock(return_value=network_fakes.QUOTA) self.cmd = quota.ShowQuota(self.app, None) @@ -260,6 +264,9 @@ class TestQuotaShow(TestQuota): self.cmd.take_action(parsed_args) self.quotas_mock.get.assert_called_with(identity_fakes.project_id) + self.volume_quotas_mock.get.assert_called_with( + identity_fakes.project_id) + self.network.get_quota.assert_called_with(identity_fakes.project_id) def test_quota_show_with_default(self): arglist = [ @@ -276,6 +283,8 @@ class TestQuotaShow(TestQuota): self.cmd.take_action(parsed_args) self.quotas_mock.defaults.assert_called_with(identity_fakes.project_id) + self.volume_quotas_mock.defaults.assert_called_with( + identity_fakes.project_id) def test_quota_show_with_class(self): arglist = [ @@ -293,3 +302,5 @@ class TestQuotaShow(TestQuota): self.quotas_class_mock.get.assert_called_with( identity_fakes.project_id) + self.volume_quotas_class_mock.get.assert_called_with( + identity_fakes.project_id) diff --git a/openstackclient/tests/network/v2/fakes.py b/openstackclient/tests/network/v2/fakes.py index 88370feb..4c862bd3 100644 --- a/openstackclient/tests/network/v2/fakes.py +++ b/openstackclient/tests/network/v2/fakes.py @@ -26,6 +26,18 @@ extension_updated = '2013-07-09T12:00:0-00:00' extension_alias = 'Dystopian' extension_links = '[{"href":''"https://github.com/os/network", "type"}]' +QUOTA = { + "subnet": 10, + "network": 10, + "floatingip": 50, + "subnetpool": -1, + "security_group_rule": 100, + "security_group": 10, + "router": 10, + "rbac_policy": -1, + "port": 50, +} + def create_extension(): extension = mock.Mock() |
