system-config/tools/apply-test.sh
K Jonathan Harker 74a92c4645 Fix logstash-filters test
In order to run the script directly in the test, the script needs to
have the executable bit set. Currently, the test is failing with a
"Permission denied" error when attempting to run the script.

We also need to run install_modules.sh in the logstash-filters test, so
move that invocation to the shared prep-apply.sh script.

The vcsrepo puppet define doesn't understand revisions of the form
"refs/zuul/foo", so instead parse the HEAD sha and pass that to vcsrepo.

Finally, we need to ensure that $elasticsearch_nodes is populated with
an array, otherwise the function @elasticsearch_nodes.map in the
output.conf template will fail.

Change-Id: Ic1ab6d04232abb3cf347f0d27afbf9172f62b0e4
2016-10-12 09:43:26 -07:00

77 lines
2.6 KiB
Bash
Executable File

#!/bin/bash -ex
# Copyright 2014 Hewlett-Packard Development Company, L.P.
#
# 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.
. ./tools/prep-apply.sh
if [[ ! -d applytest ]] ; then
mkdir applytest
fi
# First split the variables at the beginning of the file
csplit -sf applytest/prep $PUPPET_MANIFEST '/^$/' {0}
# Then split the class defs.
csplit -sf applytest/puppetapplytest applytest/prep01 '/^}$/' {*}
# Remove } header left by csplit
sed -i -e '/^\}$/d' applytest/puppetapplytest*
# Comment out anything that doesn't begin with a space.
# This gives us the node {} internal contents.
sed -i -e 's/^[^][:space:]$]/#&/g' applytest/prep00 applytest/puppetapplytest*
sed -i -e 's@hiera(.\([^.]*\).,\([^)]*\))@\2@' applytest/prep00 applytest/puppetapplytest*
sed -i -e "s@hiera(.\([^.]*\).)@'\1NoDefault'@" applytest/prep00 applytest/puppetapplytest*
mv applytest/prep00 applytest/head # These are the top-level variables defined in site.pp
if [[ `lsb_release -i -s` == 'CentOS' ]]; then
if [[ `lsb_release -r -s` =~ '7' ]]; then
CODENAME='centos7'
fi
elif [[ `lsb_release -i -s` == 'Debian' ]]; then
CODENAME=`lsb_release -c -s`
elif [[ `lsb_release -i -s` == 'Ubuntu' ]]; then
CODENAME=`lsb_release -c -s`
elif [[ `lsb_release -i -s` == 'Fedora' ]]; then
REL=`lsb_release -r -s`
CODENAME="fedora$REL"
fi
FOUND=0
for f in `find applytest -name 'puppetapplytest*' -print` ; do
if grep -q "Node-OS: $CODENAME" $f; then
cat applytest/head $f > $f.final
FOUND=1
fi
done
if [[ $FOUND == "0" ]]; then
echo "No hosts found for node type $CODENAME"
exit 1
fi
cat > applytest/primer.pp << EOF
class helloworld {
notify { 'hello, world!': }
}
EOF
sudo mkdir -p /var/run/puppet
echo "Running apply test primer to avoid setup races when run in parallel."
./tools/test_puppet_apply.sh applytest/primer.pp
echo "Running apply test on these hosts:"
find applytest -name 'puppetapplytest*.final' -print0
find applytest -name 'puppetapplytest*.final' -print0 | \
xargs -0 -P $(nproc) -n 1 -I filearg \
./tools/test_puppet_apply.sh filearg