feat: add bridgehead check command (#342)

This commit is contained in:
Jan
2025-09-30 11:47:51 +02:00
committed by GitHub
parent 00b10f3ae6
commit eab7700404
3 changed files with 79 additions and 1 deletions

View File

@@ -146,6 +146,10 @@ case "$ACTION" in
loadVars loadVars
exec ./lib/update-bridgehead.sh $PROJECT exec ./lib/update-bridgehead.sh $PROJECT
;; ;;
check)
loadVars &> /dev/null
exec ./lib/check-bridgehead.sh $PROJECT
;;
install) install)
source ./lib/prepare-system.sh NODEV source ./lib/prepare-system.sh NODEV
loadVars loadVars

74
lib/check-bridgehead.sh Executable file
View File

@@ -0,0 +1,74 @@
#!/bin/bash
source lib/functions.sh
log INFO "Running Bridgehead checks..."
# Directory ownership
log INFO "Checking directory ownership..."
OWNERSHIP_OK=true
if ! checkOwner /srv/docker/bridgehead bridgehead &> /dev/null; then
log ERROR "Wrong ownership for /srv/docker/bridgehead."
log INFO "Hint: Run 'sudo chown -R bridgehead /srv/docker/bridgehead'."
OWNERSHIP_OK=false
fi
if ! checkOwner /etc/bridgehead bridgehead &> /dev/null; then
log ERROR "Wrong ownership for /etc/bridgehead."
log INFO "Hint: Run 'sudo chown -R bridgehead /etc/bridgehead'."
OWNERSHIP_OK=false
fi
if [ "$OWNERSHIP_OK" = true ]; then
log INFO "Directory ownership is correct."
fi
# Git repository status
log INFO "Checking Git repository status..."
GIT_OK=true
if [ -d "/etc/bridgehead/.git" ]; then
if [ -n "$(git -C "/etc/bridgehead" status --porcelain)" ]; then
log ERROR "The config repo at /etc/bridgehead is modified.\n$(git -C /etc/bridgehead status -s)"
log INFO "Hint: Review your changes with git diff if they are already upstreamed use git stash and git pull to update the repo"
GIT_OK=false
fi
fi
if [ -n "$(git -C "$(pwd)" status --porcelain)" ]; then
log ERROR "$(pwd) is modified. \n$(git -C "$(pwd)" status -s)"
log INFO "Hint: If these are site specific changes to docker compose files consider moving them to $PROJECT/docker-compose.override.yml which is ignored by git."
log INFO " If they are already upstreamed use git stash and git pull to update the repo"
GIT_OK=false
fi
if [ "$GIT_OK" = true ]; then
log INFO "Git repositories are clean."
fi
# Git remote connection
log INFO "Checking Git remote connection..."
GIT_REMOTE_OK=true
if [ -d "/etc/bridgehead/.git" ]; then
if ! git -C "/etc/bridgehead" fetch --dry-run >/dev/null 2>&1; then
log ERROR "Cannot connect to the Git remote for /etc/bridgehead."
log INFO "Hint: Check your network connection and Git remote configuration for /etc/bridgehead."
GIT_REMOTE_OK=false
fi
fi
if [ -d "$(pwd)/.git" ]; then
if ! git -C "$(pwd)" fetch --dry-run >/dev/null 2>&1; then
log ERROR "Cannot connect to the Git remote for $(pwd)."
log INFO "Hint: Check your network connection and Git remote configuration for $(pwd)."
GIT_REMOTE_OK=false
fi
fi
if [ "$GIT_REMOTE_OK" = true ]; then
log INFO "Git remote connection successful."
fi
if [ "$OWNERSHIP_OK" = true ] && [ "$GIT_OK" = true ] && [ "$GIT_REMOTE_OK" = true ]; then
log INFO "All checks passed."
exit 0
else
log ERROR "Some checks failed. Please review the hints and fix the issues."
log ERROR "Without fixing these issues bridgehead updates may not work correctly."
exit 1
fi

View File

@@ -53,7 +53,7 @@ checkOwner(){
} }
printUsage() { printUsage() {
echo "Usage: bridgehead start|stop|logs|docker-logs|is-running|update|install|uninstall|adduser|enroll PROJECTNAME" echo "Usage: bridgehead start|stop|logs|docker-logs|is-running|update|check|install|uninstall|adduser|enroll PROJECTNAME"
echo "PROJECTNAME should be one of ccp|bbmri|cce|itcc|kr|dhki" echo "PROJECTNAME should be one of ccp|bbmri|cce|itcc|kr|dhki"
} }