Merge "Add skip_unless_undercloud_has_ansible decorator"
This commit is contained in:
commit
e2022af3bc
@ -77,6 +77,7 @@ class PlaybookTest(testtools.TestCase):
|
||||
playbook='test_undercloud_current_dir.yaml',
|
||||
playbook_dirname=PLAYBOOK_DIRNAME)
|
||||
|
||||
@tripleo.skip_unless_undercloud_has_ansible(min_version=2.9)
|
||||
def test_overcloud_openstack_auth(self):
|
||||
tripleo.run_playbook_from_undercloud(
|
||||
playbook='test_overcloud_openstack_auth.yaml',
|
||||
|
@ -27,6 +27,8 @@ read_tripleo_ansible_inventory = _ansible.read_tripleo_ansible_inventory
|
||||
fetch_tripleo_inventary_file = _ansible.fetch_tripleo_inventary_file
|
||||
skip_if_missing_tripleo_ansible_inventory = \
|
||||
_ansible.skip_if_missing_tripleo_ansible_inventory
|
||||
skip_unless_undercloud_has_ansible = \
|
||||
_ansible.skip_unless_undercloud_has_ansible
|
||||
run_playbook_from_undercloud = _ansible.run_playbook_from_undercloud
|
||||
|
||||
find_overcloud_node = overcloud.find_overcloud_node
|
||||
|
@ -18,6 +18,8 @@ import io
|
||||
import os
|
||||
import typing
|
||||
|
||||
from oslo_log import log
|
||||
|
||||
import tobiko
|
||||
from tobiko.shell import ansible
|
||||
from tobiko.shell import sh
|
||||
@ -26,6 +28,9 @@ from tobiko.tripleo import _undercloud
|
||||
from tobiko.tripleo import _config
|
||||
|
||||
|
||||
LOG = log.getLogger(__name__)
|
||||
|
||||
|
||||
def get_tripleo_ansible_inventory():
|
||||
inventory_file = get_tripleo_ansible_inventory_file()
|
||||
with io.open(inventory_file, 'rb') as fd:
|
||||
@ -53,6 +58,34 @@ def get_tripleo_ansible_inventory_file() -> typing.Optional[str]:
|
||||
return None
|
||||
|
||||
|
||||
def skip_unless_undercloud_has_ansible(min_version: float = None):
|
||||
reason = ("Ansible not found on undercloud host "
|
||||
f"(min_version={min_version})")
|
||||
return tobiko.skip_unless(reason=reason,
|
||||
predicate=has_undercloud_ansible_version,
|
||||
min_version=min_version)
|
||||
|
||||
|
||||
def has_undercloud_ansible_version(min_version: float = None) -> bool:
|
||||
ssh_client = _undercloud.undercloud_ssh_client()
|
||||
try:
|
||||
output = sh.execute('ansible --version',
|
||||
ssh_client=ssh_client).stdout
|
||||
except sh.ShellCommandFailed:
|
||||
LOG.debug("Error getting ansible version", exc_info=1)
|
||||
return False
|
||||
|
||||
if min_version is not None:
|
||||
first_line = output.splitlines()[0]
|
||||
version_pair = first_line.split()[1].split('.', 2)[:2]
|
||||
version = float('.'.join(version_pair))
|
||||
if version < min_version:
|
||||
LOG.debug(f"Ansible version is < {min_version}:\n"
|
||||
f"{first_line}\n")
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
READ_TRIPLEO_ANSIBLE_INVENTORY_SCRIPT = """
|
||||
source {undercloud_rcfile} || exit 1
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user