quantrs2_device/cloud/orchestration/load_balancing/
traffic.rs1use super::canary::CanaryConfig;
4use serde::{Deserialize, Serialize};
5use std::collections::HashMap;
6
7#[derive(Debug, Clone, Serialize, Deserialize)]
9pub struct TrafficDistributionConfig {
10 pub algorithm: DistributionAlgorithm,
12 pub weights: HashMap<String, f64>,
14 pub splitting: TrafficSplittingConfig,
16}
17
18#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
20pub enum DistributionAlgorithm {
21 Weighted,
22 Random,
23 Consistent,
24 Geographic,
25 Custom(String),
26}
27
28#[derive(Debug, Clone, Serialize, Deserialize)]
30pub struct TrafficSplittingConfig {
31 pub enabled: bool,
33 pub rules: Vec<SplitRule>,
35 pub canary: CanaryConfig,
37}
38
39#[derive(Debug, Clone, Serialize, Deserialize)]
41pub struct SplitRule {
42 pub name: String,
44 pub condition: SplitCondition,
46 pub percentage: f64,
48 pub destination: String,
50}
51
52#[derive(Debug, Clone, Serialize, Deserialize)]
54pub struct SplitCondition {
55 pub headers: HashMap<String, String>,
57 pub query_params: HashMap<String, String>,
59 pub user_attributes: HashMap<String, String>,
61}