diff --git a/tests/deploy.sh b/tests/deploy.sh index f54e67cdf2..2ad9769f2e 100755 --- a/tests/deploy.sh +++ b/tests/deploy.sh @@ -23,6 +23,12 @@ function deploy { tools/kolla-ansible -i ${RAW_INVENTORY} -vvv post-deploy &> /tmp/logs/ansible/post-deploy tools/kolla-ansible -i ${RAW_INVENTORY} -vvv check &> /tmp/logs/ansible/check-deploy + if [[ ${ACTION} != "mariadb" ]]; then + init_runonce + fi +} + +function init_runonce { . /etc/kolla/admin-openrc.sh . ~/openstackclient-venv/bin/activate diff --git a/tests/run.yml b/tests/run.yml index 36761e4eea..8ef045a174 100644 --- a/tests/run.yml +++ b/tests/run.yml @@ -100,7 +100,7 @@ # nova-compute.conf - src: "tests/templates/nova-compute-overrides.j2" dest: /etc/kolla/config/nova/nova-compute.conf - when: "{{ scenario != 'bifrost' }}" + when: "{{ scenario not in ['bifrost', 'mariadb'] }}" # ceph.conf - src: "tests/templates/ceph-overrides.j2" dest: /etc/kolla/config/ceph.conf @@ -212,7 +212,7 @@ chdir: "{{ kolla_ansible_src_dir }}" environment: ACTION: "{{ scenario }}" - when: scenario not in ['ironic', 'scenario_nfv'] + when: scenario not in ['ironic', 'mariadb', 'scenario_nfv'] - name: Run test-zun.sh script shell: @@ -242,6 +242,13 @@ chdir: "{{ kolla_ansible_src_dir }}" when: scenario == "masakari" + - name: Run test-mariadb.sh script + script: + cmd: test-mariadb.sh + executable: /bin/bash + chdir: "{{ kolla_ansible_src_dir }}" + when: scenario == "mariadb" + - name: Run reconfigure.sh script script: cmd: reconfigure.sh diff --git a/tests/templates/globals-default.j2 b/tests/templates/globals-default.j2 index 24e3f79a56..9a48c2370a 100644 --- a/tests/templates/globals-default.j2 +++ b/tests/templates/globals-default.j2 @@ -100,3 +100,12 @@ enable_masakari: "yes" {% if scenario == "cells" %} enable_cells: "yes" {% endif %} + +{% if scenario == "mariadb" %} +enable_chrony: "no" +enable_fluentd: "no" +enable_mariadb: "yes" +enable_memcached: "no" +enable_openstack_core: "no" +enable_rabbitmq: "no" +{% endif %} diff --git a/tests/test-mariadb.sh b/tests/test-mariadb.sh new file mode 100755 index 0000000000..6d26e994a5 --- /dev/null +++ b/tests/test-mariadb.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +set -o xtrace +set -o errexit +set -o nounset +set -o pipefail + +# Enable unbuffered output for Ansible in Jenkins. +export PYTHONUNBUFFERED=1 + + +function mariadb_stop { + echo "Stopping the database cluster" + tools/kolla-ansible -i ${RAW_INVENTORY} -vvv stop --yes-i-really-really-mean-it --tags mariadb --skip-tags common + if [[ $(sudo docker ps -q | grep mariadb | wc -l) -ne 0 ]]; then + echo "Failed to stop MariaDB cluster" + return 1 + fi +} + +function mariadb_recovery { + # Recover the database cluster. + echo "Recovering the database cluster" + tools/kolla-ansible -i ${RAW_INVENTORY} -vvv mariadb_recovery --tags mariadb --skip-tags common +} + +function test_recovery { + # Stop all nodes in the cluster, then recover. + mariadb_stop + mariadb_recovery +} + +function test_mariadb_logged { + RAW_INVENTORY=/etc/kolla/inventory + test_recovery +} + +function test_mariadb { + echo "Testing MariaDB" + test_mariadb_logged > /tmp/logs/ansible/test-mariadb 2>&1 + result=$? + if [[ $result != 0 ]]; then + echo "Testing MariaDB failed. See ansible/test-mariadb for details" + else + echo "Successfully tested MariaDB. See ansible/test-mariadb for details" + fi + return $result +} + +test_mariadb diff --git a/tools/setup_gate.sh b/tools/setup_gate.sh index 8edb27cc9f..7f7d994906 100755 --- a/tools/setup_gate.sh +++ b/tools/setup_gate.sh @@ -53,6 +53,10 @@ function setup_config { GATE_IMAGES+=",masakari" fi + if [[ $ACTION == "mariadb" ]]; then + GATE_IMAGES="cron,haproxy,keepalived,kolla-toolbox,mariadb" + fi + cat <