Skip to content

Commit

Permalink
feat: add vars to topolgy sets
Browse files Browse the repository at this point in the history
  • Loading branch information
DmitryTravyan committed Nov 29, 2022
1 parent 7f847d7 commit 669648c
Show file tree
Hide file tree
Showing 8 changed files with 160 additions and 8 deletions.
3 changes: 3 additions & 0 deletions src/task/cluster.rs
Original file line number Diff line number Diff line change
Expand Up @@ -271,6 +271,7 @@ impl<'a> TryFrom<&'a Option<Inventory>> for Cluster {
config: InstanceV2Config::from(
&instance.config,
),
vars: instance.vars.clone(),
view: View::default(),
})
} else {
Expand Down Expand Up @@ -443,6 +444,7 @@ impl Cluster {
failure_domains,
roles,
config,
vars,
..
}| InstanceV2 {
name: name.clone(),
Expand All @@ -455,6 +457,7 @@ impl Cluster {
binary_port: None,
..config.clone()
},
vars: vars.clone(),
view: View {
alignment: Alignment::left(),
color: BG_BRIGHT_BLACK,
Expand Down
26 changes: 26 additions & 0 deletions src/task/cluster/hst/test.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
use std::net::IpAddr;

use indexmap::IndexMap;
use tabled::Alignment;

use crate::task::cluster::{
Expand Down Expand Up @@ -163,6 +164,7 @@ hosts:
failure_domains: Vec::new(),
roles: Vec::new(),
config: InstanceV2Config::default(),
vars: IndexMap::default(),
view: View {
color: FG_BLUE,
alignment: Alignment::left(),
Expand All @@ -175,6 +177,7 @@ hosts:
failure_domains: Vec::new(),
roles: Vec::new(),
config: InstanceV2Config::default(),
vars: IndexMap::default(),
view: View {
color: FG_BLUE,
alignment: Alignment::left(),
Expand All @@ -187,6 +190,7 @@ hosts:
failure_domains: Vec::new(),
roles: Vec::new(),
config: InstanceV2Config::default(),
vars: IndexMap::default(),
view: View {
color: FG_BLUE,
alignment: Alignment::left(),
Expand All @@ -199,6 +203,7 @@ hosts:
failure_domains: Vec::new(),
roles: Vec::new(),
config: InstanceV2Config::default(),
vars: IndexMap::default(),
view: View {
color: FG_BLUE,
alignment: Alignment::left(),
Expand All @@ -211,6 +216,7 @@ hosts:
failure_domains: Vec::new(),
roles: Vec::new(),
config: InstanceV2Config::default(),
vars: IndexMap::default(),
view: View {
color: FG_BLUE,
alignment: Alignment::left(),
Expand All @@ -223,6 +229,7 @@ hosts:
failure_domains: Vec::new(),
roles: Vec::new(),
config: InstanceV2Config::default(),
vars: IndexMap::default(),
view: View {
color: FG_BLUE,
alignment: Alignment::left(),
Expand All @@ -235,6 +242,7 @@ hosts:
failure_domains: Vec::new(),
roles: Vec::new(),
config: InstanceV2Config::default(),
vars: IndexMap::default(),
view: View {
color: FG_BLUE,
alignment: Alignment::left(),
Expand All @@ -247,6 +255,7 @@ hosts:
failure_domains: Vec::new(),
roles: Vec::new(),
config: InstanceV2Config::default(),
vars: IndexMap::default(),
view: View {
color: FG_BLUE,
alignment: Alignment::left(),
Expand All @@ -259,6 +268,7 @@ hosts:
failure_domains: Vec::new(),
roles: Vec::new(),
config: InstanceV2Config::default(),
vars: IndexMap::default(),
view: View {
color: FG_BLUE,
alignment: Alignment::left(),
Expand All @@ -271,6 +281,7 @@ hosts:
failure_domains: Vec::new(),
roles: Vec::new(),
config: InstanceV2Config::default(),
vars: IndexMap::default(),
view: View {
color: FG_BLUE,
alignment: Alignment::left(),
Expand Down Expand Up @@ -405,6 +416,7 @@ hosts:
failure_domains: Vec::new(),
roles: Vec::new(),
config: InstanceV2Config::default(),
vars: IndexMap::default(),
view: View {
color: FG_WHITE,
alignment: Alignment::left(),
Expand All @@ -417,6 +429,7 @@ hosts:
failure_domains: Vec::new(),
roles: Vec::new(),
config: InstanceV2Config::default(),
vars: IndexMap::default(),
view: View {
color: FG_BLUE,
alignment: Alignment::left(),
Expand All @@ -429,6 +442,7 @@ hosts:
failure_domains: Vec::new(),
roles: Vec::new(),
config: InstanceV2Config::default(),
vars: IndexMap::default(),
view: View {
color: FG_BLUE,
alignment: Alignment::left(),
Expand All @@ -441,6 +455,7 @@ hosts:
failure_domains: Vec::new(),
roles: Vec::new(),
config: InstanceV2Config::default(),
vars: IndexMap::default(),
view: View {
color: FG_BLUE,
alignment: Alignment::left(),
Expand All @@ -453,6 +468,7 @@ hosts:
failure_domains: Vec::new(),
roles: Vec::new(),
config: InstanceV2Config::default(),
vars: IndexMap::default(),
view: View {
color: FG_CYAN,
alignment: Alignment::left(),
Expand All @@ -465,6 +481,7 @@ hosts:
failure_domains: Vec::new(),
roles: Vec::new(),
config: InstanceV2Config::default(),
vars: IndexMap::default(),
view: View {
color: FG_CYAN,
alignment: Alignment::left(),
Expand All @@ -477,6 +494,7 @@ hosts:
failure_domains: Vec::new(),
roles: Vec::new(),
config: InstanceV2Config::default(),
vars: IndexMap::default(),
view: View {
color: FG_CYAN,
alignment: Alignment::left(),
Expand All @@ -489,6 +507,7 @@ hosts:
failure_domains: vec!["dc-2".to_string()],
roles: Vec::new(),
config: InstanceV2Config::default(),
vars: IndexMap::default(),
view: View {
color: FG_GREEN,
alignment: Alignment::left(),
Expand All @@ -501,6 +520,7 @@ hosts:
failure_domains: vec!["dc-2".to_string()],
roles: Vec::new(),
config: InstanceV2Config::default(),
vars: IndexMap::default(),
view: View {
color: FG_GREEN,
alignment: Alignment::left(),
Expand Down Expand Up @@ -593,6 +613,7 @@ fn hosts_v2_spreading() {
binary_port: Some(3031),
..InstanceV2Config::default()
},
vars: IndexMap::default(),
view: View {
color: FG_WHITE,
alignment: Alignment::left(),
Expand All @@ -609,6 +630,7 @@ fn hosts_v2_spreading() {
binary_port: Some(3032),
..InstanceV2Config::default()
},
vars: IndexMap::default(),
view: View {
color: FG_BLUE,
alignment: Alignment::left(),
Expand All @@ -625,6 +647,7 @@ fn hosts_v2_spreading() {
binary_port: Some(3033),
..InstanceV2Config::default()
},
vars: IndexMap::default(),
view: View {
color: FG_CYAN,
alignment: Alignment::left(),
Expand All @@ -642,6 +665,7 @@ fn hosts_v2_spreading() {
roles: vec![Role::storage()],
failure_domains: Vec::new(),
config: InstanceV2Config::default(),
vars: IndexMap::default(),
view: View {
color: FG_BLUE,
alignment: Alignment::left(),
Expand All @@ -654,6 +678,7 @@ fn hosts_v2_spreading() {
roles: vec![Role::storage()],
failure_domains: Vec::new(),
config: InstanceV2Config::default(),
vars: IndexMap::default(),
view: View {
color: FG_CYAN,
alignment: Alignment::left(),
Expand Down Expand Up @@ -788,6 +813,7 @@ fn hosts_v2_spread_stateboard() {
failure_domains: vec![hosts_v2.get_name_by_address(&address).unwrap().to_string()],
roles: Vec::new(),
config: InstanceV2Config::default(),
vars: IndexMap::default(),
view: View::default(),
});

Expand Down
1 change: 1 addition & 0 deletions src/task/cluster/hst/v2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -568,6 +568,7 @@ impl HostV2 {
.collect(),
..InstanceV2Config::default()
},
vars: IndexMap::default(),
view: View {
alignment: Alignment::center(),
color: FG_BRIGHT_BLACK,
Expand Down
6 changes: 5 additions & 1 deletion src/task/cluster/ins/v2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,8 @@ pub struct InstanceV2 {
pub failure_domains: Vec<String>,
pub roles: Vec<Role>,
pub config: InstanceV2Config,
pub view: View,
pub vars: IndexMap<String, Value>,
pub view: View
}

impl PartialOrd for InstanceV2 {
Expand All @@ -184,7 +185,9 @@ impl<'a> From<(&'a Name, &'a InventoryHost)> for InstanceV2 {
failure_domains: Vec::default(),
roles: Vec::default(),
config: InstanceV2Config::from(&inventory_host.1.config),
vars: inventory_host.1.vars.clone(),
view: View::default(),

}
}
}
Expand All @@ -198,6 +201,7 @@ impl From<Name> for InstanceV2 {
failure_domains: Vec::default(),
roles: Vec::default(),
config: InstanceV2Config::default(),
vars: IndexMap::default(),
view: View::default(),
}
}
Expand Down
17 changes: 17 additions & 0 deletions src/task/cluster/topology.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ use std::cmp::Ordering;
use indexmap::IndexMap;
use log::trace;
use serde::{Deserialize, Serialize};
use serde_yaml::Value;
use tabled::Alignment;

use super::{
Expand Down Expand Up @@ -32,6 +33,7 @@ impl From<Instances> for Topology {
failure_domains,
roles,
config,
vars,
..
}| {
trace!(
Expand All @@ -51,6 +53,7 @@ impl From<Instances> for Topology {
failure_domains: failure_domains.clone(),
roles: roles.clone(),
config: config.clone(),
vars: vars.clone(),
})
.replication_factor
.as_mut()
Expand All @@ -74,6 +77,7 @@ impl From<Instances> for Topology {
failure_domains,
roles,
config,
vars,
..
},
)| {
Expand All @@ -94,6 +98,7 @@ impl From<Instances> for Topology {
failure_domains,
roles,
config,
vars,
})
.replicasets_count
.as_mut()
Expand Down Expand Up @@ -139,6 +144,7 @@ impl<'a> From<&'a Topology> for Instances {
failure_domains,
roles,
config,
vars,
}| {
(1..=replicasets_count.unwrap_or(1))
.flat_map(|repliaset_num| {
Expand All @@ -153,6 +159,7 @@ impl<'a> From<&'a Topology> for Instances {
failure_domains: failure_domains.clone(),
roles: roles.clone(),
config: config.clone(),
vars: vars.clone(),
view: View {
alignment: Alignment::left(),
color: table_colors.next_color(
Expand All @@ -169,6 +176,7 @@ impl<'a> From<&'a Topology> for Instances {
failure_domains: failure_domains.clone(),
roles: roles.clone(),
config: config.clone(),
vars: vars.clone(),
view: View {
alignment: Alignment::left(),
color: table_colors.next_color(name.clone()),
Expand Down Expand Up @@ -221,6 +229,7 @@ impl From<Vec<TopologyMemberV1>> for Topology {
additional_config: config,
..InstanceV2Config::default()
},
vars: IndexMap::default(),
}
},
)
Expand All @@ -240,6 +249,7 @@ impl Default for Topology {
failure_domains: Vec::new(),
roles: vec![Role::router(), Role::failover_coordinator()],
config: InstanceV2Config::default(),
vars: IndexMap::default(),
},
TopologySet {
name: Name::from("storage"),
Expand All @@ -249,6 +259,7 @@ impl Default for Topology {
failure_domains: Vec::new(),
roles: vec![Role::storage()],
config: InstanceV2Config::default(),
vars: IndexMap::default(),
},
])
}
Expand All @@ -269,6 +280,8 @@ struct TopologySet {
roles: Vec<Role>,
#[serde(skip_serializing_if = "InstanceV2Config::is_none")]
config: InstanceV2Config,
#[serde(default, skip_serializing_if = "IndexMap::is_empty")]
vars: IndexMap<String, Value>,
}

impl<'de> Deserialize<'de> for TopologySet {
Expand All @@ -291,6 +304,8 @@ impl<'de> Deserialize<'de> for TopologySet {
roles: Vec<Role>,
#[serde(default)]
config: InstanceV2Config,
#[serde(default)]
vars: IndexMap<String, Value>,
}

Helper::deserialize(deserializer).map(
Expand All @@ -302,6 +317,7 @@ impl<'de> Deserialize<'de> for TopologySet {
failure_domains,
mut roles,
config,
vars,
}| {
// If type not defined in yaml let's try to infer based on name
if roles.is_empty() {
Expand All @@ -321,6 +337,7 @@ impl<'de> Deserialize<'de> for TopologySet {
failure_domains,
roles,
config,
vars,
}
},
)
Expand Down
Loading

0 comments on commit 669648c

Please sign in to comment.