From 53208b0496d78b2f5cd04b1ce0ef5ffcb757e1eb Mon Sep 17 00:00:00 2001 From: Matt Riedemann Date: Thu, 28 Feb 2019 15:10:24 -0500 Subject: [PATCH] Move legacy-grenade-dsvm-neutron-multinode-live-migration in-tree This moves the legacy-grenade-dsvm-neutron-multinode-live-migration job from openstack-zuul-jobs in-tree. Nova is the only project that runs this job and this allows nova to directly manage it. The job will still use the same irrelevant-files list and is still non-voting for the time being and only runs in the check queue. It has been renamed to "nova-grenade-live-migration". This change is meant to be backported to rocky, queens and pike to allow us to drop legacy-grenade-dsvm-neutron-multinode-live-migration from openstack-zuul-jobs where the job is branchless but restricted to pike+ branches. A follow up master-only (stein) change will make the job voting and gate per the plan in the mailing list [1]. [1] http://lists.openstack.org/pipermail/openstack-discuss/2019-February/003341.html Change-Id: Ie9b61775dbb92b10237688eaddaca606c1c73a23 --- .zuul.yaml | 52 ++++++++++------- .../nova-grenade-live-migration/post.yaml | 15 +++++ .../nova-grenade-live-migration/run.yaml | 58 +++++++++++++++++++ 3 files changed, 105 insertions(+), 20 deletions(-) create mode 100644 playbooks/legacy/nova-grenade-live-migration/post.yaml create mode 100644 playbooks/legacy/nova-grenade-live-migration/run.yaml diff --git a/.zuul.yaml b/.zuul.yaml index 148bbe3432ed..1b184d2f313d 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -193,6 +193,37 @@ required-projects: - openstack/oslo.versionedobjects +- job: + name: nova-grenade-live-migration + parent: nova-dsvm-multinode-base + description: | + Multi-node grenade job which runs nova/tests/live_migration/hooks tests. + In other words, this tests live migration with mixed-version compute + services which is important for things like rolling upgrade support. + The former name for this job was + "legacy-grenade-dsvm-neutron-multinode-live-migration". + run: playbooks/legacy/nova-grenade-live-migration/run.yaml + post-run: playbooks/legacy/nova-grenade-live-migration/post.yaml + irrelevant-files: + # We define our own irrelevant-files because we need to run + # this if there are changes to nova/tests/live_migration/. + # TODO(mriedem): Move the nova/tests/live_migration/ scripts to gate/ + # so this job can use the standard dsvm-irrelevant-files. + - ^api-.*$ + - ^(test-|)requirements.txt$ + - ^.*\.rst$ + - ^.git.*$ + - ^doc/.*$ + - ^nova/hacking/.*$ + - ^nova/locale/.*$ + - ^nova/tests/(?!live_migration/).*$ + - ^releasenotes/.*$ + - ^setup.cfg$ + - ^tests-py3.txt$ + - ^tools/.*$ + - ^tox.ini$ + voting: false + - project: # Please try to keep the list of job names sorted alphabetically. templates: @@ -216,26 +247,6 @@ - devstack-plugin-ceph-tempest: voting: false irrelevant-files: *dsvm-irrelevant-files - # TODO(mriedem): We need to move this job definition in-tree from - # openstack-zuul-jobs. - - legacy-grenade-dsvm-neutron-multinode-live-migration: - voting: false - irrelevant-files: - # We define our own irrelevant-files because we need to run - # this if there are changes to nova/tests/live_migration/. - - ^api-.*$ - - ^(test-|)requirements.txt$ - - ^.*\.rst$ - - ^.git.*$ - - ^doc/.*$ - - ^nova/hacking/.*$ - - ^nova/locale/.*$ - - ^nova/tests/(?!live_migration/).*$ - - ^releasenotes/.*$ - - ^setup.cfg$ - - ^tests-py3.txt$ - - ^tools/.*$ - - ^tox.ini$ - neutron-grenade-multinode: irrelevant-files: *dsvm-irrelevant-files - neutron-tempest-linuxbridge: @@ -245,6 +256,7 @@ # code; we don't need to run this on all changes, nor do we run # it in the gate. - ^(?!nova/network/.*)(?!nova/virt/libvirt/vif.py).*$ + - nova-grenade-live-migration - nova-live-migration - nova-lvm - nova-next diff --git a/playbooks/legacy/nova-grenade-live-migration/post.yaml b/playbooks/legacy/nova-grenade-live-migration/post.yaml new file mode 100644 index 000000000000..e07f5510ae70 --- /dev/null +++ b/playbooks/legacy/nova-grenade-live-migration/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-grenade-live-migration/run.yaml b/playbooks/legacy/nova-grenade-live-migration/run.yaml new file mode 100644 index 000000000000..ac5833452a2f --- /dev/null +++ b/playbooks/legacy/nova-grenade-live-migration/run.yaml @@ -0,0 +1,58 @@ +- hosts: primary + name: nova-grenade-live-migration + 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 + export PROJECTS="openstack-dev/grenade $PROJECTS" + export PYTHONUNBUFFERED=true + export DEVSTACK_GATE_CONFIGDRIVE=0 + export DEVSTACK_GATE_NEUTRON=1 + export DEVSTACK_GATE_TEMPEST_NOTESTS=1 + export DEVSTACK_GATE_GRENADE=pullup + # By default grenade runs only smoke tests so we need to set + # RUN_SMOKE to False in order to run live migration tests using + # grenade + export DEVSTACK_LOCAL_CONFIG="RUN_SMOKE=False" + # LIVE_MIGRATE_BACK_AND_FORTH will tell Tempest to run a live + # migration of the same instance to one compute node and then back + # to the other, which is mostly only interesting for grenade since + # we have mixed level computes. + export DEVSTACK_LOCAL_CONFIG+=$'\n'"LIVE_MIGRATE_BACK_AND_FORTH=True" + export BRANCH_OVERRIDE=default + export DEVSTACK_GATE_TOPOLOGY="multinode" + if [ "$BRANCH_OVERRIDE" != "default" ] ; then + export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE + fi + function post_test_hook { + /opt/stack/new/nova/nova/tests/live_migration/hooks/run_tests.sh + } + 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 }}'