charm-ceilometer/hooks/install
Mario Splivalo 8e3b47678e Fix race condition with systemd's apt initialization
When LXC container start systemd runs apt.systemd.daily,
which locks dpkg database.

This change implements a 'wait for lock release', so that
install hook doesn't fail when deploying inside LXC.

Change-Id: I71a38ec8ea208f6c9ef1ae3dabda63bd26fa20fa
Closes-Bug: 1656651
2017-01-16 11:26:27 +01:00

26 lines
525 B
Bash
Executable File

#!/bin/bash
# Wrapper to deal with newer Ubuntu versions that don't have py2 installed
# by default.
declare -a DEPS=('apt' 'netaddr' 'netifaces' 'pip' 'yaml')
wait_for_dpkg_unlock() {
while $(fuser -s /var/lib/dpkg/lock); do sleep .5;done
}
check_and_install() {
pkg="${1}-${2}"
if ! dpkg -s ${pkg} 2>&1 > /dev/null; then
wait_for_dpkg_unlock
apt-get -y install ${pkg}
fi
}
PYTHON="python"
for dep in ${DEPS[@]}; do
check_and_install ${PYTHON} ${dep}
done
exec ./hooks/install.real