#!/bin/bash # # Setup Docker container with systemd and install NUPST v3 # This creates a container from commit 806f81c6a057a2a5da586b96a231d391f12eb1bb (v3) # set -e CONTAINER_NAME="nupst-test-v3" V3_COMMIT="806f81c6a057a2a5da586b96a231d391f12eb1bb" echo "================================================" echo " NUPST v3 Test Container Setup" echo "================================================" echo "" # Check if container already exists if docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then echo "⚠️ Container ${CONTAINER_NAME} already exists" read -p "Remove and recreate? (y/N): " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then echo "→ Stopping and removing existing container..." docker stop ${CONTAINER_NAME} 2>/dev/null || true docker rm ${CONTAINER_NAME} 2>/dev/null || true else echo "Exiting. Remove manually with: docker rm -f ${CONTAINER_NAME}" exit 1 fi fi echo "→ Creating Docker container (will install systemd)..." docker run -d \ --name ${CONTAINER_NAME} \ --privileged \ --cgroupns=host \ -v /sys/fs/cgroup:/sys/fs/cgroup:rw \ ubuntu:22.04 \ /bin/bash -c "apt-get update && apt-get install -y systemd systemd-sysv && exec /sbin/init" echo "→ Waiting for systemd to initialize..." sleep 10 echo "→ Waiting for dpkg lock to be released..." docker exec ${CONTAINER_NAME} bash -c " while fuser /var/lib/dpkg/lock-frontend >/dev/null 2>&1; do echo ' Waiting for dpkg lock...' sleep 2 done echo ' dpkg lock released' " echo "→ Installing prerequisites in container..." docker exec ${CONTAINER_NAME} bash -c " apt-get update -qq apt-get install -y -qq git curl sudo " echo "→ Cloning NUPST v3 (commit ${V3_COMMIT})..." docker exec ${CONTAINER_NAME} bash -c " cd /opt git clone https://code.foss.global/serve.zone/nupst.git cd nupst git checkout ${V3_COMMIT} echo 'Checked out commit:' git log -1 --oneline " echo "→ Running NUPST v3 installation script..." docker exec ${CONTAINER_NAME} bash -c " cd /opt/nupst bash install.sh -y " echo "→ Creating dummy NUPST configuration for testing..." docker exec ${CONTAINER_NAME} bash -c " mkdir -p /etc/nupst cat > /etc/nupst/config.json << 'EOF' { \"upsList\": [ { \"id\": \"test-ups\", \"name\": \"Test UPS\", \"host\": \"127.0.0.1\", \"port\": 161, \"community\": \"public\", \"version\": \"2c\", \"batteryLowOID\": \"1.3.6.1.4.1.935.1.1.1.3.3.1.0\", \"onBatteryOID\": \"1.3.6.1.4.1.935.1.1.1.3.3.2.0\", \"shutdownCommand\": \"echo 'Shutdown triggered'\" } ], \"groups\": [] } EOF echo 'Dummy config created at /etc/nupst/config.json' " echo "→ Enabling NUPST systemd service..." docker exec ${CONTAINER_NAME} bash -c " nupst enable " echo "→ Starting NUPST service..." docker exec ${CONTAINER_NAME} bash -c " nupst start " echo "" echo "================================================" echo " ✓ NUPST v3 Container Ready" echo "================================================" echo "" echo "Container name: ${CONTAINER_NAME}" echo "NUPST version: v3 (commit ${V3_COMMIT})" echo "" echo "Useful commands:" echo " docker exec -it ${CONTAINER_NAME} bash" echo " docker exec ${CONTAINER_NAME} systemctl status nupst" echo " docker exec ${CONTAINER_NAME} nupst --version" echo " docker stop ${CONTAINER_NAME}" echo " docker start ${CONTAINER_NAME}" echo " docker rm -f ${CONTAINER_NAME}" echo ""