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
This commit is contained in:
Dean Troyer 2014-11-14 17:27:58 -06:00
parent f5a2811b65
commit 2b02beaa51
5 changed files with 13 additions and 9 deletions

View File

@ -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',
}

View File

@ -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'

View File

@ -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(

View File

@ -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"

View File

@ -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