Fix SDK Connection creation alternative to Profile
Do a dummy import to determine which SDK is installed (Pre/post merge). This solves the DevStack error "Cloud defaults was not found" in -tips jobs. Depends-On: Ia111f127fbdceac2afe20fd9d1fe032145cdd72c Change-Id: I60c2d418dd5a393eee2cc2a5c2fdebfffdabf2d3
This commit is contained in:
parent
396cde37a3
commit
1d914dd9ad
@ -14,10 +14,15 @@
|
||||
import logging
|
||||
|
||||
from openstack import connection
|
||||
|
||||
|
||||
# NOTE(dtroyer): Attempt an import to detect if the SDK installed is new
|
||||
# enough to not use Profile. If so, use that.
|
||||
try:
|
||||
from openstack import profile
|
||||
except ImportError:
|
||||
from openstack.config import loader as config # noqa
|
||||
profile = None
|
||||
except ImportError:
|
||||
from openstack import profile
|
||||
from osc_lib import utils
|
||||
|
||||
from openstackclient.i18n import _
|
||||
@ -39,7 +44,7 @@ def make_client(instance):
|
||||
if profile is None:
|
||||
# New SDK
|
||||
conn = connection.Connection(
|
||||
cloud_config=instance._cli_options,
|
||||
config=instance._cli_options,
|
||||
session=instance.session)
|
||||
else:
|
||||
prof = profile.Profile()
|
||||
|
@ -19,6 +19,16 @@ from openstackclient import shell
|
||||
from openstackclient.tests.unit.integ import base as test_base
|
||||
from openstackclient.tests.unit import test_shell
|
||||
|
||||
# NOTE(dtroyer): Attempt the import to detect if the SDK installed is new
|
||||
# enough to contain the os_client_config code. If so, use
|
||||
# that path for mocks.
|
||||
CONFIG_MOCK_BASE = "openstack.config.loader"
|
||||
try:
|
||||
from openstack.config import defaults # noqa
|
||||
except ImportError:
|
||||
# Fall back to os-client-config
|
||||
CONFIG_MOCK_BASE = "os_client_config.config"
|
||||
|
||||
|
||||
class TestIntegShellCliV2(test_base.TestInteg):
|
||||
|
||||
@ -389,8 +399,8 @@ class TestIntegShellCliPrecedenceOCC(test_base.TestInteg):
|
||||
test_shell.PUBLIC_1['public-clouds']['megadodo']['auth']['auth_url'] \
|
||||
= test_base.V3_AUTH_URL
|
||||
|
||||
@mock.patch("os_client_config.config.OpenStackConfig._load_vendor_file")
|
||||
@mock.patch("os_client_config.config.OpenStackConfig._load_config_file")
|
||||
@mock.patch(CONFIG_MOCK_BASE + ".OpenStackConfig._load_vendor_file")
|
||||
@mock.patch(CONFIG_MOCK_BASE + ".OpenStackConfig._load_config_file")
|
||||
def test_shell_args_precedence_1(self, config_mock, vendor_mock):
|
||||
"""Precedence run 1
|
||||
|
||||
@ -405,6 +415,7 @@ class TestIntegShellCliPrecedenceOCC(test_base.TestInteg):
|
||||
return ('file.yaml', copy.deepcopy(test_shell.PUBLIC_1))
|
||||
vendor_mock.side_effect = vendor_mock_return
|
||||
|
||||
print("CONFIG_MOCK_BASE=%s" % CONFIG_MOCK_BASE)
|
||||
_shell = shell.OpenStackShell()
|
||||
_shell.run(
|
||||
"--os-password qaz configuration show".split(),
|
||||
@ -458,8 +469,8 @@ class TestIntegShellCliPrecedenceOCC(test_base.TestInteg):
|
||||
# +env, +cli, +occ
|
||||
# see test_shell_args_precedence_2()
|
||||
|
||||
@mock.patch("os_client_config.config.OpenStackConfig._load_vendor_file")
|
||||
@mock.patch("os_client_config.config.OpenStackConfig._load_config_file")
|
||||
@mock.patch(CONFIG_MOCK_BASE + ".OpenStackConfig._load_vendor_file")
|
||||
@mock.patch(CONFIG_MOCK_BASE + ".OpenStackConfig._load_config_file")
|
||||
def test_shell_args_precedence_2(self, config_mock, vendor_mock):
|
||||
"""Precedence run 2
|
||||
|
||||
@ -474,6 +485,7 @@ class TestIntegShellCliPrecedenceOCC(test_base.TestInteg):
|
||||
return ('file.yaml', copy.deepcopy(test_shell.PUBLIC_1))
|
||||
vendor_mock.side_effect = vendor_mock_return
|
||||
|
||||
print("CONFIG_MOCK_BASE=%s" % CONFIG_MOCK_BASE)
|
||||
_shell = shell.OpenStackShell()
|
||||
_shell.run(
|
||||
"--os-username zarquon --os-password qaz "
|
||||
|
2
tox.ini
2
tox.ini
@ -61,7 +61,7 @@ commands =
|
||||
pip install -q -U -e "git+file://{toxinidir}/../keystoneauth#egg=keystoneauth"
|
||||
pip install -q -U -e "git+file://{toxinidir}/../osc-lib#egg=osc_lib"
|
||||
pip install -q -U -e "git+file://{toxinidir}/../os-client-config#egg=os_client_config"
|
||||
pip install -q -U -e "git+file://{toxinidir}/../python-openstacksdk#egg=openstacksdk"
|
||||
pip install -q -e "git+file://{toxinidir}/../python-openstacksdk#egg=openstacksdk"
|
||||
pip freeze
|
||||
ostestr {posargs}
|
||||
whitelist_externals = ostestr
|
||||
|
Loading…
x
Reference in New Issue
Block a user