From f66544b97a56afdbcc64d905a1cadb05dabf6128 Mon Sep 17 00:00:00 2001 From: Kevin McConnell Date: Mon, 10 Nov 2025 12:08:46 +0000 Subject: [PATCH] Remove testbed --- Procfile.beamer-testbed | 3 - bin/beamer-testbed | 235 ------------------------------ docker-compose.beamer-testbed.yml | 55 ------- 3 files changed, 293 deletions(-) delete mode 100644 Procfile.beamer-testbed delete mode 100755 bin/beamer-testbed delete mode 100644 docker-compose.beamer-testbed.yml diff --git a/Procfile.beamer-testbed b/Procfile.beamer-testbed deleted file mode 100644 index 05fe908af..000000000 --- a/Procfile.beamer-testbed +++ /dev/null @@ -1,3 +0,0 @@ -web: bin/thrust bin/rails server -beamer: bin/beamer --debug --directory ./storage/ run --primary ${BEAMER_PRIMARY:-$(hostname)} -migrations: bin/beamer-testbed run-migrations --debug --directory ./storage/ diff --git a/bin/beamer-testbed b/bin/beamer-testbed deleted file mode 100755 index baf667501..000000000 --- a/bin/beamer-testbed +++ /dev/null @@ -1,235 +0,0 @@ -#!/usr/bin/env bash - -set -e - -COMPOSE_OPTIONS="-f docker-compose.beamer-testbed.yml" - -# Show usage -show_usage() { - echo "Usage: $0 {start|stop|logs|console|bash|server|run-migrations} [options]" - echo "" - echo "Commands:" - echo " start Build and start all services" - echo " stop Stop all services" - echo " logs Show logs (pass -f to follow)" - echo " console [node] Open Rails console (default: fizzy-01)" - echo " bash [node] Open bash shell (default: fizzy-01)" - echo " server Start web server and beamer using foreman" - echo " run-migrations Wait for beamer, then run migrations if primary" - exit 1 -} - -# Get all fizzy-* services from docker compose -get_fizzy_services() { - fizzy_services=$(docker compose $COMPOSE_OPTIONS config --services | grep '^fizzy-' | sort) - - if [ -z "$fizzy_services" ]; then - echo "Error: No fizzy-* services found in docker-compose file" - exit 1 - fi - - echo "$fizzy_services" -} - -# Function to wait for a container to be healthy -wait_for_container() { - local container=$1 - local max_attempts=60 - local attempt=0 - - echo "Waiting for $container to be ready..." - - while [ $attempt -lt $max_attempts ]; do - if docker compose $COMPOSE_OPTIONS exec -T "$container" curl -f -s http://localhost:3000/up >/dev/null 2>&1; then - echo "$container is ready!" - return 0 - fi - attempt=$((attempt + 1)) - echo "$container isn't yet ready on attempt $attempt/$max_attempts" - sleep 2 - done - - echo "Error: $container failed to become ready after $max_attempts attempts" - return 1 -} - -# Function to configure kamal-proxy -# TODO: set up the other containers as read targets -configure_proxy() { - local writer=$1 - local readers=${@:2} - - echo "Configuring kamal-proxy..." - - local writer_target="$writer:3000" - local reader_target="" - for reader in $readers; do - if [ -n "$reader_target" ]; then - reader_target+="," - fi - reader_target+="$reader:3000" - done - - docker compose $COMPOSE_OPTIONS exec -T kamal-proxy \ - kamal-proxy deploy fizzy \ - --target $writer_target \ - --read-target $reader_target \ - --host fizzy.localhost - - echo "Configured kamal-proxy with target=${writer_target} and read-target=${reader_target}" -} - -# Start command -cmd_start() { - local fizzy_services=$(get_fizzy_services) - local first_fizzy=$(echo "$fizzy_services" | head -n 1) - - # Set UID and GID for Docker user mapping - export DOCKER_UID=$(id -u) - export DOCKER_GID=$(id -g) - - # Get GitHub token from gh CLI - echo "Getting GitHub token from gh CLI..." - export GITHUB_TOKEN=$(gh auth token) - - if [ -z "$GITHUB_TOKEN" ]; then - echo "Error: Failed to get GitHub token from gh CLI" - echo "Make sure you're authenticated with: gh auth login" - exit 1 - fi - - # Create tmp directories with proper permissions - echo "Creating temporary directories..." - for service in $fizzy_services; do - mkdir -p "./tmp/beamer-testbed/$service/storage" - mkdir -p "./tmp/beamer-testbed/$service/tmp" - done - - echo "Building Docker image for $first_fizzy..." - docker compose $COMPOSE_OPTIONS build "$first_fizzy" - - echo "Starting services in detached mode..." - docker compose $COMPOSE_OPTIONS down - docker compose $COMPOSE_OPTIONS up -d - - # Wait for and register each fizzy container - for container in $fizzy_services; do - wait_for_container "$container" - done - configure_proxy $fizzy_services - - echo "" - echo "All containers are ready and registered!" - echo "You can access the application at: http://fizzy.localhost:3006" -} - -# Stop command -cmd_stop() { - echo "Stopping services..." - docker compose $COMPOSE_OPTIONS down - echo "Services stopped." -} - -# Logs command -cmd_logs() { - docker compose $COMPOSE_OPTIONS logs "$@" -} - -# Console command -cmd_console() { - local node="${1:-fizzy-01}" - - echo "Opening Rails console in $node..." - docker compose $COMPOSE_OPTIONS exec "$node" bin/rails console -} - -# Bash command -cmd_bash() { - local node="${1:-fizzy-01}" - - echo "Opening bash shell in $node..." - docker compose $COMPOSE_OPTIONS exec "$node" bash -} - -# Server command (runs inside container) -cmd_server() { - # Check if foreman is installed - if ! command -v foreman >/dev/null 2>&1; then - echo "Foreman not found, installing..." - gem install foreman - fi - - # Clean up any stale .beamer.sock files - echo "Cleaning up stale socket files..." - find . -path '*/.beamer/*/.beamer.sock' -type s -delete 2>/dev/null || true - - mkdir -p ./storage/tenants - mkdir -p ./storage/untenanted - - echo "Starting web server and beamer with foreman..." - exec foreman start -f Procfile.beamer-testbed -} - -# Run migrations command (runs inside container) -cmd_run_migrations() { - # Store all arguments as BEAMER_OPTIONS - BEAMER_OPTIONS="$*" - - echo "Waiting for beamer to be ready..." - - # Wait for beamer status to succeed - while ! bin/beamer $BEAMER_OPTIONS status >/dev/null 2>&1; do - echo "Beamer not ready yet, waiting..." - sleep 1 - done - - echo "Beamer is ready!" - sleep 1 - - # Check if this is the primary node - if bin/beamer $BEAMER_OPTIONS is-primary; then - echo "This is the primary node, running migrations..." - ./bin/rails db:prepare - echo "Migrations complete!" - else - echo "This is not the primary node, skipping migrations." - fi - - # Wait indefinitely until interrupted - echo "Waiting indefinitely (press Ctrl-C to exit)..." - while true; do - sleep 3600 - done -} - -# Main command dispatch -case "${1:-}" in -start) - cmd_start - ;; -stop) - cmd_stop - ;; -logs) - shift - cmd_logs "$@" - ;; -console) - shift - cmd_console "$@" - ;; -bash) - shift - cmd_bash "$@" - ;; -server) - cmd_server - ;; -run-migrations) - shift - cmd_run_migrations "$@" - ;; -*) - show_usage - ;; -esac diff --git a/docker-compose.beamer-testbed.yml b/docker-compose.beamer-testbed.yml deleted file mode 100644 index 0cbbffab2..000000000 --- a/docker-compose.beamer-testbed.yml +++ /dev/null @@ -1,55 +0,0 @@ -x-app: &app - image: "basecamp/fizzy:dev" - user: "${DOCKER_UID:-1000}:${DOCKER_GID:-1000}" - build: - context: . - dockerfile: Dockerfile.dev - secrets: - - GITHUB_TOKEN - volumes: - - .:/rails - extra_hosts: - - queenbee.localhost:host-gateway - environment: - - RAILS_ENV=development - - BINDING=0.0.0.0 - - BEAMER=true - - BEAMER_PRIMARY=fizzy-01 - - SECRET_KEY_BASE=beamer_testbed_shared_secret_key_base_for_development_only - command: [ "./bin/beamer-testbed", "server" ] - -services: - kamal-proxy: - image: basecamp/kamal-proxy:next - ports: - - 127.0.0.1:3006:80 - - 127.0.0.1:443:443 - command: [ "kamal-proxy", "run", "--debug" ] - - fizzy-01: - <<: *app - hostname: fizzy-01 - volumes: - - .:/rails - - ./tmp/beamer-testbed/fizzy-01/storage:/rails/storage - - ./tmp/beamer-testbed/fizzy-01/tmp:/rails/tmp - - fizzy-02: - <<: *app - hostname: fizzy-02 - volumes: - - .:/rails - - ./tmp/beamer-testbed/fizzy-02/storage:/rails/storage - - ./tmp/beamer-testbed/fizzy-02/tmp:/rails/tmp - - fizzy-03: - <<: *app - hostname: fizzy-03 - volumes: - - .:/rails - - ./tmp/beamer-testbed/fizzy-03/storage:/rails/storage - - ./tmp/beamer-testbed/fizzy-03/tmp:/rails/tmp - -secrets: - GITHUB_TOKEN: - environment: GITHUB_TOKEN