Add Octavia job for testing Load Balancer
Add basic test for LB. Configure Octavia job which will run on LB changes only. Change-Id: Ic76bb766f133c91a41893978ee864025dd659ab4
This commit is contained in:
parent
d212be018b
commit
2b8aa2cb08
41
.zuul.yaml
41
.zuul.yaml
@ -19,6 +19,42 @@
|
|||||||
devstack_services:
|
devstack_services:
|
||||||
designate: true
|
designate: true
|
||||||
|
|
||||||
|
- job:
|
||||||
|
name: ansible-collections-openstack-functional-devstack-octavia
|
||||||
|
parent: ansible-collections-openstack-functional-devstack
|
||||||
|
description: |
|
||||||
|
Run openstack collections functional tests against a master devstack
|
||||||
|
with Octavia plugin enabled, using releases of openstacksdk and latest
|
||||||
|
ansible release. Run it only on Load Balancer changes.
|
||||||
|
pre-run: ci/playbooks/get_amphora_tarball.yaml
|
||||||
|
required-projects:
|
||||||
|
- openstack/octavia
|
||||||
|
- name: github.com/ansible/ansible
|
||||||
|
override-checkout: stable-2.10
|
||||||
|
files:
|
||||||
|
- ^ci/roles/loadbalancer/.*$
|
||||||
|
- ^plugins/modules/lb_health_monitor.py
|
||||||
|
- ^plugins/modules/lb_listener.py
|
||||||
|
- ^plugins/modules/lb_member.py
|
||||||
|
- ^plugins/modules/lb_pool.py
|
||||||
|
- ^plugins/modules/loadbalancer.py
|
||||||
|
vars:
|
||||||
|
tox_envlist: ansible
|
||||||
|
devstack_plugins:
|
||||||
|
designate: https://opendev.org/openstack/designate
|
||||||
|
octavia: https://opendev.org/openstack/octavia
|
||||||
|
devstack_services:
|
||||||
|
designate: true
|
||||||
|
octavia: true
|
||||||
|
o-api: true
|
||||||
|
o-cw: true
|
||||||
|
o-hk: true
|
||||||
|
o-hm: true
|
||||||
|
devstack_localrc:
|
||||||
|
OCTAVIA_AMP_IMAGE_FILE: "/tmp/test-only-amphora-x64-haproxy-ubuntu-bionic.qcow2"
|
||||||
|
OCTAVIA_AMP_IMAGE_SIZE: 3
|
||||||
|
OCTAVIA_AMP_IMAGE_NAME: "test-only-amphora-x64-haproxy-ubuntu-bionic"
|
||||||
|
|
||||||
- job:
|
- job:
|
||||||
name: ansible-collections-openstack-functional-devstack-releases
|
name: ansible-collections-openstack-functional-devstack-releases
|
||||||
parent: ansible-collections-openstack-functional-devstack
|
parent: ansible-collections-openstack-functional-devstack
|
||||||
@ -315,6 +351,9 @@
|
|||||||
- ansible-collections-openstack-functional-devstack-queens-ansible-2.10:
|
- ansible-collections-openstack-functional-devstack-queens-ansible-2.10:
|
||||||
dependencies: *deps_unit_lint
|
dependencies: *deps_unit_lint
|
||||||
irrelevant-files: *ignore_files
|
irrelevant-files: *ignore_files
|
||||||
|
- ansible-collections-openstack-functional-devstack-octavia:
|
||||||
|
dependencies: *deps_unit_lint
|
||||||
|
irrelevant-files: *ignore_files
|
||||||
|
|
||||||
- bifrost-collections-src:
|
- bifrost-collections-src:
|
||||||
voting: false
|
voting: false
|
||||||
@ -342,6 +381,7 @@
|
|||||||
- ansible-collections-openstack-functional-devstack-stein-ansible-2.10
|
- ansible-collections-openstack-functional-devstack-stein-ansible-2.10
|
||||||
- ansible-collections-openstack-functional-devstack-rocky-ansible-2.10
|
- ansible-collections-openstack-functional-devstack-rocky-ansible-2.10
|
||||||
- ansible-collections-openstack-functional-devstack-queens-ansible-2.10
|
- ansible-collections-openstack-functional-devstack-queens-ansible-2.10
|
||||||
|
- ansible-collections-openstack-functional-devstack-octavia
|
||||||
|
|
||||||
periodic:
|
periodic:
|
||||||
jobs:
|
jobs:
|
||||||
@ -363,3 +403,4 @@
|
|||||||
- ansible-collections-openstack-functional-devstack-queens-ansible-devel
|
- ansible-collections-openstack-functional-devstack-queens-ansible-devel
|
||||||
- bifrost-collections-src
|
- bifrost-collections-src
|
||||||
- bifrost-keystone-collections-src
|
- bifrost-keystone-collections-src
|
||||||
|
- ansible-collections-openstack-functional-devstack-octavia
|
||||||
|
6
ci/playbooks/get_amphora_tarball.yaml
Normal file
6
ci/playbooks/get_amphora_tarball.yaml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
- hosts: all
|
||||||
|
tasks:
|
||||||
|
- name: Download amphora tarball
|
||||||
|
get_url:
|
||||||
|
url: "https://tarballs.openstack.org/octavia/test-images/test-only-amphora-x64-haproxy-ubuntu-bionic.qcow2"
|
||||||
|
dest: /tmp/test-only-amphora-x64-haproxy-ubuntu-bionic.qcow2
|
3
ci/roles/loadbalancer/defaults/main.yml
Normal file
3
ci/roles/loadbalancer/defaults/main.yml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
network_name: network_lb
|
||||||
|
subnet_name: subnet_lb
|
||||||
|
lb_name: test_lb
|
50
ci/roles/loadbalancer/tasks/main.yml
Normal file
50
ci/roles/loadbalancer/tasks/main.yml
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
|
||||||
|
---
|
||||||
|
- name: Create network {{ network_name }} for LB
|
||||||
|
openstack.cloud.network:
|
||||||
|
cloud: "{{ cloud }}"
|
||||||
|
name: "{{ network_name }}"
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Create subnet {{ subnet_name }} on network {{ network_name }} for LB
|
||||||
|
openstack.cloud.subnet:
|
||||||
|
cloud: "{{ cloud }}"
|
||||||
|
network_name: "{{ network_name }}"
|
||||||
|
name: "{{ subnet_name }}"
|
||||||
|
state: present
|
||||||
|
enable_dhcp: true
|
||||||
|
dns_nameservers:
|
||||||
|
- 8.8.8.7
|
||||||
|
- 8.8.8.8
|
||||||
|
cidr: 192.168.0.0/24
|
||||||
|
gateway_ip: 192.168.0.1
|
||||||
|
allocation_pool_start: 192.168.0.2
|
||||||
|
allocation_pool_end: 192.168.0.254
|
||||||
|
|
||||||
|
- name: Create loadbalancer - generic
|
||||||
|
openstack.cloud.loadbalancer:
|
||||||
|
cloud: "{{ cloud }}"
|
||||||
|
state: present
|
||||||
|
name: "{{ lb_name }}"
|
||||||
|
vip_subnet: "{{ subnet_name }}"
|
||||||
|
timeout: 450
|
||||||
|
|
||||||
|
- name: Delete loadbalancer
|
||||||
|
openstack.cloud.loadbalancer:
|
||||||
|
cloud: "{{ cloud }}"
|
||||||
|
state: absent
|
||||||
|
name: "{{ lb_name }}"
|
||||||
|
timeout: 150
|
||||||
|
|
||||||
|
- name: Delete subnet {{ subnet_name }} on network {{ network_name }}
|
||||||
|
openstack.cloud.subnet:
|
||||||
|
cloud: "{{ cloud }}"
|
||||||
|
network_name: "{{ network_name }}"
|
||||||
|
name: "{{ subnet_name }}"
|
||||||
|
state: absent
|
||||||
|
|
||||||
|
- name: Delete network {{ network_name }} of LB
|
||||||
|
openstack.cloud.network:
|
||||||
|
cloud: "{{ cloud }}"
|
||||||
|
name: "{{ network_name }}"
|
||||||
|
state: absent
|
@ -106,6 +106,27 @@ then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# In case of Octavia enabled:
|
||||||
|
_octavia_image_path="/tmp/test-only-amphora-x64-haproxy-ubuntu-bionic.qcow2"
|
||||||
|
if systemctl list-units --full -all | grep -Fq "devstack@o-api.service" && \
|
||||||
|
test -f "$_octavia_image_path"
|
||||||
|
then
|
||||||
|
# Upload apmhora image for Octavia to test load balancers
|
||||||
|
OCTAVIA_AMP_IMAGE_FILE=${OCTAVIA_AMP_IMAGE_FILE:-"$_octavia_image_path"}
|
||||||
|
OCTAVIA_AMP_IMAGE_NAME=${OCTAVIA_AMP_IMAGE_NAME:-"test-only-amphora-x64-haproxy-ubuntu-bionic"}
|
||||||
|
OCTAVIA_AMP_IMAGE_SIZE=${OCTAVIA_AMP_IMAGE_SIZE:-3}
|
||||||
|
openstack --os-cloud=${CLOUD} image create \
|
||||||
|
--container-format bare \
|
||||||
|
--disk-format qcow2 \
|
||||||
|
--private \
|
||||||
|
--file $OCTAVIA_AMP_IMAGE_FILE \
|
||||||
|
--project service $OCTAVIA_AMP_IMAGE_NAME
|
||||||
|
openstack --os-cloud=${CLOUD} image set --tag amphora $OCTAVIA_AMP_IMAGE_NAME
|
||||||
|
# End of Octavia preparement
|
||||||
|
else
|
||||||
|
tag_opt="$tag_opt --skip-tags loadbalancer"
|
||||||
|
fi
|
||||||
|
|
||||||
# Discover openstackSDK version
|
# Discover openstackSDK version
|
||||||
SDK_VER=$(python -c "import openstack; print(openstack.version.__version__)")
|
SDK_VER=$(python -c "import openstack; print(openstack.version.__version__)")
|
||||||
pushd ci/
|
pushd ci/
|
||||||
|
@ -42,3 +42,5 @@
|
|||||||
- role: orchestration
|
- role: orchestration
|
||||||
tags: orchestrate
|
tags: orchestrate
|
||||||
when: sdk_version is version("0.53.0", '>=')
|
when: sdk_version is version("0.53.0", '>=')
|
||||||
|
- role: loadbalancer
|
||||||
|
tags: loadbalancer
|
||||||
|
Loading…
Reference in New Issue
Block a user