From 8515c9a48bad1b117528c8f4db6af7ecf8ccb5e5 Mon Sep 17 00:00:00 2001
From: Rafael Guterres Jeffman <rjeffman@redhat.com>
Date: Wed, 26 Jun 2024 14:55:53 +0000
Subject: [PATCH] upstream ci: Remove 'molecule' from tests.

This patch removes 'molecule' as a dependency for tests, by using the
scripts under `utils` to setup the environment.

By not using molecule, we have more flexibility on using either docker
or podman as the container engine, and makes it easy to reproduce the
environment on different distros, allowing for a more consistent error
reproduction off Azure.
---
 tests/azure/pr-pipeline.yml             | 42 ++++++++--------
 tests/azure/templates/fast_tests.yml    | 10 ++--
 tests/azure/templates/playbook_fast.yml | 64 +++++++++++--------------
 3 files changed, 58 insertions(+), 58 deletions(-)

diff --git a/tests/azure/pr-pipeline.yml b/tests/azure/pr-pipeline.yml
index 2345347d..40d78a9b 100644
--- a/tests/azure/pr-pipeline.yml
+++ b/tests/azure/pr-pipeline.yml
@@ -15,8 +15,8 @@ stages:
   - template: templates/fast_tests.yml
     parameters:
       build_number: $(Build.BuildNumber)
-      scenario: fedora-latest
-      ansible_version: "-core >=2.14,<2.15"
+      distro: fedora-latest
+      ansible_version: "-core >=2.15,<2.16"
 
 # Galaxy on Fedora
 
@@ -26,8 +26,8 @@ stages:
   - template: templates/fast_tests.yml
     parameters:
       build_number: $(Build.BuildNumber)
-      scenario: fedora-latest
-      ansible_version: "-core >=2.14,<2.15"
+      distro: fedora-latest
+      ansible_version: "-core >=2.15,<2.16"
 
 # CentOS 9 Stream
 
@@ -37,8 +37,8 @@ stages:
   - template: templates/fast_tests.yml
     parameters:
       build_number: $(Build.BuildNumber)
-      scenario: c9s
-      ansible_version: "-core >=2.14,<2.15"
+      distro: c9s
+      ansible_version: "-core >=2.15,<2.16"
 
 # CentOS 8 Stream
 
@@ -48,19 +48,23 @@ stages:
   - template: templates/fast_tests.yml
     parameters:
       build_number: $(Build.BuildNumber)
-      scenario: c8s
-      ansible_version: "-core >=2.14,<2.15"
+      distro: c8s
+      ansible_version: "-core >=2.15,<2.16"
+      target_python: "/usr/libexec/platform-python"
 
+# CentOS 7 cannot be used with current systemd
+#
 # CentOS 7
-
-- stage: CentOS_7
-  dependsOn: []
-  jobs:
-  - template: templates/fast_tests.yml
-    parameters:
-      build_number: $(Build.BuildNumber)
-      scenario: centos-7
-      ansible_version: "-core >=2.14,<2.15"
+#
+# - stage: CentOS_7
+#   dependsOn: []
+#   jobs:
+#   - template: templates/fast_tests.yml
+#     parameters:
+#       build_number: $(Build.BuildNumber)
+#       distro: centos-7
+#       ansible_version: "-core >=2.15,<2.16"
+#       target_python: "/usr/bin/python2"
 
 # Rawhide
 
@@ -70,5 +74,5 @@ stages:
   - template: templates/fast_tests.yml
     parameters:
       build_number: $(Build.BuildNumber)
-      scenario: fedora-rawhide
-      ansible_version: "-core >=2.14,<2.15"
+      distro: fedora-rawhide
+      ansible_version: "-core >=2.15,<2.16"
diff --git a/tests/azure/templates/fast_tests.yml b/tests/azure/templates/fast_tests.yml
index fdb1ea0d..ac26ce8f 100644
--- a/tests/azure/templates/fast_tests.yml
+++ b/tests/azure/templates/fast_tests.yml
@@ -1,6 +1,6 @@
 ---
 parameters:
-  - name: scenario
+  - name: distro
     type: string
     default: fedora-latest
   - name: build_number
@@ -8,6 +8,9 @@ parameters:
   - name: ansible_version
     type: string
     default: ""
+  - name: target_python
+    type: string
+    default: "/usr/bin/python3"
 
 jobs:
 - template: playbook_fast.yml
@@ -15,13 +18,14 @@ jobs:
     group_number: 1
     number_of_groups: 1
     build_number: ${{ parameters.build_number }}
-    scenario: ${{ parameters.scenario }}
+    distro: ${{ parameters.distro }}
     ansible_version: ${{ parameters.ansible_version }}
     python_version: '< 3.12'
+    target_python: ${{ parameters.target_python }}
 
 # - template: pytest_tests.yml
 #   parameters:
 #     build_number: ${{ parameters.build_number }}
-#     scenario: ${{ parameters.scenario }}
+#     distro: ${{ parameters.distro }}
 #     ansible_version: ${{ parameters.ansible_version }}
 #     python_version: '< 3.12'
diff --git a/tests/azure/templates/playbook_fast.yml b/tests/azure/templates/playbook_fast.yml
index a01d2c34..a00a7875 100644
--- a/tests/azure/templates/playbook_fast.yml
+++ b/tests/azure/templates/playbook_fast.yml
@@ -6,7 +6,7 @@ parameters:
   - name: number_of_groups
     type: number
     default: 1
-  - name: scenario
+  - name: distro
     type: string
     default: fedora-latest
   - name: ansible_version
@@ -17,28 +17,28 @@ parameters:
     default: 3.x
   - name: build_number
     type: string
+  - name: target_python
+    type: string
+    default: "/usr/bin/python3"
 
 jobs:
 - job: Test_Group${{ parameters.group_number }}
-  displayName: Run playbook tests ${{ parameters.scenario }} (${{ parameters.group_number }}/${{ parameters.number_of_groups }})
+  displayName: Run playbook tests ${{ parameters.distro }} (${{ parameters.group_number }}/${{ parameters.number_of_groups }})
   timeoutInMinutes: 360
   variables:
   - template: variables.yaml
-  - template: variables_${{ parameters.scenario }}.yaml
+  - template: variables_${{ parameters.distro }}.yaml
   steps:
   - task: UsePythonVersion@0
     inputs:
       versionSpec: '${{ parameters.python_version }}'
 
   - script: |
-      pip install \
-        "molecule-plugins[docker]" \
-        "requests<2.29" \
-        "ansible${{ parameters.ansible_version }}"
+      pip install "ansible${{ parameters.ansible_version }}"
     retryCountOnTaskFailure: 5
-    displayName: Install molecule and Ansible
+    displayName: Install Ansible
 
-  - script: ansible-galaxy collection install community.docker ansible.posix
+  - script: ansible-galaxy collection install containers.podman
     retryCountOnTaskFailure: 5
     displayName: Install Ansible collections
 
@@ -47,43 +47,35 @@ jobs:
     displayName: Install dependencies
 
   - script: |
-      rm -rf ~/ansible
-      mkdir -p ~/.ansible/roles ~/.ansible/library ~/.ansible/module_utils
-      cp -a roles/* ~/.ansible/roles
-      cp -a plugins/modules/* ~/.ansible/library
-      cp -a plugins/module_utils/* ~/.ansible/module_utils
-      molecule create -s ${{ parameters.scenario }}
-    retryCountOnTaskFailure: 5
-    displayName: Setup test container
-    env:
-      ANSIBLE_LIBRARY: ./molecule
+      . utils/set_test_modules
+      python3 utils/check_test_configuration.py ${{ parameters.distro }}
+    displayName: Check test configuration
 
   - script: |
-      . utils/set_test_modules
-      python utils/check_test_configuration.py ${{ parameters.scenario }}
-    displayName: Check scenario test configuration
+      utils/setup_test_container.sh \
+        -e podman \
+        -a \
+        -m 4 \
+        -n "ipaserver.test.local" \
+        -p ${{ parameters.target_python }} \
+        -i ${{ parameters.distro }}-server \
+        ${{ parameters.distro }}-test
+    displayName: Setup target container
 
   - script: |
       . utils/set_test_modules
-      if ! pytest \
-        -m "playbook" \
-        --verbose \
-        --color=yes \
-        --suppress-no-test-exit-code \
-        --splits=${{ parameters.number_of_groups }} \
-        --group=${{ parameters.group_number }} \
-        --randomly-seed=$(date "+%Y%m%d") \
-        --junit-xml=TEST-results-group-${{ parameters.group_number }}.xml
-      then
-        [ $? -eq 5 ] && true || false
-      fi
+      pytest -m "playbook" --verbose --color=yes --suppress-no-test-exit-code --junit-xml=TEST-results-pr-check.xml
     displayName: Run playbook tests
     env:
-      IPA_SERVER_HOST: ${{ parameters.scenario }}
-      RUN_TESTS_IN_DOCKER: true
+      ANSIBLE_ROLES_PATH: "${PWD}/roles"
+      ANSIBLE_LIBRARY: "${PWD}/plugins"
+      ANSIBLE_MODULE_UTILS: "${PWD}/plugins/module_utils"
+      IPA_SERVER_HOST: ${{ parameters.distro }}-test
+      RUN_TESTS_IN_DOCKER: podman
       IPA_DISABLED_MODULES: ${{ variables.ipa_disabled_modules }}
       IPA_DISABLED_TESTS: ${{ variables.ipa_disabled_tests }}
       IPA_VERBOSITY: "-vvv"
+      IPA_PYTHON_PATH: ${{ parameters.target_python }}
 
   - task: PublishTestResults@2
     inputs:
-- 
GitLab