diff --git a/rs/ic-management-backend/src/main.rs b/rs/ic-management-backend/src/main.rs index a42385d4..26799711 100644 --- a/rs/ic-management-backend/src/main.rs +++ b/rs/ic-management-backend/src/main.rs @@ -31,7 +31,7 @@ use ic_types::PrincipalId; use log::{debug, error, info, warn}; use serde::de::DeserializeOwned; use serde::{Deserialize, Serialize}; -use std::collections::HashMap; +use std::collections::BTreeMap; use std::convert::TryFrom; use std::ops::{Add, Deref}; use std::path::{Path, PathBuf}; @@ -231,7 +231,7 @@ async fn nodes_healths(registry: web::Data>> .unwrap_or(ic_management_types::Status::Unknown), ) }) - .collect::>() + .collect::>() })) } diff --git a/rs/ic-management-backend/src/registry.rs b/rs/ic-management-backend/src/registry.rs index 0bf19c9c..feafddae 100644 --- a/rs/ic-management-backend/src/registry.rs +++ b/rs/ic-management-backend/src/registry.rs @@ -17,7 +17,7 @@ use itertools::Itertools; use std::convert::TryFrom; use std::sync::Arc; use std::{ - collections::{HashMap, HashSet}, + collections::{BTreeMap, HashMap, HashSet}, net::Ipv6Addr, }; @@ -48,11 +48,11 @@ pub struct RegistryState { local_registry: Arc, version: u64, - subnets: HashMap, - nodes: HashMap, - operators: HashMap, + subnets: BTreeMap, + nodes: BTreeMap, + operators: BTreeMap, guests: Vec, - known_subnets: HashMap, + known_subnets: BTreeMap, replica_releases: Vec, gitlab_client_public: Option, @@ -137,9 +137,9 @@ impl RegistryState { network, local_registry, version: 0, - subnets: HashMap::::new(), - nodes: HashMap::new(), - operators: HashMap::new(), + subnets: BTreeMap::::new(), + nodes: BTreeMap::new(), + operators: BTreeMap::new(), guests: Vec::new(), replica_releases: Vec::new(), gitlab_client_public, @@ -493,11 +493,11 @@ impl RegistryState { self.version } - pub fn subnets(&self) -> HashMap { + pub fn subnets(&self) -> BTreeMap { self.subnets.clone() } - pub fn nodes(&self) -> HashMap { + pub fn nodes(&self) -> BTreeMap { self.nodes.clone() } @@ -561,7 +561,7 @@ impl RegistryState { .collect()) } - pub fn operators(&self) -> HashMap { + pub fn operators(&self) -> BTreeMap { self.operators.clone() } diff --git a/rs/ic-management-backend/src/release.rs b/rs/ic-management-backend/src/release.rs index b1a77ee9..1c90ebf0 100644 --- a/rs/ic-management-backend/src/release.rs +++ b/rs/ic-management-backend/src/release.rs @@ -6,7 +6,7 @@ use ic_types::PrincipalId; use itertools::Itertools; use log::info; use serde::{Deserialize, Serialize}; -use std::collections::{HashMap, HashSet}; +use std::collections::{BTreeMap, BTreeSet}; use std::str::FromStr; use strum_macros::{Display, EnumString}; @@ -140,7 +140,7 @@ impl RolloutConfig { pub struct RolloutBuilder { pub proposal_agent: ProposalAgent, pub prometheus_client: prometheus_http_query::Client, - pub subnets: HashMap, + pub subnets: BTreeMap, pub releases: Vec, pub network: Network, } @@ -285,7 +285,7 @@ impl RolloutBuilder { &self, release: &ReplicaRelease, since: chrono::DateTime, - ) -> Result> { + ) -> Result> { const STATE_FIELD: &str = "state"; let query = format!( r#" @@ -437,8 +437,8 @@ impl RolloutBuilder { .updates .iter() .map(|u| u.replica_release.clone()) - .collect::>(); - let mut update_states = HashMap::new(); + .collect::>(); + let mut update_states = BTreeMap::new(); for release in releases { let release_update_states = self.get_update_states(&release, last_stage.start_date_time).await?; update_states.insert(release, release_update_states); diff --git a/rs/ic-management-types/src/lib.rs b/rs/ic-management-types/src/lib.rs index efd6732b..36a16357 100644 --- a/rs/ic-management-types/src/lib.rs +++ b/rs/ic-management-types/src/lib.rs @@ -398,7 +398,7 @@ pub struct NodeVersion { pub replica_version: String, } -#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)] +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash, PartialOrd, Ord)] pub struct ReplicaRelease { pub commit_hash: String, pub branch: String,