From f10bba4043147004e922e36c8a4fb1ea27b767db Mon Sep 17 00:00:00 2001 From: Rich Megginson Date: Thu, 4 Jan 2024 09:54:50 -0700 Subject: [PATCH] ci: Use supported ansible-lint action; run ansible-lint against the collection The old ansible-community ansible-lint is deprecated. There is a new ansible-lint github action. The new ansible-lint has several checks related to ansible-test and the ignore files. Many of our ignore settings are not allowed any more and are required to be fixed or addressed in the Ansible preferred way. The python imports have to be wrapped in a try/except ImportError, and where possible, an error must be returned from the module explaining what was not able to be imported. The module documentation must comply with the Ansible standards. Because the module code uses mypy, we have to tell ansible-test to ignore some code with `compile-2.7!skip` and `import-x.y!skip`, which ansible-lint does not like, so we have to add ``` skip_list: - sanity[cannot-ignore] ``` to make ansible-lint happy. The latest Ansible repo gating tests run ansible-lint against the collection format instead of against individual roles. We have to convert the role to collection format before running ansible-test. Role developers can run this locally using `tox -e collection,ansible-lint-collection` See https://github.com/linux-system-roles/tox-lsr/pull/125 Add `---` doc start to .markdownlint.yaml Get rid of tests_include_vars_from_parent.yml - does not work anymore Signed-off-by: Rich Megginson --- .ansible-lint | 1 + .markdownlint.yaml | 1 + .sanity-ansible-ignore-2.13.txt | 33 +++++------- .sanity-ansible-ignore-2.14.txt | 38 ++++++-------- .sanity-ansible-ignore-2.15.txt | 38 ++++++-------- .sanity-ansible-ignore-2.16.txt | 35 +++++-------- library/pcs_api_v2.py | 21 +++++++- library/pcs_qdevice_certs.py | 20 ++++++- .../ha_cluster_lsr/pcs_api_v2_utils.py | 50 ++++++++++++++---- tasks/shell_pcs/sbd.yml | 4 +- tests/roles/caller/tasks/main.yml | 10 ---- tests/roles/caller/vars/main.yml | 4 -- tests/tests_include_vars_from_parent.yml | 52 ------------------- tox.ini | 6 +++ 14 files changed, 146 insertions(+), 167 deletions(-) delete mode 100644 tests/roles/caller/tasks/main.yml delete mode 100644 tests/roles/caller/vars/main.yml delete mode 100644 tests/tests_include_vars_from_parent.yml diff --git a/.ansible-lint b/.ansible-lint index 8ff1ec7e..8c6a6746 100644 --- a/.ansible-lint +++ b/.ansible-lint @@ -15,6 +15,7 @@ kinds: skip_list: - fqcn-builtins - var-naming[no-role-prefix] + - sanity[cannot-ignore] exclude_paths: - tests/roles/ - .github/ diff --git a/.markdownlint.yaml b/.markdownlint.yaml index 4f8a9799..6bf4ccd9 100644 --- a/.markdownlint.yaml +++ b/.markdownlint.yaml @@ -1,3 +1,4 @@ +--- # Default state for all rules default: true diff --git a/.sanity-ansible-ignore-2.13.txt b/.sanity-ansible-ignore-2.13.txt index 608d7700..ebe4703e 100644 --- a/.sanity-ansible-ignore-2.13.txt +++ b/.sanity-ansible-ignore-2.13.txt @@ -1,31 +1,22 @@ +plugins/modules/pcs_api_v2.py validate-modules:missing-gplv3-license +plugins/modules/pcs_qdevice_certs.py validate-modules:missing-gplv3-license +tests/ha_cluster/unit/test_pcs_api_v2.py shebang!skip +tests/ha_cluster/unit/test_pcs_qdevice_certs.py shebang!skip plugins/modules/pcs_api_v2.py compile-2.7!skip plugins/modules/pcs_api_v2.py import-2.7!skip -plugins/modules/pcs_api_v2.py import-3.5!skip plugins/modules/pcs_api_v2.py import-3.6!skip plugins/modules/pcs_api_v2.py import-3.7!skip plugins/modules/pcs_api_v2.py import-3.8!skip -plugins/modules/pcs_api_v2.py import-3.9!skip -plugins/modules/pcs_api_v2.py import-3.10!skip -plugins/modules/pcs_api_v2.py validate-modules:import-error -plugins/modules/pcs_api_v2.py validate-modules:missing-gplv3-license +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-2.7!skip +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.6!skip +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.7!skip +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.8!skip +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py compile-2.7!skip +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py compile-3.6!skip +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py compile-3.7!skip +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py compile-3.8!skip plugins/modules/pcs_qdevice_certs.py compile-2.7!skip plugins/modules/pcs_qdevice_certs.py import-2.7!skip -plugins/modules/pcs_qdevice_certs.py import-3.5!skip plugins/modules/pcs_qdevice_certs.py import-3.6!skip plugins/modules/pcs_qdevice_certs.py import-3.7!skip plugins/modules/pcs_qdevice_certs.py import-3.8!skip -plugins/modules/pcs_qdevice_certs.py import-3.9!skip -plugins/modules/pcs_qdevice_certs.py import-3.10!skip -plugins/modules/pcs_qdevice_certs.py validate-modules:import-error -plugins/modules/pcs_qdevice_certs.py validate-modules:missing-gplv3-license -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py compile-2.7!skip -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py compile-3.5!skip -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-2.7!skip -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.5!skip -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.6!skip -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.7!skip -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.8!skip -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.9!skip -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.10!skip -tests/ha_cluster/unit/test_pcs_api_v2.py shebang!skip -tests/ha_cluster/unit/test_pcs_qdevice_certs.py shebang!skip diff --git a/.sanity-ansible-ignore-2.14.txt b/.sanity-ansible-ignore-2.14.txt index 60eb30b5..33afc64e 100644 --- a/.sanity-ansible-ignore-2.14.txt +++ b/.sanity-ansible-ignore-2.14.txt @@ -1,34 +1,28 @@ +plugins/modules/pcs_api_v2.py validate-modules:missing-gplv3-license +plugins/modules/pcs_qdevice_certs.py validate-modules:missing-gplv3-license +tests/ha_cluster/unit/test_pcs_api_v2.py shebang!skip +tests/ha_cluster/unit/test_pcs_qdevice_certs.py shebang!skip plugins/modules/pcs_api_v2.py compile-2.7!skip +plugins/modules/pcs_api_v2.py compile-3.5!skip plugins/modules/pcs_api_v2.py import-2.7!skip plugins/modules/pcs_api_v2.py import-3.5!skip plugins/modules/pcs_api_v2.py import-3.6!skip plugins/modules/pcs_api_v2.py import-3.7!skip plugins/modules/pcs_api_v2.py import-3.8!skip -plugins/modules/pcs_api_v2.py import-3.9!skip -plugins/modules/pcs_api_v2.py import-3.10!skip -plugins/modules/pcs_api_v2.py import-3.11!skip -plugins/modules/pcs_api_v2.py validate-modules:import-error -plugins/modules/pcs_api_v2.py validate-modules:missing-gplv3-license +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-2.7!skip +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.5!skip +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.6!skip +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.7!skip +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.8!skip +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py compile-2.7!skip +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py compile-3.5!skip +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py compile-3.6!skip +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py compile-3.7!skip +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py compile-3.8!skip plugins/modules/pcs_qdevice_certs.py compile-2.7!skip +plugins/modules/pcs_qdevice_certs.py compile-3.5!skip plugins/modules/pcs_qdevice_certs.py import-2.7!skip plugins/modules/pcs_qdevice_certs.py import-3.5!skip plugins/modules/pcs_qdevice_certs.py import-3.6!skip plugins/modules/pcs_qdevice_certs.py import-3.7!skip plugins/modules/pcs_qdevice_certs.py import-3.8!skip -plugins/modules/pcs_qdevice_certs.py import-3.9!skip -plugins/modules/pcs_qdevice_certs.py import-3.10!skip -plugins/modules/pcs_qdevice_certs.py import-3.11!skip -plugins/modules/pcs_qdevice_certs.py validate-modules:import-error -plugins/modules/pcs_qdevice_certs.py validate-modules:missing-gplv3-license -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py compile-2.7!skip -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py compile-3.5!skip -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-2.7!skip -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.5!skip -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.6!skip -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.7!skip -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.8!skip -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.9!skip -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.10!skip -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.11!skip -tests/ha_cluster/unit/test_pcs_api_v2.py shebang!skip -tests/ha_cluster/unit/test_pcs_qdevice_certs.py shebang!skip diff --git a/.sanity-ansible-ignore-2.15.txt b/.sanity-ansible-ignore-2.15.txt index 60eb30b5..33afc64e 100644 --- a/.sanity-ansible-ignore-2.15.txt +++ b/.sanity-ansible-ignore-2.15.txt @@ -1,34 +1,28 @@ +plugins/modules/pcs_api_v2.py validate-modules:missing-gplv3-license +plugins/modules/pcs_qdevice_certs.py validate-modules:missing-gplv3-license +tests/ha_cluster/unit/test_pcs_api_v2.py shebang!skip +tests/ha_cluster/unit/test_pcs_qdevice_certs.py shebang!skip plugins/modules/pcs_api_v2.py compile-2.7!skip +plugins/modules/pcs_api_v2.py compile-3.5!skip plugins/modules/pcs_api_v2.py import-2.7!skip plugins/modules/pcs_api_v2.py import-3.5!skip plugins/modules/pcs_api_v2.py import-3.6!skip plugins/modules/pcs_api_v2.py import-3.7!skip plugins/modules/pcs_api_v2.py import-3.8!skip -plugins/modules/pcs_api_v2.py import-3.9!skip -plugins/modules/pcs_api_v2.py import-3.10!skip -plugins/modules/pcs_api_v2.py import-3.11!skip -plugins/modules/pcs_api_v2.py validate-modules:import-error -plugins/modules/pcs_api_v2.py validate-modules:missing-gplv3-license +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-2.7!skip +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.5!skip +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.6!skip +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.7!skip +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.8!skip +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py compile-2.7!skip +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py compile-3.5!skip +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py compile-3.6!skip +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py compile-3.7!skip +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py compile-3.8!skip plugins/modules/pcs_qdevice_certs.py compile-2.7!skip +plugins/modules/pcs_qdevice_certs.py compile-3.5!skip plugins/modules/pcs_qdevice_certs.py import-2.7!skip plugins/modules/pcs_qdevice_certs.py import-3.5!skip plugins/modules/pcs_qdevice_certs.py import-3.6!skip plugins/modules/pcs_qdevice_certs.py import-3.7!skip plugins/modules/pcs_qdevice_certs.py import-3.8!skip -plugins/modules/pcs_qdevice_certs.py import-3.9!skip -plugins/modules/pcs_qdevice_certs.py import-3.10!skip -plugins/modules/pcs_qdevice_certs.py import-3.11!skip -plugins/modules/pcs_qdevice_certs.py validate-modules:import-error -plugins/modules/pcs_qdevice_certs.py validate-modules:missing-gplv3-license -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py compile-2.7!skip -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py compile-3.5!skip -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-2.7!skip -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.5!skip -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.6!skip -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.7!skip -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.8!skip -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.9!skip -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.10!skip -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.11!skip -tests/ha_cluster/unit/test_pcs_api_v2.py shebang!skip -tests/ha_cluster/unit/test_pcs_qdevice_certs.py shebang!skip diff --git a/.sanity-ansible-ignore-2.16.txt b/.sanity-ansible-ignore-2.16.txt index 0445e070..ebe4703e 100644 --- a/.sanity-ansible-ignore-2.16.txt +++ b/.sanity-ansible-ignore-2.16.txt @@ -1,33 +1,22 @@ +plugins/modules/pcs_api_v2.py validate-modules:missing-gplv3-license +plugins/modules/pcs_qdevice_certs.py validate-modules:missing-gplv3-license +tests/ha_cluster/unit/test_pcs_api_v2.py shebang!skip +tests/ha_cluster/unit/test_pcs_qdevice_certs.py shebang!skip plugins/modules/pcs_api_v2.py compile-2.7!skip plugins/modules/pcs_api_v2.py import-2.7!skip plugins/modules/pcs_api_v2.py import-3.6!skip plugins/modules/pcs_api_v2.py import-3.7!skip plugins/modules/pcs_api_v2.py import-3.8!skip -plugins/modules/pcs_api_v2.py import-3.9!skip -plugins/modules/pcs_api_v2.py import-3.10!skip -plugins/modules/pcs_api_v2.py import-3.11!skip -plugins/modules/pcs_api_v2.py import-3.12!skip -plugins/modules/pcs_api_v2.py validate-modules:import-error -plugins/modules/pcs_api_v2.py validate-modules:missing-gplv3-license +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-2.7!skip +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.6!skip +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.7!skip +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.8!skip +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py compile-2.7!skip +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py compile-3.6!skip +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py compile-3.7!skip +plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py compile-3.8!skip plugins/modules/pcs_qdevice_certs.py compile-2.7!skip plugins/modules/pcs_qdevice_certs.py import-2.7!skip plugins/modules/pcs_qdevice_certs.py import-3.6!skip plugins/modules/pcs_qdevice_certs.py import-3.7!skip plugins/modules/pcs_qdevice_certs.py import-3.8!skip -plugins/modules/pcs_qdevice_certs.py import-3.9!skip -plugins/modules/pcs_qdevice_certs.py import-3.10!skip -plugins/modules/pcs_qdevice_certs.py import-3.11!skip -plugins/modules/pcs_qdevice_certs.py import-3.12!skip -plugins/modules/pcs_qdevice_certs.py validate-modules:import-error -plugins/modules/pcs_qdevice_certs.py validate-modules:missing-gplv3-license -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py compile-2.7!skip -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-2.7!skip -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.6!skip -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.7!skip -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.8!skip -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.9!skip -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.10!skip -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.11!skip -plugins/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py import-3.12!skip -tests/ha_cluster/unit/test_pcs_api_v2.py shebang!skip -tests/ha_cluster/unit/test_pcs_qdevice_certs.py shebang!skip diff --git a/library/pcs_api_v2.py b/library/pcs_api_v2.py index c9922aa6..c2d01df4 100644 --- a/library/pcs_api_v2.py +++ b/library/pcs_api_v2.py @@ -36,9 +36,11 @@ cmd_params: description: parameters of the command specified in cmd_name type: dict + default: {} cmd_options: description: generic command options type: dict + default: {} suboptions: request_timeout: description: request timeout @@ -119,8 +121,25 @@ # pylint: disable=no-name-in-module from ansible.module_utils.ha_cluster_lsr import pcs_api_v2_utils as api_utils +import traceback + # pylint: enable=no-name-in-module -from pcs.common.async_tasks.dto import CommandDto, CommandOptionsDto +try: + from pcs.common.async_tasks.dto import CommandDto, CommandOptionsDto +except ImportError: + HAS_PCS = False + PCS_IMPORT_ERROR = traceback.format_exc() + + class CommandOptionsDto(object): + def __init__(self, **kwargs): + pass + + class CommandDto(object): + pass + +else: + HAS_PCS = True + PCS_IMPORT_ERROR = None def run_module() -> None: diff --git a/library/pcs_qdevice_certs.py b/library/pcs_qdevice_certs.py index b2b0517a..e14fabed 100644 --- a/library/pcs_qdevice_certs.py +++ b/library/pcs_qdevice_certs.py @@ -37,6 +37,7 @@ cmd_options: description: pcs API v2 command options type: dict + default: {} suboptions: request_timeout: description: request timeout @@ -112,8 +113,25 @@ # pylint: disable=no-name-in-module from ansible.module_utils.ha_cluster_lsr import pcs_api_v2_utils as api_utils +import traceback + # pylint: enable=no-name-in-module -from pcs.common.async_tasks.dto import CommandDto, CommandOptionsDto +try: + from pcs.common.async_tasks.dto import CommandDto, CommandOptionsDto +except ImportError: + HAS_PCS = False + PCS_IMPORT_ERROR = traceback.format_exc() + + class CommandOptionsDto(object): + def __init__(self, **kwargs): + pass + + class CommandDto(object): + pass + +else: + HAS_PCS = True + PCS_IMPORT_ERROR = None def run_module() -> None: diff --git a/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py b/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py index b4c1d200..d51f61d8 100644 --- a/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py +++ b/module_utils/ha_cluster_lsr/pcs_api_v2_utils.py @@ -13,6 +13,8 @@ # pylint: enable=invalid-name import sys +import traceback + # Add paths to pcs bundled libraries to make Dacite available sys.path.insert(0, "/usr/lib64/pcs/pcs_bundled/packages/") @@ -24,15 +26,45 @@ from ansible.module_utils.basic import AnsibleModule from ansible.module_utils.urls import fetch_url -from dacite import DaciteError -from pcs.common.async_tasks.dto import ( - CommandDto, - CommandOptionsDto, - TaskResultDto, -) -from pcs.common.async_tasks.types import TaskFinishType, TaskKillReason -from pcs.common.interface.dto import from_dict, to_dict -from pcs.common.reports import ReportItemDto, ReportItemSeverity + +try: + from dacite import DaciteError +except ImportError: + HAS_DACITE = False + DACITE_IMPORT_ERROR = traceback.format_exc() +else: + HAS_DACITE = True + DACITE_IMPORT_ERROR = None + +try: + from pcs.common.async_tasks.dto import ( + CommandDto, + CommandOptionsDto, + TaskResultDto, + ) + from pcs.common.async_tasks.types import TaskFinishType, TaskKillReason + from pcs.common.interface.dto import from_dict, to_dict + from pcs.common.reports import ReportItemDto, ReportItemSeverity +except ImportError: + HAS_PCS = False + PCS_IMPORT_ERROR = traceback.format_exc() + + class CommandOptionsDto(object): + def __init__(self, **kwargs): + pass + + class ReportItemDto(object): + pass + + class TaskResultDto(object): + pass + + class CommandDto(object): + pass + +else: + HAS_PCS = True + PCS_IMPORT_ERROR = None PCSD_SOCKET = "/var/run/pcsd.socket" API_ENDPOINT = "http://doesntmatter/api/v2/task/run" diff --git a/tasks/shell_pcs/sbd.yml b/tasks/shell_pcs/sbd.yml index ee7a4273..89b0eba7 100644 --- a/tasks/shell_pcs/sbd.yml +++ b/tasks/shell_pcs/sbd.yml @@ -20,7 +20,7 @@ loop: "{{ ha_cluster.sbd_watchdog_modules_blocklist | d([]) }}" - name: Unload watchdog kernel modules from blocklist - modprobe: + community.general.modprobe: name: "{{ item }}" state: absent loop: "{{ ha_cluster.sbd_watchdog_modules_blocklist | d([]) }}" @@ -38,7 +38,7 @@ loop: "{{ ha_cluster.sbd_watchdog_modules | d([]) }}" - name: Load watchdog kernel modules - modprobe: + community.general.modprobe: name: "{{ item }}" state: present loop: "{{ ha_cluster.sbd_watchdog_modules | d([]) }}" diff --git a/tests/roles/caller/tasks/main.yml b/tests/roles/caller/tasks/main.yml deleted file mode 100644 index edc195d7..00000000 --- a/tests/roles/caller/tasks/main.yml +++ /dev/null @@ -1,10 +0,0 @@ ---- -# tasks file for caller - -- name: Include role - include_role: - name: "{{ roletoinclude }}" - -- name: Assert variable not overridden - assert: - that: not __caller_override diff --git a/tests/roles/caller/vars/main.yml b/tests/roles/caller/vars/main.yml deleted file mode 100644 index bbea32a5..00000000 --- a/tests/roles/caller/vars/main.yml +++ /dev/null @@ -1,4 +0,0 @@ ---- -# vars file for caller -__caller_override: false -ha_cluster_hacluster_password: "1asfbJHV53vJH" diff --git a/tests/tests_include_vars_from_parent.yml b/tests/tests_include_vars_from_parent.yml deleted file mode 100644 index e1fceadc..00000000 --- a/tests/tests_include_vars_from_parent.yml +++ /dev/null @@ -1,52 +0,0 @@ ---- -- name: Test include vars from parent - gather_facts: true - hosts: all - tasks: - - name: Create var file in caller that can override the one in called role - delegate_to: localhost - copy: - # usually the fake file will cause the called role to crash of - # overriding happens, but if not, set a variable that will - # allow to detect the bug - content: "__caller_override: true" - # XXX ugly, self-modifying code - changes the "caller" role on - # the controller - dest: "{{ playbook_dir }}/roles/caller/vars/{{ item }}.yml" - mode: 0666 - loop: "{{ varfiles | unique }}" - # In case the playbook is executed against multiple hosts, use - # only the first one. Otherwise the hosts would stomp on each - # other since they are changing files on the controller. - when: inventory_hostname == ansible_play_hosts_all[0] - vars: - # change to hostvars['localhost']['ansible_facts'] to use the - # information for localhost - facts: "{{ ansible_facts }}" - versions: - - "{{ facts['distribution_version'] }}" - - "{{ facts['distribution_major_version'] }}" - separators: ["-", "_"] - # create all variants like CentOS, CentOS_8.1, CentOS-8.1, - # CentOS-8, CentOS-8.1 - # more formally: - # {{ ansible_distribution }}-{{ ansible_distribution_version }} - # {{ ansible_distribution }}-{{ ansible_distribution_major_version }} - # {{ ansible_distribution }} - # {{ ansible_os_family }} - # and the same for _ as separator. - varfiles: "{{ [facts['distribution']] | product(separators) | - map('join') | product(versions) | map('join') | list + - [facts['distribution'], facts['os_family']] }}" - - - name: Set up test environment - include_role: - name: linux-system-roles.ha_cluster - tasks_from: test_setup.yml - - - name: Import role - import_role: - name: caller - vars: - # noqa: var-naming[no-role-prefix] - roletoinclude: linux-system-roles.ha_cluster diff --git a/tox.ini b/tox.ini index 02fe62f4..4ca990b5 100644 --- a/tox.ini +++ b/tox.ini @@ -5,5 +5,11 @@ lsr_enable = true [lsr_ansible-lint] configfile = {toxinidir}/.ansible-lint +# NOTE: In order to run python unit tests locally, you will need +# to comment sitepackages=True then build and install the correct +# version of pcs in the testenv. See .github/workflows/python-unit-test.yml +# You will also need to comment out sitepackages=True in order to run +# most tox-lsr tests locally or you will get errors like this: +# ansible-lint-collection: failed with ansible-lint is not allowed, use allowlist_externals to allow it [testenv] sitepackages=True