summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2018-03-07 14:55:54 +0000
committerGerrit Code Review <review@openstack.org>2018-03-07 14:55:55 +0000
commit489a8f5bf3e50944ced253283c15e77310a56e40 (patch)
treee4df0cd913cc1ac81623177a63b62d4cf3271d51
parent450be218daa4363126a91a139324298fd579f1e6 (diff)
parent0c9225bece409809fdd60a710d0f313ded340a86 (diff)
downloadnova-489a8f5bf3e50944ced253283c15e77310a56e40.tar.gz
Merge "Add a nova-caching-scheduler job to the experimental queue"
-rw-r--r--.zuul.yaml9
-rw-r--r--devstack/tempest-dsvm-caching-scheduler-rc30
-rw-r--r--playbooks/legacy/nova-caching-scheduler/post.yaml15
-rw-r--r--playbooks/legacy/nova-caching-scheduler/run.yaml59
4 files changed, 113 insertions, 0 deletions
diff --git a/.zuul.yaml b/.zuul.yaml
index 4b25617ab5..2775843507 100644
--- a/.zuul.yaml
+++ b/.zuul.yaml
@@ -63,6 +63,14 @@
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
description: |
@@ -117,4 +125,5 @@
- nova-tox-functional-py35
experimental:
jobs:
+ - nova-caching-scheduler
- nova-lvm
diff --git a/devstack/tempest-dsvm-caching-scheduler-rc b/devstack/tempest-dsvm-caching-scheduler-rc
new file mode 100644
index 0000000000..cc09af6b82
--- /dev/null
+++ b/devstack/tempest-dsvm-caching-scheduler-rc
@@ -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"
diff --git a/playbooks/legacy/nova-caching-scheduler/post.yaml b/playbooks/legacy/nova-caching-scheduler/post.yaml
new file mode 100644
index 0000000000..e07f5510ae
--- /dev/null
+++ b/playbooks/legacy/nova-caching-scheduler/post.yaml
@@ -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
diff --git a/playbooks/legacy/nova-caching-scheduler/run.yaml b/playbooks/legacy/nova-caching-scheduler/run.yaml
new file mode 100644
index 0000000000..d3bc6e28fe
--- /dev/null
+++ b/playbooks/legacy/nova-caching-scheduler/run.yaml
@@ -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 }}'