From 69fd808e205dc20aad56564b0d89f02ffba5a777 Mon Sep 17 00:00:00 2001 From: Dean Troyer Date: Fri, 14 Nov 2014 17:27:58 -0600 Subject: [PATCH] Liberalize version matching a bit For class-loading purposes we can just use the major version, so accept that. Only Identity and Compute were affected; Compute is included just to be pedantically complete. For command groups we also just use the major version so fix Compute and the version option handling. Change the internal default for Identity to a simple '2' so it is also consistent with the rest of the world. Then comes microversioning... Closes-Bug: #1292638 Change-Id: Ibaf823b31caa288a83de38d2c258860b128b87d8 --- openstackclient/compute/client.py | 1 + openstackclient/identity/client.py | 10 ++++++---- openstackclient/shell.py | 3 ++- openstackclient/tests/test_shell.py | 6 +++--- setup.cfg | 2 +- 5 files changed, 13 insertions(+), 9 deletions(-) diff --git a/openstackclient/compute/client.py b/openstackclient/compute/client.py index c87bbee7..3725350a 100644 --- a/openstackclient/compute/client.py +++ b/openstackclient/compute/client.py @@ -27,6 +27,7 @@ API_VERSION_OPTION = 'os_compute_api_version' API_NAME = 'compute' API_VERSIONS = { '1.1': 'novaclient.v1_1.client.Client', + '1': 'novaclient.v1_1.client.Client', '2': 'novaclient.v1_1.client.Client', } diff --git a/openstackclient/identity/client.py b/openstackclient/identity/client.py index 8050d120..daf24e12 100644 --- a/openstackclient/identity/client.py +++ b/openstackclient/identity/client.py @@ -15,23 +15,25 @@ import logging -from keystoneclient.v2_0 import client as identity_client_v2_0 +from keystoneclient.v2_0 import client as identity_client_v2 from openstackclient.api import auth from openstackclient.common import utils LOG = logging.getLogger(__name__) -DEFAULT_IDENTITY_API_VERSION = '2.0' +DEFAULT_IDENTITY_API_VERSION = '2' API_VERSION_OPTION = 'os_identity_api_version' API_NAME = 'identity' API_VERSIONS = { - '2.0': 'openstackclient.identity.client.IdentityClientv2_0', + '2.0': 'openstackclient.identity.client.IdentityClientv2', + '2': 'openstackclient.identity.client.IdentityClientv2', '3': 'keystoneclient.v3.client.Client', } # Translate our API version to auth plugin version prefix AUTH_VERSIONS = { '2.0': 'v2', + '2': 'v2', '3': 'v3', } @@ -66,7 +68,7 @@ def build_option_parser(parser): return auth.build_auth_plugins_option_parser(parser) -class IdentityClientv2_0(identity_client_v2_0.Client): +class IdentityClientv2(identity_client_v2.Client): """Tweak the earlier client class to deal with some changes""" def __getattr__(self, name): # Map v3 'projects' back to v2 'tenants' diff --git a/openstackclient/shell.py b/openstackclient/shell.py index 1198bae1..ac5556af 100644 --- a/openstackclient/shell.py +++ b/openstackclient/shell.py @@ -255,7 +255,8 @@ class OpenStackShell(app.App): if version_opt: api = mod.API_NAME self.api_version[api] = version_opt - version = '.v' + version_opt.replace('.', '_') + # Command groups deal only with major versions + version = '.v' + version_opt.replace('.', '_').split('_')[0] cmd_group = 'openstack.' + api.replace('-', '_') + version self.command_manager.add_command_group(cmd_group) self.log.debug( diff --git a/openstackclient/tests/test_shell.py b/openstackclient/tests/test_shell.py index 837a48af..8656d089 100644 --- a/openstackclient/tests/test_shell.py +++ b/openstackclient/tests/test_shell.py @@ -38,13 +38,13 @@ DEFAULT_AUTH_PLUGIN = "v2password" DEFAULT_COMPUTE_API_VERSION = "2" -DEFAULT_IDENTITY_API_VERSION = "2.0" -DEFAULT_IMAGE_API_VERSION = "v2" +DEFAULT_IDENTITY_API_VERSION = "2" +DEFAULT_IMAGE_API_VERSION = "2" DEFAULT_VOLUME_API_VERSION = "1" DEFAULT_NETWORK_API_VERSION = "2" LIB_COMPUTE_API_VERSION = "2" -LIB_IDENTITY_API_VERSION = "2.0" +LIB_IDENTITY_API_VERSION = "2" LIB_IMAGE_API_VERSION = "1" LIB_VOLUME_API_VERSION = "1" LIB_NETWORK_API_VERSION = "2" diff --git a/setup.cfg b/setup.cfg index e0cf5d1d..02b7751d 100644 --- a/setup.cfg +++ b/setup.cfg @@ -131,7 +131,7 @@ openstack.compute.v2 = server_unrescue = openstackclient.compute.v2.server:UnrescueServer server_unset = openstackclient.compute.v2.server:UnsetServer -openstack.identity.v2_0 = +openstack.identity.v2 = catalog_list = openstackclient.identity.v2_0.catalog:ListCatalog catalog_show = openstackclient.identity.v2_0.catalog:ShowCatalog