Skip to content

Commit b3335b3

Browse files
committed
Do not set default versions in parsed args
Setting default versions in parsed args makes it so OCC cannot tell if the argument was parsed, an environment variable was set or it is just defaulted. In order to set api versions from OCC, it will have to be defaulted after processing OCC. Closes-Bug: #1453229 Change-Id: I4d065919397b783f3bdd4022c986c0234a7a16e6
1 parent fcadb16 commit b3335b3

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
@@ -297,7 +297,9 @@ def initialize_app(self, argv):
297297

298298
# Loop through extensions to get API versions
299299
for mod in clientmanager.PLUGIN_MODULES:
300-
version_opt = getattr(self.options, mod.API_VERSION_OPTION, None)
300+
default_version = getattr(mod, 'DEFAULT_API_VERSION', None)
301+
option = mod.API_VERSION_OPTION.replace('os_', '')
302+
version_opt = self.cloud.config.get(option, default_version)
301303
if version_opt:
302304
api = mod.API_NAME
303305
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)