llm_optimizer_processor/actuator/
config.rs1use serde::{Deserialize, Serialize};
4use std::time::Duration;
5
6use super::types::{CanaryConfig, DeploymentStrategy, SuccessCriteria, TrafficSplitStrategy};
7
8#[derive(Debug, Clone, Serialize, Deserialize)]
10pub struct ActuatorConfig {
11 pub id: String,
13
14 pub enabled: bool,
16
17 pub default_strategy: DeploymentStrategy,
19
20 pub canary: CanaryConfig,
22
23 pub health_monitoring: HealthMonitoringConfig,
25
26 pub rollback: RollbackConfig,
28
29 pub configuration: ConfigurationManagementConfig,
31
32 pub max_concurrent_deployments: usize,
34
35 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), }
52 }
53}
54
55#[derive(Debug, Clone, Serialize, Deserialize)]
57pub struct HealthMonitoringConfig {
58 pub check_interval: Duration,
60
61 pub check_timeout: Duration,
63
64 pub consecutive_failures_threshold: usize,
66
67 pub success_criteria: SuccessCriteria,
69
70 pub auto_health_check: bool,
72
73 pub enable_metrics_collection: bool,
75
76 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#[derive(Debug, Clone, Serialize, Deserialize)]
96pub struct RollbackConfig {
97 pub auto_rollback: bool,
99
100 pub rollback_timeout: Duration,
102
103 pub fast_rollback: bool,
105
106 pub enable_backup: bool,
108
109 pub max_rollback_history: usize,
111
112 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), fast_rollback: true,
122 enable_backup: true,
123 max_rollback_history: 100,
124 enable_notifications: true,
125 }
126 }
127}
128
129#[derive(Debug, Clone, Serialize, Deserialize)]
131pub struct ConfigurationManagementConfig {
132 pub enable_versioning: bool,
134
135 pub enable_validation: bool,
137
138 pub enable_audit_log: bool,
140
141 pub snapshot_interval: Duration,
143
144 pub max_snapshots: usize,
146
147 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), max_snapshots: 100,
159 enable_dry_run: false,
160 }
161 }
162}