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='test_undercloud_current_dir.yaml',
|
||||||
playbook_dirname=PLAYBOOK_DIRNAME)
|
playbook_dirname=PLAYBOOK_DIRNAME)
|
||||||
|
|
||||||
|
@tripleo.skip_unless_undercloud_has_ansible(min_version=2.9)
|
||||||
def test_overcloud_openstack_auth(self):
|
def test_overcloud_openstack_auth(self):
|
||||||
tripleo.run_playbook_from_undercloud(
|
tripleo.run_playbook_from_undercloud(
|
||||||
playbook='test_overcloud_openstack_auth.yaml',
|
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
|
fetch_tripleo_inventary_file = _ansible.fetch_tripleo_inventary_file
|
||||||
skip_if_missing_tripleo_ansible_inventory = \
|
skip_if_missing_tripleo_ansible_inventory = \
|
||||||
_ansible.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
|
run_playbook_from_undercloud = _ansible.run_playbook_from_undercloud
|
||||||
|
|
||||||
find_overcloud_node = overcloud.find_overcloud_node
|
find_overcloud_node = overcloud.find_overcloud_node
|
||||||
|
@ -18,6 +18,8 @@ import io
|
|||||||
import os
|
import os
|
||||||
import typing
|
import typing
|
||||||
|
|
||||||
|
from oslo_log import log
|
||||||
|
|
||||||
import tobiko
|
import tobiko
|
||||||
from tobiko.shell import ansible
|
from tobiko.shell import ansible
|
||||||
from tobiko.shell import sh
|
from tobiko.shell import sh
|
||||||
@ -26,6 +28,9 @@ from tobiko.tripleo import _undercloud
|
|||||||
from tobiko.tripleo import _config
|
from tobiko.tripleo import _config
|
||||||
|
|
||||||
|
|
||||||
|
LOG = log.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def get_tripleo_ansible_inventory():
|
def get_tripleo_ansible_inventory():
|
||||||
inventory_file = get_tripleo_ansible_inventory_file()
|
inventory_file = get_tripleo_ansible_inventory_file()
|
||||||
with io.open(inventory_file, 'rb') as fd:
|
with io.open(inventory_file, 'rb') as fd:
|
||||||
@ -53,6 +58,34 @@ def get_tripleo_ansible_inventory_file() -> typing.Optional[str]:
|
|||||||
return None
|
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 = """
|
READ_TRIPLEO_ANSIBLE_INVENTORY_SCRIPT = """
|
||||||
source {undercloud_rcfile} || exit 1
|
source {undercloud_rcfile} || exit 1
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user