[train][goal] Define new vitrage-dsvm-api-ipv6-only job

As part of Train community goal 'Support IPv6-Only Deployments and Testing'[1],
we need to define the integration job which deploy services
on IPv6 and perform testing to make sure service listen and communicate
over IPv6 properly.

Vitrage has legacy zuul jobs only so base zuulv3 IPv6 job 'devstack-ipv6' and
'devstack-tempest-ipv6' cannot be used and we have to copy the whole
run.yaml to set the IPv6 setting and run the IPv6 verification
script via post_test_hook.

This commit adds the new job 'vitrage-dsvm-api-ipv6-only'
run on gate and set the required IPv6 setting'.

Story: #2005477
Task: #35938

[1] https://governance.openstack.org/tc/goals/train/ipv6-support-and-testing.html

Depends-On: https://review.opendev.org/#/c/701105/
Change-Id: I343b5ad52b0c70da94d94898b9de201fffe6ce6b
This commit is contained in:
Ghanshyam Mann 2019-09-16 12:41:55 +00:00 committed by Eyal
parent 6304037894
commit f628ca0055
3 changed files with 87 additions and 1 deletions

View File

@ -11,12 +11,14 @@
- vitrage-dsvm-datasources-py3
- vitrage-dsvm-mock-py3
- grenade-vitrage
- vitrage-dsvm-api-ipv6-only
gate:
queue: vitrage
jobs:
- vitrage-dsvm-api-py3
- vitrage-dsvm-datasources-py3
- grenade-vitrage
- vitrage-dsvm-api-ipv6-only
- job:
name: vitrage-dsvm-api-py3
@ -36,6 +38,13 @@
- ^doc/.*$
- ^releasenotes/.*$
- job:
name: vitrage-dsvm-api-ipv6-only
parent: vitrage-dsvm-api-py3
run: playbooks/legacy/vitrage-dsvm-api-py3/run-ipv6.yaml
required-projects:
- openstack/tempest
- job:
name: vitrage-dsvm-datasources-py3
parent: legacy-dsvm-base

View File

@ -240,7 +240,7 @@ function configure_vitrage {
if [[ ! -z "$VITRAGE_COORDINATION_URL" ]]; then
iniset $VITRAGE_CONF coordination backend_url "$VITRAGE_COORDINATION_URL"
elif is_service_enabled etcd3; then
iniset $VITRAGE_CONF coordination backend_url "etcd3://${SERVICE_HOST}:$ETCD_PORT"
iniset $VITRAGE_CONF coordination backend_url "etcd3+http://${SERVICE_HOST}:$ETCD_PORT"
fi
}

View File

@ -0,0 +1,77 @@
- hosts: all
name: Vitrage IPv6 legacy jobs
tasks:
- name: Ensure legacy workspace directory
file:
path: '{{ ansible_user_dir }}/workspace'
state: directory
- shell:
cmd: |
set -e
set -x
cat > clonemap.yaml << EOF
clonemap:
- name: openstack/devstack-gate
dest: devstack-gate
EOF
/usr/zuul-env/bin/zuul-cloner -m clonemap.yaml --cache-dir /opt/git \
https://opendev.org \
openstack/devstack-gate
executable: /bin/bash
chdir: '{{ ansible_user_dir }}/workspace'
environment: '{{ zuul | zuul_legacy_vars }}'
- shell:
cmd: |
set -e
set -x
export PYTHONUNBUFFERED=true
export PROJECTS="openstack/python-vitrageclient $PROJECTS"
export PROJECTS="openstack/aodh $PROJECTS"
export PROJECTS="openstack/mistral $PROJECTS"
export PROJECTS="openstack/vitrage $PROJECTS"
export PROJECTS="openstack/vitrage-tempest-plugin $PROJECTS"
export DEVSTACK_GATE_USE_PYTHON3=True
export DEVSTACK_LOCAL_CONFIG+=$'\n'"SERVICE_IP_VERSION=6"
export DEVSTACK_LOCAL_CONFIG+=$'\n'"SERVICE_HOST=''"
# temporary workaround with IPv6-based host name until we'll figure out how to pass
# IPv6 address to gRPC client
#export DEVSTACK_LOCAL_CONFIG+=$'\n'"VITRAGE_COORDINATION_URL=etcd3://localhost:2379"
function pre_test_hook {
source $BASE/new/vitrage-tempest-plugin/devstack/pre_test_hook.sh
}
export -f pre_test_hook
function gate_hook {
source $BASE/new/vitrage/devstack/gate_hook.sh
}
export -f gate_hook
function post_test_hook {
cd $BASE/new/tempest/tools
./verify-ipv6-only-deployments.sh
if [[ "$TEMPEST_VERSION" != "master" ]]; then
# use vitrage-tempest-plugin $TEMPEST_VERSION
# which is defined in the devstackgaterc file
cd $BASE/new/vitrage-tempest-plugin/
git_checkout_tag vitrage-tempest-plugin $TEMPEST_VERSION
fi
source $BASE/new/vitrage-tempest-plugin/devstack/post_test_hook.sh 'api'
}
export -f post_test_hook
export DEVSTACK_GATE_SETTINGS=/opt/stack/new/vitrage/devstack/devstackgaterc
cp devstack-gate/devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh
./safe-devstack-vm-gate-wrap.sh
executable: /bin/bash
chdir: '{{ ansible_user_dir }}/workspace'
environment: '{{ zuul | zuul_legacy_vars }}'