From c00937c2c64ded523c953bdfdcf2e2859d2055bb Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Mon, 12 Nov 2012 18:20:12 +0100 Subject: renew-config: add script to activate a new configuration --- renew-config | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100755 renew-config diff --git a/renew-config b/renew-config new file mode 100755 index 0000000..d9abcee --- /dev/null +++ b/renew-config @@ -0,0 +1,58 @@ +#!/bin/sh + +REPO="/root/repo" +REAL="/var/lib/bcfg2" +OLDPWD="$(pwd)" + +error() { + echo "$@" 1>&2 + cd "$OLDPWD" >/dev/null + exit 1 +} + +# pre flight checks +cd "$REPO" >/dev/null + +if [ -n "$(git status --porcelain)" ]; then + error "$REPO: git repositiory contains uncommited changes." +fi + +git fetch origin 2>/dev/null +git push origin master 2>/dev/null + +if [ -n "$(git rev-list HEAD..origin/master)" ]; then + error "$REPO: HEAD does not equal to origin/master." +fi + +# update symlinks (needed for repo validation) +ln -s -f "$REAL/Metadata/pingdata.xml" Metadata/pingdata.xml +ln -s -f "$REAL/Packages/cache" Packages/cache +ln -s -f "$REAL/Probes/probed.xml" Probes/probed.xml +ln -s -f "$REAL/Properties/secrets.xml" Properties/secrets.xml + +if ! bcfg2-lint -Q "$REPO"; then + error "$REPO: bcfg2-lint detected errors." +fi + +# update real repository +cd "$REAL" >/dev/null + +if ! git remote update --prune >/dev/null 2>&1; then + error "$REAL: git remote update --prune failed" +fi + +git fetch --quiet --tags 2>/dev/null || + error "$REAL: git fetch failed." + +git checkout --quiet --force master || + error "$REAL: git checkout failed." + +git reset --quiet --hard origin/master || + error "$REAL: git reset failed." + +git clean --quiet --force -d || + error "$REAL: git clean failed" + +bcfg2-ping-sweep + +cd "$OLDPWD" >/dev/null -- cgit v1.2.3-1-g7c22