Skip to content

Commit 55d9eba

Browse files
Jenkinsopenstack-gerrit
authored andcommitted
Merge "Do not set default versions in parsed args"
2 parents 46cc7d1 + b3335b3 commit 55d9eba

10 files changed

Lines changed: 52 additions & 48 deletions

File tree

doc/source/backwards-incompatible.rst

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,21 @@ List of Backwards Incompatible Changes
7575
* Bug: https://bugs.launchpad.net/python-openstackclient/+bug/472613
7676
* Commit: https://review.openstack.org/#/c/194654/
7777

78+
6. Plugin interface change for default API versions
79+
80+
Previously, the default version was set in the parsed arguments,
81+
but this makes it impossible to tell what has been passed in at the
82+
command line, set in an environment variable or is just the default.
83+
Now, the module should have a DEFAULT_API_VERSION that contains the
84+
value and it will be set after command line argument, environment
85+
and OCC file processing.
86+
87+
* In favor of: DEFAULT_API_VERSION
88+
* As of: 1.2.1
89+
* Removed in: NA
90+
* Bug: https://bugs.launchpad.net/python-openstackclient/+bug/1453229
91+
* Commit: https://review.openstack.org/#/c/181514/
92+
7893
For Developers
7994
==============
8095

doc/source/plugins.rst

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ so the version should not contain the leading 'v' character.
8383

8484
.. code-block:: python
8585
86-
DEFAULT_OSCPLUGIN_API_VERSION = '1'
86+
DEFAULT_API_VERSION = '1'
8787
8888
# Required by the OSC plugin interface
8989
API_NAME = 'oscplugin'
@@ -123,10 +123,7 @@ so the version should not contain the leading 'v' character.
123123
parser.add_argument(
124124
'--os-oscplugin-api-version',
125125
metavar='<oscplugin-api-version>',
126-
default=utils.env(
127-
'OS_OSCPLUGIN_API_VERSION',
128-
default=DEFAULT_OSCPLUGIN_API_VERSION),
129126
help='OSC Plugin API version, default=' +
130-
DEFAULT_OSCPLUGIN_API_VERSION +
127+
DEFAULT_API_VERSION +
131128
' (Env: OS_OSCPLUGIN_API_VERSION)')
132129
return parser

openstackclient/compute/client.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
LOG = logging.getLogger(__name__)
2121

22-
DEFAULT_COMPUTE_API_VERSION = '2'
22+
DEFAULT_API_VERSION = '2'
2323
API_VERSION_OPTION = 'os_compute_api_version'
2424
API_NAME = 'compute'
2525
API_VERSIONS = {
@@ -68,10 +68,8 @@ def build_option_parser(parser):
6868
parser.add_argument(
6969
'--os-compute-api-version',
7070
metavar='<compute-api-version>',
71-
default=utils.env(
72-
'OS_COMPUTE_API_VERSION',
73-
default=DEFAULT_COMPUTE_API_VERSION),
71+
default=utils.env('OS_COMPUTE_API_VERSION'),
7472
help='Compute API version, default=' +
75-
DEFAULT_COMPUTE_API_VERSION +
73+
DEFAULT_API_VERSION +
7674
' (Env: OS_COMPUTE_API_VERSION)')
7775
return parser

openstackclient/identity/client.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
LOG = logging.getLogger(__name__)
2323

24-
DEFAULT_IDENTITY_API_VERSION = '2'
24+
DEFAULT_API_VERSION = '2'
2525
API_VERSION_OPTION = 'os_identity_api_version'
2626
API_NAME = 'identity'
2727
API_VERSIONS = {
@@ -63,11 +63,9 @@ def build_option_parser(parser):
6363
parser.add_argument(
6464
'--os-identity-api-version',
6565
metavar='<identity-api-version>',
66-
default=utils.env(
67-
'OS_IDENTITY_API_VERSION',
68-
default=DEFAULT_IDENTITY_API_VERSION),
66+
default=utils.env('OS_IDENTITY_API_VERSION'),
6967
help='Identity API version, default=' +
70-
DEFAULT_IDENTITY_API_VERSION +
68+
DEFAULT_API_VERSION +
7169
' (Env: OS_IDENTITY_API_VERSION)')
7270
return auth.build_auth_plugins_option_parser(parser)
7371

openstackclient/image/client.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
LOG = logging.getLogger(__name__)
2222

23-
DEFAULT_IMAGE_API_VERSION = '1'
23+
DEFAULT_API_VERSION = '1'
2424
API_VERSION_OPTION = 'os_image_api_version'
2525
API_NAME = "image"
2626
API_VERSIONS = {
@@ -81,10 +81,8 @@ def build_option_parser(parser):
8181
parser.add_argument(
8282
'--os-image-api-version',
8383
metavar='<image-api-version>',
84-
default=utils.env(
85-
'OS_IMAGE_API_VERSION',
86-
default=DEFAULT_IMAGE_API_VERSION),
84+
default=utils.env('OS_IMAGE_API_VERSION'),
8785
help='Image API version, default=' +
88-
DEFAULT_IMAGE_API_VERSION +
86+
DEFAULT_API_VERSION +
8987
' (Env: OS_IMAGE_API_VERSION)')
9088
return parser

openstackclient/network/client.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
LOG = logging.getLogger(__name__)
2020

21-
DEFAULT_NETWORK_API_VERSION = '2'
21+
DEFAULT_API_VERSION = '2'
2222
API_VERSION_OPTION = 'os_network_api_version'
2323
API_NAME = "network"
2424
API_VERSIONS = {
@@ -83,10 +83,8 @@ def build_option_parser(parser):
8383
parser.add_argument(
8484
'--os-network-api-version',
8585
metavar='<network-api-version>',
86-
default=utils.env(
87-
'OS_NETWORK_API_VERSION',
88-
default=DEFAULT_NETWORK_API_VERSION),
86+
default=utils.env('OS_NETWORK_API_VERSION'),
8987
help='Network API version, default=' +
90-
DEFAULT_NETWORK_API_VERSION +
88+
DEFAULT_API_VERSION +
9189
' (Env: OS_NETWORK_API_VERSION)')
9290
return parser

openstackclient/object/client.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
LOG = logging.getLogger(__name__)
2424

25-
DEFAULT_OBJECT_API_VERSION = '1'
25+
DEFAULT_API_VERSION = '1'
2626
API_VERSION_OPTION = 'os_object_api_version'
2727
API_NAME = 'object_store'
2828
API_VERSIONS = {
@@ -52,10 +52,8 @@ def build_option_parser(parser):
5252
parser.add_argument(
5353
'--os-object-api-version',
5454
metavar='<object-api-version>',
55-
default=utils.env(
56-
'OS_OBJECT_API_VERSION',
57-
default=DEFAULT_OBJECT_API_VERSION),
55+
default=utils.env('OS_OBJECT_API_VERSION'),
5856
help='Object API version, default=' +
59-
DEFAULT_OBJECT_API_VERSION +
57+
DEFAULT_API_VERSION +
6058
' (Env: OS_OBJECT_API_VERSION)')
6159
return parser

openstackclient/shell.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,9 @@ def initialize_app(self, argv):
298298

299299
# Loop through extensions to get API versions
300300
for mod in clientmanager.PLUGIN_MODULES:
301-
version_opt = getattr(self.options, mod.API_VERSION_OPTION, None)
301+
default_version = getattr(mod, 'DEFAULT_API_VERSION', None)
302+
option = mod.API_VERSION_OPTION.replace('os_', '')
303+
version_opt = self.cloud.config.get(option, default_version)
302304
if version_opt:
303305
api = mod.API_NAME
304306
self.api_version[api] = version_opt

openstackclient/tests/test_shell.py

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -41,17 +41,17 @@
4141
DEFAULT_AUTH_PLUGIN = "v2password"
4242
DEFAULT_INTERFACE = "internal"
4343

44-
DEFAULT_COMPUTE_API_VERSION = "2"
45-
DEFAULT_IDENTITY_API_VERSION = "2"
46-
DEFAULT_IMAGE_API_VERSION = "2"
47-
DEFAULT_VOLUME_API_VERSION = "1"
48-
DEFAULT_NETWORK_API_VERSION = "2"
49-
50-
LIB_COMPUTE_API_VERSION = "2"
51-
LIB_IDENTITY_API_VERSION = "2"
52-
LIB_IMAGE_API_VERSION = "1"
53-
LIB_VOLUME_API_VERSION = "1"
54-
LIB_NETWORK_API_VERSION = "2"
44+
DEFAULT_COMPUTE_API_VERSION = ""
45+
DEFAULT_IDENTITY_API_VERSION = ""
46+
DEFAULT_IMAGE_API_VERSION = ""
47+
DEFAULT_VOLUME_API_VERSION = ""
48+
DEFAULT_NETWORK_API_VERSION = ""
49+
50+
LIB_COMPUTE_API_VERSION = ""
51+
LIB_IDENTITY_API_VERSION = ""
52+
LIB_IMAGE_API_VERSION = ""
53+
LIB_VOLUME_API_VERSION = ""
54+
LIB_NETWORK_API_VERSION = ""
5555

5656
CLOUD_1 = {
5757
'clouds': {
@@ -203,7 +203,9 @@ def _assert_cloud_config_arg(self, cmd_options, default_args):
203203
initialize_app().
204204
"""
205205

206-
self.occ_get_one = mock.Mock("Test Shell")
206+
cloud = mock.Mock(name="cloudy")
207+
cloud.config = {}
208+
self.occ_get_one = mock.Mock(return_value=cloud)
207209
with mock.patch(
208210
"os_client_config.config.OpenStackConfig.get_one_cloud",
209211
self.occ_get_one,

openstackclient/volume/client.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
LOG = logging.getLogger(__name__)
2121

22-
DEFAULT_VOLUME_API_VERSION = '1'
22+
DEFAULT_API_VERSION = '1'
2323
API_VERSION_OPTION = 'os_volume_api_version'
2424
API_NAME = "volume"
2525
API_VERSIONS = {
@@ -72,10 +72,8 @@ def build_option_parser(parser):
7272
parser.add_argument(
7373
'--os-volume-api-version',
7474
metavar='<volume-api-version>',
75-
default=utils.env(
76-
'OS_VOLUME_API_VERSION',
77-
default=DEFAULT_VOLUME_API_VERSION),
75+
default=utils.env('OS_VOLUME_API_VERSION'),
7876
help='Volume API version, default=' +
79-
DEFAULT_VOLUME_API_VERSION +
77+
DEFAULT_API_VERSION +
8078
' (Env: OS_VOLUME_API_VERSION)')
8179
return parser

0 commit comments

Comments
 (0)