11ce6c7422
This change sets the affinity for the RabbitMQ, Galera, Repo, Keystone and Horizon containers to 1 when running on OpenStack-CI. The intention here is to reduce the number of failures we see within the gate due to resource starvation. This patch is specifically only going into the master (Liberty) branch as this is the only place where resource starvation has become critical. This patch is a holdover until the current gate check design is revised after the Liberty release. The redesign will split the current monolithic gate check into multiple use-cases which each use less resources. This is described in https://review.openstack.org/221009 Co-Authored-By: Jesse Pretorius <jesse.pretorius@rackspace.co.uk> Closes-Bug: #1498009 Change-Id: If159c75428f07e7f92c6c1807a054feca6292ad5
138 lines
5.2 KiB
Bash
Executable File
138 lines
5.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Copyright 2014, 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.
|
|
|
|
## Shell Opts ----------------------------------------------------------------
|
|
set -e -u -x
|
|
|
|
## Variables -----------------------------------------------------------------
|
|
export BOOTSTRAP_ANSIBLE=${BOOTSTRAP_ANSIBLE:-"yes"}
|
|
export BOOTSTRAP_AIO=${BOOTSTRAP_AIO:-"yes"}
|
|
export RUN_PLAYBOOKS=${RUN_PLAYBOOKS:-"yes"}
|
|
export RUN_TEMPEST=${RUN_TEMPEST:-"yes"}
|
|
# Ansible options
|
|
export ANSIBLE_PARAMETERS=${ANSIBLE_PARAMETERS:-"-v"}
|
|
# Deployment options
|
|
export DEPLOY_HOST=${DEPLOY_HOST:-"yes"}
|
|
export DEPLOY_LB=${DEPLOY_LB:-"yes"}
|
|
export DEPLOY_INFRASTRUCTURE=${DEPLOY_INFRASTRUCTURE:-"yes"}
|
|
export DEPLOY_LOGGING=${DEPLOY_LOGGING:-"yes"}
|
|
export DEPLOY_OPENSTACK=${DEPLOY_OPENSTACK:-"yes"}
|
|
export DEPLOY_SWIFT=${DEPLOY_SWIFT:-"yes"}
|
|
export DEPLOY_TEMPEST=${DEPLOY_TEMPEST:-"yes"}
|
|
# Limit the gate check to only performing one attempt, unless already set
|
|
export MAX_RETRIES=${MAX_RETRIES:-"2"}
|
|
# tempest and testr options, default is to run tempest in serial
|
|
export RUN_TEMPEST_OPTS=${RUN_TEMPEST_OPTS:-'--serial'}
|
|
export TESTR_OPTS=${TESTR_OPTS:-''}
|
|
|
|
## Functions -----------------------------------------------------------------
|
|
info_block "Checking for required libraries." 2> /dev/null || source $(dirname ${0})/scripts-library.sh
|
|
|
|
## Main ----------------------------------------------------------------------
|
|
|
|
# Disable Ansible color output
|
|
sed -i 's/nocolor.*/nocolor = 1/' $(dirname ${0})/../playbooks/ansible.cfg
|
|
|
|
# Make the /openstack/log directory for openstack-infra gate check log publishing
|
|
mkdir -p /openstack/log
|
|
|
|
# Implement the log directory link for openstack-infra log publishing
|
|
ln -sf /openstack/log $(dirname ${0})/../logs
|
|
|
|
# Create ansible logging directory and add in a log file entry into ansible.cfg
|
|
mkdir -p /openstack/log/ansible-logging
|
|
sed -i '/\[defaults\]/a log_path = /openstack/log/ansible-logging/ansible.log' $(dirname ${0})/../playbooks/ansible.cfg
|
|
|
|
# Adjust settings based on the Cloud Provider info in OpenStack-CI
|
|
if [ -fs /etc/nodepool/provider ]; then
|
|
source /etc/nodepool/provider
|
|
|
|
if [[ ${NODEPOOL_PROVIDER} == "rax"* ]]; then
|
|
|
|
# Set the Ubuntu Repository to the RAX Mirror
|
|
export UBUNTU_REPO="http://mirror.rackspace.com/ubuntu"
|
|
export UBUNTU_SEC_REPO="${UBUNTU_REPO}"
|
|
|
|
elif [[ ${NODEPOOL_PROVIDER} == "hpcloud"* ]]; then
|
|
|
|
# Set the Ubuntu Repository to the HP Cloud Mirror
|
|
export UBUNTU_REPO="http://${NODEPOOL_AZ}.clouds.archive.ubuntu.com/ubuntu"
|
|
export UBUNTU_SEC_REPO="${UBUNTU_REPO}"
|
|
|
|
fi
|
|
|
|
# Reduce container affinities as Liberty appears to consume
|
|
# a greater volume of resources, causing greater numbers
|
|
# of failures with the default affinities.
|
|
for container_type in rabbit_mq repo galera horizon keystone; do
|
|
export "NUM_${container_type}_CONTAINER=1"
|
|
done
|
|
|
|
fi
|
|
|
|
# Enable detailed task profiling
|
|
sed -i '/\[defaults\]/a callback_plugins = plugins/callbacks' $(dirname ${0})/../playbooks/ansible.cfg
|
|
|
|
# Bootstrap an AIO setup if required
|
|
if [ "${BOOTSTRAP_AIO}" == "yes" ]; then
|
|
source $(dirname ${0})/bootstrap-aio.sh
|
|
fi
|
|
|
|
# Bootstrap ansible if required
|
|
if [ "${BOOTSTRAP_ANSIBLE}" == "yes" ]; then
|
|
source $(dirname ${0})/bootstrap-ansible.sh
|
|
fi
|
|
|
|
# Enable debug logging for all services to make failure debugging easier
|
|
echo "debug: True" | tee -a /etc/openstack_deploy/user_variables.yml
|
|
|
|
# NOTE: hpcloud-b4's eth0 uses 10.0.3.0/24, which overlaps with the
|
|
# lxc_net_address default
|
|
# TODO: We'll need to implement a mechanism to determine valid lxc_net_address
|
|
# value which will not overlap with an IP already assigned to the host.
|
|
echo "lxc_net_address: 10.255.255.1" | tee -a /etc/openstack_deploy/user_variables.yml
|
|
echo "lxc_net_netmask: 255.255.255.0" | tee -a /etc/openstack_deploy/user_variables.yml
|
|
echo "lxc_net_dhcp_range: 10.255.255.2,10.255.255.253" | tee -a /etc/openstack_deploy/user_variables.yml
|
|
|
|
# Limit the number of processes used by Keystone
|
|
# The defaults cause tempest failures in OpenStack CI due to resource constraints
|
|
echo "keystone_wsgi_processes: 4" | tee -a /etc/openstack_deploy/user_variables.yml
|
|
|
|
# Disable the python output buffering so that jenkins gets the output properly
|
|
export PYTHONUNBUFFERED=1
|
|
|
|
# Run the ansible playbooks if required
|
|
if [ "${RUN_PLAYBOOKS}" == "yes" ]; then
|
|
# Set-up our tiny awk script.
|
|
strip_debug="
|
|
!/(^[ 0-9|:.-]+<[0-9.]|localhost+>)|Extracting/ {
|
|
gsub(/{.*/, \"\");
|
|
gsub(/\\n.*/, \"\");
|
|
gsub(/\=\>.*/, \"\");
|
|
print
|
|
}
|
|
"
|
|
set -o pipefail
|
|
bash $(dirname ${0})/run-playbooks.sh | awk "${strip_debug}"
|
|
set +o pipefail
|
|
fi
|
|
|
|
# Run the tempest tests if required
|
|
if [ "${RUN_TEMPEST}" == "yes" ]; then
|
|
source $(dirname ${0})/run-tempest.sh
|
|
fi
|
|
|
|
exit_success
|