Merge "Do not set default versions in parsed args"
This commit is contained in:
		@@ -75,6 +75,21 @@ List of Backwards Incompatible Changes
 | 
				
			|||||||
  * Bug: https://bugs.launchpad.net/python-openstackclient/+bug/472613
 | 
					  * Bug: https://bugs.launchpad.net/python-openstackclient/+bug/472613
 | 
				
			||||||
  * Commit: https://review.openstack.org/#/c/194654/
 | 
					  * Commit: https://review.openstack.org/#/c/194654/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					6. Plugin interface change for default API versions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Previously, the default version was set in the parsed arguments,
 | 
				
			||||||
 | 
					  but this makes it impossible to tell what has been passed in at the
 | 
				
			||||||
 | 
					  command line, set in an environment variable or is just the default.
 | 
				
			||||||
 | 
					  Now, the module should have a DEFAULT_API_VERSION that contains the
 | 
				
			||||||
 | 
					  value and it will be set after command line argument, environment
 | 
				
			||||||
 | 
					  and OCC file processing.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * In favor of: DEFAULT_API_VERSION
 | 
				
			||||||
 | 
					  * As of: 1.2.1
 | 
				
			||||||
 | 
					  * Removed in: NA
 | 
				
			||||||
 | 
					  * Bug: https://bugs.launchpad.net/python-openstackclient/+bug/1453229
 | 
				
			||||||
 | 
					  * Commit: https://review.openstack.org/#/c/181514/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
For Developers
 | 
					For Developers
 | 
				
			||||||
==============
 | 
					==============
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -83,7 +83,7 @@ so the version should not contain the leading 'v' character.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
.. code-block:: python
 | 
					.. code-block:: python
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    DEFAULT_OSCPLUGIN_API_VERSION = '1'
 | 
					    DEFAULT_API_VERSION = '1'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Required by the OSC plugin interface
 | 
					    # Required by the OSC plugin interface
 | 
				
			||||||
    API_NAME = 'oscplugin'
 | 
					    API_NAME = 'oscplugin'
 | 
				
			||||||
@@ -123,10 +123,7 @@ so the version should not contain the leading 'v' character.
 | 
				
			|||||||
        parser.add_argument(
 | 
					        parser.add_argument(
 | 
				
			||||||
            '--os-oscplugin-api-version',
 | 
					            '--os-oscplugin-api-version',
 | 
				
			||||||
            metavar='<oscplugin-api-version>',
 | 
					            metavar='<oscplugin-api-version>',
 | 
				
			||||||
            default=utils.env(
 | 
					 | 
				
			||||||
                'OS_OSCPLUGIN_API_VERSION',
 | 
					 | 
				
			||||||
                default=DEFAULT_OSCPLUGIN_API_VERSION),
 | 
					 | 
				
			||||||
            help='OSC Plugin API version, default=' +
 | 
					            help='OSC Plugin API version, default=' +
 | 
				
			||||||
                 DEFAULT_OSCPLUGIN_API_VERSION +
 | 
					                 DEFAULT_API_VERSION +
 | 
				
			||||||
                 ' (Env: OS_OSCPLUGIN_API_VERSION)')
 | 
					                 ' (Env: OS_OSCPLUGIN_API_VERSION)')
 | 
				
			||||||
        return parser
 | 
					        return parser
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,7 +19,7 @@ from openstackclient.common import utils
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
LOG = logging.getLogger(__name__)
 | 
					LOG = logging.getLogger(__name__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DEFAULT_COMPUTE_API_VERSION = '2'
 | 
					DEFAULT_API_VERSION = '2'
 | 
				
			||||||
API_VERSION_OPTION = 'os_compute_api_version'
 | 
					API_VERSION_OPTION = 'os_compute_api_version'
 | 
				
			||||||
API_NAME = 'compute'
 | 
					API_NAME = 'compute'
 | 
				
			||||||
API_VERSIONS = {
 | 
					API_VERSIONS = {
 | 
				
			||||||
@@ -68,10 +68,8 @@ def build_option_parser(parser):
 | 
				
			|||||||
    parser.add_argument(
 | 
					    parser.add_argument(
 | 
				
			||||||
        '--os-compute-api-version',
 | 
					        '--os-compute-api-version',
 | 
				
			||||||
        metavar='<compute-api-version>',
 | 
					        metavar='<compute-api-version>',
 | 
				
			||||||
        default=utils.env(
 | 
					        default=utils.env('OS_COMPUTE_API_VERSION'),
 | 
				
			||||||
            'OS_COMPUTE_API_VERSION',
 | 
					 | 
				
			||||||
            default=DEFAULT_COMPUTE_API_VERSION),
 | 
					 | 
				
			||||||
        help='Compute API version, default=' +
 | 
					        help='Compute API version, default=' +
 | 
				
			||||||
             DEFAULT_COMPUTE_API_VERSION +
 | 
					             DEFAULT_API_VERSION +
 | 
				
			||||||
             ' (Env: OS_COMPUTE_API_VERSION)')
 | 
					             ' (Env: OS_COMPUTE_API_VERSION)')
 | 
				
			||||||
    return parser
 | 
					    return parser
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,7 +21,7 @@ from openstackclient.common import utils
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
LOG = logging.getLogger(__name__)
 | 
					LOG = logging.getLogger(__name__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DEFAULT_IDENTITY_API_VERSION = '2'
 | 
					DEFAULT_API_VERSION = '2'
 | 
				
			||||||
API_VERSION_OPTION = 'os_identity_api_version'
 | 
					API_VERSION_OPTION = 'os_identity_api_version'
 | 
				
			||||||
API_NAME = 'identity'
 | 
					API_NAME = 'identity'
 | 
				
			||||||
API_VERSIONS = {
 | 
					API_VERSIONS = {
 | 
				
			||||||
@@ -63,11 +63,9 @@ def build_option_parser(parser):
 | 
				
			|||||||
    parser.add_argument(
 | 
					    parser.add_argument(
 | 
				
			||||||
        '--os-identity-api-version',
 | 
					        '--os-identity-api-version',
 | 
				
			||||||
        metavar='<identity-api-version>',
 | 
					        metavar='<identity-api-version>',
 | 
				
			||||||
        default=utils.env(
 | 
					        default=utils.env('OS_IDENTITY_API_VERSION'),
 | 
				
			||||||
            'OS_IDENTITY_API_VERSION',
 | 
					 | 
				
			||||||
            default=DEFAULT_IDENTITY_API_VERSION),
 | 
					 | 
				
			||||||
        help='Identity API version, default=' +
 | 
					        help='Identity API version, default=' +
 | 
				
			||||||
             DEFAULT_IDENTITY_API_VERSION +
 | 
					             DEFAULT_API_VERSION +
 | 
				
			||||||
             ' (Env: OS_IDENTITY_API_VERSION)')
 | 
					             ' (Env: OS_IDENTITY_API_VERSION)')
 | 
				
			||||||
    return auth.build_auth_plugins_option_parser(parser)
 | 
					    return auth.build_auth_plugins_option_parser(parser)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,7 +20,7 @@ from openstackclient.common import utils
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
LOG = logging.getLogger(__name__)
 | 
					LOG = logging.getLogger(__name__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DEFAULT_IMAGE_API_VERSION = '1'
 | 
					DEFAULT_API_VERSION = '1'
 | 
				
			||||||
API_VERSION_OPTION = 'os_image_api_version'
 | 
					API_VERSION_OPTION = 'os_image_api_version'
 | 
				
			||||||
API_NAME = "image"
 | 
					API_NAME = "image"
 | 
				
			||||||
API_VERSIONS = {
 | 
					API_VERSIONS = {
 | 
				
			||||||
@@ -81,10 +81,8 @@ def build_option_parser(parser):
 | 
				
			|||||||
    parser.add_argument(
 | 
					    parser.add_argument(
 | 
				
			||||||
        '--os-image-api-version',
 | 
					        '--os-image-api-version',
 | 
				
			||||||
        metavar='<image-api-version>',
 | 
					        metavar='<image-api-version>',
 | 
				
			||||||
        default=utils.env(
 | 
					        default=utils.env('OS_IMAGE_API_VERSION'),
 | 
				
			||||||
            'OS_IMAGE_API_VERSION',
 | 
					 | 
				
			||||||
            default=DEFAULT_IMAGE_API_VERSION),
 | 
					 | 
				
			||||||
        help='Image API version, default=' +
 | 
					        help='Image API version, default=' +
 | 
				
			||||||
             DEFAULT_IMAGE_API_VERSION +
 | 
					             DEFAULT_API_VERSION +
 | 
				
			||||||
             ' (Env: OS_IMAGE_API_VERSION)')
 | 
					             ' (Env: OS_IMAGE_API_VERSION)')
 | 
				
			||||||
    return parser
 | 
					    return parser
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,7 +18,7 @@ from openstackclient.common import utils
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
LOG = logging.getLogger(__name__)
 | 
					LOG = logging.getLogger(__name__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DEFAULT_NETWORK_API_VERSION = '2'
 | 
					DEFAULT_API_VERSION = '2'
 | 
				
			||||||
API_VERSION_OPTION = 'os_network_api_version'
 | 
					API_VERSION_OPTION = 'os_network_api_version'
 | 
				
			||||||
API_NAME = "network"
 | 
					API_NAME = "network"
 | 
				
			||||||
API_VERSIONS = {
 | 
					API_VERSIONS = {
 | 
				
			||||||
@@ -83,10 +83,8 @@ def build_option_parser(parser):
 | 
				
			|||||||
    parser.add_argument(
 | 
					    parser.add_argument(
 | 
				
			||||||
        '--os-network-api-version',
 | 
					        '--os-network-api-version',
 | 
				
			||||||
        metavar='<network-api-version>',
 | 
					        metavar='<network-api-version>',
 | 
				
			||||||
        default=utils.env(
 | 
					        default=utils.env('OS_NETWORK_API_VERSION'),
 | 
				
			||||||
            'OS_NETWORK_API_VERSION',
 | 
					 | 
				
			||||||
            default=DEFAULT_NETWORK_API_VERSION),
 | 
					 | 
				
			||||||
        help='Network API version, default=' +
 | 
					        help='Network API version, default=' +
 | 
				
			||||||
             DEFAULT_NETWORK_API_VERSION +
 | 
					             DEFAULT_API_VERSION +
 | 
				
			||||||
             ' (Env: OS_NETWORK_API_VERSION)')
 | 
					             ' (Env: OS_NETWORK_API_VERSION)')
 | 
				
			||||||
    return parser
 | 
					    return parser
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,7 +22,7 @@ from openstackclient.common import utils
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
LOG = logging.getLogger(__name__)
 | 
					LOG = logging.getLogger(__name__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DEFAULT_OBJECT_API_VERSION = '1'
 | 
					DEFAULT_API_VERSION = '1'
 | 
				
			||||||
API_VERSION_OPTION = 'os_object_api_version'
 | 
					API_VERSION_OPTION = 'os_object_api_version'
 | 
				
			||||||
API_NAME = 'object_store'
 | 
					API_NAME = 'object_store'
 | 
				
			||||||
API_VERSIONS = {
 | 
					API_VERSIONS = {
 | 
				
			||||||
@@ -52,10 +52,8 @@ def build_option_parser(parser):
 | 
				
			|||||||
    parser.add_argument(
 | 
					    parser.add_argument(
 | 
				
			||||||
        '--os-object-api-version',
 | 
					        '--os-object-api-version',
 | 
				
			||||||
        metavar='<object-api-version>',
 | 
					        metavar='<object-api-version>',
 | 
				
			||||||
        default=utils.env(
 | 
					        default=utils.env('OS_OBJECT_API_VERSION'),
 | 
				
			||||||
            'OS_OBJECT_API_VERSION',
 | 
					 | 
				
			||||||
            default=DEFAULT_OBJECT_API_VERSION),
 | 
					 | 
				
			||||||
        help='Object API version, default=' +
 | 
					        help='Object API version, default=' +
 | 
				
			||||||
             DEFAULT_OBJECT_API_VERSION +
 | 
					             DEFAULT_API_VERSION +
 | 
				
			||||||
             ' (Env: OS_OBJECT_API_VERSION)')
 | 
					             ' (Env: OS_OBJECT_API_VERSION)')
 | 
				
			||||||
    return parser
 | 
					    return parser
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -298,7 +298,9 @@ class OpenStackShell(app.App):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        # Loop through extensions to get API versions
 | 
					        # Loop through extensions to get API versions
 | 
				
			||||||
        for mod in clientmanager.PLUGIN_MODULES:
 | 
					        for mod in clientmanager.PLUGIN_MODULES:
 | 
				
			||||||
            version_opt = getattr(self.options, mod.API_VERSION_OPTION, None)
 | 
					            default_version = getattr(mod, 'DEFAULT_API_VERSION', None)
 | 
				
			||||||
 | 
					            option = mod.API_VERSION_OPTION.replace('os_', '')
 | 
				
			||||||
 | 
					            version_opt = self.cloud.config.get(option, default_version)
 | 
				
			||||||
            if version_opt:
 | 
					            if version_opt:
 | 
				
			||||||
                api = mod.API_NAME
 | 
					                api = mod.API_NAME
 | 
				
			||||||
                self.api_version[api] = version_opt
 | 
					                self.api_version[api] = version_opt
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -41,17 +41,17 @@ DEFAULT_SERVICE_URL = "http://127.0.0.1:8771/v3.0/"
 | 
				
			|||||||
DEFAULT_AUTH_PLUGIN = "v2password"
 | 
					DEFAULT_AUTH_PLUGIN = "v2password"
 | 
				
			||||||
DEFAULT_INTERFACE = "internal"
 | 
					DEFAULT_INTERFACE = "internal"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DEFAULT_COMPUTE_API_VERSION = "2"
 | 
					DEFAULT_COMPUTE_API_VERSION = ""
 | 
				
			||||||
DEFAULT_IDENTITY_API_VERSION = "2"
 | 
					DEFAULT_IDENTITY_API_VERSION = ""
 | 
				
			||||||
DEFAULT_IMAGE_API_VERSION = "2"
 | 
					DEFAULT_IMAGE_API_VERSION = ""
 | 
				
			||||||
DEFAULT_VOLUME_API_VERSION = "1"
 | 
					DEFAULT_VOLUME_API_VERSION = ""
 | 
				
			||||||
DEFAULT_NETWORK_API_VERSION = "2"
 | 
					DEFAULT_NETWORK_API_VERSION = ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LIB_COMPUTE_API_VERSION = "2"
 | 
					LIB_COMPUTE_API_VERSION = ""
 | 
				
			||||||
LIB_IDENTITY_API_VERSION = "2"
 | 
					LIB_IDENTITY_API_VERSION = ""
 | 
				
			||||||
LIB_IMAGE_API_VERSION = "1"
 | 
					LIB_IMAGE_API_VERSION = ""
 | 
				
			||||||
LIB_VOLUME_API_VERSION = "1"
 | 
					LIB_VOLUME_API_VERSION = ""
 | 
				
			||||||
LIB_NETWORK_API_VERSION = "2"
 | 
					LIB_NETWORK_API_VERSION = ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CLOUD_1 = {
 | 
					CLOUD_1 = {
 | 
				
			||||||
    'clouds': {
 | 
					    'clouds': {
 | 
				
			||||||
@@ -203,7 +203,9 @@ class TestShell(utils.TestCase):
 | 
				
			|||||||
        initialize_app().
 | 
					        initialize_app().
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.occ_get_one = mock.Mock("Test Shell")
 | 
					        cloud = mock.Mock(name="cloudy")
 | 
				
			||||||
 | 
					        cloud.config = {}
 | 
				
			||||||
 | 
					        self.occ_get_one = mock.Mock(return_value=cloud)
 | 
				
			||||||
        with mock.patch(
 | 
					        with mock.patch(
 | 
				
			||||||
                "os_client_config.config.OpenStackConfig.get_one_cloud",
 | 
					                "os_client_config.config.OpenStackConfig.get_one_cloud",
 | 
				
			||||||
                self.occ_get_one,
 | 
					                self.occ_get_one,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,7 +19,7 @@ from openstackclient.common import utils
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
LOG = logging.getLogger(__name__)
 | 
					LOG = logging.getLogger(__name__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DEFAULT_VOLUME_API_VERSION = '1'
 | 
					DEFAULT_API_VERSION = '1'
 | 
				
			||||||
API_VERSION_OPTION = 'os_volume_api_version'
 | 
					API_VERSION_OPTION = 'os_volume_api_version'
 | 
				
			||||||
API_NAME = "volume"
 | 
					API_NAME = "volume"
 | 
				
			||||||
API_VERSIONS = {
 | 
					API_VERSIONS = {
 | 
				
			||||||
@@ -72,10 +72,8 @@ def build_option_parser(parser):
 | 
				
			|||||||
    parser.add_argument(
 | 
					    parser.add_argument(
 | 
				
			||||||
        '--os-volume-api-version',
 | 
					        '--os-volume-api-version',
 | 
				
			||||||
        metavar='<volume-api-version>',
 | 
					        metavar='<volume-api-version>',
 | 
				
			||||||
        default=utils.env(
 | 
					        default=utils.env('OS_VOLUME_API_VERSION'),
 | 
				
			||||||
            'OS_VOLUME_API_VERSION',
 | 
					 | 
				
			||||||
            default=DEFAULT_VOLUME_API_VERSION),
 | 
					 | 
				
			||||||
        help='Volume API version, default=' +
 | 
					        help='Volume API version, default=' +
 | 
				
			||||||
             DEFAULT_VOLUME_API_VERSION +
 | 
					             DEFAULT_API_VERSION +
 | 
				
			||||||
             ' (Env: OS_VOLUME_API_VERSION)')
 | 
					             ' (Env: OS_VOLUME_API_VERSION)')
 | 
				
			||||||
    return parser
 | 
					    return parser
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user