Deprecate project usage list command

Rather than pointing the 'project usage list' entry point directly to
ListUsage, this makes a ListProjectUsage subclass to alias the desired
command and still allow for changing behaviour or issuing a deprecation
messages.  This implementation simply sets a new 'deprecated' attribute
in the command class that cliff will use to skip this command when
generating help output.

The actual skipping of the command in help output is dependant on
https://review.openstack.org/147349 merging in cliff, this review will
simply have no effect on help output until a version of cliff with
that update is present.

The deprecation message printed is somewhat generic until
https://review.openstack.org/147381 is merged in cliff.
Until that is merged, the deprecation message will not have the name
of the actual command given by the user in it, but rather the text
'this command'.

Closes-bug: #1406654
Change-Id: Ie08d4f88d71a660fca1862405351109cd0aa86b6
This commit is contained in:
Dean Troyer 2015-01-14 18:44:10 -06:00
parent 4a8a2fb27d
commit bc11c4d7d8
4 changed files with 30 additions and 12 deletions

View File

@ -18,7 +18,7 @@ List resource usage per project
.. option:: --start <start>
Usage range start date, ex 2012-01-20 (default: 4 weeks ago).
Usage range start date, ex 2012-01-20 (default: 4 weeks ago)
.. option:: --end <end>
@ -27,7 +27,7 @@ List resource usage per project
usage show
----------
Show resource usage for a single project.
Show resource usage for a single project
.. program:: usage show
.. code:: bash
@ -39,11 +39,11 @@ Show resource usage for a single project.
.. option:: --project <project>
Name or ID of project to show usage for.
Name or ID of project to show usage for
.. option:: --start <start>
Usage range start date, ex 2012-01-20 (default: 4 weeks ago).
Usage range start date, ex 2012-01-20 (default: 4 weeks ago)
.. option:: --end <end>

View File

@ -27,7 +27,7 @@ from openstackclient.common import utils
class ListUsage(lister.Lister):
"""List resource usage per project. """
"""List resource usage per project"""
log = logging.getLogger(__name__ + ".ListUsage")
@ -38,7 +38,7 @@ class ListUsage(lister.Lister):
metavar="<start>",
default=None,
help="Usage range start date, ex 2012-01-20"
" (default: 4 weeks ago)."
" (default: 4 weeks ago)"
)
parser.add_argument(
"--end",
@ -119,7 +119,7 @@ class ListUsage(lister.Lister):
class ShowUsage(show.ShowOne):
"""Show resource usage for a single project. """
"""Show resource usage for a single project"""
log = logging.getLogger(__name__ + ".ShowUsage")
@ -129,20 +129,20 @@ class ShowUsage(show.ShowOne):
"--project",
metavar="<project>",
default=None,
help="Name or ID of project to show usage for."
help="Name or ID of project to show usage for"
)
parser.add_argument(
"--start",
metavar="<start>",
default=None,
help="Usage range start date, ex 2012-01-20"
" (default: 4 weeks ago)."
" (default: 4 weeks ago)"
)
parser.add_argument(
"--end",
metavar="<end>",
default=None,
help="Usage range end date, ex 2012-01-20 (default: tomorrow)."
help="Usage range end date, ex 2012-01-20 (default: tomorrow)"
)
return parser
@ -188,3 +188,20 @@ class ShowUsage(show.ShowOne):
info['CPU Hours'] = float("%.2f" % usage.total_vcpus_usage)
info['Disk GB-Hours'] = float("%.2f" % usage.total_local_gb_usage)
return zip(*sorted(six.iteritems(info)))
# This is out of order due to the subclass, will eventually be removed
class ListProjectUsage(ListUsage):
"""List resource usage per project"""
deprecated = True
log = logging.getLogger('DEPRECATED:')
def take_action(self, parsed_args):
self.log.warning(
"%s is deprecated, use 'usage list'",
getattr(self, 'cmd_name', 'this command'),
)
return super(ListProjectUsage, self).take_action(parsed_args)

View File

@ -303,7 +303,8 @@ class OpenStackShell(app.App):
def prepare_to_run_command(self, cmd):
"""Set up auth and API versions"""
self.log.info(
'command: %s.%s',
'command: %s -> %s.%s',
getattr(cmd, 'cmd_name', '<none>'),
cmd.__class__.__module__,
cmd.__class__.__name__,
)

View File

@ -97,7 +97,7 @@ openstack.compute.v2 =
keypair_list = openstackclient.compute.v2.keypair:ListKeypair
keypair_show = openstackclient.compute.v2.keypair:ShowKeypair
project_usage_list = openstackclient.compute.v2.usage:ListUsage
project_usage_list = openstackclient.compute.v2.usage:ListProjectUsage
security_group_create = openstackclient.compute.v2.security_group:CreateSecurityGroup
security_group_delete = openstackclient.compute.v2.security_group:DeleteSecurityGroup