Project

General

Profile

« Previous | Next » 

Revision 97c56e1d

Added by Matthieu CERDA over 9 years ago

Fixes #6032: Prevent rudder-inventory-ldap post installation script to output errors during initial installation

View differences:

rudder-inventory-ldap/SPECS/rudder-inventory-ldap.spec
BACKUP_LDIF_REGEX="^/var/rudder/ldap/backup/openldap-data-pre-upgrade-\([0-9]\{14\}\)\.ldif$"
# Do we have a backup file from a previous upgrade?
BACKUP_LDIF=`find ${BACKUP_LDIF_PATH} -regextype sed -regex "${BACKUP_LDIF_REGEX}" 2>&1 | sort -nr | head -n1`
if [ "z${BACKUP_LDIF}" != "z" ]; then
TIMESTAMP=`echo ${BACKUP_LDIF} | sed "s%${BACKUP_LDIF_REGEX}%\1%"`
BACKUP_LDIF=$(find ${BACKUP_LDIF_PATH} -regextype sed -regex "${BACKUP_LDIF_REGEX}" 2>&1 | sort -nr | head -n1)
if [ -n "${BACKUP_LDIF}" ]; then
TIMESTAMP=$(echo ${BACKUP_LDIF} | sed "s%${BACKUP_LDIF_REGEX}%\1%")
# If this is an upgrade from an older version of rudder-inventory-ldap
# we may need to drop and reimport the database if the underlying version
# of libdb has changed.
if [ -f /var/rudder/ldap/backup/openldap-data-pre-upgrade-${TIMESTAMP}.libdb-version ]; then
if [ -f "/var/rudder/ldap/backup/openldap-data-pre-upgrade-${TIMESTAMP}.libdb-version" ]; then
# Did the underlying version of libdb change?
current_libdb_version=$(echo `ldd /opt/rudder/sbin/slapcat | grep libdb | cut -d"=" -f1`)
previous_libdb_version=`cat /var/rudder/ldap/backup/openldap-data-pre-upgrade-${TIMESTAMP}.libdb-version`
if [ ${current_libdb_version} != ${previous_libdb_version} ]; then
current_libdb_version=$(ldd /opt/rudder/sbin/slapcat | grep libdb | cut -d"=" -f1)
previous_libdb_version=$(cat /var/rudder/ldap/backup/openldap-data-pre-upgrade-${TIMESTAMP}.libdb-version)
if [ "${current_libdb_version}" != "${previous_libdb_version}" ]; then
# OK, we need to remove the old DB and import the backup
REINIT_DB="yes"
fi
fi
if [ "${REINIT_DB}" = "yes" ]; then
if [ "z${REINIT_DB}" = "zyes" ]; then
# Do we have a database backup to restore from?
if [ ! -f ${BACKUP_LDIF} ]; then
echo >&2 "ERROR: No database backup for old version. Can't upgrade rudder-inventory-ldap database..."
......
# Do we need to reindex the LDAP database? This can be necessary if the indexes were changed. Let's check.
SLAPD_DEFINED_INDEXES=$(mktemp)
SLAPD_ACTUAL_INDEXES=$(mktemp)
if [ -r /opt/rudder/etc/openldap/slapd.conf -a -e /var/rudder/ldap/openldap-data/id2entry.bdb ]; then
if [ -r /opt/rudder/etc/openldap/slapd.conf ] && [ -e /var/rudder/ldap/openldap-data/id2entry.bdb ]; then
grep ^index /opt/rudder/etc/openldap/slapd.conf | sed 's/\s\+/\t/g' | cut -f2 | sed 's/,/\n/g' | sort > ${SLAPD_DEFINED_INDEXES}
ls /var/rudder/ldap/openldap-data/*.bdb | xargs -n 1 -I{} basename {} .bdb | sort | egrep -v '^(dn2id|id2entry)' > ${SLAPD_ACTUAL_INDEXES}
if ! diff ${SLAPD_DEFINED_INDEXES} ${SLAPD_ACTUAL_INDEXES} > /dev/null; then
rudder-inventory-ldap/debian/postinst
BACKUP_LDIF_REGEX="^/var/rudder/ldap/backup/openldap-data-pre-upgrade-\([0-9]\{14\}\)\.ldif$"
# Do we have a backup file from a previous upgrade?
BACKUP_LDIF=`find ${BACKUP_LDIF_PATH} -regextype sed -regex "${BACKUP_LDIF_REGEX}" 2>&1 | sort -nr | head -n1`
if [ "z${BACKUP_LDIF}" != "z" ]; then
TIMESTAMP=`echo ${BACKUP_LDIF} | sed "s%${BACKUP_LDIF_REGEX}%\1%"`
BACKUP_LDIF=$(find ${BACKUP_LDIF_PATH} -regextype sed -regex "${BACKUP_LDIF_REGEX}" 2>&1 | sort -nr | head -n1)
if [ -n "${BACKUP_LDIF}" ]; then
TIMESTAMP=$(echo ${BACKUP_LDIF} | sed "s%${BACKUP_LDIF_REGEX}%\1%")
# If this is an upgrade from an older version of rudder-inventory-ldap
# we may need to drop and reimport the database if the underlying version
# of libdb has changed.
if [ -f /var/rudder/ldap/backup/openldap-data-pre-upgrade-${TIMESTAMP}.libdb-version ]; then
if [ -f "/var/rudder/ldap/backup/openldap-data-pre-upgrade-${TIMESTAMP}.libdb-version" ]; then
# Did the underlying version of libdb change?
current_libdb_version=$(echo `ldd /opt/rudder/sbin/slapcat | grep libdb | cut -d"=" -f1`)
previous_libdb_version=`cat /var/rudder/ldap/backup/openldap-data-pre-upgrade-${TIMESTAMP}.libdb-version`
if [ ${current_libdb_version} != ${previous_libdb_version} ]; then
current_libdb_version=$(ldd /opt/rudder/sbin/slapcat | grep libdb | cut -d"=" -f1)
previous_libdb_version=$(cat /var/rudder/ldap/backup/openldap-data-pre-upgrade-${TIMESTAMP}.libdb-version)
if [ "${current_libdb_version}" != "${previous_libdb_version}" ]; then
# OK, we need to remove the old DB and import the backup
REINIT_DB="yes"
fi
fi
if [ "${REINIT_DB}" = "yes" ]; then
if [ "z${REINIT_DB}" = "zyes" ]; then
# Do we have a database backup to restore from?
if [ ! -f ${BACKUP_LDIF} ]; then
echo >&2 "ERROR: No database backup for old version. Can't upgrade rudder-inventory-ldap database..."
......
# Do we need to reindex the LDAP database? This can be necessary if the indexes were changed. Let's check.
SLAPD_DEFINED_INDEXES=$(mktemp)
SLAPD_ACTUAL_INDEXES=$(mktemp)
if [ -r /opt/rudder/etc/openldap/slapd.conf -a -e /var/rudder/ldap/openldap-data/id2entry.bdb ]; then
if [ -r /opt/rudder/etc/openldap/slapd.conf ] && [ -e /var/rudder/ldap/openldap-data/id2entry.bdb ]; then
grep ^index /opt/rudder/etc/openldap/slapd.conf | sed 's/\s\+/\t/g' | cut -f2 | sed 's/,/\n/g' | sort > ${SLAPD_DEFINED_INDEXES}
ls /var/rudder/ldap/openldap-data/*.bdb | xargs -n 1 -I{} basename {} .bdb | sort | egrep -v '^(dn2id|id2entry)' > ${SLAPD_ACTUAL_INDEXES}
if ! diff ${SLAPD_DEFINED_INDEXES} ${SLAPD_ACTUAL_INDEXES} > /dev/null; then

Also available in: Unified diff