feat: Implement configurable pump control preprocessing logic #5

Merged
solipsism merged 34 commits from feature/pump-control-preprocessing into master 2025-11-17 14:23:42 +00:00
3 changed files with 157 additions and 6 deletions
Showing only changes of commit 5e6605f22f - Show all commits

73
deploy-onprem.sh Executable file
View File

@ -0,0 +1,73 @@
#!/bin/bash
# Calejo Control Adapter - On-premises Deployment Script
# For local development and testing deployments
set -e
echo "🚀 Calejo Control Adapter - On-premises Deployment"
echo "=================================================="
echo ""
# Check if Docker is available
if ! command -v docker &> /dev/null; then
echo "❌ Docker is not installed. Please install Docker first."
exit 1
fi
# Check if Docker Compose is available
if ! command -v docker-compose &> /dev/null; then
echo "❌ Docker Compose is not installed. Please install Docker Compose first."
exit 1
fi
echo "✅ Docker and Docker Compose are available"
# Build and start services
echo ""
echo "🔨 Building and starting services..."
# Stop existing services if running
echo "Stopping existing services..."
docker-compose down 2>/dev/null || true
# Build services
echo "Building Docker images..."
docker-compose build --no-cache
# Start services
echo "Starting services..."
docker-compose up -d
# Wait for services to be ready
echo ""
echo "⏳ Waiting for services to start..."
for i in {1..30}; do
if curl -s http://localhost:8080/health > /dev/null; then
echo "✅ Services started successfully"
break
fi
echo " Waiting... (attempt $i/30)"
sleep 2
if [[ $i -eq 30 ]]; then
echo "❌ Services failed to start within 60 seconds"
docker-compose logs
exit 1
fi
done
echo ""
echo "🎉 Deployment completed successfully!"
echo ""
echo "🔗 Access URLs:"
echo " Dashboard: http://localhost:8080/dashboard"
echo " REST API: http://localhost:8080"
echo " Health Check: http://localhost:8080/health"
echo ""
echo "🔧 Management Commands:"
echo " View logs: docker-compose logs -f"
echo " Stop services: docker-compose down"
echo " Restart: docker-compose restart"
echo ""
echo "=================================================="

View File

@ -319,7 +319,20 @@ setup_remote_configuration() {
# Set permissions on scripts # Set permissions on scripts
execute_remote "chmod +x $TARGET_DIR/scripts/*.sh" "Setting script permissions" execute_remote "chmod +x $TARGET_DIR/scripts/*.sh" "Setting script permissions"
# Set permissions on deployment script if it exists
if [[ "$DRY_RUN" == "true" ]]; then
# In dry-run mode, just show what would happen
execute_remote "cd $TARGET_DIR && test -f deploy-onprem.sh" "Checking for deploy-onprem.sh"
execute_remote "chmod +x $TARGET_DIR/deploy-onprem.sh" "Setting deployment script permissions" execute_remote "chmod +x $TARGET_DIR/deploy-onprem.sh" "Setting deployment script permissions"
else
# In actual deployment mode, check if file exists first
if execute_remote "cd $TARGET_DIR && test -f deploy-onprem.sh" "Checking for deploy-onprem.sh" 2>/dev/null; then
execute_remote "chmod +x $TARGET_DIR/deploy-onprem.sh" "Setting deployment script permissions"
else
print_warning "deploy-onprem.sh not found, skipping permissions"
fi
fi
print_success "Remote configuration setup completed" print_success "Remote configuration setup completed"
} }
@ -328,16 +341,36 @@ setup_remote_configuration() {
build_and_start_services() { build_and_start_services() {
print_status "Building and starting services..." print_status "Building and starting services..."
# Build services # Stop existing services first to ensure clean rebuild
execute_remote "cd $TARGET_DIR && sudo docker-compose build" "Building Docker images" print_status "Stopping existing services..."
execute_remote "cd $TARGET_DIR && sudo docker-compose down" "Stopping existing services" || {
print_warning "Failed to stop some services, continuing with build..."
}
# Build services with no-cache to ensure fresh build
print_status "Building Docker images (with --no-cache to ensure fresh build)..."
execute_remote "cd $TARGET_DIR && sudo docker-compose build --no-cache" "Building Docker images" || {
print_error "Docker build failed"
return 1
}
# Start services - use environment-specific compose file if available # Start services - use environment-specific compose file if available
print_status "Starting services..."
if [[ "$ENVIRONMENT" == "production" ]] && execute_remote "cd $TARGET_DIR && test -f docker-compose.production.yml" "Checking for production compose file" 2>/dev/null; then if [[ "$ENVIRONMENT" == "production" ]] && execute_remote "cd $TARGET_DIR && test -f docker-compose.production.yml" "Checking for production compose file" 2>/dev/null; then
execute_remote "cd $TARGET_DIR && sudo docker-compose -f docker-compose.production.yml up -d" "Starting services with production configuration" execute_remote "cd $TARGET_DIR && sudo docker-compose -f docker-compose.production.yml up -d" "Starting services with production configuration" || {
print_error "Failed to start services with production configuration"
return 1
}
elif [[ "$ENVIRONMENT" == "test" ]] && execute_remote "cd $TARGET_DIR && test -f docker-compose.test.yml" "Checking for test compose file" 2>/dev/null; then elif [[ "$ENVIRONMENT" == "test" ]] && execute_remote "cd $TARGET_DIR && test -f docker-compose.test.yml" "Checking for test compose file" 2>/dev/null; then
execute_remote "cd $TARGET_DIR && sudo docker-compose -f docker-compose.test.yml up -d" "Starting services with test configuration" execute_remote "cd $TARGET_DIR && sudo docker-compose -f docker-compose.test.yml up -d" "Starting services with test configuration" || {
print_error "Failed to start services with test configuration"
return 1
}
else else
execute_remote "cd $TARGET_DIR && sudo docker-compose up -d" "Starting services" execute_remote "cd $TARGET_DIR && sudo docker-compose up -d" "Starting services" || {
print_error "Failed to start services"
return 1
}
fi fi
# Wait for services to be ready # Wait for services to be ready

45
validate-deployment.sh Executable file
View File

@ -0,0 +1,45 @@
#!/bin/bash
# Calejo Control Adapter - Deployment Validation Script
# Validates that the deployment was successful
set -e
echo "🔍 Validating deployment..."
# Check if services are running
if ! docker-compose ps | grep -q "Up"; then
echo "❌ Some services are not running"
docker-compose ps
exit 1
fi
echo "✅ All services are running"
# Test health endpoint
if ! curl -s -f http://localhost:8080/health > /dev/null; then
echo "❌ Health endpoint is not accessible"
exit 1
fi
echo "✅ Health endpoint is accessible"
# Test dashboard endpoint
if ! curl -s -f http://localhost:8080/dashboard > /dev/null; then
echo "❌ Dashboard endpoint is not accessible"
exit 1
fi
echo "✅ Dashboard endpoint is accessible"
# Test API endpoint
if ! curl -s -f http://localhost:8080/api/v1/status > /dev/null; then
echo "❌ API endpoint is not accessible"
exit 1
fi
echo "✅ API endpoint is accessible"
echo ""
echo "🎉 Deployment validation passed!"
exit 0