# Since this log collection work is happening before the archive build macro which also
# creates the ${WORKSPACE}/archives dir, we have to do it here first. The mkdir in the
# archives build step will essentially be a noop.
- mkdir -p ${WORKSPACE}/archives
+ mkdir -p "${WORKSPACE}"/archives
- mv /tmp/changes.txt ${WORKSPACE}/archives
- mv /tmp/validations.txt ${WORKSPACE}/archives
- mv ${WORKSPACE}/rabbit.txt ${WORKSPACE}/archives
- mv ${WORKSPACE}/haproxy.cfg ${WORKSPACE}/archives
- ssh ${OPENSTACK_HAPROXY_1_IP} "sudo journalctl -u haproxy > /tmp/haproxy.log"
- scp ${OPENSTACK_HAPROXY_1_IP}:/tmp/haproxy.log ${WORKSPACE}/archives/
+ mv /tmp/changes.txt "${WORKSPACE}"/archives
+ mv /tmp/validations.txt "${WORKSPACE}"/archives
+ mv "${WORKSPACE}"/rabbit.txt "${WORKSPACE}"/archives
+ mv "${WORKSPACE}"/haproxy.cfg "${WORKSPACE}"/archives
+ ssh "${OPENSTACK_HAPROXY_1_IP}" "sudo journalctl -u haproxy > /tmp/haproxy.log"
+ scp "${OPENSTACK_HAPROXY_1_IP}":/tmp/haproxy.log "${WORKSPACE}"/archives/
sleep 5
# FIXME: Do not create .tar and gzip before copying.
CONTROLLERIP=ODL_SYSTEM_${i}_IP
echo "collect_logs: for opendaylight controller ip: ${!CONTROLLERIP}"
NODE_FOLDER="odl_${i}"
- mkdir -p ${NODE_FOLDER}
+ mkdir -p "${NODE_FOLDER}"
echo "Lets's take the karaf thread dump again..."
- ssh ${!CONTROLLERIP} "sudo ps aux" > ${WORKSPACE}/ps_after.log
- pid=$(grep org.apache.karaf.main.Main ${WORKSPACE}/ps_after.log | grep -v grep | tr -s ' ' | cut -f2 -d' ')
+ ssh "${!CONTROLLERIP}" "sudo ps aux" > "${WORKSPACE}"/ps_after.log
+ pid=$(grep org.apache.karaf.main.Main "${WORKSPACE}"/ps_after.log | grep -v grep | tr -s ' ' | cut -f2 -d' ')
echo "karaf main: org.apache.karaf.main.Main, pid:${pid}"
- ssh ${!CONTROLLERIP} "${JAVA_HOME}/bin/jstack -l ${pid}" > ${WORKSPACE}/karaf_${i}_${pid}_threads_after.log || true
+ # $pid needs to be parsed client-side
+ # shellcheck disable=SC2029
+ ssh "${!CONTROLLERIP}" "${JAVA_HOME}/bin/jstack -l ${pid}" > "${WORKSPACE}/karaf_${i}_${pid}_threads_after.log" || true
echo "killing karaf process..."
+ # shellcheck disable=SC2016
${SSH} "${!CONTROLLERIP}" bash -c 'ps axf | grep karaf | grep -v grep | awk '"'"'{print "kill -9 " $1}'"'"' | sh'
- ${SSH} ${!CONTROLLERIP} "sudo journalctl > /tmp/journalctl.log"
- scp ${!CONTROLLERIP}:/tmp/journalctl.log ${NODE_FOLDER}
- ${SSH} ${!CONTROLLERIP} "dmesg -T > /tmp/dmesg.log"
- scp ${!CONTROLLERIP}:/tmp/dmesg.log ${NODE_FOLDER}
- ${SSH} ${!CONTROLLERIP} "tar -cf - -C /tmp/${BUNDLEFOLDER} etc | xz -T 0 > /tmp/etc.tar.xz"
- scp ${!CONTROLLERIP}:/tmp/etc.tar.xz ${NODE_FOLDER}
- ${SSH} ${!CONTROLLERIP} "cp -r /tmp/${BUNDLEFOLDER}/data/log /tmp/odl_log"
- ${SSH} ${!CONTROLLERIP} "tar -cf /tmp/odl${i}_karaf.log.tar /tmp/odl_log/*"
- scp ${!CONTROLLERIP}:/tmp/odl${i}_karaf.log.tar ${NODE_FOLDER}
- ${SSH} ${!CONTROLLERIP} "tar -cf /tmp/odl${i}_zrpcd.log.tar /tmp/zrpcd.init.log"
- scp ${!CONTROLLERIP}:/tmp/odl${i}_zrpcd.log.tar ${NODE_FOLDER}
- tar -xvf ${NODE_FOLDER}/odl${i}_karaf.log.tar -C ${NODE_FOLDER} --strip-components 2 --transform s/karaf/odl${i}_karaf/g
- grep "ROBOT MESSAGE\| ERROR " ${NODE_FOLDER}/odl${i}_karaf.log > ${NODE_FOLDER}/odl${i}_err.log
+ ${SSH} "${!CONTROLLERIP}" "sudo journalctl > /tmp/journalctl.log"
+ scp "${!CONTROLLERIP}":/tmp/journalctl.log "${NODE_FOLDER}"
+ ${SSH} "${!CONTROLLERIP}" "dmesg -T > /tmp/dmesg.log"
+ scp "${!CONTROLLERIP}":/tmp/dmesg.log "${NODE_FOLDER}"
+ ${SSH} "${!CONTROLLERIP}" "tar -cf - -C /tmp/${BUNDLEFOLDER} etc | xz -T 0 > /tmp/etc.tar.xz"
+ scp "${!CONTROLLERIP}":/tmp/etc.tar.xz "${NODE_FOLDER}"
+ ${SSH} "${!CONTROLLERIP}" "cp -r /tmp/${BUNDLEFOLDER}/data/log /tmp/odl_log"
+ ${SSH} "${!CONTROLLERIP}" "tar -cf /tmp/odl${i}_karaf.log.tar /tmp/odl_log/*"
+ scp "${!CONTROLLERIP}:/tmp/odl${i}_karaf.log.tar" "${NODE_FOLDER}"
+ ${SSH} "${!CONTROLLERIP}" "tar -cf /tmp/odl${i}_zrpcd.log.tar /tmp/zrpcd.init.log"
+ scp "${!CONTROLLERIP}:/tmp/odl${i}_zrpcd.log.tar" "${NODE_FOLDER}"
+ tar -xvf "${NODE_FOLDER}/odl${i}_karaf.log.tar" -C "${NODE_FOLDER}" --strip-components 2 --transform "s/karaf/odl${i}_karaf/g"
+ grep "ROBOT MESSAGE\| ERROR " "${NODE_FOLDER}/odl${i}_karaf.log" > "${NODE_FOLDER}/odl${i}_err.log"
grep "ROBOT MESSAGE\| ERROR \| WARN \|Exception" \
- ${NODE_FOLDER}/odl${i}_karaf.log > ${NODE_FOLDER}/odl${i}_err_warn_exception.log
+ "${NODE_FOLDER}/odl${i}_karaf.log" > "${NODE_FOLDER}/odl${i}_err_warn_exception.log"
# Print ROBOT lines and print Exception lines. For exception lines also print the previous line for context
- sed -n -e '/ROBOT MESSAGE/P' -e '$!N;/Exception/P;D' ${NODE_FOLDER}/odl${i}_karaf.log > ${NODE_FOLDER}/odl${i}_exception.log
- mv /tmp/odl${i}_exceptions.txt ${NODE_FOLDER}
- rm ${NODE_FOLDER}/odl${i}_karaf.log.tar
- mv *_threads* ${NODE_FOLDER}
- mv ps_* ${NODE_FOLDER}
- mv ${NODE_FOLDER} ${WORKSPACE}/archives/
+ sed -n -e '/ROBOT MESSAGE/P' -e '$!N;/Exception/P;D' "${NODE_FOLDER}/odl${i}_karaf.log" > "${NODE_FOLDER}/odl${i}_exception.log"
+ mv "/tmp/odl${i}_exceptions.txt" "${NODE_FOLDER}"
+ rm "${NODE_FOLDER}/odl${i}_karaf.log.tar"
+ mv -- *_threads* "${NODE_FOLDER}"
+ mv ps_* "${NODE_FOLDER}"
+ mv "${NODE_FOLDER}" "${WORKSPACE}"/archives/
done
- print_job_parameters > ${WORKSPACE}/archives/params.txt
+ print_job_parameters > "${WORKSPACE}"/archives/params.txt
# Control Node
for i in $(seq 1 "${NUM_OPENSTACK_CONTROL_NODES}"); do
echo "collect_logs: for openstack control node ip: ${!OSIP}"
NODE_FOLDER="control_${i}"
fi
- mkdir -p ${NODE_FOLDER}
+ mkdir -p "${NODE_FOLDER}"
tcpdump_stop "${!OSIP}"
- scp extra_debug.sh ${!OSIP}:/tmp
+ scp extra_debug.sh "${!OSIP}":/tmp
# Capture compute logs if this is a combo node
if [ "$(is_openstack_feature_enabled n-cpu)" == "1" ]; then
- scp ${!OSIP}:/etc/nova/nova.conf ${NODE_FOLDER}
- scp ${!OSIP}:/etc/nova/nova-cpu.conf ${NODE_FOLDER}
- scp ${!OSIP}:/etc/openstack/clouds.yaml ${NODE_FOLDER}
- rsync --rsync-path="sudo rsync" -avhe ssh ${!OSIP}:/var/log/nova-agent.log ${NODE_FOLDER}
+ scp "${!OSIP}":/etc/nova/nova.conf "${NODE_FOLDER}"
+ scp "${!OSIP}":/etc/nova/nova-cpu.conf "${NODE_FOLDER}"
+ scp "${!OSIP}":/etc/openstack/clouds.yaml "${NODE_FOLDER}"
+ rsync --rsync-path="sudo rsync" -avhe ssh "${!OSIP}":/var/log/nova-agent.log "${NODE_FOLDER}"
fi
- ${SSH} ${!OSIP} "bash /tmp/extra_debug.sh > /tmp/extra_debug.log 2>&1"
- scp ${!OSIP}:/etc/dnsmasq.conf ${NODE_FOLDER}
- scp ${!OSIP}:/etc/keystone/keystone.conf ${NODE_FOLDER}
- scp ${!OSIP}:/etc/keystone/keystone-uwsgi-admin.ini ${NODE_FOLDER}
- scp ${!OSIP}:/etc/keystone/keystone-uwsgi-public.ini ${NODE_FOLDER}
- scp ${!OSIP}:/etc/kuryr/kuryr.conf ${NODE_FOLDER}
- scp ${!OSIP}:/etc/neutron/dhcp_agent.ini ${NODE_FOLDER}
- scp ${!OSIP}:/etc/neutron/metadata_agent.ini ${NODE_FOLDER}
- scp ${!OSIP}:/etc/neutron/neutron.conf ${NODE_FOLDER}
- scp ${!OSIP}:/etc/neutron/neutron_lbaas.conf ${NODE_FOLDER}
- scp ${!OSIP}:/etc/neutron/plugins/ml2/ml2_conf.ini ${NODE_FOLDER}
- scp ${!OSIP}:/etc/neutron/services/loadbalancer/haproxy/lbaas_agent.ini ${NODE_FOLDER}
- scp ${!OSIP}:/etc/nova/nova.conf ${NODE_FOLDER}
- scp ${!OSIP}:/etc/nova/nova-api-uwsgi.ini ${NODE_FOLDER}
- scp ${!OSIP}:/etc/nova/nova_cell1.conf ${NODE_FOLDER}
- scp ${!OSIP}:/etc/nova/nova-cpu.conf ${NODE_FOLDER}
- scp ${!OSIP}:/etc/nova/placement-uwsgi.ini ${NODE_FOLDER}
- scp ${!OSIP}:/etc/openstack/clouds.yaml ${NODE_FOLDER}
- scp ${!OSIP}:/opt/stack/devstack/.stackenv ${NODE_FOLDER}
- scp ${!OSIP}:/opt/stack/devstack/nohup.out ${NODE_FOLDER}/stack.log
- scp ${!OSIP}:/opt/stack/devstack/openrc ${NODE_FOLDER}
- scp ${!OSIP}:/opt/stack/requirements/upper-constraints.txt ${NODE_FOLDER}
- scp ${!OSIP}:/opt/stack/tempest/etc/tempest.conf ${NODE_FOLDER}
- scp ${!OSIP}:/tmp/*.xz ${NODE_FOLDER}
- scp ${!OSIP}:/tmp/dmesg.log ${NODE_FOLDER}
- scp ${!OSIP}:/tmp/extra_debug.log ${NODE_FOLDER}
- scp ${!OSIP}:/tmp/get_devstack.sh.txt ${NODE_FOLDER}
- scp ${!OSIP}:/tmp/install_ovs.txt ${NODE_FOLDER}
- scp ${!OSIP}:/tmp/journalctl.log ${NODE_FOLDER}
- scp ${!OSIP}:/tmp/ovsdb-tool.log ${NODE_FOLDER}
- scp ${!OSIP}:/tmp/tcpdump_start.log ${NODE_FOLDER}
+ ${SSH} "${!OSIP}" "bash /tmp/extra_debug.sh > /tmp/extra_debug.log 2>&1"
+ scp "${!OSIP}":/etc/dnsmasq.conf "${NODE_FOLDER}"
+ scp "${!OSIP}":/etc/keystone/keystone.conf "${NODE_FOLDER}"
+ scp "${!OSIP}":/etc/keystone/keystone-uwsgi-admin.ini "${NODE_FOLDER}"
+ scp "${!OSIP}":/etc/keystone/keystone-uwsgi-public.ini "${NODE_FOLDER}"
+ scp "${!OSIP}":/etc/kuryr/kuryr.conf "${NODE_FOLDER}"
+ scp "${!OSIP}":/etc/neutron/dhcp_agent.ini "${NODE_FOLDER}"
+ scp "${!OSIP}":/etc/neutron/metadata_agent.ini "${NODE_FOLDER}"
+ scp "${!OSIP}":/etc/neutron/neutron.conf "${NODE_FOLDER}"
+ scp "${!OSIP}":/etc/neutron/neutron_lbaas.conf "${NODE_FOLDER}"
+ scp "${!OSIP}":/etc/neutron/plugins/ml2/ml2_conf.ini "${NODE_FOLDER}"
+ scp "${!OSIP}":/etc/neutron/services/loadbalancer/haproxy/lbaas_agent.ini "${NODE_FOLDER}"
+ scp "${!OSIP}":/etc/nova/nova.conf "${NODE_FOLDER}"
+ scp "${!OSIP}":/etc/nova/nova-api-uwsgi.ini "${NODE_FOLDER}"
+ scp "${!OSIP}":/etc/nova/nova_cell1.conf "${NODE_FOLDER}"
+ scp "${!OSIP}":/etc/nova/nova-cpu.conf "${NODE_FOLDER}"
+ scp "${!OSIP}":/etc/nova/placement-uwsgi.ini "${NODE_FOLDER}"
+ scp "${!OSIP}":/etc/openstack/clouds.yaml "${NODE_FOLDER}"
+ scp "${!OSIP}":/opt/stack/devstack/.stackenv "${NODE_FOLDER}"
+ scp "${!OSIP}":/opt/stack/devstack/nohup.out "${NODE_FOLDER}"/stack.log
+ scp "${!OSIP}":/opt/stack/devstack/openrc "${NODE_FOLDER}"
+ scp "${!OSIP}":/opt/stack/requirements/upper-constraints.txt "${NODE_FOLDER}"
+ scp "${!OSIP}":/opt/stack/tempest/etc/tempest.conf "${NODE_FOLDER}"
+ scp "${!OSIP}":/tmp/*.xz "${NODE_FOLDER}"
+ scp "${!OSIP}":/tmp/dmesg.log "${NODE_FOLDER}"
+ scp "${!OSIP}":/tmp/extra_debug.log "${NODE_FOLDER}"
+ scp "${!OSIP}":/tmp/get_devstack.sh.txt "${NODE_FOLDER}"
+ scp "${!OSIP}":/tmp/install_ovs.txt "${NODE_FOLDER}"
+ scp "${!OSIP}":/tmp/journalctl.log "${NODE_FOLDER}"
+ scp "${!OSIP}":/tmp/ovsdb-tool.log "${NODE_FOLDER}"
+ scp "${!OSIP}":/tmp/tcpdump_start.log "${NODE_FOLDER}"
collect_files "${!OSIP}" "${NODE_FOLDER}"
- ${SSH} ${!OSIP} "sudo tar -cf - -C /var/log rabbitmq | xz -T 0 > /tmp/rabbitmq.tar.xz "
- scp ${!OSIP}:/tmp/rabbitmq.tar.xz ${NODE_FOLDER}
- rsync --rsync-path="sudo rsync" -avhe ssh ${!OSIP}:/etc/hosts ${NODE_FOLDER}
- rsync --rsync-path="sudo rsync" -avhe ssh ${!OSIP}:/usr/lib/systemd/system/haproxy.service ${NODE_FOLDER}
- rsync --rsync-path="sudo rsync" -avhe ssh ${!OSIP}:/var/log/audit/audit.log ${NODE_FOLDER}
- rsync --rsync-path="sudo rsync" -avhe ssh ${!OSIP}:/var/log/httpd/keystone_access.log ${NODE_FOLDER}
- rsync --rsync-path="sudo rsync" -avhe ssh ${!OSIP}:/var/log/httpd/keystone.log ${NODE_FOLDER}
- rsync --rsync-path="sudo rsync" -avhe ssh ${!OSIP}:/var/log/messages* ${NODE_FOLDER}
- rsync --rsync-path="sudo rsync" -avhe ssh ${!OSIP}:/var/log/openvswitch/ovs-vswitchd.log ${NODE_FOLDER}
- rsync --rsync-path="sudo rsync" -avhe ssh ${!OSIP}:/var/log/openvswitch/ovsdb-server.log ${NODE_FOLDER}
+ ${SSH} "${!OSIP}" "sudo tar -cf - -C /var/log rabbitmq | xz -T 0 > /tmp/rabbitmq.tar.xz "
+ scp "${!OSIP}":/tmp/rabbitmq.tar.xz "${NODE_FOLDER}"
+ rsync --rsync-path="sudo rsync" -avhe ssh "${!OSIP}":/etc/hosts "${NODE_FOLDER}"
+ rsync --rsync-path="sudo rsync" -avhe ssh "${!OSIP}":/usr/lib/systemd/system/haproxy.service "${NODE_FOLDER}"
+ rsync --rsync-path="sudo rsync" -avhe ssh "${!OSIP}":/var/log/audit/audit.log "${NODE_FOLDER}"
+ rsync --rsync-path="sudo rsync" -avhe ssh "${!OSIP}":/var/log/httpd/keystone_access.log "${NODE_FOLDER}"
+ rsync --rsync-path="sudo rsync" -avhe ssh "${!OSIP}":/var/log/httpd/keystone.log "${NODE_FOLDER}"
+ rsync --rsync-path="sudo rsync" -avhe ssh "${!OSIP}":/var/log/messages* "${NODE_FOLDER}"
+ rsync --rsync-path="sudo rsync" -avhe ssh "${!OSIP}":/var/log/openvswitch/ovs-vswitchd.log "${NODE_FOLDER}"
+ rsync --rsync-path="sudo rsync" -avhe ssh "${!OSIP}":/var/log/openvswitch/ovsdb-server.log "${NODE_FOLDER}"
collect_openstack_logs "${!OSIP}" "${NODE_FOLDER}" "control"
- mv local.conf_control_${!OSIP} ${NODE_FOLDER}/local.conf
+ mv "local.conf_control_${!OSIP}" "${NODE_FOLDER}/local.conf"
# qdhcp files are created by robot tests and copied into /tmp/qdhcp during the test
tar -cf - -C /tmp qdhcp | xz -T 0 > /tmp/qdhcp.tar.xz
- mv /tmp/qdhcp.tar.xz ${NODE_FOLDER}
- mv ${NODE_FOLDER} ${WORKSPACE}/archives/
+ mv /tmp/qdhcp.tar.xz "${NODE_FOLDER}"
+ mv "${NODE_FOLDER}" "${WORKSPACE}"/archives/
done
# Compute Nodes
for i in $(seq 1 "${NUM_OPENSTACK_COMPUTE_NODES}"); do
- OSIP=OPENSTACK_COMPUTE_NODE_${i}_IP
+ OSIP="OPENSTACK_COMPUTE_NODE_${i}_IP"
echo "collect_logs: for openstack compute node ip: ${!OSIP}"
NODE_FOLDER="compute_${i}"
- mkdir -p ${NODE_FOLDER}
+ mkdir -p "${NODE_FOLDER}"
tcpdump_stop "${!OSIP}"
- scp extra_debug.sh ${!OSIP}:/tmp
- ${SSH} ${!OSIP} "bash /tmp/extra_debug.sh > /tmp/extra_debug.log 2>&1"
- scp ${!OSIP}:/etc/nova/nova.conf ${NODE_FOLDER}
- scp ${!OSIP}:/etc/nova/nova-cpu.conf ${NODE_FOLDER}
- scp ${!OSIP}:/etc/openstack/clouds.yaml ${NODE_FOLDER}
- scp ${!OSIP}:/opt/stack/devstack/.stackenv ${NODE_FOLDER}
- scp ${!OSIP}:/opt/stack/devstack/nohup.out ${NODE_FOLDER}/stack.log
- scp ${!OSIP}:/opt/stack/devstack/openrc ${NODE_FOLDER}
- scp ${!OSIP}:/opt/stack/requirements/upper-constraints.txt ${NODE_FOLDER}
- scp ${!OSIP}:/tmp/*.xz ${NODE_FOLDER}/
- scp ${!OSIP}:/tmp/dmesg.log ${NODE_FOLDER}
- scp ${!OSIP}:/tmp/extra_debug.log ${NODE_FOLDER}
- scp ${!OSIP}:/tmp/get_devstack.sh.txt ${NODE_FOLDER}
- scp ${!OSIP}:/tmp/install_ovs.txt ${NODE_FOLDER}
- scp ${!OSIP}:/tmp/journalctl.log ${NODE_FOLDER}
- scp ${!OSIP}:/tmp/ovsdb-tool.log ${NODE_FOLDER}
- scp ${!OSIP}:/tmp/tcpdump_start.log ${NODE_FOLDER}
+ scp extra_debug.sh "${!OSIP}":/tmp
+ ${SSH} "${!OSIP}" "bash /tmp/extra_debug.sh > /tmp/extra_debug.log 2>&1"
+ scp "${!OSIP}":/etc/nova/nova.conf "${NODE_FOLDER}"
+ scp "${!OSIP}":/etc/nova/nova-cpu.conf "${NODE_FOLDER}"
+ scp "${!OSIP}":/etc/openstack/clouds.yaml "${NODE_FOLDER}"
+ scp "${!OSIP}":/opt/stack/devstack/.stackenv "${NODE_FOLDER}"
+ scp "${!OSIP}":/opt/stack/devstack/nohup.out "${NODE_FOLDER}"/stack.log
+ scp "${!OSIP}":/opt/stack/devstack/openrc "${NODE_FOLDER}"
+ scp "${!OSIP}":/opt/stack/requirements/upper-constraints.txt "${NODE_FOLDER}"
+ scp "${!OSIP}":/tmp/*.xz "${NODE_FOLDER}"/
+ scp "${!OSIP}":/tmp/dmesg.log "${NODE_FOLDER}"
+ scp "${!OSIP}":/tmp/extra_debug.log "${NODE_FOLDER}"
+ scp "${!OSIP}":/tmp/get_devstack.sh.txt "${NODE_FOLDER}"
+ scp "${!OSIP}":/tmp/install_ovs.txt "${NODE_FOLDER}"
+ scp "${!OSIP}":/tmp/journalctl.log "${NODE_FOLDER}"
+ scp "${!OSIP}":/tmp/ovsdb-tool.log "${NODE_FOLDER}"
+ scp "${!OSIP}":/tmp/tcpdump_start.log "${NODE_FOLDER}"
collect_files "${!OSIP}" "${NODE_FOLDER}"
- ${SSH} ${!OSIP} "sudo tar -cf - -C /var/log libvirt | xz -T 0 > /tmp/libvirt.tar.xz "
- scp ${!OSIP}:/tmp/libvirt.tar.xz ${NODE_FOLDER}
- rsync --rsync-path="sudo rsync" -avhe ssh ${!OSIP}:/etc/hosts ${NODE_FOLDER}
- rsync --rsync-path="sudo rsync" -avhe ssh ${!OSIP}:/var/log/audit/audit.log ${NODE_FOLDER}
- rsync --rsync-path="sudo rsync" -avhe ssh ${!OSIP}:/var/log/messages* ${NODE_FOLDER}
- rsync --rsync-path="sudo rsync" -avhe ssh ${!OSIP}:/var/log/nova-agent.log ${NODE_FOLDER}
- rsync --rsync-path="sudo rsync" -avhe ssh ${!OSIP}:/var/log/openvswitch/ovs-vswitchd.log ${NODE_FOLDER}
- rsync --rsync-path="sudo rsync" -avhe ssh ${!OSIP}:/var/log/openvswitch/ovsdb-server.log ${NODE_FOLDER}
+ ${SSH} "${!OSIP}" "sudo tar -cf - -C /var/log libvirt | xz -T 0 > /tmp/libvirt.tar.xz "
+ scp "${!OSIP}":/tmp/libvirt.tar.xz "${NODE_FOLDER}"
+ rsync --rsync-path="sudo rsync" -avhe ssh "${!OSIP}":/etc/hosts "${NODE_FOLDER}"
+ rsync --rsync-path="sudo rsync" -avhe ssh "${!OSIP}":/var/log/audit/audit.log "${NODE_FOLDER}"
+ rsync --rsync-path="sudo rsync" -avhe ssh "${!OSIP}":/var/log/messages* "${NODE_FOLDER}"
+ rsync --rsync-path="sudo rsync" -avhe ssh "${!OSIP}":/var/log/nova-agent.log "${NODE_FOLDER}"
+ rsync --rsync-path="sudo rsync" -avhe ssh "${!OSIP}":/var/log/openvswitch/ovs-vswitchd.log "${NODE_FOLDER}"
+ rsync --rsync-path="sudo rsync" -avhe ssh "${!OSIP}":/var/log/openvswitch/ovsdb-server.log "${NODE_FOLDER}"
collect_openstack_logs "${!OSIP}" "${NODE_FOLDER}" "compute"
- mv local.conf_compute_${!OSIP} ${NODE_FOLDER}/local.conf
- mv ${NODE_FOLDER} ${WORKSPACE}/archives/
+ mv "local.conf_compute_${!OSIP}" "${NODE_FOLDER}"/local.conf
+ mv "${NODE_FOLDER}" "${WORKSPACE}"/archives/
done
# Tempest
DEVSTACK_TEMPEST_DIR="/opt/stack/tempest"
TESTREPO=".stestr"
- TEMPEST_LOGS_DIR=${WORKSPACE}/archives/tempest
+ TEMPEST_LOGS_DIR="${WORKSPACE}/archives/tempest"
# Look for tempest test results in the $TESTREPO dir and copy if found
- if ${SSH} ${OPENSTACK_CONTROL_NODE_1_IP} "sudo sh -c '[ -f ${DEVSTACK_TEMPEST_DIR}/${TESTREPO}/0 ]'"; then
- ${SSH} ${OPENSTACK_CONTROL_NODE_1_IP} "for I in \$(sudo ls ${DEVSTACK_TEMPEST_DIR}/${TESTREPO}/ | grep -E '^[0-9]+$'); do sudo sh -c \"${DEVSTACK_TEMPEST_DIR}/.tox/tempest/bin/subunit-1to2 < ${DEVSTACK_TEMPEST_DIR}/${TESTREPO}/\${I} >> ${DEVSTACK_TEMPEST_DIR}/subunit_log.txt\"; done"
- ${SSH} ${OPENSTACK_CONTROL_NODE_1_IP} "sudo sh -c '${DEVSTACK_TEMPEST_DIR}/.tox/tempest/bin/python ${DEVSTACK_TEMPEST_DIR}/.tox/tempest/lib/python2.7/site-packages/os_testr/subunit2html.py ${DEVSTACK_TEMPEST_DIR}/subunit_log.txt ${DEVSTACK_TEMPEST_DIR}/tempest_results.html'"
- mkdir -p ${TEMPEST_LOGS_DIR}
- scp ${OPENSTACK_CONTROL_NODE_1_IP}:${DEVSTACK_TEMPEST_DIR}/tempest_results.html ${TEMPEST_LOGS_DIR}
- scp ${OPENSTACK_CONTROL_NODE_1_IP}:${DEVSTACK_TEMPEST_DIR}/tempest.log ${TEMPEST_LOGS_DIR}
+ if ${SSH} "${OPENSTACK_CONTROL_NODE_1_IP}" "sudo sh -c '[ -f ${DEVSTACK_TEMPEST_DIR}/${TESTREPO}/0 ]'"; then
+ ${SSH} "${OPENSTACK_CONTROL_NODE_1_IP}" "for I in \$(sudo ls ${DEVSTACK_TEMPEST_DIR}/${TESTREPO}/ | grep -E '^[0-9]+$'); do sudo sh -c \"${DEVSTACK_TEMPEST_DIR}/.tox/tempest/bin/subunit-1to2 < ${DEVSTACK_TEMPEST_DIR}/${TESTREPO}/\${I} >> ${DEVSTACK_TEMPEST_DIR}/subunit_log.txt\"; done"
+ ${SSH} "${OPENSTACK_CONTROL_NODE_1_IP}" "sudo sh -c '${DEVSTACK_TEMPEST_DIR}/.tox/tempest/bin/python ${DEVSTACK_TEMPEST_DIR}/.tox/tempest/lib/python2.7/site-packages/os_testr/subunit2html.py ${DEVSTACK_TEMPEST_DIR}/subunit_log.txt ${DEVSTACK_TEMPEST_DIR}/tempest_results.html'"
+ mkdir -p "${TEMPEST_LOGS_DIR}"
+ scp "${OPENSTACK_CONTROL_NODE_1_IP}:${DEVSTACK_TEMPEST_DIR}/tempest_results.html" "${TEMPEST_LOGS_DIR}"
+ scp "${OPENSTACK_CONTROL_NODE_1_IP}:${DEVSTACK_TEMPEST_DIR}/tempest.log" "${TEMPEST_LOGS_DIR}"
else
echo "tempest results not found in ${DEVSTACK_TEMPEST_DIR}/${TESTREPO}/0"
fi
final=${final}${delim}${str}
done
- echo ${final}
+ echo "${final}"
}
function get_nodes_list() {
done
nodes_list=$(join "${nodes[@]}")
- echo ${nodes_list}
+ echo "${nodes_list}"
}
function get_features() {
- if [ ${CONTROLLERSCOPE} == 'all' ]; then
+ if [ "${CONTROLLERSCOPE}" == 'all' ]; then
ACTUALFEATURES="odl-integration-compatible-with-all,${CONTROLLERFEATURES}"
export CONTROLLERMEM="3072m"
else
# Create the configuration script to be run on controllers.
function create_configuration_script() {
- cat > ${WORKSPACE}/configuration-script.sh <<EOF
+ cat > "${WORKSPACE}"/configuration-script.sh <<EOF
set -x
source /tmp/common-functions.sh ${BUNDLEFOLDER}
# Create the startup script to be run on controllers.
function create_startup_script() {
- cat > ${WORKSPACE}/startup-script.sh <<EOF
+ cat > "${WORKSPACE}"/startup-script.sh <<EOF
echo "Redirecting karaf console output to karaf_console.log"
export KARAF_REDIRECT="/tmp/${BUNDLEFOLDER}/data/log/karaf_console.log"
mkdir -p /tmp/${BUNDLEFOLDER}/data/log
}
function create_post_startup_script() {
- cat > ${WORKSPACE}/post-startup-script.sh <<EOF
+ cat > "${WORKSPACE}"/post-startup-script.sh <<EOF
if [[ "$USEFEATURESBOOT" != "True" ]]; then
# wait up to 60s for karaf port 8101 to be opened, polling every 5s
# Execute the configuration script on each controller.
function copy_and_run_configuration_script() {
for i in $(seq 1 "${NUM_ODL_SYSTEM}"); do
- CONTROLLERIP=ODL_SYSTEM_${i}_IP
+ CONTROLLERIP="ODL_SYSTEM_${i}_IP"
echo "Configuring member-${i} with IP address ${!CONTROLLERIP}"
- scp ${WORKSPACE}/configuration-script.sh ${!CONTROLLERIP}:/tmp/
- ssh ${!CONTROLLERIP} "bash /tmp/configuration-script.sh ${i}"
+ scp "${WORKSPACE}"/configuration-script.sh "${!CONTROLLERIP}":/tmp/
+ # $i needs to be parsed client-side
+ # shellcheck disable=SC2029
+ ssh "${!CONTROLLERIP}" "bash /tmp/configuration-script.sh ${i}"
done
}
# Copy over the startup script to each controller and execute it.
function copy_and_run_startup_script() {
for i in $(seq 1 "${NUM_ODL_SYSTEM}"); do
- CONTROLLERIP=ODL_SYSTEM_${i}_IP
+ CONTROLLERIP="ODL_SYSTEM_${i}_IP"
echo "Starting member-${i} with IP address ${!CONTROLLERIP}"
- scp ${WORKSPACE}/startup-script.sh ${!CONTROLLERIP}:/tmp/
- ssh ${!CONTROLLERIP} "bash /tmp/startup-script.sh"
+ scp "${WORKSPACE}"/startup-script.sh "${!CONTROLLERIP}":/tmp/
+ ssh "${!CONTROLLERIP}" "bash /tmp/startup-script.sh"
done
}
function copy_and_run_post_startup_script() {
seed_index=1
for i in $(seq 1 "${NUM_ODL_SYSTEM}"); do
- CONTROLLERIP=ODL_SYSTEM_${i}_IP
+ CONTROLLERIP="ODL_SYSTEM_${i}_IP"
echo "Execute the post startup script on controller ${!CONTROLLERIP}"
- scp ${WORKSPACE}/post-startup-script.sh ${!CONTROLLERIP}:/tmp
- ssh ${!CONTROLLERIP} "bash /tmp/post-startup-script.sh $(( seed_index++ ))"
+ scp "${WORKSPACE}"/post-startup-script.sh "${!CONTROLLERIP}":/
+ # $seed_index needs to be parsed client-side
+ # shellcheck disable=SC2029
+ ssh "${!CONTROLLERIP}" "bash /tmp/post-startup-script.sh $(( seed_index++ ))"
if [ $(( i % NUM_ODL_SYSTEM )) == 0 ]; then
seed_index=1
fi
function create_controller_variables() {
echo "Generating controller variables..."
for i in $(seq 1 "${NUM_ODL_SYSTEM}"); do
- CONTROLLERIP=ODL_SYSTEM_${i}_IP
+ CONTROLLERIP="ODL_SYSTEM_${i}_IP"
odl_variables=${odl_variables}" -v ${CONTROLLERIP}:${!CONTROLLERIP}"
echo "Lets's take the karaf thread dump"
- ssh ${!CONTROLLERIP} "sudo ps aux" > ${WORKSPACE}/ps_before.log
- pid=$(grep org.apache.karaf.main.Main ${WORKSPACE}/ps_before.log | grep -v grep | tr -s ' ' | cut -f2 -d' ')
+ ssh "${!CONTROLLERIP}" "sudo ps aux" > "${WORKSPACE}"/ps_before.log
+ pid=$(grep org.apache.karaf.main.Main "${WORKSPACE}"/ps_before.log | grep -v grep | tr -s ' ' | cut -f2 -d' ')
echo "karaf main: org.apache.karaf.main.Main, pid:${pid}"
- ssh ${!CONTROLLERIP} "${JAVA_HOME}/bin/jstack -l ${pid}" > ${WORKSPACE}/karaf_${i}_${pid}_threads_before.log || true
+ # $i needs to be parsed client-side
+ # shellcheck disable=SC2029
+ ssh "${!CONTROLLERIP}" "${JAVA_HOME}/bin/jstack -l ${pid}" > "${WORKSPACE}/karaf_${i}_${pid}_threads_before.log" || true
done
}