diff --git a/.zuul.yaml b/.zuul.yaml index d7de0efeef..905af05b70 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -1,4 +1,5 @@ # from zuul.d/zuul-legacy-jobs.yaml legacy-osc-dsvm-functional + - job: name: osc-functional-devstack parent: legacy-dsvm-base @@ -9,11 +10,48 @@ - openstack-infra/devstack-gate - openstack/python-openstackclient +- job: + name: osc-functional-devstack-n-net + parent: legacy-dsvm-base + run: playbooks/osc-functional-devstack-n-net/run + post-run: playbooks/osc-functional-devstack-n-net/post + timeout: 7800 + required-projects: + - openstack-infra/devstack-gate + - openstack/python-openstackclient + +- job: + name: osc-functional-devstack-tips + parent: legacy-dsvm-base + run: playbooks/osc-functional-devstack-tips/run + post-run: playbooks/osc-functional-devstack-tips/post + timeout: 7800 + required-projects: + - openstack-infra/devstack-gate + - openstack/os-client-config + - openstack/osc-lib + - openstack/python-openstackclient + - openstack/python-openstacksdk + + - project: name: openstack/python-openstackclient + templates: + - openstackclient-plugin-jobs check: jobs: - osc-functional-devstack + - osc-functional-devstack-n-net: + voting: false + # The job testing nova-network no longer works before Pike, and + # should be disabled until the New Way of testing against old clouds + # is ready and backported + branches: ^(?!stable/(newton|ocata)).*$ + - osc-functional-devstack-tips: + voting: false + # The functional-tips job only tests the latest and shouldn't be run + # on the stable branches + branches: ^(?!stable) gate: jobs: - osc-functional-devstack diff --git a/playbooks/osc-functional-devstack-n-net/post.yaml b/playbooks/osc-functional-devstack-n-net/post.yaml new file mode 100644 index 0000000000..dac875340a --- /dev/null +++ b/playbooks/osc-functional-devstack-n-net/post.yaml @@ -0,0 +1,80 @@ +- 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 diff --git a/playbooks/osc-functional-devstack-n-net/run.yaml b/playbooks/osc-functional-devstack-n-net/run.yaml new file mode 100644 index 0000000000..cb06ff813b --- /dev/null +++ b/playbooks/osc-functional-devstack-n-net/run.yaml @@ -0,0 +1,85 @@ +- 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 }}' diff --git a/playbooks/osc-functional-devstack-tips/post.yaml b/playbooks/osc-functional-devstack-tips/post.yaml new file mode 100644 index 0000000000..dac875340a --- /dev/null +++ b/playbooks/osc-functional-devstack-tips/post.yaml @@ -0,0 +1,80 @@ +- 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 diff --git a/playbooks/osc-functional-devstack-tips/run.yaml b/playbooks/osc-functional-devstack-tips/run.yaml new file mode 100644 index 0000000000..7bd537389d --- /dev/null +++ b/playbooks/osc-functional-devstack-tips/run.yaml @@ -0,0 +1,90 @@ +- 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 }}'