Add support for showing account details

add the command `openstack account show` that lists details
about the object store account that the user authenticated
against.

Partial-Bug: #1501943

Change-Id: I1246dafee812b63a41d43be4e3598224364a2c11
This commit is contained in:
Steve Martinelli 2015-09-10 16:06:32 -05:00 committed by Lin Hua Cheng
parent a4483a0513
commit 4733fd0d3c
4 changed files with 45 additions and 1 deletions

View File

@ -19,6 +19,16 @@ Set account properties
Set a property on this account (repeat option to set multiple properties) Set a property on this account (repeat option to set multiple properties)
account show
------------
Display account details
.. program:: account show
.. code:: bash
os account show
account unset account unset
------------- -------------

View File

@ -411,6 +411,23 @@ class APIv1(api.BaseAPI):
# registered in the catalog # registered in the catalog
self.create("", headers=headers) self.create("", headers=headers)
def account_show(self):
"""Show account details"""
# NOTE(stevemar): Just a HEAD request to the endpoint already in the
# catalog should be enough.
response = self._request("HEAD", "")
data = {}
for k, v in response.headers.iteritems():
data[k] = v
# Map containers, bytes and objects a bit nicer
data['Containers'] = data.pop('x-account-container-count', None)
data['Objects'] = data.pop('x-account-object-count', None)
data['Bytes'] = data.pop('x-account-bytes-used', None)
# Add in Account info too
data['Account'] = self._find_account_id()
return data
def account_unset( def account_unset(
self, self,
properties, properties,
@ -433,3 +450,7 @@ class APIv1(api.BaseAPI):
if headers: if headers:
self.create("", headers=headers) self.create("", headers=headers)
def _find_account_id(self):
url_parts = urlparse(self.endpoint)
return url_parts.path.split('/')[-1]

View File

@ -13,10 +13,11 @@
"""Account v1 action implementations""" """Account v1 action implementations"""
import logging import logging
from cliff import command from cliff import command
from cliff import show
import six
from openstackclient.common import parseractions from openstackclient.common import parseractions
from openstackclient.common import utils from openstackclient.common import utils
@ -46,6 +47,17 @@ class SetAccount(command.Command):
) )
class ShowAccount(show.ShowOne):
"""Display account details"""
log = logging.getLogger(__name__ + '.ShowAccount')
@utils.log_method(log)
def take_action(self, parsed_args):
data = self.app.client_manager.object_store.account_show()
return zip(*sorted(six.iteritems(data)))
class UnsetAccount(command.Command): class UnsetAccount(command.Command):
"""Unset account properties""" """Unset account properties"""

View File

@ -332,6 +332,7 @@ openstack.network.v2 =
openstack.object_store.v1 = openstack.object_store.v1 =
account_set = openstackclient.object.v1.account:SetAccount account_set = openstackclient.object.v1.account:SetAccount
account_show = openstackclient.object.v1.account:ShowAccount
account_unset = openstackclient.object.v1.account:UnsetAccount account_unset = openstackclient.object.v1.account:UnsetAccount
container_create = openstackclient.object.v1.container:CreateContainer container_create = openstackclient.object.v1.container:CreateContainer
container_delete = openstackclient.object.v1.container:DeleteContainer container_delete = openstackclient.object.v1.container:DeleteContainer