From bc11c4d7d8fef1d8eef3bb8f5fa18e27b9ea2964 Mon Sep 17 00:00:00 2001 From: Dean Troyer Date: Wed, 14 Jan 2015 18:44:10 -0600 Subject: [PATCH] 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 --- doc/source/command-objects/usage.rst | 8 ++++---- openstackclient/compute/v2/usage.py | 29 ++++++++++++++++++++++------ openstackclient/shell.py | 3 ++- setup.cfg | 2 +- 4 files changed, 30 insertions(+), 12 deletions(-) diff --git a/doc/source/command-objects/usage.rst b/doc/source/command-objects/usage.rst index 551176c700..0c866086dd 100644 --- a/doc/source/command-objects/usage.rst +++ b/doc/source/command-objects/usage.rst @@ -18,7 +18,7 @@ List resource usage per project .. option:: --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 @@ -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 - Name or ID of project to show usage for. + Name or ID of project to show usage for .. option:: --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 diff --git a/openstackclient/compute/v2/usage.py b/openstackclient/compute/v2/usage.py index 308241cf25..31b90c229d 100644 --- a/openstackclient/compute/v2/usage.py +++ b/openstackclient/compute/v2/usage.py @@ -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="", 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="", 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="", default=None, help="Usage range start date, ex 2012-01-20" - " (default: 4 weeks ago)." + " (default: 4 weeks ago)" ) parser.add_argument( "--end", metavar="", 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) diff --git a/openstackclient/shell.py b/openstackclient/shell.py index ac5556affa..246f51b177 100644 --- a/openstackclient/shell.py +++ b/openstackclient/shell.py @@ -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', ''), cmd.__class__.__module__, cmd.__class__.__name__, ) diff --git a/setup.cfg b/setup.cfg index 224b4c6434..de80ea76fb 100644 --- a/setup.cfg +++ b/setup.cfg @@ -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