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 = [
|
dependencies = [
|
||||||
"camino",
|
"camino",
|
||||||
"cargo-platform",
|
"cargo-platform",
|
||||||
"semver 1.0.4",
|
"semver 1.0.7",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
]
|
]
|
||||||
@ -3960,7 +3960,7 @@ version = "0.4.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
|
checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"semver 1.0.4",
|
"semver 1.0.7",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -4156,9 +4156,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "semver"
|
name = "semver"
|
||||||
version = "1.0.4"
|
version = "1.0.7"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "568a8e6258aa33c13358f81fd834adb854c6f7c9468520910a9b1e8fac068012"
|
checksum = "d65bd28f48be7196d222d95b9243287f48d27aca604e08497513019ff0502cc4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
@ -4736,7 +4736,7 @@ dependencies = [
|
|||||||
"num-traits",
|
"num-traits",
|
||||||
"pretty-hex",
|
"pretty-hex",
|
||||||
"reqwest",
|
"reqwest",
|
||||||
"semver 1.0.4",
|
"semver 1.0.7",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_derive",
|
"serde_derive",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
@ -4788,6 +4788,7 @@ dependencies = [
|
|||||||
"console",
|
"console",
|
||||||
"humantime",
|
"humantime",
|
||||||
"indicatif",
|
"indicatif",
|
||||||
|
"semver 1.0.7",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"solana-account-decoder",
|
"solana-account-decoder",
|
||||||
@ -4814,7 +4815,7 @@ dependencies = [
|
|||||||
"log 0.4.14",
|
"log 0.4.14",
|
||||||
"rayon",
|
"rayon",
|
||||||
"reqwest",
|
"reqwest",
|
||||||
"semver 1.0.4",
|
"semver 1.0.7",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_derive",
|
"serde_derive",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
@ -5214,7 +5215,7 @@ dependencies = [
|
|||||||
"lazy_static",
|
"lazy_static",
|
||||||
"nix",
|
"nix",
|
||||||
"reqwest",
|
"reqwest",
|
||||||
"semver 1.0.4",
|
"semver 1.0.7",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_yaml",
|
"serde_yaml",
|
||||||
"solana-clap-utils",
|
"solana-clap-utils",
|
||||||
@ -5696,7 +5697,7 @@ dependencies = [
|
|||||||
"num-traits",
|
"num-traits",
|
||||||
"parking_lot 0.11.2",
|
"parking_lot 0.11.2",
|
||||||
"qstring",
|
"qstring",
|
||||||
"semver 1.0.4",
|
"semver 1.0.7",
|
||||||
"solana-sdk",
|
"solana-sdk",
|
||||||
"thiserror",
|
"thiserror",
|
||||||
"uriparse",
|
"uriparse",
|
||||||
|
@ -17,6 +17,7 @@ console = "0.15.0"
|
|||||||
humantime = "2.0.1"
|
humantime = "2.0.1"
|
||||||
Inflector = "0.11.4"
|
Inflector = "0.11.4"
|
||||||
indicatif = "0.16.2"
|
indicatif = "0.16.2"
|
||||||
|
semver = "1.0.6"
|
||||||
serde = "1.0.130"
|
serde = "1.0.130"
|
||||||
serde_json = "1.0.72"
|
serde_json = "1.0.72"
|
||||||
solana-account-decoder = { path = "../account-decoder", version = "=1.9.16" }
|
solana-account-decoder = { path = "../account-decoder", version = "=1.9.16" }
|
||||||
|
@ -356,6 +356,7 @@ pub enum CliValidatorsSortOrder {
|
|||||||
SkipRate,
|
SkipRate,
|
||||||
Stake,
|
Stake,
|
||||||
VoteAccount,
|
VoteAccount,
|
||||||
|
Version,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Serialize, Deserialize)]
|
||||||
@ -494,6 +495,22 @@ impl fmt::Display for CliValidators {
|
|||||||
CliValidatorsSortOrder::Stake => {
|
CliValidatorsSortOrder::Stake => {
|
||||||
sorted_validators.sort_by_key(|a| a.activated_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 {
|
if self.validators_reverse_sort {
|
||||||
|
@ -369,6 +369,7 @@ impl ClusterQuerySubCommands for App<'_, '_> {
|
|||||||
"root",
|
"root",
|
||||||
"skip-rate",
|
"skip-rate",
|
||||||
"stake",
|
"stake",
|
||||||
|
"version",
|
||||||
"vote-account",
|
"vote-account",
|
||||||
])
|
])
|
||||||
.default_value("stake")
|
.default_value("stake")
|
||||||
@ -638,6 +639,7 @@ pub fn parse_show_validators(matches: &ArgMatches<'_>) -> Result<CliCommandInfo,
|
|||||||
"skip-rate" => CliValidatorsSortOrder::SkipRate,
|
"skip-rate" => CliValidatorsSortOrder::SkipRate,
|
||||||
"stake" => CliValidatorsSortOrder::Stake,
|
"stake" => CliValidatorsSortOrder::Stake,
|
||||||
"vote-account" => CliValidatorsSortOrder::VoteAccount,
|
"vote-account" => CliValidatorsSortOrder::VoteAccount,
|
||||||
|
"version" => CliValidatorsSortOrder::Version,
|
||||||
_ => unreachable!(),
|
_ => unreachable!(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
5
programs/bpf/Cargo.lock
generated
5
programs/bpf/Cargo.lock
generated
@ -2190,9 +2190,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "semver"
|
name = "semver"
|
||||||
version = "1.0.4"
|
version = "1.0.7"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "568a8e6258aa33c13358f81fd834adb854c6f7c9468520910a9b1e8fac068012"
|
checksum = "d65bd28f48be7196d222d95b9243287f48d27aca604e08497513019ff0502cc4"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde"
|
name = "serde"
|
||||||
@ -2858,6 +2858,7 @@ dependencies = [
|
|||||||
"console",
|
"console",
|
||||||
"humantime",
|
"humantime",
|
||||||
"indicatif",
|
"indicatif",
|
||||||
|
"semver",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"solana-account-decoder",
|
"solana-account-decoder",
|
||||||
|
Reference in New Issue
Block a user