cli: sort option for validators by version (#24236)
(cherry picked from commit 91993d89b0
)
# Conflicts:
# Cargo.lock
# cli-output/Cargo.toml
# programs/bpf/Cargo.lock
Co-authored-by: Trent Nelson <trent@solana.com>
This commit is contained in:
17
Cargo.lock
generated
17
Cargo.lock
generated
@ -640,7 +640,7 @@ checksum = "ba2ae6de944143141f6155a473a6b02f66c7c3f9f47316f802f80204ebfe6e12"
|
||||
dependencies = [
|
||||
"camino",
|
||||
"cargo-platform",
|
||||
"semver 1.0.4",
|
||||
"semver 1.0.7",
|
||||
"serde",
|
||||
"serde_json",
|
||||
]
|
||||
@ -3960,7 +3960,7 @@ version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
|
||||
dependencies = [
|
||||
"semver 1.0.4",
|
||||
"semver 1.0.7",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -4156,9 +4156,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "semver"
|
||||
version = "1.0.4"
|
||||
version = "1.0.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "568a8e6258aa33c13358f81fd834adb854c6f7c9468520910a9b1e8fac068012"
|
||||
checksum = "d65bd28f48be7196d222d95b9243287f48d27aca604e08497513019ff0502cc4"
|
||||
dependencies = [
|
||||
"serde",
|
||||
]
|
||||
@ -4736,7 +4736,7 @@ dependencies = [
|
||||
"num-traits",
|
||||
"pretty-hex",
|
||||
"reqwest",
|
||||
"semver 1.0.4",
|
||||
"semver 1.0.7",
|
||||
"serde",
|
||||
"serde_derive",
|
||||
"serde_json",
|
||||
@ -4788,6 +4788,7 @@ dependencies = [
|
||||
"console",
|
||||
"humantime",
|
||||
"indicatif",
|
||||
"semver 1.0.7",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"solana-account-decoder",
|
||||
@ -4814,7 +4815,7 @@ dependencies = [
|
||||
"log 0.4.14",
|
||||
"rayon",
|
||||
"reqwest",
|
||||
"semver 1.0.4",
|
||||
"semver 1.0.7",
|
||||
"serde",
|
||||
"serde_derive",
|
||||
"serde_json",
|
||||
@ -5214,7 +5215,7 @@ dependencies = [
|
||||
"lazy_static",
|
||||
"nix",
|
||||
"reqwest",
|
||||
"semver 1.0.4",
|
||||
"semver 1.0.7",
|
||||
"serde",
|
||||
"serde_yaml",
|
||||
"solana-clap-utils",
|
||||
@ -5696,7 +5697,7 @@ dependencies = [
|
||||
"num-traits",
|
||||
"parking_lot 0.11.2",
|
||||
"qstring",
|
||||
"semver 1.0.4",
|
||||
"semver 1.0.7",
|
||||
"solana-sdk",
|
||||
"thiserror",
|
||||
"uriparse",
|
||||
|
@ -17,6 +17,7 @@ console = "0.15.0"
|
||||
humantime = "2.0.1"
|
||||
Inflector = "0.11.4"
|
||||
indicatif = "0.16.2"
|
||||
semver = "1.0.6"
|
||||
serde = "1.0.130"
|
||||
serde_json = "1.0.72"
|
||||
solana-account-decoder = { path = "../account-decoder", version = "=1.9.16" }
|
||||
|
@ -356,6 +356,7 @@ pub enum CliValidatorsSortOrder {
|
||||
SkipRate,
|
||||
Stake,
|
||||
VoteAccount,
|
||||
Version,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
@ -494,6 +495,22 @@ impl fmt::Display for CliValidators {
|
||||
CliValidatorsSortOrder::Stake => {
|
||||
sorted_validators.sort_by_key(|a| a.activated_stake);
|
||||
}
|
||||
CliValidatorsSortOrder::Version => {
|
||||
sorted_validators.sort_by(|a, b| {
|
||||
use std::cmp::Ordering;
|
||||
let a_version = semver::Version::parse(a.version.as_str()).ok();
|
||||
let b_version = semver::Version::parse(b.version.as_str()).ok();
|
||||
match (a_version, b_version) {
|
||||
(None, None) => a.version.cmp(&b.version),
|
||||
(None, Some(_)) => Ordering::Less,
|
||||
(Some(_), None) => Ordering::Greater,
|
||||
(Some(va), Some(vb)) => match va.cmp(&vb) {
|
||||
Ordering::Equal => a.activated_stake.cmp(&b.activated_stake),
|
||||
ordering => ordering,
|
||||
},
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if self.validators_reverse_sort {
|
||||
|
@ -369,6 +369,7 @@ impl ClusterQuerySubCommands for App<'_, '_> {
|
||||
"root",
|
||||
"skip-rate",
|
||||
"stake",
|
||||
"version",
|
||||
"vote-account",
|
||||
])
|
||||
.default_value("stake")
|
||||
@ -638,6 +639,7 @@ pub fn parse_show_validators(matches: &ArgMatches<'_>) -> Result<CliCommandInfo,
|
||||
"skip-rate" => CliValidatorsSortOrder::SkipRate,
|
||||
"stake" => CliValidatorsSortOrder::Stake,
|
||||
"vote-account" => CliValidatorsSortOrder::VoteAccount,
|
||||
"version" => CliValidatorsSortOrder::Version,
|
||||
_ => unreachable!(),
|
||||
};
|
||||
|
||||
|
5
programs/bpf/Cargo.lock
generated
5
programs/bpf/Cargo.lock
generated
@ -2190,9 +2190,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "semver"
|
||||
version = "1.0.4"
|
||||
version = "1.0.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "568a8e6258aa33c13358f81fd834adb854c6f7c9468520910a9b1e8fac068012"
|
||||
checksum = "d65bd28f48be7196d222d95b9243287f48d27aca604e08497513019ff0502cc4"
|
||||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
@ -2858,6 +2858,7 @@ dependencies = [
|
||||
"console",
|
||||
"humantime",
|
||||
"indicatif",
|
||||
"semver",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"solana-account-decoder",
|
||||
|
Reference in New Issue
Block a user