CI: Test accessing dashboard
Also slightly refactor test-openstack.sh script. Change-Id: I7f10f073e89d2b66367bbb700201b3cd412fc433 Depends-On: https://review.opendev.org/#/c/674241 Depends-On: https://review.opendev.org/#/c/668410 Depends-On: https://review.opendev.org/#/c/668409
This commit is contained in:
parent
b4ef4638a6
commit
8722c78763
@ -2,7 +2,10 @@
|
|||||||
- hosts: all
|
- hosts: all
|
||||||
tasks:
|
tasks:
|
||||||
# NOTE(yoctozepto): setting vars as facts for all to have them around in all the plays
|
# NOTE(yoctozepto): setting vars as facts for all to have them around in all the plays
|
||||||
- set_fact:
|
- name: set facts for commonly used variables
|
||||||
|
vars:
|
||||||
|
api_interface_address: "{{ nodepool.private_ipv4 }}"
|
||||||
|
set_fact:
|
||||||
kolla_inventory_path: "/etc/kolla/inventory"
|
kolla_inventory_path: "/etc/kolla/inventory"
|
||||||
logs_dir: "/tmp/logs"
|
logs_dir: "/tmp/logs"
|
||||||
kolla_ansible_src_dir: "{{ ansible_env.PWD }}/src/{{ zuul.project.canonical_hostname }}/openstack/kolla-ansible"
|
kolla_ansible_src_dir: "{{ ansible_env.PWD }}/src/{{ zuul.project.canonical_hostname }}/openstack/kolla-ansible"
|
||||||
@ -11,6 +14,17 @@
|
|||||||
build_image_tag: "change_{{ zuul.change | default('none') }}"
|
build_image_tag: "change_{{ zuul.change | default('none') }}"
|
||||||
is_upgrade: "{{ 'upgrade' in scenario }}"
|
is_upgrade: "{{ 'upgrade' in scenario }}"
|
||||||
is_ceph: "{{ 'ceph' in scenario }}"
|
is_ceph: "{{ 'ceph' in scenario }}"
|
||||||
|
api_interface_address: "{{ api_interface_address }}"
|
||||||
|
# FIXME: in multi node env, api_interface may be different on each node.
|
||||||
|
api_interface_name: >-
|
||||||
|
{{ (ansible_interfaces |
|
||||||
|
map('replace', '-', '_') |
|
||||||
|
map('extract', ansible_facts) |
|
||||||
|
selectattr('ipv4.address', 'defined') |
|
||||||
|
selectattr('ipv4.address', 'equalto', api_interface_address) |
|
||||||
|
first).device }}
|
||||||
|
# We use HAProxy and a VIP for single node, not for multinode jobs.
|
||||||
|
kolla_internal_vip_address: "{{ api_interface_address if hostvars | length > 2 else '169.254.169.10' }}"
|
||||||
|
|
||||||
- name: Prepare disks for Ceph or LVM
|
- name: Prepare disks for Ceph or LVM
|
||||||
script: "setup_disks.sh {{ disk_type }}"
|
script: "setup_disks.sh {{ disk_type }}"
|
||||||
@ -22,19 +36,6 @@
|
|||||||
|
|
||||||
- hosts: primary
|
- hosts: primary
|
||||||
tasks:
|
tasks:
|
||||||
# FIXME: in multi node env, api_interface may be different on each node.
|
|
||||||
- name: detect api_interface_name variable
|
|
||||||
vars:
|
|
||||||
ansible_interface_name: "ansible_{{ item.replace('-', '_') }}"
|
|
||||||
api_interface_address: "{{ hostvars[inventory_hostname]['nodepool']['private_ipv4'] }}"
|
|
||||||
set_fact:
|
|
||||||
api_interface_name: "{{ item }}"
|
|
||||||
api_interface_address: "{{ api_interface_address }}"
|
|
||||||
when:
|
|
||||||
- hostvars[inventory_hostname][ansible_interface_name]['ipv4'] is defined
|
|
||||||
- hostvars[inventory_hostname][ansible_interface_name]['ipv4']['address'] == api_interface_address
|
|
||||||
with_items: "{{ ansible_interfaces }}"
|
|
||||||
|
|
||||||
- name: detect whether need build images
|
- name: detect whether need build images
|
||||||
set_fact:
|
set_fact:
|
||||||
need_build_image: true
|
need_build_image: true
|
||||||
@ -206,6 +207,7 @@
|
|||||||
chdir: "{{ kolla_ansible_src_dir }}"
|
chdir: "{{ kolla_ansible_src_dir }}"
|
||||||
environment:
|
environment:
|
||||||
ACTION: "{{ scenario }}"
|
ACTION: "{{ scenario }}"
|
||||||
|
DASHBOARD_URL: "http://{{ kolla_internal_vip_address }}"
|
||||||
when: scenario not in ['ironic', 'scenario_nfv']
|
when: scenario not in ['ironic', 'scenario_nfv']
|
||||||
|
|
||||||
- name: Run test-zun.sh script
|
- name: Run test-zun.sh script
|
||||||
@ -353,6 +355,7 @@
|
|||||||
chdir: "{{ kolla_ansible_src_dir }}"
|
chdir: "{{ kolla_ansible_src_dir }}"
|
||||||
environment:
|
environment:
|
||||||
ACTION: "{{ scenario }}"
|
ACTION: "{{ scenario }}"
|
||||||
|
DASHBOARD_URL: "http://{{ kolla_internal_vip_address }}"
|
||||||
|
|
||||||
- name: Run test-zun.sh script
|
- name: Run test-zun.sh script
|
||||||
shell:
|
shell:
|
||||||
|
@ -9,7 +9,7 @@ docker_restart_policy: "no"
|
|||||||
keepalived_virtual_router_id: "{{ 250 | random(1) }}"
|
keepalived_virtual_router_id: "{{ 250 | random(1) }}"
|
||||||
|
|
||||||
{% if enable_core_openstack | bool %}
|
{% if enable_core_openstack | bool %}
|
||||||
kolla_internal_vip_address: "{{ api_interface_address if hostvars | length > 2 else '169.254.169.10' }}"
|
kolla_internal_vip_address: "{{ kolla_internal_vip_address }}"
|
||||||
enable_haproxy: "{{ 'no' if hostvars | length > 2 else 'yes' }}"
|
enable_haproxy: "{{ 'no' if hostvars | length > 2 else 'yes' }}"
|
||||||
neutron_external_interface: "fake_interface"
|
neutron_external_interface: "fake_interface"
|
||||||
openstack_logging_debug: "True"
|
openstack_logging_debug: "True"
|
||||||
|
@ -2,17 +2,17 @@
|
|||||||
|
|
||||||
set -o xtrace
|
set -o xtrace
|
||||||
set -o errexit
|
set -o errexit
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
# Enable unbuffered output for Ansible in Jenkins.
|
# Enable unbuffered output for Ansible in Jenkins.
|
||||||
export PYTHONUNBUFFERED=1
|
export PYTHONUNBUFFERED=1
|
||||||
|
|
||||||
function test_openstack_logged {
|
function test_smoke {
|
||||||
. /etc/kolla/admin-openrc.sh
|
|
||||||
. ~/openstackclient-venv/bin/activate
|
|
||||||
|
|
||||||
openstack --debug compute service list
|
openstack --debug compute service list
|
||||||
openstack --debug network agent list
|
openstack --debug network agent list
|
||||||
|
}
|
||||||
|
|
||||||
|
function test_instance_boot {
|
||||||
echo "TESTING: Server creation"
|
echo "TESTING: Server creation"
|
||||||
openstack server create --wait --image cirros --flavor m1.tiny --key-name mykey --network demo-net kolla_boot_test
|
openstack server create --wait --image cirros --flavor m1.tiny --key-name mykey --network demo-net kolla_boot_test
|
||||||
openstack --debug server list
|
openstack --debug server list
|
||||||
@ -71,6 +71,45 @@ function test_openstack_logged {
|
|||||||
echo "SUCCESS: Server deletion"
|
echo "SUCCESS: Server deletion"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function check_dashboard {
|
||||||
|
# Query the dashboard, and check that the returned page looks like a login
|
||||||
|
# page.
|
||||||
|
output_path=$1
|
||||||
|
if ! curl --include --location --fail $DASHBOARD_URL > $output_path; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
if ! grep Login $output_path >/dev/null; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function test_dashboard {
|
||||||
|
echo "TESTING: Dashboard"
|
||||||
|
# The dashboard has been known to take some time to become accessible, so
|
||||||
|
# use retries.
|
||||||
|
output_path=$(mktemp)
|
||||||
|
attempt=1
|
||||||
|
while ! check_dashboard $output_path; do
|
||||||
|
echo "Dashboard not accessible yet"
|
||||||
|
attempt=$((attempt+1))
|
||||||
|
if [[ $attempt -eq 10 ]]; then
|
||||||
|
echo "FAILED: Dashboard did not become accessible. Response:"
|
||||||
|
cat $output_path
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
sleep 10
|
||||||
|
done
|
||||||
|
echo "SUCCESS: Dashboard"
|
||||||
|
}
|
||||||
|
|
||||||
|
function test_openstack_logged {
|
||||||
|
. /etc/kolla/admin-openrc.sh
|
||||||
|
. ~/openstackclient-venv/bin/activate
|
||||||
|
test_smoke
|
||||||
|
test_instance_boot
|
||||||
|
test_dashboard
|
||||||
|
}
|
||||||
|
|
||||||
function test_openstack {
|
function test_openstack {
|
||||||
echo "Testing OpenStack"
|
echo "Testing OpenStack"
|
||||||
log_file=/tmp/logs/ansible/test-openstack
|
log_file=/tmp/logs/ansible/test-openstack
|
||||||
|
Loading…
Reference in New Issue
Block a user