Add a nova-caching-scheduler job to the experimental queue

This adds an experimental queue job to run non-slow tempest
API and scenario tests using the CachingScheduler as the
scheduler driver.

A blacklist is added since there are a few tests that rely on
filters which don't work well with the CachingScheduler.

The CachingScheduler is deprecated, but this is useful to have
when we're making changes to the scheduler or flows within the
code that involve the scheduler, such as the alternate hosts
work.

Change-Id: I8630ea11c3067ed934de2ef27a63432418e98c33
This commit is contained in:
Matt Riedemann 2018-01-30 11:55:46 -05:00
parent 3da85671a9
commit 0c9225bece
4 changed files with 113 additions and 0 deletions

View File

@ -62,6 +62,14 @@
tox_envlist: functional-py35
timeout: 3600
- job:
name: nova-caching-scheduler
parent: nova-dsvm-base
description: |
Run non-slow Tempest API and scenario tests using the CachingScheduler.
run: playbooks/legacy/nova-caching-scheduler/run.yaml
post-run: playbooks/legacy/nova-caching-scheduler/post.yaml
- job:
name: nova-lvm
parent: nova-dsvm-base
@ -100,4 +108,5 @@
- nova-tox-functional-py35
experimental:
jobs:
- nova-caching-scheduler
- nova-lvm

View File

@ -0,0 +1,30 @@
#
# This script is executed in the OpenStack CI nova-caching-scheduler job.
# It's used to configure which tempest tests actually get run. You can find
# the CI job configuration under playbooks/legacy/nova-caching-scheduler/.
#
# Construct a regex to use when limiting scope of tempest
# to avoid features unsupported by Nova's CachingScheduler support.
# When adding entries to the regex, add a comment explaining why
# since this list should not grow.
r="^(?!.*"
# exclude the slow tag
r="$r(?:.*\[.*\bslow\b.*\])"
# NOTE(mriedem): ServersAdminTestJSON.test_create_server_with_scheduling_hint
# is skipped because it relies on the SameHostFilter which relies on the
# HostState object which might be stale when that filter runs.
# tempest.api.compute.admin.test_servers.ServersAdminTestJSON.test_create_server_with_scheduling_hint
r="$r|(?:.*id\-fdcd9b33\-0903\-4e00\-a1f7\-b5f6543068d6.*)"
# NOTE(mriedem): AggregatesAdminTestJSON.test_aggregate_add_host_create_server_with_az
# is skipped because it creates an aggregate and adds a host to it, then
# creates a server in that aggregate but fails to schedule because the caching
# scheduler hasn't updated the host's aggregates view yet.
# tempest.api.compute.admin.test_aggregates.AggregatesAdminTestJSON.test_aggregate_add_host_create_server_with_az
r="$r|(?:.*id\-96be03c7\-570d\-409c\-90f8\-e4db3c646996.*)"
r="$r).*$"
export DEVSTACK_GATE_TEMPEST_REGEX="$r"

View File

@ -0,0 +1,15 @@
- 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=/logs/**
- --include=*/
- --exclude=*
- --prune-empty-dirs

View File

@ -0,0 +1,59 @@
- hosts: all
name: nova-caching-scheduler
tasks:
- name: Ensure 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:
# The scheduler.periodic_task_interval must be less than the
# service_down_time (defaults to 60) otherwise the ComputeFilter
# will be using potentially stale compute service information and
# think that the compute service is down when it's really not.
cmd: |
set -e
set -x
cat << 'EOF' >>"/tmp/dg-local.conf"
[[local|localrc]]
SCHEDULER=caching_scheduler
[[post-config|$NOVA_CONF]]
[scheduler]
periodic_task_interval=30
EOF
executable: /bin/bash
chdir: '{{ ansible_user_dir }}/workspace'
environment: '{{ zuul | zuul_legacy_vars }}'
- shell:
cmd: |
set -e
set -x
export PYTHONUNBUFFERED=true
# Yes we want to run Tempest.
export DEVSTACK_GATE_TEMPEST=1
# Run with our blacklist.
export DEVSTACK_GATE_SETTINGS=/opt/stack/new/nova/devstack/tempest-dsvm-caching-scheduler-rc
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 }}'