diff options
| author | Stephen Finucane <sfinucan@redhat.com> | 2022-09-23 18:16:53 +0100 |
|---|---|---|
| committer | Stephen Finucane <sfinucan@redhat.com> | 2022-09-30 12:40:18 +0100 |
| commit | 00e7019022585bc2be9aeb55eb40b1d04776ec22 (patch) | |
| tree | 7550b1deec255e7a079c0d86d9e77a23494d2ff7 /openstackclient/common | |
| parent | 04e68e0d5a49be93f79d6d71821ab8cd0b0ce589 (diff) | |
| download | python-openstackclient-00e7019022585bc2be9aeb55eb40b1d04776ec22.tar.gz | |
quota: Allow showing project-specific quotas
Add '--compute', '--network' and '--volume' options to the 'quota show'
command, along with a default '--all' option, allowing us to restrict
quotas shown to an individual service.
Change-Id: I122b765df01887b8d916ee6567ffb7768fcb4392
Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
Diffstat (limited to 'openstackclient/common')
| -rw-r--r-- | openstackclient/common/quota.py | 93 |
1 files changed, 67 insertions, 26 deletions
diff --git a/openstackclient/common/quota.py b/openstackclient/common/quota.py index b1491700..0504b152 100644 --- a/openstackclient/common/quota.py +++ b/openstackclient/common/quota.py @@ -739,6 +739,40 @@ class ShowQuota(command.Lister): default=False, help=_('Show details about quotas usage'), ) + service_group = parser.add_mutually_exclusive_group() + service_group.add_argument( + '--all', + action='store_const', + const='all', + dest='service', + default='all', + help=_('Show quotas for all services'), + ) + service_group.add_argument( + '--compute', + action='store_const', + const='compute', + dest='service', + default='all', + help=_('Show compute quota'), + ) + service_group.add_argument( + '--volume', + action='store_const', + const='volume', + dest='service', + default='all', + help=_('Show volume quota'), + ) + service_group.add_argument( + '--network', + action='store_const', + const='network', + dest='service', + default='all', + help=_('Show network quota'), + ) + return parser def take_action(self, parsed_args): @@ -748,32 +782,39 @@ class ShowQuota(command.Lister): project_info = get_project(self.app, parsed_args.project) project = project_info['id'] - # NOTE(dtroyer): These quota API calls do not validate the project or - # class arguments and return what appears to be the default quota - # values if the project or class does not exist. If this is determined - # to be the intended behaviour of the API we will validate the argument - # with Identity ourselves later. - compute_quota_info = get_compute_quotas( - self.app, - project, - detail=parsed_args.usage, - quota_class=parsed_args.quota_class, - default=parsed_args.default, - ) - volume_quota_info = get_volume_quotas( - self.app, - project, - detail=parsed_args.usage, - quota_class=parsed_args.quota_class, - default=parsed_args.default, - ) - network_quota_info = get_network_quotas( - self.app, - project, - detail=parsed_args.usage, - quota_class=parsed_args.quota_class, - default=parsed_args.default, - ) + compute_quota_info = {} + volume_quota_info = {} + network_quota_info = {} + + # NOTE(stephenfin): These quota API calls do not validate the project + # or class arguments and return what appears to be the default quota + # values if the project or class does not exist. This is expected + # behavior. However, we have already checked for the presence of the + # project above so it shouldn't be an issue. + if parsed_args.service in {'all', 'compute'}: + compute_quota_info = get_compute_quotas( + self.app, + project, + detail=parsed_args.usage, + quota_class=parsed_args.quota_class, + default=parsed_args.default, + ) + if parsed_args.service in {'all', 'volume'}: + volume_quota_info = get_volume_quotas( + self.app, + project, + detail=parsed_args.usage, + quota_class=parsed_args.quota_class, + default=parsed_args.default, + ) + if parsed_args.service in {'all', 'network'}: + network_quota_info = get_network_quotas( + self.app, + project, + detail=parsed_args.usage, + quota_class=parsed_args.quota_class, + default=parsed_args.default, + ) info = {} info.update(compute_quota_info) |
