diff --git a/tests/run.yml b/tests/run.yml index 0435059e66..22a0043d2a 100644 --- a/tests/run.yml +++ b/tests/run.yml @@ -10,7 +10,7 @@ - name: set facts for commonly used variables vars: # NOTE(yoctozepto): needed here to use in other facts too - openstack_core_enabled: "{{ scenario not in ['bifrost', 'mariadb', 'prometheus-efk', 'monasca'] }}" + openstack_core_enabled: "{{ scenario not in ['bifrost', 'mariadb', 'prometheus-efk', 'monasca', 'venus'] }}" set_fact: kolla_inventory_path: "/etc/kolla/inventory" logs_dir: "/tmp/logs" @@ -469,6 +469,13 @@ chdir: "{{ kolla_ansible_src_dir }}" when: scenario == "prometheus-efk" + - name: Run test-venus.sh script + script: + cmd: test-venus.sh + executable: /bin/bash + chdir: "{{ kolla_ansible_src_dir }}" + when: scenario == "venus" + when: scenario != "bifrost" # NOTE(yoctozepto): each host checks itself diff --git a/tests/setup_gate.sh b/tests/setup_gate.sh index db7c81d58f..0318e838d9 100755 --- a/tests/setup_gate.sh +++ b/tests/setup_gate.sh @@ -101,6 +101,11 @@ function prepare_images { # FIXME(mgoddard): No need for OpenStack core images. GATE_IMAGES+=",^elasticsearch,^grafana,^influxdb,^kafka,^kibana,^logstash,^monasca,^storm,^zookeeper" fi + + if [[ $SCENARIO == "venus" ]]; then + GATE_IMAGES="^cron,^elasticsearch,^fluentd,^haproxy,^keepalived,^keystone,^kolla-toolbox,^mariadb,^memcached,^rabbitmq,^venus" + fi + sudo tee -a /etc/kolla/kolla-build.conf < $output_path; then + return 1 + fi + # NOTE(mgoddard): Status may be yellow because no indices have been + # created. + if ! grep -E '"status":"(green|yellow)"' $output_path >/dev/null; then + return 1 + fi +} + +function check_venus { + local venus_url=${OS_AUTH_URL%:*}:10010/custom_config + output_path=$1 + if ! curl --include --fail $venus_url > $output_path; then + return 1 + fi + if ! grep -E '"status": "SUPPORTED"' $output_path >/dev/null; then + return 1 + fi +} + +function test_elasticsearch { + echo "TESTING: Elasticsearch" + output_path=$(mktemp) + attempt=1 + while ! check_elasticsearch $output_path; do + echo "Elasticsearch not accessible yet" + attempt=$((attempt+1)) + if [[ $attempt -eq 12 ]]; then + echo "FAILED: Elasticsearch did not become accessible. Response:" + cat $output_path + return 1 + fi + sleep 10 + done + echo "SUCCESS: Elasticsearch" +} + +function test_venus { + echo "TESTING: Venus" + output_path=$(mktemp) + attempt=1 + while ! check_venus $output_path; do + echo "Venus not accessible yet" + attempt=$((attempt+1)) + if [[ $attempt -eq 12 ]]; then + echo "FAILED: Venus did not become accessible. Response:" + cat $output_path + return 1 + fi + sleep 10 + done + echo "SUCCESS: Venus" +} + +function test_venus_scenario_logged { + . /etc/kolla/admin-openrc.sh + + test_elasticsearch + test_venus +} + +function test_venus_scenario { + echo "Testing Venus and EFK" + test_venus_scenario_logged > /tmp/logs/ansible/test-venus-scenario 2>&1 + result=$? + if [[ $result != 0 ]]; then + echo "Testing Venus scenario failed. See ansible/test-venus-scenario for details" + else + echo "Successfully tested Venus scenario. See ansible/test-venus-scenario for details" + fi + return $result +} + +test_venus_scenario diff --git a/zuul.d/base.yaml b/zuul.d/base.yaml index e3291a435f..7e52b1a83f 100644 --- a/zuul.d/base.yaml +++ b/zuul.d/base.yaml @@ -228,6 +228,16 @@ vars: scenario: prometheus-efk +- job: + name: kolla-ansible-venus-base + parent: kolla-ansible-base + voting: false + files: + - ^ansible/roles/(common|elasticsearch|venus)/ + - ^tests/test-venus.sh + vars: + scenario: venus + - job: name: kolla-ansible-hashi-vault-base run: tests/run-hashi-vault.yml diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml index 49ff31f05c..e043cb0041 100644 --- a/zuul.d/jobs.yaml +++ b/zuul.d/jobs.yaml @@ -397,6 +397,22 @@ base_distro: ubuntu install_type: source +- job: + name: kolla-ansible-centos8s-source-venus + parent: kolla-ansible-venus-base + nodeset: kolla-ansible-centos8s + vars: + base_distro: centos + install_type: source + +- job: + name: kolla-ansible-ubuntu-source-venus + parent: kolla-ansible-venus-base + nodeset: kolla-ansible-focal + vars: + base_distro: ubuntu + install_type: source + - job: name: kolla-ansible-centos8s-hashi-vault parent: kolla-ansible-hashi-vault-base diff --git a/zuul.d/project.yaml b/zuul.d/project.yaml index 37a1a43783..058111ee8a 100644 --- a/zuul.d/project.yaml +++ b/zuul.d/project.yaml @@ -47,6 +47,8 @@ - kolla-ansible-ubuntu-source-ovn - kolla-ansible-centos8s-source-prometheus-efk - kolla-ansible-ubuntu-source-prometheus-efk + - kolla-ansible-centos8s-source-venus + - kolla-ansible-ubuntu-source-venus - kolla-ansible-centos8s-source-monasca - kolla-ansible-centos8s-source-cephadm - kolla-ansible-ubuntu-source-cephadm