tripleo-ci/toci_functions.sh

75 lines
1.9 KiB
Bash

#!/usr/bin/env bash
get_get_repo(){
CACHEDIR=$TOCI_CACHE_DIR/${1/[^\/]*\//}
if [ ! -e $CACHEDIR ] ; then
git clone https://github.com/$1.git $CACHEDIR
else
pushd $CACHEDIR
git fetch
git reset --hard origin/master
popd
fi
cp -r $CACHEDIR $TOCI_WORKING_DIR/${1/[^\/]*\//}
}
ssh_noprompt(){
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=QUIET $@
}
scp_noprompt(){
scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=QUIET $@
}
wait_for(){
LOOPS=$1
SLEEPTIME=$2
shift ; shift
i=0
while [ $i -lt $LOOPS ] ; do
i=$((i + 1))
eval "$@" && return 0 || true
sleep $SLEEPTIME
done
return 1
}
apply_patches(){
pushd $TOCI_WORKING_DIR/$1
if [ -d "$TOCI_SOURCE_DIR/patches/" ]; then
for PATCH in $(find $TOCI_SOURCE_DIR/patches/ -name "$2") ; do
patch -p1 -N < $PATCH || echo Error : could not apply $PATCH >> $TOCI_LOG_DIR/error-applying-patches.log
done
fi
popd
}
mark_time(){
echo $(date) : $@
}
# Get config files and logs from a host for debuging purposes
get_state_from_host(){
scp_noprompt root@$SEED_IP:/var/log/first-boot.d.log $TOCI_LOG_DIR/first-boot.d.log || true
ssh_noprompt root@$SEED_IP "( set -x ; ps -ef ; df -h ; uptime ; netstat -lpn ; iptables-save ; brctl show ; ip addr ; dpkg -l || rpm -qa) > /var/log/host_info.txt 2>&1 ;
tar -czf - --exclude=udev/hwdb.bin --exclude=selinux/targeted /var/log /etc || true" > $TOCI_LOG_DIR/bootstraplogs.tgz
}
# Sends a message to a freenode irc channel
send_irc(){
exec 3<>/dev/tcp/irc.freenode.net/6667
CHANNEL=$1
shift
MESSAGE=$@
echo "Nick toci-bot" >&3
echo "User toci-bot -i * : hi" >&3
sleep 2
echo "JOIN #$CHANNEL" >&3
echo "PRIVMSG #$CHANNEL :$@" >&3
echo "QUIT" >&3
cat <&3 > /dev/null
}