openstack-ansible/scripts/gate-check-lint.sh
Jesse Pretorius 6b12bf3663 Implement local scripts for all gate tests
This patch implements the following:
 - scripts-library.sh which includes commonly used functions, variables
   and other preparation commands for all other scripts
 - bootstrap-ansible.sh which only deploys a selected version of ansible
   and ensures that any other requirements are prepared on the
   deployment host
 - bootstrap-aio.sh which runs all host preparation actions for an
   all-in-one build
 - gate-check-lint.sh which runs a lint and syntax check
 - gate-check-commit.sh which runs all actions required for a gate
   commit check, utilising the other scripts where required
 - run-smoke-test.sh which runs tempest from inside the utility container
 - run-playbooks.sh which runs the playbooks
 - the existing conf.d/swift.yml is renamed to be an example
   configuration - the example configurations can be used as
   documentation
 - etc/network/interfaces.d/aio_interfaces.cfg,
   etc/rpc_deploy/conf.d/swift.yml and
   etc/rpc_deploy/rpc_user_config.yml are now configurations used for
   the AIO deployment
 - a workaround for https://bugs.launchpad.net/bugs/1244589 to ensure
   that DHCP checksums are implemented by the host which is required for
   the smoke tests to work
 - the removal of the rpc heat templates as they're unusable in their
   current state
 - setting MAX_RETRIES to 0, ensuring that any failures cause an
   immediate commit check failure in the gate - this prevents the
   masking of failures by retry attempts

DocImpact
Co-Authored-By: Kevin Carter <kevin.carter@rackspace.com>
Closes-Bug: #1415883
Closes-Bug: #1417999
Closes-Bug: #1419807
Change-Id: I95242d48ad0fb055f16510803c8aa14dc183ac17
2015-02-12 15:59:11 +00:00

74 lines
2.5 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 -v +x
## Variables -----------------------------------------------------------------
BOOTSTRAP_ANSIBLE=${BOOTSTRAP_ANSIBLE:-"yes"}
PLAYBOOK_PATH=${PLAYBOOK_PATH:-"rpc_deployment/playbooks"}
## Functions -----------------------------------------------------------------
info_block "Checking for required libraries." || source $(dirname ${0})/scripts-library.sh
## Main ----------------------------------------------------------------------
# Enable logging of all commands executed
set -x
# Bootstrap ansible if required
if [ "${BOOTSTRAP_ANSIBLE}" == "yes" ]; then
source $(dirname ${0})/bootstrap-ansible.sh
fi
# Check whether pip or pip2 is available
if ! ( which pip > /dev/null && which pip2 > /dev/null ); then
info_block "ERROR: Please install pip before proceeding."
exit 1
fi
# Check whether ansible-playbook is available
if ! which ansible-playbook > /dev/null; then
info_block "ERROR: Please install ansible before proceeding."
exit 1
fi
# Install the development requirements
if [ -f dev-requirements.txt ]; then
pip2 install -r dev-requirements.txt || pip install -r dev-requirements.txt
else
pip2 install ansible-lint || pip install ansible-lint
fi
# Perform our simple sanity checks
echo -e '[all]\nlocalhost ansible_connection=local' | tee local_only_inventory
# Do a basic syntax check on all playbooks and roles
info_block "Running Syntax Check"
ansible-playbook -i local_only_inventory --syntax-check \
$(find ${PLAYBOOK_PATH} -type f -name "*.yml" \
! -name "os-service-config-update.yml" \
! -name "host-network-setup.yml")
# Perform a lint check on all playbooks and roles
info_block "Running Lint Check"
ansible-lint --version
ansible-lint $(find ${PLAYBOOK_PATH} -type f -name "*.yml" \
! -name "os-service-config-update.yml" \
! -name "host-network-setup.yml")