Skip to main content
Glama
orchestration.py4.46 kB
"""Orchestration schemas for smart deployment workflows.""" from datetime import datetime from typing import Any from pydantic import BaseModel, Field class DeploymentStep(BaseModel): """A single step in the deployment process.""" name: str = Field(..., description="Step name") status: str = Field(..., description="Status: pending, in_progress, completed, failed") started_at: datetime | None = Field(default=None, description="When step started") completed_at: datetime | None = Field(default=None, description="When step completed") message: str = Field(default="", description="Step message or error") class SmartDeployResult(BaseModel): """Result of smart deployment orchestration.""" status: str = Field(..., description="Deployment status: started, deploying, success, failed") deployment_id: str | None = Field(default=None, description="Deployment identifier") scenario_key: str = Field(..., description="Scenario that was deployed") siem_type: str = Field(..., description="SIEM type") snapshot_id: str | None = Field(default=None, description="Pre-deployment snapshot ID if created") # Preview info vm_count: int = Field(..., description="Number of VMs") estimated_time: str = Field(..., description="Estimated deployment time") # Monitoring info auto_monitor: bool = Field(default=True, description="Whether auto-monitoring is enabled") check_interval: int = Field(default=30, description="Monitoring interval in seconds") next_check_message: str = Field(default="", description="Message about next check") # Commands for user monitoring_commands: dict[str, str] = Field( default_factory=dict, description="Commands for manual monitoring" ) # Additional context message: str = Field(default="", description="Human-readable status message") class DeploymentTimeline(BaseModel): """Timeline of deployment progress.""" started_at: datetime = Field(..., description="Deployment start time") steps: list[DeploymentStep] = Field(default_factory=list, description="Timeline steps") current_step: str = Field(default="", description="Current step name") progress_percentage: int = Field(default=0, description="Progress percentage (0-100)") estimated_completion: datetime | None = Field(default=None, description="Estimated completion time") elapsed_minutes: int = Field(default=0, description="Elapsed time in minutes") remaining_minutes: int = Field(default=0, description="Estimated remaining time in minutes") class MonitoringUpdate(BaseModel): """Real-time monitoring update.""" timestamp: datetime = Field(default_factory=datetime.now, description="Update timestamp") range_state: str = Field(..., description="Current range state") vm_count: int = Field(default=0, description="Total VMs") vms_ready: int = Field(default=0, description="VMs ready/running") current_task: str = Field(default="", description="Current task being executed") progress_percentage: int = Field(default=0, description="Progress percentage") # Recent activity recent_activity: list[str] = Field(default_factory=list, description="Recent log entries") # Status indicators is_healthy: bool = Field(default=True, description="Whether deployment is healthy") issues: list[str] = Field(default_factory=list, description="Any issues detected") # Timing elapsed_minutes: int = Field(default=0, description="Time elapsed") eta_minutes: int = Field(default=0, description="Estimated time remaining") # Next steps next_check_in: int = Field(default=30, description="Seconds until next check") should_continue_monitoring: bool = Field(default=True, description="Whether to continue monitoring") class RecoveryRecommendation(BaseModel): """Recovery recommendation for failed deployment.""" action: str = Field(..., description="Recommended action: wait, fix_config, retry, destroy") reason: str = Field(..., description="Why this action is recommended") severity: str = Field(..., description="Issue severity: info, warning, error, critical") steps: list[str] = Field(default_factory=list, description="Step-by-step recovery instructions") commands: dict[str, str] = Field(default_factory=dict, description="Useful commands") estimated_recovery_time: str = Field(default="", description="Estimated time to recover")

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tjnull/Ludus-FastMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server