quantrs2_device/cloud/orchestration/performance/
scaling.rs1use serde::{Deserialize, Serialize};
4use std::time::Duration;
5
6#[derive(Debug, Clone, Serialize, Deserialize)]
8pub struct ResourceScalingConfig {
9 pub auto_scaling: AutoScalingConfig,
11 pub manual_scaling: ManualScalingConfig,
13 pub predictive_scaling: PredictiveScalingConfig,
15}
16
17#[derive(Debug, Clone, Serialize, Deserialize)]
19pub struct AutoScalingConfig {
20 pub enabled: bool,
22 pub policies: Vec<ScalingPolicy>,
24 pub cooldown_period: Duration,
26 pub limits: ScalingLimits,
28}
29
30#[derive(Debug, Clone, Serialize, Deserialize)]
32pub struct ScalingPolicy {
33 pub name: String,
35 pub conditions: Vec<ScalingCondition>,
37 pub action: ScalingAction,
39 pub priority: u8,
41}
42
43#[derive(Debug, Clone, Serialize, Deserialize)]
45pub struct ScalingCondition {
46 pub metric: String,
48 pub operator: ComparisonOperator,
50 pub threshold: f64,
52 pub duration: Duration,
54}
55
56#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
58pub enum ComparisonOperator {
59 GreaterThan,
60 LessThan,
61 Equal,
62 GreaterThanOrEqual,
63 LessThanOrEqual,
64 NotEqual,
65}
66
67#[derive(Debug, Clone, Serialize, Deserialize)]
69pub struct ScalingAction {
70 pub action_type: ScalingActionType,
72 pub amount: ScalingAmount,
74 pub target: String,
76}
77
78#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
80pub enum ScalingActionType {
81 ScaleUp,
82 ScaleDown,
83 ScaleOut,
84 ScaleIn,
85}
86
87#[derive(Debug, Clone, Serialize, Deserialize)]
89pub enum ScalingAmount {
90 Absolute(u32),
91 Percentage(f64),
92 Capacity(f64),
93}
94
95#[derive(Debug, Clone, Serialize, Deserialize)]
97pub struct ScalingLimits {
98 pub min_instances: usize,
100 pub max_instances: usize,
102 pub max_scaling_rate: f64,
104}
105
106#[derive(Debug, Clone, Serialize, Deserialize)]
108pub struct ManualScalingConfig {
109 pub default_instances: usize,
111 pub scaling_increments: Vec<usize>,
113 pub approval_required: bool,
115}
116
117#[derive(Debug, Clone, Serialize, Deserialize)]
119pub struct PredictiveScalingConfig {
120 pub enabled: bool,
122 pub models: Vec<PredictionModel>,
124 pub forecast_horizon: Duration,
126 pub confidence_threshold: f64,
128}
129
130#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
132pub enum PredictionModel {
133 ARIMA,
134 LinearRegression,
135 NeuralNetwork,
136 EnsembleModel,
137 Custom(String),
138}