diff --git a/playbooks/nodepool-functional-container-openstack/run.yaml b/playbooks/nodepool-functional-container-openstack/run.yaml index af2d1e81d..0f69309ea 100644 --- a/playbooks/nodepool-functional-container-openstack/run.yaml +++ b/playbooks/nodepool-functional-container-openstack/run.yaml @@ -111,4 +111,6 @@ cmd: docker image prune -f - name: Check nodepool functionality - command: "{{ zuul.projects['opendev.org/zuul/nodepool'].src_dir }}/playbooks/nodepool-functional-container-openstack/check.sh" + command: "{{ zuul.projects['opendev.org/zuul/nodepool'].src_dir }}/tools/functional-test-check.sh" + environment: + NODEPOOL_FUNCTIONAL_CHECK: 'containers' diff --git a/playbooks/nodepool-functional-openstack/check.sh b/playbooks/nodepool-functional-openstack/check.sh deleted file mode 100755 index aa21163cb..000000000 --- a/playbooks/nodepool-functional-openstack/check.sh +++ /dev/null @@ -1,153 +0,0 @@ -#!/bin/bash -ex - -LOGDIR=/home/zuul/zuul-output/logs - -# Set to indiciate an error return -RETURN=0 -FAILURE_REASON="" - -NODEPOOL_INSTALL=${NODEPOOL_INSTALL:-~/.venv} -NODEPOOL_CONFIG=${NODEPOOL_CONFIG:-/etc/nodepool/nodepool.yaml} -NODEPOOL="$NODEPOOL_INSTALL/bin/nodepool -c $NODEPOOL_CONFIG" - -cat > /tmp/ssh_wrapper < $RESULT - cat <$EXPECTED -#cloud-config -write_files: -- content: | - testpassed - path: /etc/testfile_nodepool_userdata -EOF - diff $EXPECTED $RESULT - if [[ $? -ne 0 ]]; then - echo "*** Failed to find userdata on server!" - FAILURE_REASON="Failed to find userdata on server for $node" - echo "Expected userdata:" - cat $EXPECTED - echo "Found userdata:" - cat $RESULT - RETURN=1 - fi -} - -function checknm { - name=$1 - state='ready' - - node=`$NODEPOOL list | grep $name | grep $state | cut -d '|' -f6 | tr -d ' '` - nm_output=$(/tmp/ssh_wrapper $node -- nmcli c) - - # virtio device is eth0 on older, ens3 on newer - if [[ ! ${nm_output} =~ (eth0|ens3) ]]; then - echo "*** Failed to find interface in NetworkManager connections" - /tmp/ssh_wrapper $node -- nmcli c - /tmp/ssh_wrapper $node -- nmcli device - FAILURE_REASON="Failed to find interface in NetworkManager connections" - RETURN=1 - fi -} - -function waitforimage { - local name=$1 - local state='ready' - local builds - - while ! $NODEPOOL image-list | grep $name | grep $state; do - $NODEPOOL image-list > ${LOGDIR}/nodepool-image-list.txt - $NODEPOOL list --detail > ${LOGDIR}/nodepool-list.txt - - builds=$(ls -l /var/log/nodepool/builds/ | grep $name | wc -l) - if [[ ${builds} -ge 4 ]]; then - echo "*** Build of $name failed at least 3 times, aborting" - exit 1 - fi - sleep 10 - done -} - -function waitfornode { - name=$1 - state='ready' - - while ! $NODEPOOL list | grep $name | grep $state | grep "unlocked"; do - $NODEPOOL image-list > ${LOGDIR}/nodepool-image-list.txt - $NODEPOOL list --detail > ${LOGDIR}/nodepool-list.txt - sleep 10 - done -} - -# check that image built -waitforimage test-image -# check image was bootable -waitfornode test-image -# check ssh for root user -sshintonode test-image -# networkmanager check -# TODO(jeblair): This should not run in all cases; in fact, most of -# this checking should move into the dib repo -#checknm test-image -# userdata check -showserver test-image - -set -o errexit -# Show the built nodes -$NODEPOOL list - -# Try to delete the nodes that were just built -$NODEPOOL delete --now 0000000000 - -# show the deleted nodes (and their replacements may be building) -$NODEPOOL list - -if [[ -n "${FAILURE_REASON}" ]]; then - echo "${FAILURE_REASON}" -fi -exit $RETURN diff --git a/playbooks/nodepool-functional-openstack/run.yaml b/playbooks/nodepool-functional-openstack/run.yaml index 0de2b9693..7c2a92885 100644 --- a/playbooks/nodepool-functional-openstack/run.yaml +++ b/playbooks/nodepool-functional-openstack/run.yaml @@ -140,4 +140,6 @@ command: "./.venv/bin/nodepool-launcher {{ launcher_logging_arg }} -c {{ NODEPOOL_CONFIG }}" - name: Check nodepool functionality - command: "{{ zuul.projects['opendev.org/zuul/nodepool'].src_dir }}/playbooks/nodepool-functional-openstack/check.sh" + command: "{{ zuul.projects['opendev.org/zuul/nodepool'].src_dir }}/tools/functional-test-check.sh" + environment: + NODEPOOL_FUNCTIONAL_CHECK: 'installed' diff --git a/playbooks/nodepool-functional-container-openstack/check.sh b/tools/functional-test-check.sh similarity index 90% rename from playbooks/nodepool-functional-container-openstack/check.sh rename to tools/functional-test-check.sh index f0da7c8a2..bcdcf1a7f 100755 --- a/playbooks/nodepool-functional-container-openstack/check.sh +++ b/tools/functional-test-check.sh @@ -6,7 +6,16 @@ LOGDIR=/home/zuul/zuul-output/logs RETURN=0 FAILURE_REASON="" -NODEPOOL="docker exec nodepool_nodepool-launcher_1 nodepool" +if [[ ${NODEPOOL_FUNCTIONAL_CHECK:-} == "installed" ]]; then + NODEPOOL_INSTALL=${NODEPOOL_INSTALL:-~/.venv} + NODEPOOL_CONFIG=${NODEPOOL_CONFIG:-/etc/nodepool/nodepool.yaml} + NODEPOOL="$NODEPOOL_INSTALL/bin/nodepool -c $NODEPOOL_CONFIG" +elif [[ ${NODEPOOL_FUNCTIONAL_CHECK:-} == "containers" ]]; then + NODEPOOL="docker exec nodepool_nodepool-launcher_1 nodepool" +else + echo "Running in unknown environment!" + exit 1 +fi cat > /tmp/ssh_wrapper <