Native DevStack jobs

Convert legacy DevStack jobs to native Zuul v3 form, plus some
test-job-related docs updates.

Change-Id: Ia8c08be81605da885b9eee799fc58129305dfc41
This commit is contained in:
Dean Troyer 2017-10-19 15:48:12 -05:00
parent ef595fcfc4
commit 676159555f
14 changed files with 121 additions and 639 deletions

View File

@ -1,38 +1,112 @@
# from zuul.d/zuul-legacy-jobs.yaml legacy-osc-dsvm-functional - job:
name: osc-functional-devstack-base
parent: devstack
description: |
Base job for devstack-based functional tests
pre-run: playbooks/osc-devstack/pre
run: playbooks/osc-devstack/run
post-run: playbooks/osc-devstack/post
required-projects:
- name: openstack/swift
roles:
- zuul: openstack-infra/devstack
timeout: 9000
vars:
devstack_localrc:
SWIFT_HASH: "1234123412341234"
LIBS_FROM_GIT: 'python-openstackclient'
# NOTE(dtroyer): OSC needs to support Image v1 for a while yet so re-enable
GLANCE_V1_ENABLED: True
# NOTE(dtroyer): Functional tests need a bit more volume headroom
VOLUME_BACKING_FILE_SIZE: 20G
devstack_local_conf:
post-config:
"$CINDER_CONF":
DEFAULT:
# NOTE(dtroyer): OSC needs to support Volume v1 for a while yet so re-enable
enable_v1_api: True
devstack_services:
ceilometer-acentral: False
ceilometer-acompute: False
ceilometer-alarm-evaluator: False
ceilometer-alarm-notifier: False
ceilometer-anotification: False
ceilometer-api: False
ceilometer-collector: False
horizon: False
s-account: True
s-container: True
s-object: True
s-proxy: True
osc_environment:
PYTHONUNBUFFERED: 'true'
OS_CLOUD: 'devstack-admin'
tox_install_siblings: False
zuul_work_dir: src/git.openstack.org/openstack/python-openstackclient
# The Neutron bits are here rather than in osc-functional-devstack-base to
# simplify removing Neutron in the osc-functional-devstack-n-net job.
- job: - job:
name: osc-functional-devstack name: osc-functional-devstack
parent: legacy-dsvm-base parent: osc-functional-devstack-base
run: playbooks/osc-functional-devstack/run
post-run: playbooks/osc-functional-devstack/post
timeout: 7800 timeout: 7800
required-projects: vars:
- openstack-infra/devstack-gate devstack_plugins:
- openstack/python-openstackclient # NOTE(amotoki): Some neutron features are enabled by devstack plugin
neutron: https://git.openstack.org/openstack/neutron
devstack_services:
neutron-segments: True
q-metering: True
q-qos: True
tox_envlist: functional
- job: - job:
name: osc-functional-devstack-n-net name: osc-functional-devstack-n-net
parent: legacy-dsvm-base parent: osc-functional-devstack-base
run: playbooks/osc-functional-devstack-n-net/run
post-run: playbooks/osc-functional-devstack-n-net/post
timeout: 7800 timeout: 7800
required-projects: vars:
- openstack-infra/devstack-gate devstack_localrc:
- openstack/python-openstackclient FLAT_INTERFACE: 'br_flat'
PUBLIC_INTERFACE: 'br_pub'
devstack_services:
n-cell: True
n-net: True
neutron: False
neutron-segments: False
q-agt: False
q-dhcp: False
q-l3: False
q-meta: False
q-metering: False
q-qos: False
q-svc: False
tox_envlist: functional
- job: - job:
name: osc-functional-devstack-tips name: osc-functional-devstack-tips
parent: legacy-dsvm-base parent: osc-functional-devstack
run: playbooks/osc-functional-devstack-tips/run
post-run: playbooks/osc-functional-devstack-tips/post
timeout: 7800 timeout: 7800
required-projects: required-projects:
- openstack-infra/devstack-gate
- openstack/os-client-config - openstack/os-client-config
- openstack/osc-lib - openstack/osc-lib
- openstack/python-openstackclient - openstack/python-openstackclient
- openstack/python-openstacksdk - openstack/python-openstacksdk
vars:
devstack_localrc:
USE_PYTHON3: True
LIBS_FROM_GIT: 'python-openstackclient,python-openstacksdk,osc-lib,os-client-config'
# This is insufficient, but leaving it here as a reminder of what may
# someday be all we need to make this work
# disable_python3_package swift
DISABLED_PYTHON3_PACKAGES: 'swift'
devstack_services:
# Swift is not ready for python3 yet: At a minimum keystonemiddleware needs
# to be installed in the py2 env, there are probably other things too...
s-account: False
s-container: False
s-object: False
s-proxy: False
tox_envlist: functional-tips
- project: - project:
name: openstack/python-openstackclient name: openstack/python-openstackclient

View File

@ -217,16 +217,13 @@ more steps needed to fully integrate the client with openstackclient.
Add the command checker to your CI Add the command checker to your CI
---------------------------------- ----------------------------------
#. Modify the section of ``zuul/layout.yaml`` related to your repository to #. Add ``openstackclient-plugin-jobs`` to the list of job templates for your project.
add ``osc-plugin-jobs`` to the list of job templates for your project. These jobs ensures that all plugin libraries are co-installable with
This job checks that to see if any new commands are: duplicated, missing ``python-openstackclient`` and checks for conflicts across all OpenStackClient
entry points, or have overlap; across all openstackclient plugins. plugins, such as duplicated commands, missing entry points, or other overlaps.
#. Update ``jenkins/scripts/check-osc-plugins.sh`` to include your new #. Add your project to the ``required-projects`` list in the ``.zuul.yaml`` file
library to be installed from source. This is essential in running the in the ``openstack/openstackclient`` repo.
previously mentioned check job. Simply add
``install_from_source python-fooclient`` to the block of code where all
other clients are installed.
Changes to python-openstackclient Changes to python-openstackclient
--------------------------------- ---------------------------------

View File

@ -1,51 +0,0 @@
#!/bin/bash
# This is a script that kicks off a series of functional tests against an
# OpenStack cloud. It will attempt to create an instance if one is not
# available. Do not run this script unless you know what you're doing.
# For more information refer to:
# https://docs.openstack.org/python-openstackclient/latest/
function generate_testr_results {
if [ -f .testrepository/0 ]; then
sudo .tox/functional/bin/testr last --subunit > $WORKSPACE/testrepository.subunit
sudo mv $WORKSPACE/testrepository.subunit $BASE/logs/testrepository.subunit
sudo .tox/functional/bin/subunit2html $BASE/logs/testrepository.subunit $BASE/logs/testr_results.html
sudo gzip -9 $BASE/logs/testrepository.subunit
sudo gzip -9 $BASE/logs/testr_results.html
sudo chown $USER:$USER $BASE/logs/testrepository.subunit.gz $BASE/logs/testr_results.html.gz
sudo chmod a+r $BASE/logs/testrepository.subunit.gz $BASE/logs/testr_results.html.gz
elif [ -f .stestr/0 ]; then
sudo .tox/functional/bin/stestr last --subunit > $WORKSPACE/testrepository.subunit
sudo mv $WORKSPACE/testrepository.subunit $BASE/logs/testrepository.subunit
sudo .tox/functional/bin/subunit2html $BASE/logs/testrepository.subunit $BASE/logs/testr_results.html
sudo gzip -9 $BASE/logs/testrepository.subunit
sudo gzip -9 $BASE/logs/testr_results.html
sudo chown $USER:$USER $BASE/logs/testrepository.subunit.gz $BASE/logs/testr_results.html.gz
sudo chmod a+r $BASE/logs/testrepository.subunit.gz $BASE/logs/testr_results.html.gz
fi
}
export OPENSTACKCLIENT_DIR="$BASE/new/python-openstackclient"
sudo chown -R $USER:stack $OPENSTACKCLIENT_DIR
# Go to the openstackclient dir
cd $OPENSTACKCLIENT_DIR
# Run tests
echo "Running openstackclient functional test suite"
set +e
# Source environment variables to kick things off
source ~stack/devstack/openrc admin admin
echo 'Running tests with:'
env | grep OS
# Preserve env for OS_ credentials
sudo -E -H -u $USER tox -efunctional
EXIT_CODE=$?
set -e
# Collect and parse result
generate_testr_results
exit $EXIT_CODE

View File

@ -1,55 +0,0 @@
#!/bin/bash
# This is a script that kicks off a series of functional tests against an
# OpenStack cloud. It will attempt to create an instance if one is not
# available. Do not run this script unless you know what you're doing.
# For more information refer to:
# https://docs.openstack.org/python-openstackclient/latest/
# This particular script differs from the normal post_test_hook because
# it installs the master (tip) version of osc-lib, os-client-config
# and openstacksdk, OSCs most important dependencies.
function generate_testr_results {
if [ -f .testrepository/0 ]; then
sudo .tox/functional-tips/bin/testr last --subunit > $WORKSPACE/testrepository.subunit
sudo mv $WORKSPACE/testrepository.subunit $BASE/logs/testrepository.subunit
sudo .tox/functional-tips/bin/subunit2html $BASE/logs/testrepository.subunit $BASE/logs/testr_results.html
sudo gzip -9 $BASE/logs/testrepository.subunit
sudo gzip -9 $BASE/logs/testr_results.html
sudo chown $USER:$USER $BASE/logs/testrepository.subunit.gz $BASE/logs/testr_results.html.gz
sudo chmod a+r $BASE/logs/testrepository.subunit.gz $BASE/logs/testr_results.html.gz
elif [ -f .stestr/0 ]; then
sudo .tox/functional-tips/bin/stestr last --subunit > $WORKSPACE/testrepository.subunit
sudo mv $WORKSPACE/testrepository.subunit $BASE/logs/testrepository.subunit
sudo .tox/functional-tips/bin/subunit2html $BASE/logs/testrepository.subunit $BASE/logs/testr_results.html
sudo gzip -9 $BASE/logs/testrepository.subunit
sudo gzip -9 $BASE/logs/testr_results.html
sudo chown $USER:$USER $BASE/logs/testrepository.subunit.gz $BASE/logs/testr_results.html.gz
sudo chmod a+r $BASE/logs/testrepository.subunit.gz $BASE/logs/testr_results.html.gz
fi
}
export OPENSTACKCLIENT_DIR="$BASE/new/python-openstackclient"
sudo chown -R $USER:stack $OPENSTACKCLIENT_DIR
# Go to the openstackclient dir
cd $OPENSTACKCLIENT_DIR
# Run tests
echo "Running openstackclient functional-tips test suite"
set +e
# Source environment variables to kick things off
source ~stack/devstack/openrc admin admin
echo 'Running tests with:'
env | grep OS
# Preserve env for OS_ credentials
sudo -E -H -u $USER tox -e functional-tips
EXIT_CODE=$?
set -e
# Collect and parse result
generate_testr_results
exit $EXIT_CODE

View File

@ -0,0 +1,4 @@
- hosts: all
roles:
- fetch-tox-output
- fetch-stestr-output

View File

@ -0,0 +1,8 @@
- hosts: all
roles:
- run-devstack
- role: bindep
bindep_profile: test
bindep_dir: "{{ zuul_work_dir }}"
- test-setup
- ensure-tox

View File

@ -0,0 +1,3 @@
- hosts: all
roles:
- tox

View File

@ -1,80 +0,0 @@
- hosts: primary
tasks:
- name: Copy files from {{ ansible_user_dir }}/workspace/ on node
synchronize:
src: '{{ ansible_user_dir }}/workspace/'
dest: '{{ zuul.executor.log_root }}'
mode: pull
copy_links: true
verify_host: true
rsync_opts:
- --include=**/*nose_results.html
- --include=*/
- --exclude=*
- --prune-empty-dirs
- name: Copy files from {{ ansible_user_dir }}/workspace/ on node
synchronize:
src: '{{ ansible_user_dir }}/workspace/'
dest: '{{ zuul.executor.log_root }}'
mode: pull
copy_links: true
verify_host: true
rsync_opts:
- --include=**/*testr_results.html.gz
- --include=*/
- --exclude=*
- --prune-empty-dirs
- name: Copy files from {{ ansible_user_dir }}/workspace/ on node
synchronize:
src: '{{ ansible_user_dir }}/workspace/'
dest: '{{ zuul.executor.log_root }}'
mode: pull
copy_links: true
verify_host: true
rsync_opts:
- --include=/.testrepository/tmp*
- --include=*/
- --exclude=*
- --prune-empty-dirs
- name: Copy files from {{ ansible_user_dir }}/workspace/ on node
synchronize:
src: '{{ ansible_user_dir }}/workspace/'
dest: '{{ zuul.executor.log_root }}'
mode: pull
copy_links: true
verify_host: true
rsync_opts:
- --include=**/*testrepository.subunit.gz
- --include=*/
- --exclude=*
- --prune-empty-dirs
- name: Copy files from {{ ansible_user_dir }}/workspace/ on node
synchronize:
src: '{{ ansible_user_dir }}/workspace/'
dest: '{{ zuul.executor.log_root }}/tox'
mode: pull
copy_links: true
verify_host: true
rsync_opts:
- --include=/.tox/*/log/*
- --include=*/
- --exclude=*
- --prune-empty-dirs
- name: Copy files from {{ ansible_user_dir }}/workspace/ on node
synchronize:
src: '{{ ansible_user_dir }}/workspace/'
dest: '{{ zuul.executor.log_root }}'
mode: pull
copy_links: true
verify_host: true
rsync_opts:
- --include=/logs/**
- --include=*/
- --exclude=*
- --prune-empty-dirs

View File

@ -1,85 +0,0 @@
- hosts: all
name: Autoconverted job legacy-osc-dsvm-functional-n-net from old job gate-osc-dsvm-functional-n-net-ubuntu-xenial-nv
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-infra/devstack-gate
dest: devstack-gate
EOF
/usr/zuul-env/bin/zuul-cloner -m clonemap.yaml --cache-dir /opt/git \
git://git.openstack.org \
openstack-infra/devstack-gate
executable: /bin/bash
chdir: '{{ ansible_user_dir }}/workspace'
environment: '{{ zuul | zuul_legacy_vars }}'
- shell:
cmd: |
set -e
set -x
cat << 'EOF' >>"/tmp/dg-local.conf"
[[local|localrc]]
# NOTE(RuiChen): nova-network only can be enable in nova cell v1
enable_service n-net n-cell
disable_service neutron q-svc q-agt q-dhcp q-l3 q-meta q-metering
# NOTE(dtroyer): OSC needs to support Image v1 for a while yet so re-enable
GLANCE_V1_ENABLED=True
# NOTE(dtroyer): Functional tests need a bit more volume headroom
VOLUME_BACKING_FILE_SIZE=20G
# NOTE(dtroyer): OSC needs to support Volume v1 for a while yet so re-enable
[[post-config|$CINDER_CONF]]
[DEFAULT]
enable_v1_api = True
EOF
executable: /bin/bash
chdir: '{{ ansible_user_dir }}/workspace'
environment: '{{ zuul | zuul_legacy_vars }}'
- shell:
cmd: |
set -e
set -x
export PYTHONUNBUFFERED=true
export DEVSTACK_GATE_UNSTACK=0
export DEVSTACK_GATE_TEMPEST=0
export DEVSTACK_GATE_EXERCISES=0
export DEVSTACK_GATE_INSTALL_TESTONLY=1
# NOTE(RuiChen): Explicitly tell devstack-gate that we need to run
# the nova-network job with cell v1.
export DEVSTACK_GATE_NEUTRON=0
export DEVSTACK_GATE_CELLS=1
export BRANCH_OVERRIDE=default
export DEVSTACK_PROJECT_FROM_GIT=python-openstackclient
if [ "$BRANCH_OVERRIDE" != "default" ] ; then
export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE
fi
function post_test_hook {
# NOTE(stevemar): After the newton release was tagged the file was moved.
# But, we run functional tests for various stable releases
# (mitaka, and newton).
# TODO(stevemar): Remove this check when Newton hits EOL.
hook_location=$BASE/new/python-openstackclient/openstackclient/tests/functional/post_test_hook.sh
if [ ! -f "$hook_location" ]; then
hook_location=$BASE/new/python-openstackclient/post_test_hook.sh
fi
bash -xe $hook_location
}
export -f post_test_hook
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 }}'

View File

@ -1,80 +0,0 @@
- hosts: primary
tasks:
- name: Copy files from {{ ansible_user_dir }}/workspace/ on node
synchronize:
src: '{{ ansible_user_dir }}/workspace/'
dest: '{{ zuul.executor.log_root }}'
mode: pull
copy_links: true
verify_host: true
rsync_opts:
- --include=**/*nose_results.html
- --include=*/
- --exclude=*
- --prune-empty-dirs
- name: Copy files from {{ ansible_user_dir }}/workspace/ on node
synchronize:
src: '{{ ansible_user_dir }}/workspace/'
dest: '{{ zuul.executor.log_root }}'
mode: pull
copy_links: true
verify_host: true
rsync_opts:
- --include=**/*testr_results.html.gz
- --include=*/
- --exclude=*
- --prune-empty-dirs
- name: Copy files from {{ ansible_user_dir }}/workspace/ on node
synchronize:
src: '{{ ansible_user_dir }}/workspace/'
dest: '{{ zuul.executor.log_root }}'
mode: pull
copy_links: true
verify_host: true
rsync_opts:
- --include=/.testrepository/tmp*
- --include=*/
- --exclude=*
- --prune-empty-dirs
- name: Copy files from {{ ansible_user_dir }}/workspace/ on node
synchronize:
src: '{{ ansible_user_dir }}/workspace/'
dest: '{{ zuul.executor.log_root }}'
mode: pull
copy_links: true
verify_host: true
rsync_opts:
- --include=**/*testrepository.subunit.gz
- --include=*/
- --exclude=*
- --prune-empty-dirs
- name: Copy files from {{ ansible_user_dir }}/workspace/ on node
synchronize:
src: '{{ ansible_user_dir }}/workspace/'
dest: '{{ zuul.executor.log_root }}/tox'
mode: pull
copy_links: true
verify_host: true
rsync_opts:
- --include=/.tox/*/log/*
- --include=*/
- --exclude=*
- --prune-empty-dirs
- name: Copy files from {{ ansible_user_dir }}/workspace/ on node
synchronize:
src: '{{ ansible_user_dir }}/workspace/'
dest: '{{ zuul.executor.log_root }}'
mode: pull
copy_links: true
verify_host: true
rsync_opts:
- --include=/logs/**
- --include=*/
- --exclude=*
- --prune-empty-dirs

View File

@ -1,90 +0,0 @@
- hosts: all
name: Autoconverted job legacy-osc-dsvm-functional-tips from old job gate-osc-dsvm-functional-tips-ubuntu-xenial-nv
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-infra/devstack-gate
dest: devstack-gate
EOF
/usr/zuul-env/bin/zuul-cloner -m clonemap.yaml --cache-dir /opt/git \
git://git.openstack.org \
openstack-infra/devstack-gate
executable: /bin/bash
chdir: '{{ ansible_user_dir }}/workspace'
environment: '{{ zuul | zuul_legacy_vars }}'
- shell:
cmd: |
set -e
set -x
cat << 'EOF' >>"/tmp/dg-local.conf"
[[local|localrc]]
# NOTE(amotoki): Some neutron features are enabled by devstack plugin
enable_plugin neutron https://git.openstack.org/openstack/neutron
enable_service q-qos
enable_service neutron-segments
# NOTE(dtroyer): OSC needs to support Image v1 for a while yet so re-enable
GLANCE_V1_ENABLED=True
# NOTE(dtroyer): Functional tests need a bit more volume headroom
VOLUME_BACKING_FILE_SIZE=20G
# Swift is not ready for python3 yet: At a minimum keystonemiddleware needs
# to be installed in the py2 env, there are probably other things too...
disable_service s-account
disable_service s-container
disable_service s-object
disable_service s-proxy
# This is insufficient, but leaving it here as a reminder of what may
# someday be all we need to make this work
disable_python3_package swift
# NOTE(dtroyer): OSC needs to support Volume v1 for a while yet so re-enable
[[post-config|$CINDER_CONF]]
[DEFAULT]
enable_v1_api = True
EOF
executable: /bin/bash
chdir: '{{ ansible_user_dir }}/workspace'
environment: '{{ zuul | zuul_legacy_vars }}'
- shell:
cmd: |
set -e
set -x
export PYTHONUNBUFFERED=true
export DEVSTACK_GATE_USE_PYTHON3=True
export DEVSTACK_GATE_UNSTACK=0
export DEVSTACK_GATE_TEMPEST=0
export DEVSTACK_GATE_EXERCISES=0
export DEVSTACK_GATE_INSTALL_TESTONLY=1
export DEVSTACK_GATE_NEUTRON=1
export BRANCH_OVERRIDE=default
export DEVSTACK_PROJECT_FROM_GIT="python-openstackclient,python-openstacksdk,osc-lib,os-client-config"
if [ "$BRANCH_OVERRIDE" != "default" ] ; then
export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE
fi
function post_test_hook {
# This test hook will install the master version of the following:
# - osc-lib
# - openstacksdk
# - os-client-config
hook_location=$BASE/new/python-openstackclient/openstackclient/tests/functional/post_test_hook_tips.sh
bash -xe $hook_location
}
export -f post_test_hook
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 }}'

View File

@ -1,80 +0,0 @@
- hosts: primary
tasks:
- name: Copy files from {{ ansible_user_dir }}/workspace/ on node
synchronize:
src: '{{ ansible_user_dir }}/workspace/'
dest: '{{ zuul.executor.log_root }}'
mode: pull
copy_links: true
verify_host: true
rsync_opts:
- --include=**/*nose_results.html
- --include=*/
- --exclude=*
- --prune-empty-dirs
- name: Copy files from {{ ansible_user_dir }}/workspace/ on node
synchronize:
src: '{{ ansible_user_dir }}/workspace/'
dest: '{{ zuul.executor.log_root }}'
mode: pull
copy_links: true
verify_host: true
rsync_opts:
- --include=**/*testr_results.html.gz
- --include=*/
- --exclude=*
- --prune-empty-dirs
- name: Copy files from {{ ansible_user_dir }}/workspace/ on node
synchronize:
src: '{{ ansible_user_dir }}/workspace/'
dest: '{{ zuul.executor.log_root }}'
mode: pull
copy_links: true
verify_host: true
rsync_opts:
- --include=/.testrepository/tmp*
- --include=*/
- --exclude=*
- --prune-empty-dirs
- name: Copy files from {{ ansible_user_dir }}/workspace/ on node
synchronize:
src: '{{ ansible_user_dir }}/workspace/'
dest: '{{ zuul.executor.log_root }}'
mode: pull
copy_links: true
verify_host: true
rsync_opts:
- --include=**/*testrepository.subunit.gz
- --include=*/
- --exclude=*
- --prune-empty-dirs
- name: Copy files from {{ ansible_user_dir }}/workspace/ on node
synchronize:
src: '{{ ansible_user_dir }}/workspace/'
dest: '{{ zuul.executor.log_root }}/tox'
mode: pull
copy_links: true
verify_host: true
rsync_opts:
- --include=/.tox/*/log/*
- --include=*/
- --exclude=*
- --prune-empty-dirs
- name: Copy files from {{ ansible_user_dir }}/workspace/ on node
synchronize:
src: '{{ ansible_user_dir }}/workspace/'
dest: '{{ zuul.executor.log_root }}'
mode: pull
copy_links: true
verify_host: true
rsync_opts:
- --include=/logs/**
- --include=*/
- --exclude=*
- --prune-empty-dirs

View File

@ -1,83 +0,0 @@
- hosts: all
name: Autoconverted job legacy-osc-dsvm-functional from old job gate-osc-dsvm-functional-ubuntu-xenial
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-infra/devstack-gate
dest: devstack-gate
EOF
/usr/zuul-env/bin/zuul-cloner -m clonemap.yaml --cache-dir /opt/git \
git://git.openstack.org \
openstack-infra/devstack-gate
executable: /bin/bash
chdir: '{{ ansible_user_dir }}/workspace'
environment: '{{ zuul | zuul_legacy_vars }}'
- shell:
cmd: |
set -e
set -x
cat << 'EOF' >>"/tmp/dg-local.conf"
[[local|localrc]]
# NOTE(amotoki): Some neutron features are enabled by devstack plugin
enable_plugin neutron https://git.openstack.org/openstack/neutron
enable_service q-qos
enable_service neutron-segments
# NOTE(dtroyer): OSC needs to support Image v1 for a while yet so re-enable
GLANCE_V1_ENABLED=True
# NOTE(dtroyer): Functional tests need a bit more volume headroom
VOLUME_BACKING_FILE_SIZE=20G
# NOTE(dtroyer): OSC needs to support Volume v1 for a while yet so re-enable
[[post-config|$CINDER_CONF]]
[DEFAULT]
enable_v1_api = True
EOF
executable: /bin/bash
chdir: '{{ ansible_user_dir }}/workspace'
environment: '{{ zuul | zuul_legacy_vars }}'
- shell:
cmd: |
set -e
set -x
export PYTHONUNBUFFERED=true
export DEVSTACK_GATE_UNSTACK=0
export DEVSTACK_GATE_TEMPEST=0
export DEVSTACK_GATE_EXERCISES=0
export DEVSTACK_GATE_INSTALL_TESTONLY=1
export DEVSTACK_GATE_NEUTRON=1
export BRANCH_OVERRIDE=default
export DEVSTACK_PROJECT_FROM_GIT=python-openstackclient
if [ "$BRANCH_OVERRIDE" != "default" ] ; then
export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE
fi
function post_test_hook {
# NOTE(stevemar): After the newton release was tagged the file was moved.
# But, we run functional tests for various stable releases
# (mitaka, and newton).
# TODO(stevemar): Remove this check when Newton hits EOL.
hook_location=$BASE/new/python-openstackclient/openstackclient/tests/functional/post_test_hook.sh
if [ ! -f "$hook_location" ]; then
hook_location=$BASE/new/python-openstackclient/post_test_hook.sh
fi
bash -xe $hook_location
}
export -f post_test_hook
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 }}'

16
tox.ini
View File

@ -56,20 +56,20 @@ commands =
[testenv:functional] [testenv:functional]
setenv = OS_TEST_PATH=./openstackclient/tests/functional setenv = OS_TEST_PATH=./openstackclient/tests/functional
passenv = OS_* passenv = OS_*
# Enable this when running Zuul v3 jobs whitelist_externals = openstackclient/tests/functional/run_ostestr.sh
#whitelist_externals = openstackclient/tests/functional/run_ostestr.sh commands =
#commands = {toxinidir}/openstackclient/tests/functional/run_ostestr.sh {posargs}
# {toxinidir}/openstackclient/tests/functional/run_ostestr.sh {posargs}
[testenv:functional-tips] [testenv:functional-tips]
setenv = OS_TEST_PATH=./openstackclient/tests/functional setenv = OS_TEST_PATH=./openstackclient/tests/functional
passenv = OS_* passenv = OS_*
whitelist_externals = openstackclient/tests/functional/run_ostestr.sh
commands = commands =
pip install -q -U -e "git+file:///opt/stack/new/osc-lib#egg=osc_lib" pip install -q -U -e "git+file://{toxinidir}/../osc-lib#egg=osc_lib"
pip install -q -U -e "git+file:///opt/stack/new/python-openstacksdk#egg=openstacksdk" pip install -q -U -e "git+file://{toxinidir}/../os-client-config#egg=os_client_config"
pip install -q -U -e "git+file:///opt/stack/new/os-client-config#egg=os_client_config" pip install -q -U -e "git+file://{toxinidir}/../python-openstacksdk#egg=openstacksdk"
pip freeze pip freeze
ostestr {posargs} {toxinidir}/openstackclient/tests/functional/run_ostestr.sh {posargs}
[testenv:venv] [testenv:venv]
commands = {posargs} commands = {posargs}