llm_optimizer_processor/actuator/
config.rs

1//! Actuator configuration
2
3use serde::{Deserialize, Serialize};
4use std::time::Duration;
5
6use super::types::{CanaryConfig, DeploymentStrategy, SuccessCriteria, TrafficSplitStrategy};
7
8/// Configuration for the Actuator
9#[derive(Debug, Clone, Serialize, Deserialize)]
10pub struct ActuatorConfig {
11    /// Actuator ID
12    pub id: String,
13
14    /// Whether the actuator is enabled
15    pub enabled: bool,
16
17    /// Default deployment strategy
18    pub default_strategy: DeploymentStrategy,
19
20    /// Canary deployment configuration
21    pub canary: CanaryConfig,
22
23    /// Health monitoring configuration
24    pub health_monitoring: HealthMonitoringConfig,
25
26    /// Rollback configuration
27    pub rollback: RollbackConfig,
28
29    /// Configuration management
30    pub configuration: ConfigurationManagementConfig,
31
32    /// Maximum concurrent deployments
33    pub max_concurrent_deployments: usize,
34
35    /// Deployment timeout
36    pub deployment_timeout: Duration,
37}
38
39impl Default for ActuatorConfig {
40    fn default() -> Self {
41        Self {
42            id: "actuator".to_string(),
43            enabled: true,
44            default_strategy: DeploymentStrategy::Canary,
45            canary: CanaryConfig::default(),
46            health_monitoring: HealthMonitoringConfig::default(),
47            rollback: RollbackConfig::default(),
48            configuration: ConfigurationManagementConfig::default(),
49            max_concurrent_deployments: 3,
50            deployment_timeout: Duration::from_secs(3600), // 1 hour
51        }
52    }
53}
54
55/// Health monitoring configuration
56#[derive(Debug, Clone, Serialize, Deserialize)]
57pub struct HealthMonitoringConfig {
58    /// Health check interval
59    pub check_interval: Duration,
60
61    /// Health check timeout
62    pub check_timeout: Duration,
63
64    /// Consecutive failures before rollback
65    pub consecutive_failures_threshold: usize,
66
67    /// Success criteria
68    pub success_criteria: SuccessCriteria,
69
70    /// Enable automatic health checks
71    pub auto_health_check: bool,
72
73    /// Enable metrics collection
74    pub enable_metrics_collection: bool,
75
76    /// Metrics collection interval
77    pub metrics_collection_interval: Duration,
78}
79
80impl Default for HealthMonitoringConfig {
81    fn default() -> Self {
82        Self {
83            check_interval: Duration::from_secs(30),
84            check_timeout: Duration::from_secs(10),
85            consecutive_failures_threshold: 3,
86            success_criteria: SuccessCriteria::default(),
87            auto_health_check: true,
88            enable_metrics_collection: true,
89            metrics_collection_interval: Duration::from_secs(10),
90        }
91    }
92}
93
94/// Rollback configuration
95#[derive(Debug, Clone, Serialize, Deserialize)]
96pub struct RollbackConfig {
97    /// Enable automatic rollback
98    pub auto_rollback: bool,
99
100    /// Rollback timeout
101    pub rollback_timeout: Duration,
102
103    /// Enable fast rollback (skip gradual phases)
104    pub fast_rollback: bool,
105
106    /// Enable configuration backup before deployment
107    pub enable_backup: bool,
108
109    /// Maximum rollback history to keep
110    pub max_rollback_history: usize,
111
112    /// Enable rollback notifications
113    pub enable_notifications: bool,
114}
115
116impl Default for RollbackConfig {
117    fn default() -> Self {
118        Self {
119            auto_rollback: true,
120            rollback_timeout: Duration::from_secs(300), // 5 minutes
121            fast_rollback: true,
122            enable_backup: true,
123            max_rollback_history: 100,
124            enable_notifications: true,
125        }
126    }
127}
128
129/// Configuration management configuration
130#[derive(Debug, Clone, Serialize, Deserialize)]
131pub struct ConfigurationManagementConfig {
132    /// Enable configuration versioning
133    pub enable_versioning: bool,
134
135    /// Enable configuration validation
136    pub enable_validation: bool,
137
138    /// Enable audit logging
139    pub enable_audit_log: bool,
140
141    /// Configuration snapshot interval
142    pub snapshot_interval: Duration,
143
144    /// Maximum snapshots to keep
145    pub max_snapshots: usize,
146
147    /// Enable dry-run mode
148    pub enable_dry_run: bool,
149}
150
151impl Default for ConfigurationManagementConfig {
152    fn default() -> Self {
153        Self {
154            enable_versioning: true,
155            enable_validation: true,
156            enable_audit_log: true,
157            snapshot_interval: Duration::from_secs(3600), // 1 hour
158            max_snapshots: 100,
159            enable_dry_run: false,
160        }
161    }
162}