Merge "Add support for showing account details"

This commit is contained in:
Jenkins 2015-10-05 21:54:13 +00:00 committed by Gerrit Code Review
commit a02e7c8355
4 changed files with 45 additions and 1 deletions
doc/source/command-objects
openstackclient
setup.cfg

@ -19,6 +19,16 @@ Set account 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
-------------

@ -411,6 +411,23 @@ class APIv1(api.BaseAPI):
# registered in the catalog
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(
self,
properties,
@ -433,3 +450,7 @@ class APIv1(api.BaseAPI):
if headers:
self.create("", headers=headers)
def _find_account_id(self):
url_parts = urlparse(self.endpoint)
return url_parts.path.split('/')[-1]

@ -13,10 +13,11 @@
"""Account v1 action implementations"""
import logging
from cliff import command
from cliff import show
import six
from openstackclient.common import parseractions
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):
"""Unset account properties"""

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