summaryrefslogtreecommitdiff
path: root/openstackclient/common
diff options
context:
space:
mode:
authorRichard Theis <rtheis@us.ibm.com>2016-04-21 11:33:24 -0500
committerRichard Theis <rtheis@us.ibm.com>2016-04-21 11:33:24 -0500
commit27024d70af4756cb6e4b210b025ed7427541f773 (patch)
tree9917c28a6a973272866d68337165a0886bbb219f /openstackclient/common
parent0d3a06db1ce3871e4153255d21c9c9f6ac321030 (diff)
downloadpython-openstackclient-27024d70af4756cb6e4b210b025ed7427541f773.tar.gz
Support quota show for current project
The "os quota show" command "<project/class>" argument is now optional. If not specified, the user's current project is used. This allows non-admin users to show quotas for their current project. Change-Id: I602d4cc09c9d29ce84271eff78137f8810cb1a47 Closes-Bug: #1572733
Diffstat (limited to 'openstackclient/common')
-rw-r--r--openstackclient/common/quota.py29
1 files changed, 18 insertions, 11 deletions
diff --git a/openstackclient/common/quota.py b/openstackclient/common/quota.py
index b3d4c3b6..b497a44d 100644
--- a/openstackclient/common/quota.py
+++ b/openstackclient/common/quota.py
@@ -145,7 +145,8 @@ class ShowQuota(command.ShowOne):
parser.add_argument(
'project',
metavar='<project/class>',
- help='Show this project or class (name/ID)',
+ nargs='?',
+ help='Show quotas for this project or class (name or ID)',
)
type_group = parser.add_mutually_exclusive_group()
type_group.add_argument(
@@ -164,12 +165,22 @@ class ShowQuota(command.ShowOne):
)
return parser
+ def _get_project(self, parsed_args):
+ if parsed_args.project is not None:
+ identity_client = self.app.client_manager.identity
+ project = utils.find_resource(
+ identity_client.projects,
+ parsed_args.project,
+ ).id
+ elif self.app.client_manager.auth_ref:
+ # Get the project from the current auth
+ project = self.app.client_manager.auth_ref.project_id
+ else:
+ project = None
+ return project
+
def get_compute_volume_quota(self, client, parsed_args):
- identity_client = self.app.client_manager.identity
- project = utils.find_resource(
- identity_client.projects,
- parsed_args.project,
- ).id
+ project = self._get_project(parsed_args)
try:
if parsed_args.quota_class:
@@ -189,11 +200,7 @@ class ShowQuota(command.ShowOne):
if parsed_args.quota_class or parsed_args.default:
return {}
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
+ project = self._get_project(parsed_args)
return self.app.client_manager.network.get_quota(project)
else:
return {}