e32333930a
This adds support for specifying the "django.db.backends.postgresql" django database engine, installing the required dependencies and setting up the necessary configuration. We're also adding a new package extras [postgresql] which will take care of installing psycopg2 automatically. This is self tested by integration tests which creates a postgresql Docker container and runs the ara_api role configured to run against the postgresql container. The tests are designed to run either locally or on Zuul. Change-Id: I9bb7166d01c96d8b39361a55b1c9952de8fa9798
91 lines
3.6 KiB
YAML
91 lines
3.6 KiB
YAML
# Copyright (c) 2019 Red Hat, Inc.
|
|
#
|
|
# This file is part of ARA Records Ansible.
|
|
#
|
|
# ARA is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# ARA is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with ARA. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
# This is a list of tasks instead of a playbook. They are meant to be included
|
|
# as post_tasks inside the same play context as our roles so they have access
|
|
# to the play and role variables.
|
|
|
|
- name: Set defaults for Ansible package name and version
|
|
set_fact:
|
|
ara_tests_ansible_name: "{{ ara_tests_ansible_name | default('ansible') }}"
|
|
ara_tests_ansible_version: "{{ ara_tests_ansible_version | default('latest') }}"
|
|
|
|
# If a version is not explicitly set we want to make sure to
|
|
# completely omit the version argument to pip, as it will be coming
|
|
# from the long-form integration_ansible_name variable. Additionally, if
|
|
# the version is the special value "latest", then we also want to omit
|
|
# any version number, but also set the package state to "latest".
|
|
- name: Set Ansible version for installation
|
|
set_fact:
|
|
_install_ansible_version: "{{ ara_tests_ansible_version }}"
|
|
when: ara_tests_ansible_version not in ("", "latest")
|
|
|
|
- name: Set Ansible package state for installation
|
|
set_fact:
|
|
_install_ansible_state: latest
|
|
when: ara_tests_ansible_version == "latest"
|
|
|
|
- name: Install Ansible alongside ARA
|
|
pip:
|
|
name: "{{ ara_tests_ansible_name }}"
|
|
version: "{{ _install_ansible_version | default(omit, True) }}"
|
|
state: "{{ _install_ansible_state | default(omit, True) }}"
|
|
virtualenv: "{{ ara_api_venv | bool | ternary(ara_api_venv_path, omit) }}"
|
|
virtualenv_python: python3
|
|
|
|
- name: Get ARA plugins directory
|
|
environment:
|
|
PATH: "{{ path_with_virtualenv | default(omit) }}"
|
|
command: python -m ara.setup.plugins
|
|
changed_when: false
|
|
register: ara_setup_plugins
|
|
|
|
# These aren't in the same task (i.e, with loop) so we can tell individual test
|
|
# runs apart easily rather than keeping all the output bundled in a single task.
|
|
- environment:
|
|
ANSIBLE_CALLBACK_PLUGINS: "{{ ara_setup_plugins.stdout }}/callback"
|
|
ANSIBLE_ACTION_PLUGINS: "{{ ara_setup_plugins.stdout }}/action"
|
|
ARA_SETTINGS: "{{ ara_api_settings }}"
|
|
vars:
|
|
_ansible_playbook: "{{ ara_api_venv_path }}/bin/ansible-playbook -vvv"
|
|
_test_root: "{{ ara_api_source_checkout }}/tests/integration"
|
|
block:
|
|
# smoke.yaml tests setting ara_playbook_name in one of three plays
|
|
- name: Run smoke.yaml integration test
|
|
command: "{{ _ansible_playbook }} {{ _test_root }}/smoke.yaml"
|
|
|
|
- name: Run hosts.yaml integration test
|
|
command: "{{ _ansible_playbook }} {{ _test_root }}/hosts.yaml"
|
|
|
|
- name: Run import.yaml integration test
|
|
command: "{{ _ansible_playbook }} {{ _test_root }}/import.yaml"
|
|
|
|
# Tests setting ara_playbook_name as an extra var
|
|
- name: Run failed.yaml integration test
|
|
command: >
|
|
{{ _ansible_playbook }} {{ _test_root }}/failed.yaml -e ara_playbook_name="Failed playbook"
|
|
ignore_errors: yes
|
|
|
|
- name: Run incomplete.yaml integration test
|
|
shell: |
|
|
{{ _ansible_playbook }} {{ _test_root }}/incomplete.yaml &
|
|
sleep 5
|
|
kill $!
|
|
args:
|
|
executable: /bin/bash
|
|
ignore_errors: yes
|