Skip to content

Commit de88853

Browse files
thomasgoirandstephenfin
authored andcommitted
Fix openstack quota show without cinder
Per this Debian bug [1], 'openstack quota show --default' fails when cinder is NOT installed. This is also true of other services. [1] https://bugs.debian.org/1109288 Change-Id: I361da44b9f1d09ba3a454632d41e2110a3815395 Signed-off-by: Svein-Erik Skjelbred <svein-erik@skjelbred.com> Signed-off-by: Thomas Goirand <zigo@debian.org> Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
1 parent 3c3ea30 commit de88853

File tree

2 files changed

+42
-5
lines changed

2 files changed

+42
-5
lines changed

openstackclient/common/quota.py

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -746,21 +746,32 @@ def take_action(self, parsed_args):
746746
# values if the project or class does not exist. This is expected
747747
# behavior. However, we have already checked for the presence of the
748748
# project above so it shouldn't be an issue.
749-
if parsed_args.service in {'all', 'compute'}:
749+
if parsed_args.service == 'compute' or (
750+
parsed_args.service == 'all'
751+
and self.app.client_manager.is_compute_endpoint_enabled()
752+
):
750753
compute_quota_info = get_compute_quotas(
751754
self.app,
752755
project,
753756
detail=parsed_args.usage,
754757
default=parsed_args.default,
755758
)
756-
if parsed_args.service in {'all', 'volume'}:
759+
760+
if parsed_args.service == 'volume' or (
761+
parsed_args.service == 'all'
762+
and self.app.client_manager.is_volume_endpoint_enabled()
763+
):
757764
volume_quota_info = get_volume_quotas(
758765
self.app,
759766
project,
760767
detail=parsed_args.usage,
761768
default=parsed_args.default,
762769
)
763-
if parsed_args.service in {'all', 'network'}:
770+
771+
if parsed_args.service == 'network' or (
772+
parsed_args.service == 'all'
773+
and self.app.client_manager.is_network_endpoint_enabled()
774+
):
764775
network_quota_info = get_network_quotas(
765776
self.app,
766777
project,
@@ -906,12 +917,18 @@ def take_action(self, parsed_args):
906917
)
907918

908919
# compute quotas
909-
if parsed_args.service in {'all', 'compute'}:
920+
if parsed_args.service == 'compute' or (
921+
parsed_args.service == 'all'
922+
and self.app.client_manager.is_compute_endpoint_enabled()
923+
):
910924
compute_client = self.app.client_manager.compute
911925
compute_client.revert_quota_set(project.id)
912926

913927
# volume quotas
914-
if parsed_args.service in {'all', 'volume'}:
928+
if parsed_args.service == 'volume' or (
929+
parsed_args.service == 'all'
930+
and self.app.client_manager.is_volume_endpoint_enabled()
931+
):
915932
volume_client = self.app.client_manager.sdk_connection.volume
916933
volume_client.revert_quota_set(project.id)
917934

openstackclient/tests/unit/common/test_quota.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1041,6 +1041,26 @@ def test_quota_show(self):
10411041
)
10421042
self.assertNotCalled(self.network_client.get_quota_default)
10431043

1044+
def test_quota_show__missing_services(self):
1045+
self.app.client_manager.compute_endpoint_enabled = False
1046+
self.app.client_manager.volume_endpoint_enabled = False
1047+
self.app.client_manager.network_endpoint_enabled = False
1048+
1049+
arglist = [
1050+
self.projects[0].name,
1051+
]
1052+
verifylist = [
1053+
('service', 'all'),
1054+
('project', self.projects[0].name),
1055+
]
1056+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
1057+
1058+
self.cmd.take_action(parsed_args)
1059+
1060+
self.compute_client.get_quota_set.assert_not_called()
1061+
self.volume_sdk_client.get_quota_set.assert_not_called()
1062+
self.network_client.get_quota.assert_not_called()
1063+
10441064
def test_quota_show__with_compute(self):
10451065
arglist = [
10461066
'--compute',

0 commit comments

Comments
 (0)