Skip to content

Enhance deploy command with interactive configuration mode #1

@billebel

Description

@billebel

Enhancement Request: Interactive Configuration for Existing Deploy Command

Problem

The current catalyst-packs deploy command shows "WARNING: Deployment functionality is under development" but the infrastructure is already in place. Users face configuration challenges like:

  • Variable name mismatches (SPLUNK_USER vs SPLUNK_USERNAME)
  • Manual .env file editing prone to errors
  • No validation of API connectivity during setup
  • Docker networking confusion (localhost vs host.docker.internal)
  • Missing environment variables causing deployment failures

Current Architecture Analysis

Existing Infrastructure (Ready to Enhance):

  • catalyst-packs deploy CLI command structure exists
  • ✅ Environment file handling (--env-file option) implemented
  • DeploymentTarget and DeploymentOptions classes defined
  • ✅ Pack parsing and validation system working
  • catalyst_mcp integration with MCPConfig.from_env()
  • ✅ Template scaffolding and pack discovery systems

Proposed Enhancement

Complete the existing deploy command implementation with interactive configuration mode:

New CLI Options

# Current (partially implemented)
catalyst-packs deploy splunk_enterprise --env-file .env --target docker

# Enhanced interactive modes
catalyst-packs deploy splunk_enterprise --interactive
catalyst-packs deploy splunk_enterprise --configure-only
catalyst-packs configure --pack splunk_enterprise  # New subcommand alternative

Interactive Configuration Flow

🔧 Catalyst Pack Deployment Configuration

📦 Pack: splunk_enterprise (v1.0.0)
🎯 Target: Docker (catalyst-mcp container)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

🔍 Discovered required variables from pack.yaml:
  - SPLUNK_URL, SPLUNK_USERNAME, SPLUNK_PASSWORD
  - SPLUNK_VERIFY_SSL, SPLUNK_DEFAULT_INDEX

📋 Pack Configuration
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Splunk Server URL [https://localhost:8089]: https://host.docker.internal:8089
  💡 Using host.docker.internal for Docker deployment
  
Splunk Username [admin]: admin
Splunk Password: ••••••••••••••
SSL Verification [false]: false
Default Index [main]: main

✅ Testing connection to https://host.docker.internal:8089... Success!
✅ Authentication verified for user: admin
✅ Index 'main' accessible

🤖 AI Model Configuration
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Anthropic API Key: sk-ant-api03-...
✅ Testing Anthropic API... Success!

💾 Configuration Summary
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ Pack: splunk_enterprise validated
✅ Target: Docker container ready  
✅ Environment: 8 variables configured
✅ Connectivity: All services reachable

Save configuration to .env? [Y/n]: y
Deploy pack now? [Y/n]: y

🚀 Deploying pack...
   ✅ Pack validated successfully
   ✅ Environment configured
   ✅ MCP server restarted
   ✅ 54 tools loaded and ready

🎉 Deployment complete! Chat interface: http://localhost:3081

Implementation Strategy

Phase 1: Environment Discovery & Validation

  • Enhance _deploy_pack() in cli.py to parse pack.yaml for {VARIABLE_NAME} patterns
  • Use existing PackValidator to identify required environment variables
  • Integrate with MCPConfig.validate() for connectivity testing

Phase 2: Interactive Configuration

  • Add --interactive flag to existing deploy command
  • Use libraries like click for prompts and rich for enhanced output
  • Leverage existing DeploymentOptions.env_file handling
  • Smart defaults based on DeploymentTarget.type (Docker vs local)

Phase 3: Real-time Validation

  • Test API connectivity during configuration (like current MCP config validation)
  • Validate pack structure before deployment
  • Pre-flight checks using existing validation infrastructure

Phase 4: Deployment Integration

  • Complete the existing deployment handlers (DockerDeploymentHandler, etc.)
  • Use existing PackInstaller for actual deployment
  • Integrate with MCP server restart/reload mechanisms

Benefits

  • Builds on existing architecture - no new tools or dependencies
  • Completes half-implemented features - deploy command becomes fully functional
  • Maintains consistency - uses existing CLI patterns and validation
  • Immediate value - addresses real configuration pain points experienced during testing
  • Backward compatible - existing --env-file usage continues to work

Files to Enhance

  • catalyst_pack_schemas/cli.py - Complete _deploy_pack() implementation
  • catalyst_pack_schemas/installer.py - Enhance deployment handlers
  • catalyst_pack_schemas/utils.py - Add environment variable discovery
  • Add new catalyst_pack_schemas/interactive.py - Interactive configuration logic

Use Cases Addressed

  • ✅ New users deploying their first pack
  • ✅ Troubleshooting configuration mismatches
  • ✅ Docker networking setup automation
  • ✅ API key validation before deployment
  • ✅ Team onboarding with guided setup
  • ✅ Environment migration (dev → staging → prod)

This enhancement completes the existing deployment infrastructure while solving real user configuration challenges discovered during recent Splunk pack deployment and testing.

Related Issues

This addresses configuration problems encountered in catalyst_mcp deployment testing, specifically variable name mismatches and Docker networking issues that required manual troubleshooting.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions