7e0d923ffc
Add a .txt extension so web browsers and other tools know how to open this file even when it's compressed instead of treating it as a binary one. Change-Id: I22d0f0050f68cab5c8f05fa7f5d4bfee003a6ba6
79 lines
3.5 KiB
Bash
Executable File
79 lines
3.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Copyright 2016, Rackspace US, Inc.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
# WARNING:
|
|
# This file is use by all OpenStack-Ansible roles for testing purposes.
|
|
# Any changes here will affect all OpenStack-Ansible role repositories
|
|
# with immediate effect.
|
|
|
|
# PURPOSE:
|
|
# This script collects, renames and compresses the logs produced in
|
|
# a role test if the host is in OpenStack-CI.
|
|
|
|
## Vars ----------------------------------------------------------------------
|
|
|
|
export WORKING_DIR=${WORKING_DIR:-$(pwd)}
|
|
export RSYNC_CMD="rsync --archive --verbose --safe-links --ignore-errors"
|
|
export ARA_CMD="${WORKING_DIR}/.tox/functional/bin/ara generate html"
|
|
export TESTING_HOME=${TESTING_HOME:-$HOME}
|
|
|
|
## Main ----------------------------------------------------------------------
|
|
|
|
if [[ -d "/etc/nodepool" ]]; then
|
|
mkdir -p "${WORKING_DIR}/logs/host" "${WORKING_DIR}/logs/openstack"
|
|
|
|
# NOTE(mhayden): We use sudo here to ensure that all logs are copied.
|
|
sudo ${RSYNC_CMD} /var/log/ "${WORKING_DIR}/logs/host" || true
|
|
sudo ${RSYNC_CMD} /openstack/log/ "${WORKING_DIR}/logs/openstack" || true
|
|
|
|
# NOTE(mhayden): All of the logs must be world-readable so that the log
|
|
# pickup jobs will work properly. Without this, you get a "File not found"
|
|
# when trying to read the logs in the job results.
|
|
sudo chown -R $(whoami) "${WORKING_DIR}/logs/"
|
|
sudo chmod -R u+r,g+r,o+r "${WORKING_DIR}/logs/"
|
|
|
|
if [ ! -z "${ANSIBLE_LOG_DIR}" ]; then
|
|
mkdir -p "${WORKING_DIR}/logs/ansible"
|
|
${RSYNC_CMD} "${ANSIBLE_LOG_DIR}/" "${WORKING_DIR}/logs/ansible" || true
|
|
fi
|
|
|
|
# Rename all files gathered to have a .txt suffix so that the compressed
|
|
# files are viewable via a web browser in OpenStack-CI.
|
|
find "${WORKING_DIR}/logs/" -type f ! -name '*.html' -exec mv {} {}.txt \;
|
|
# Get the ara sqlite database
|
|
${RSYNC_CMD} "${TESTING_HOME}/.ara/ansible.sqlite" "${WORKING_DIR}/logs/" || true
|
|
# Generate the ARA report
|
|
${ARA_CMD} "${WORKING_DIR}/logs/ara" || true
|
|
# Get a dmesg output so we can look for kernel failures
|
|
dmesg > "${WORKING_DIR}/logs/dmesg.log.txt" || true
|
|
# output ram usage
|
|
free -m > "${WORKING_DIR}/logs/memory-available.txt" || true
|
|
# Redhat package debugging
|
|
if which yum &>/dev/null || which dnf &>/dev/null; then
|
|
# Prefer dnf over yum for CentOS.
|
|
which dnf &>/dev/null && RHT_PKG_MGR='dnf' || RHT_PKG_MGR='yum'
|
|
sudo $RHT_PKG_MGR repolist -v > "${WORKING_DIR}/logs/redhat-rpm-repolist.txt" || true
|
|
sudo $RHT_PKG_MGR list installed > "${WORKING_DIR}/logs/redhat-rpm-list-installed.txt" || true
|
|
# SUSE package debugging
|
|
elif which zypper &>/dev/null; then
|
|
sudo zypper lr -d > "${WORKING_DIR}/logs/suse-zypper-repolist.txt" || true
|
|
sudo zypper pa -i > "${WORKING_DIR}/logs/suse-zypper-list-installed.txt" || true
|
|
fi
|
|
# Compress the files gathered so that they do not take up too much space.
|
|
# We use 'command' to ensure that we're not executing with some sort of alias.
|
|
command gzip --best --recursive "${WORKING_DIR}/logs/"
|
|
fi
|