summaryrefslogtreecommitdiffstats
path: root/renew-config
diff options
context:
space:
mode:
authorAlexander Sulfrian <alexander@sulfrian.net>2012-11-12 18:20:12 +0100
committerAlexander Sulfrian <alexander@sulfrian.net>2012-11-12 18:20:12 +0100
commitc00937c2c64ded523c953bdfdcf2e2859d2055bb (patch)
tree26fd23fdf801f46953535508a2d397ea2380904b /renew-config
downloadbcfg2-tools-c00937c2c64ded523c953bdfdcf2e2859d2055bb.tar.gz
bcfg2-tools-c00937c2c64ded523c953bdfdcf2e2859d2055bb.tar.bz2
bcfg2-tools-c00937c2c64ded523c953bdfdcf2e2859d2055bb.zip
renew-config: add script to activate a new configuration
Diffstat (limited to 'renew-config')
-rwxr-xr-xrenew-config58
1 files changed, 58 insertions, 0 deletions
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