sssd/tests/sssd-tasks.yml
2023-05-16 18:21:23 +02:00

137 lines
3.9 KiB
YAML

---
- name: Set ansible_python_interpreter to /usr/libexec/platform-python3.6
set_fact:
ansible_python_interpreter: '/usr/libexec/platform-python3.6'
- name: Define remote_artificats
set_fact:
remote_artifacts: /tmp/artifacts
when: remote_artifacts is not defined
- name: Install testing requirements
package: name={{ item }} state=present
with_items:
- rsync
when: ansible_pkg_mgr != 'unknown'
- name: Add epel repo
yum_repository:
name: epel8
file: epel8
description: EPEL Repo of RHEL 8 because RHEL 9 is not available
baseurl: https://download.fedoraproject.org/pub/epel/8/Everything/x86_64/
enabled: no
gpgcheck: no
- name: Install sshpass from epel
yum:
name: sshpass
enablerepo: epel8
state: present
- name: Install required packages
dnf:
name: >
git, gcc, redhat-rpm-config.noarch, openldap-devel,
openldap-clients, python36-devel, python3-virtualenv,
python3-pip, krb5-devel, make, sssd, sssd-kcm, libsss_sudo,
ldb-tools, sssd-tools, nss-tools, sssd-dbus
- name: Install idm modules
shell: |
yum -y module enable idm:DL1
- name: Install 389-ds-base krb5 server and workstation
dnf:
name: >
389-ds-base, krb5-server, krb5-workstation
- name: clone upstream sssd git to run tests
git:
repo: "{{ upstream_sssd_git }}"
dest: "{{ upstream_src_dir }}"
version: "{{ upstream_git_branch }}"
- name: Update /etc/hosts file with current hostname
lineinfile:
path: /etc/hosts
line: "{{ ansible_default_ipv4.address }} {{ ansible_hostname }}"
- name: Create Multihost configuration files
blockinfile:
dest: /tmp/mhc.yaml
block: |
windows_test_dir: '/home/Administrator'
root_password: 'foobar'
domains:
- name: testrealm.test
type: sssd
hosts:
- name: {{ ansible_hostname }}
external_hostname: {{ ansible_hostname }}
role: master
create: yes
marker: ""
- name: Install pytest-multihost and other test dependencies
pip:
virtualenv: "{{ venv_dir }}"
virtualenv_command: /usr/bin/virtualenv-3.6
requirements: "{{ upstream_src_dir }}/src/tests/multihost/requirements.txt"
- name: Find directory python searches for path
shell: python3 -m site --user-site
register: pypath
- name: Create Python path dir
file:
path: "{{ pypath.stdout }}"
state: directory
- name: Create file with sssd testlib path
copy:
dest: "{{ pypath.stdout }}/sssdlib.pth"
content: "{{ upstream_src_dir }}/src/tests/multihost"
- name: create artifacts directory
file:
path: "{{ remote_artifacts }}"
state: directory
mode: 0755
- name: Test block
block:
- name: Execute pytest
shell: |
PYTESTMULTIHOST_SSH_TRANSPORT=openssh \
"{{ venv_dir }}/bin/pytest" -v \
--junit-xml="{{ remote_artifacts }}/junit.xml" \
--multihost-config=/tmp/mhc.yaml \
"{{ test_dir }}" 1> "{{ remote_artifacts }}/test.log"
- name: Prepare results.yml in STI format
shell: |
echo "results:" > "{{ remote_artifacts }}/results.yml"
IFS=$'\n'
for i in `awk '/collected /,/=====/' "{{ remote_artifacts }}/test.log" | sed '1d;$d'`
do
echo $i | grep -q PASSED && res=pass
echo $i | grep -q FAILED && res=fail
echo $i | grep -q ERROR && res=error
testname=`echo $i |awk -F\:\: '{print $3}' | cut -f1 -d" "`
echo "- {result: $res, test: $testname}" >> "{{ remote_artifacts }}/results.yml"
done
unset IFS
always:
- name: copy sssd logs to "{{ remote_artifacts }}"
command: cp -a /var/log/sssd {{ remote_artifacts }}
- name: Pull out logs
synchronize:
dest: "{{ artifacts }}"
src: "{{ remote_artifacts }}/"
mode: pull
ssh_args: "-o UserKnownHostsFile=/dev/null"
when: artifacts|default("") != ""