Inject both paths for validations roles location

We're in a weird state with validations roles in different locations.
Let's reflect it in the variables.
Also, let's point to a valid "groups.yaml" location.

Closes-Bug: #1895507
Depends-On: https://review.opendev.org/#/c/752187/
Change-Id: Iee198b04f962a3a049515d7b70584f55413bba6f
(cherry picked from commit cbb798dde1)
This commit is contained in:
Cédric Jeanneret 2020-09-14 08:28:15 +02:00 committed by Mathieu Bultel
parent 72161e0a60
commit ae5832929f
3 changed files with 58 additions and 156 deletions

View File

@ -91,10 +91,8 @@ ENABLE_SSH_ADMIN_SSH_PORT_TIMEOUT = 600
ADDITIONAL_ARCHITECTURES = ['ppc64le']
DEFAULT_VALIDATIONS_BASEDIR = (
"/usr/share/ansible"
if os.path.exists("/usr/share/ansible/validation-playbooks")
else "/usr/share/openstack-tripleo-validations")
DEFAULT_VALIDATIONS_BASEDIR = "/usr/share/ansible"
DEFAULT_VALIDATIONS_LEGACY_BASEDIR = "/usr/share/openstack-tripleo-validations"
VALIDATIONS_LOG_BASEDIR = '/var/log/validations'
@ -104,14 +102,19 @@ ANSIBLE_INVENTORY = \
'/var/lib/mistral/overcloud/tripleo-ansible-inventory.yaml'
ANSIBLE_VALIDATION_DIR = (
"/usr/share/ansible/validation-playbooks"
if os.path.exists("/usr/share/ansible/validation-playbooks")
else "/usr/share/openstack-tripleo-validations/playbooks")
os.path.join(DEFAULT_VALIDATIONS_LEGACY_BASEDIR, 'playbooks')
if os.path.join(DEFAULT_VALIDATIONS_LEGACY_BASEDIR, 'playbooks')
else "/usr/share/ansible/validation-playbooks"
)
ANSIBLE_TRIPLEO_PLAYBOOKS = \
'/usr/share/ansible/tripleo-playbooks'
VALIDATION_GROUPS_INFO = '%s/groups.yaml' % DEFAULT_VALIDATIONS_BASEDIR
VALIDATION_GROUPS_INFO = (
'/usr/share/ansible/groups.yaml'
if os.path.exists('/usr/share/ansible/groups.yaml')
else os.path.join(DEFAULT_VALIDATIONS_LEGACY_BASEDIR, 'groups.yaml')
)
VALIDATION_GROUPS = ['no-op',
'openshift-on-openstack',

View File

@ -51,6 +51,32 @@ class TestRunAnsiblePlaybook(TestCase):
self.mock_log.warning = mock.MagicMock()
python_version = sys.version_info[0]
self.ansible_playbook_cmd = "ansible-playbook-%s" % (python_version)
self.env = os.environ.copy()
self.env['ANSIBLE_LIBRARY'] = \
('/root/.ansible/plugins/modules:'
'/usr/share/ansible/plugins/modules:'
'/usr/share/ansible/library:'
'/usr/share/openstack-tripleo-validations/library')
self.env['ANSIBLE_LOOKUP_PLUGINS'] = \
('root/.ansible/plugins/lookup:'
'/usr/share/ansible/plugins/lookup:'
'/usr/share/ansible/lookup_plugins:'
'/usr/share/openstack-tripleo-validations/lookup_plugins')
self.env['ANSIBLE_CALLBACK_PLUGINS'] = \
('~/.ansible/plugins/callback:'
'/usr/share/ansible/plugins/callback:'
'/usr/share/ansible/callback_plugins:'
'/usr/share/openstack-tripleo-validations/callback_plugins')
self.env['ANSIBLE_ROLES_PATH'] = \
('/root/.ansible/roles:'
'/usr/share/ansible/roles:'
'/etc/ansible/roles:'
'/usr/share/ansible/roles:'
'/usr/share/openstack-tripleo-validations/roles')
self.env['ANSIBLE_CONFIG'] = '/tmp/fooBar.cfg'
self.env['ANSIBLE_HOST_KEY_CHECKING'] = 'False'
self.env['ANSIBLE_LOG_PATH'] = '/tmp/ansible.log'
self.env['TRIPLEO_PLAN_NAME'] = 'overcloud'
@mock.patch('os.path.exists', return_value=False)
@mock.patch('tripleoclient.utils.run_command_and_log')
@ -74,29 +100,6 @@ class TestRunAnsiblePlaybook(TestCase):
mock_process.stdout.read.side_effect = ["Error\n"]
mock_run.return_value = mock_process
env = os.environ.copy()
env['ANSIBLE_LIBRARY'] = \
('/root/.ansible/plugins/modules:'
'/usr/share/ansible/plugins/modules:'
'/usr/share/openstack-tripleo-validations/library')
env['ANSIBLE_LOOKUP_PLUGINS'] = \
('root/.ansible/plugins/lookup:'
'/usr/share/ansible/plugins/lookup:'
'/usr/share/openstack-tripleo-validations/lookup_plugins')
env['ANSIBLE_CALLBACK_PLUGINS'] = \
('~/.ansible/plugins/callback:'
'/usr/share/ansible/plugins/callback:'
'/usr/share/openstack-tripleo-validations/callback_plugins')
env['ANSIBLE_ROLES_PATH'] = \
('/root/.ansible/roles:'
'/usr/share/ansible/roles:'
'/etc/ansible/roles:'
'/usr/share/openstack-tripleo-validations/roles')
env['ANSIBLE_CONFIG'] = '/tmp/fooBar.cfg'
env['ANSIBLE_HOST_KEY_CHECKING'] = 'False'
env['ANSIBLE_LOG_PATH'] = '/tmp/ansible.log'
env['TRIPLEO_PLAN_NAME'] = 'overcloud'
self.assertRaises(RuntimeError,
utils.run_ansible_playbook,
self.mock_log,
@ -110,7 +113,7 @@ class TestRunAnsiblePlaybook(TestCase):
'-i', 'localhost,', '-v',
'-c', 'smart',
'/tmp/existing.yaml'],
env=env)
env=self.env)
@mock.patch('os.path.isabs')
@mock.patch('os.path.exists', return_value=False)
@ -135,36 +138,13 @@ class TestRunAnsiblePlaybook(TestCase):
self.mock_log, '/tmp', 'existing.yaml', 'localhost,')
mock_exists.assert_called_once_with('/tmp/existing.yaml')
env = os.environ.copy()
env['ANSIBLE_LIBRARY'] = \
('/root/.ansible/plugins/modules:'
'/usr/share/ansible/plugins/modules:'
'/usr/share/openstack-tripleo-validations/library')
env['ANSIBLE_LOOKUP_PLUGINS'] = \
('root/.ansible/plugins/lookup:'
'/usr/share/ansible/plugins/lookup:'
'/usr/share/openstack-tripleo-validations/lookup_plugins')
env['ANSIBLE_CALLBACK_PLUGINS'] = \
('~/.ansible/plugins/callback:'
'/usr/share/ansible/plugins/callback:'
'/usr/share/openstack-tripleo-validations/callback_plugins')
env['ANSIBLE_ROLES_PATH'] = \
('/root/.ansible/roles:'
'/usr/share/ansible/roles:'
'/etc/ansible/roles:'
'/usr/share/openstack-tripleo-validations/roles')
env['ANSIBLE_CONFIG'] = '/tmp/fooBar.cfg'
env['ANSIBLE_HOST_KEY_CHECKING'] = 'False'
env['ANSIBLE_LOG_PATH'] = '/tmp/ansible.log'
env['TRIPLEO_PLAN_NAME'] = 'overcloud'
mock_run.assert_called_once_with(self.mock_log,
[self.ansible_playbook_cmd,
'-u', 'root',
'-i', 'localhost,', '-v',
'-c', 'smart',
'/tmp/existing.yaml'],
env=env)
env=self.env)
@mock.patch('os.path.isabs')
@mock.patch('os.path.exists', return_value=True)
@ -180,41 +160,18 @@ class TestRunAnsiblePlaybook(TestCase):
ansible_config='/tmp/foo.cfg')
mock_isabs.assert_called_once_with('/tmp/foo.cfg')
self.env['ANSIBLE_CONFIG'] = '/tmp/foo.cfg'
exist_calls = [mock.call('/tmp/foo.cfg'),
mock.call('/tmp/existing.yaml')]
mock_exists.assert_has_calls(exist_calls, any_order=False)
env = os.environ.copy()
env['ANSIBLE_LIBRARY'] = \
('/root/.ansible/plugins/modules:'
'/usr/share/ansible/plugins/modules:'
'/usr/share/openstack-tripleo-validations/library')
env['ANSIBLE_LOOKUP_PLUGINS'] = \
('root/.ansible/plugins/lookup:'
'/usr/share/ansible/plugins/lookup:'
'/usr/share/openstack-tripleo-validations/lookup_plugins')
env['ANSIBLE_CALLBACK_PLUGINS'] = \
('~/.ansible/plugins/callback:'
'/usr/share/ansible/plugins/callback:'
'/usr/share/openstack-tripleo-validations/callback_plugins')
env['ANSIBLE_ROLES_PATH'] = \
('/root/.ansible/roles:'
'/usr/share/ansible/roles:'
'/etc/ansible/roles:'
'/usr/share/openstack-tripleo-validations/roles')
env['ANSIBLE_CONFIG'] = '/tmp/foo.cfg'
env['ANSIBLE_HOST_KEY_CHECKING'] = 'False'
env['ANSIBLE_LOG_PATH'] = '/tmp/ansible.log'
env['TRIPLEO_PLAN_NAME'] = 'overcloud'
mock_run.assert_called_once_with(self.mock_log,
[self.ansible_playbook_cmd,
'-u', 'root',
'-i', 'localhost,', '-v',
'-c', 'smart',
'/tmp/existing.yaml'],
env=env)
env=self.env)
@mock.patch('tempfile.mkstemp', return_value=('foo', '/tmp/fooBar.cfg'))
@mock.patch('os.path.exists', return_value=True)
@ -230,28 +187,6 @@ class TestRunAnsiblePlaybook(TestCase):
'localhost,',
connection='local')
mock_exists.assert_called_once_with('/tmp/existing.yaml')
env = os.environ.copy()
env['ANSIBLE_LIBRARY'] = \
('/root/.ansible/plugins/modules:'
'/usr/share/ansible/plugins/modules:'
'/usr/share/openstack-tripleo-validations/library')
env['ANSIBLE_LOOKUP_PLUGINS'] = \
('root/.ansible/plugins/lookup:'
'/usr/share/ansible/plugins/lookup:'
'/usr/share/openstack-tripleo-validations/lookup_plugins')
env['ANSIBLE_CALLBACK_PLUGINS'] = \
('~/.ansible/plugins/callback:'
'/usr/share/ansible/plugins/callback:'
'/usr/share/openstack-tripleo-validations/callback_plugins')
env['ANSIBLE_ROLES_PATH'] = \
('/root/.ansible/roles:'
'/usr/share/ansible/roles:'
'/etc/ansible/roles:'
'/usr/share/openstack-tripleo-validations/roles')
env['ANSIBLE_CONFIG'] = '/tmp/fooBar.cfg'
env['ANSIBLE_HOST_KEY_CHECKING'] = 'False'
env['ANSIBLE_LOG_PATH'] = '/tmp/ansible.log'
env['TRIPLEO_PLAN_NAME'] = 'overcloud'
mock_run.assert_called_once_with(self.mock_log,
[self.ansible_playbook_cmd,
@ -259,7 +194,7 @@ class TestRunAnsiblePlaybook(TestCase):
'-i', 'localhost,', '-v',
'-c', 'local',
'/tmp/existing.yaml'],
env=env)
env=self.env)
@mock.patch('tempfile.mkstemp', return_value=('foo', '/tmp/fooBar.cfg'))
@mock.patch('os.path.exists', return_value=True)
@ -275,29 +210,8 @@ class TestRunAnsiblePlaybook(TestCase):
'localhost,',
gathering_policy='explicit')
mock_exists.assert_called_once_with('/tmp/existing.yaml')
env = os.environ.copy()
env['ANSIBLE_LIBRARY'] = \
('/root/.ansible/plugins/modules:'
'/usr/share/ansible/plugins/modules:'
'/usr/share/openstack-tripleo-validations/library')
env['ANSIBLE_LOOKUP_PLUGINS'] = \
('root/.ansible/plugins/lookup:'
'/usr/share/ansible/plugins/lookup:'
'/usr/share/openstack-tripleo-validations/lookup_plugins')
env['ANSIBLE_CALLBACK_PLUGINS'] = \
('~/.ansible/plugins/callback:'
'/usr/share/ansible/plugins/callback:'
'/usr/share/openstack-tripleo-validations/callback_plugins')
env['ANSIBLE_ROLES_PATH'] = \
('/root/.ansible/roles:'
'/usr/share/ansible/roles:'
'/etc/ansible/roles:'
'/usr/share/openstack-tripleo-validations/roles')
env['ANSIBLE_CONFIG'] = '/tmp/fooBar.cfg'
env['ANSIBLE_HOST_KEY_CHECKING'] = 'False'
env['ANSIBLE_LOG_PATH'] = '/tmp/ansible.log'
env['TRIPLEO_PLAN_NAME'] = 'overcloud'
env['ANSIBLE_GATHERING'] = 'explicit'
self.env['TRIPLEO_PLAN_NAME'] = 'overcloud'
self.env['ANSIBLE_GATHERING'] = 'explicit'
mock_run.assert_called_once_with(self.mock_log,
[self.ansible_playbook_cmd,
@ -305,7 +219,7 @@ class TestRunAnsiblePlaybook(TestCase):
'-i', 'localhost,', '-v',
'-c', 'smart',
'/tmp/existing.yaml'],
env=env)
env=self.env)
@mock.patch('tempfile.mkstemp', return_value=('foo', '/tmp/fooBar.cfg'))
@mock.patch('os.path.exists', return_value=True)
@ -325,29 +239,6 @@ class TestRunAnsiblePlaybook(TestCase):
extra_vars=arglist)
mock_exists.assert_called_once_with('/tmp/existing.yaml')
env = os.environ.copy()
env['ANSIBLE_LIBRARY'] = \
('/root/.ansible/plugins/modules:'
'/usr/share/ansible/plugins/modules:'
'/usr/share/openstack-tripleo-validations/library')
env['ANSIBLE_LOOKUP_PLUGINS'] = \
('root/.ansible/plugins/lookup:'
'/usr/share/ansible/plugins/lookup:'
'/usr/share/openstack-tripleo-validations/lookup_plugins')
env['ANSIBLE_CALLBACK_PLUGINS'] = \
('~/.ansible/plugins/callback:'
'/usr/share/ansible/plugins/callback:'
'/usr/share/openstack-tripleo-validations/callback_plugins')
env['ANSIBLE_ROLES_PATH'] = \
('/root/.ansible/roles:'
'/usr/share/ansible/roles:'
'/etc/ansible/roles:'
'/usr/share/openstack-tripleo-validations/roles')
env['ANSIBLE_CONFIG'] = '/tmp/fooBar.cfg'
env['ANSIBLE_HOST_KEY_CHECKING'] = 'False'
env['ANSIBLE_LOG_PATH'] = '/tmp/ansible.log'
env['TRIPLEO_PLAN_NAME'] = 'overcloud'
mock_run.assert_called_once_with(
self.mock_log, [
self.ansible_playbook_cmd, '-u', 'root',
@ -355,7 +246,7 @@ class TestRunAnsiblePlaybook(TestCase):
'--extra-vars', '%s' % arglist,
'-c', 'smart', '/tmp/existing.yaml'
],
env=env)
env=self.env)
class TestRunCommandAndLog(TestCase):

View File

@ -270,20 +270,28 @@ def run_ansible_playbook(logger,
env['ANSIBLE_LIBRARY'] = \
('/root/.ansible/plugins/modules:'
'/usr/share/ansible/plugins/modules:'
'%s/library' % constants.DEFAULT_VALIDATIONS_BASEDIR)
'{}/library:{}/library'.format(
constants.DEFAULT_VALIDATIONS_BASEDIR,
constants.DEFAULT_VALIDATIONS_LEGACY_BASEDIR))
env['ANSIBLE_LOOKUP_PLUGINS'] = \
('root/.ansible/plugins/lookup:'
'/usr/share/ansible/plugins/lookup:'
'%s/lookup_plugins' % constants.DEFAULT_VALIDATIONS_BASEDIR)
'{}/lookup_plugins:{}/lookup_plugins'.format(
constants.DEFAULT_VALIDATIONS_BASEDIR,
constants.DEFAULT_VALIDATIONS_LEGACY_BASEDIR))
env['ANSIBLE_CALLBACK_PLUGINS'] = \
('~/.ansible/plugins/callback:'
'/usr/share/ansible/plugins/callback:'
'%s/callback_plugins' % constants.DEFAULT_VALIDATIONS_BASEDIR)
'{}/callback_plugins:{}/callback_plugins'.format(
constants.DEFAULT_VALIDATIONS_BASEDIR,
constants.DEFAULT_VALIDATIONS_LEGACY_BASEDIR))
env['ANSIBLE_ROLES_PATH'] = \
('/root/.ansible/roles:'
'/usr/share/ansible/roles:'
'/etc/ansible/roles:'
'%s/roles' % constants.DEFAULT_VALIDATIONS_BASEDIR)
'{}/roles:{}/roles'.format(
constants.DEFAULT_VALIDATIONS_BASEDIR,
constants.DEFAULT_VALIDATIONS_LEGACY_BASEDIR))
env['TRIPLEO_PLAN_NAME'] = plan