Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: provide verbosity arg for local run cmd
Browse files Browse the repository at this point in the history
This also provides the `-v` mechanism for varying the logging output for the local network. The
value that is set here is passed to each of the node processes.

The logging output destination is to file, otherwise on the terminal you would get a blizzard of
output from all the node processes.
jacderida committed Jan 27, 2025
1 parent 243a030 commit 162d66b
Showing 6 changed files with 60 additions and 14 deletions.
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions ant-node-manager/Cargo.toml
Original file line number Diff line number Diff line change
@@ -38,6 +38,7 @@ ant-releases = { version = "0.4.0" }
ant-service-management = { path = "../ant-service-management", version = "0.4.7" }
chrono = "~0.4.19"
clap = { version = "4.4.6", features = ["derive", "env"] }
clap-verbosity-flag = "3.0.2"
colored = "2.0.4"
color-eyre = "0.6.3"
dirs-next = "2.0.0"
10 changes: 7 additions & 3 deletions ant-node-manager/src/bin/cli/main.rs
Original file line number Diff line number Diff line change
@@ -22,6 +22,7 @@ use color_eyre::{eyre::eyre, Result};
use libp2p::Multiaddr;
use std::{net::Ipv4Addr, path::PathBuf};
use tracing::Level;
use clap_verbosity_flag::{OffLevel, Verbosity};

const DEFAULT_NODE_COUNT: u16 = 25;

@@ -859,6 +860,8 @@ pub enum LocalSubCmd {
/// Set to skip the network validation process
#[clap(long)]
skip_validation: bool,
#[clap(flatten)]
verbose: Verbosity<OffLevel>,
},
/// Get the status of the local nodes.
#[clap(name = "status")]
@@ -1070,7 +1073,6 @@ async fn main() -> Result<()> {
rewards_address,
evm_network,
true,
verbosity,
)
.await
}
@@ -1089,7 +1091,8 @@ async fn main() -> Result<()> {
rpc_port,
rewards_address,
evm_network,
skip_validation: _,
skip_validation,
verbose,
} => {
let evm_network = if let Some(evm_network) = evm_network {
Some(evm_network.try_into()?)
@@ -1110,7 +1113,8 @@ async fn main() -> Result<()> {
rpc_port,
rewards_address,
evm_network,
true,
skip_validation,
verbose,
verbosity,
)
.await
30 changes: 20 additions & 10 deletions ant-node-manager/src/cmd/local.rs
Original file line number Diff line number Diff line change
@@ -22,6 +22,7 @@ use ant_service_management::{
control::ServiceController, get_local_node_registry_path, NodeRegistry,
};
use color_eyre::{eyre::eyre, Help, Report, Result};
use clap_verbosity_flag::{log::{Level, LevelFilter}, OffLevel, Verbosity};
use std::path::PathBuf;

pub async fn join(
@@ -39,12 +40,8 @@ pub async fn join(
rewards_address: RewardsAddress,
evm_network: Option<EvmNetwork>,
skip_validation: bool,
verbosity: VerbosityLevel,
) -> Result<(), Report> {
if verbosity != VerbosityLevel::Minimal {
print_banner("Joining Local Network");
}
info!("Joining local network");
print_banner("Joining Local Network");

if (enable_metrics_server || metrics_port.is_some()) && !cfg!(feature = "open-metrics") && build
{
@@ -64,7 +61,7 @@ pub async fn join(
ReleaseType::AntNode,
node_version,
&*release_repo,
verbosity,
VerbosityLevel::Normal,
)
.await?;

@@ -82,6 +79,7 @@ pub async fn join(
log_format,
rewards_address,
evm_network,
verbosity: None,
};
run_network(options, &mut local_node_registry, &ServiceController {}).await?;
Ok(())
@@ -119,7 +117,8 @@ pub async fn run(
rewards_address: RewardsAddress,
evm_network: Option<EvmNetwork>,
skip_validation: bool,
verbosity: VerbosityLevel,
verbosity: Verbosity<OffLevel>,
verbosity_level: VerbosityLevel,
) -> Result<(), Report> {
if (enable_metrics_server || metrics_port.is_some()) && !cfg!(feature = "open-metrics") && build
{
@@ -145,7 +144,7 @@ pub async fn run(
if local_node_reg_path.exists() {
std::fs::remove_file(local_node_reg_path)?;
}
kill(false, verbosity)?;
kill(false, verbosity_level)?;
NodeRegistry::load(local_node_reg_path)?
} else {
let local_node_registry = NodeRegistry::load(local_node_reg_path)?;
@@ -157,7 +156,7 @@ pub async fn run(
local_node_registry
};

if verbosity != VerbosityLevel::Minimal {
if verbosity_level != VerbosityLevel::Minimal {
print_banner("Launching Local Network");
}
info!("Launching local network");
@@ -170,10 +169,20 @@ pub async fn run(
ReleaseType::AntNode,
node_version,
&*release_repo,
verbosity,
verbosity_level,
)
.await?;

let log_level = match verbosity.log_level_filter() {
LevelFilter::Off => None,
LevelFilter::Error => Some(Level::Error),
LevelFilter::Warn => Some(Level::Warn),
LevelFilter::Info => Some(Level::Info),
LevelFilter::Debug => Some(Level::Debug),
LevelFilter::Trace => Some(Level::Trace),
};
println!("Verbosity level: {:?}", log_level);

let options = LocalNetworkOptions {
antnode_bin_path,
enable_metrics_server,
@@ -188,6 +197,7 @@ pub async fn run(
log_format,
rewards_address,
evm_network,
verbosity: log_level,
};
run_network(options, &mut local_node_registry, &ServiceController {}).await?;

29 changes: 28 additions & 1 deletion ant-node-manager/src/local.rs
Original file line number Diff line number Diff line change
@@ -19,6 +19,7 @@ use ant_service_management::{
rpc::{RpcActions, RpcClient},
NodeRegistry, NodeServiceData, ServiceStatus,
};
use clap_verbosity_flag::log::Level;
use color_eyre::eyre::OptionExt;
use color_eyre::{eyre::eyre, Result};
use colored::Colorize;
@@ -46,6 +47,7 @@ pub trait Launcher {
rpc_socket_addr: SocketAddr,
rewards_address: RewardsAddress,
evm_network: Option<EvmNetwork>,
verbosity: Option<Level>,
) -> Result<()>;
fn wait(&self, delay: u64);
}
@@ -69,9 +71,24 @@ impl Launcher for LocalSafeLauncher {
rpc_socket_addr: SocketAddr,
rewards_address: RewardsAddress,
evm_network: Option<EvmNetwork>,
verbosity: Option<Level>,
) -> Result<()> {
let mut args = Vec::new();

if let Some(level) = verbosity {
match level {
Level::Error => args.push("-v".to_string()),
Level::Warn => args.push("-vv".to_string()),
Level::Info => args.push("-vvv".to_string()),
Level::Debug => args.push("-vvvv".to_string()),
Level::Trace => args.push("-vvvvv".to_string()),
}
// It makes sense for the log output to go to file for the local network.
// Otherwise you will get a blizzard of output on the terminal from all the nodes.
args.push("--log-output-dest".to_string());
args.push("data-dir".to_string());
}

if first {
args.push("--first".to_string())
}
@@ -111,6 +128,9 @@ impl Launcher for LocalSafeLauncher {
}
}

debug!("Launching node with arguments: {:?}", args);
debug!("Binary location: {}", self.antnode_bin_path.display());

Command::new(self.antnode_bin_path.clone())
.args(args)
.stdout(Stdio::inherit())
@@ -217,6 +237,7 @@ pub struct LocalNetworkOptions {
pub log_format: Option<LogFormat>,
pub rewards_address: RewardsAddress,
pub evm_network: Option<EvmNetwork>,
pub verbosity: Option<Level>,
}

pub async fn run_network(
@@ -292,6 +313,7 @@ pub async fn run_network(
rewards_address: options.rewards_address,
evm_network: options.evm_network.clone(),
version: get_bin_version(&launcher.get_antnode_path())?,
verbosity: options.verbosity,
},
&launcher,
&rpc_client,
@@ -338,6 +360,7 @@ pub async fn run_network(
rewards_address: options.rewards_address,
evm_network: options.evm_network.clone(),
version: get_bin_version(&launcher.get_antnode_path())?,
verbosity: options.verbosity,
},
&launcher,
&rpc_client,
@@ -377,6 +400,7 @@ pub struct RunNodeOptions {
pub rewards_address: RewardsAddress,
pub evm_network: Option<EvmNetwork>,
pub version: String,
pub verbosity: Option<Level>,
}

pub async fn run_node(
@@ -394,6 +418,7 @@ pub async fn run_node(
run_options.rpc_socket_addr,
run_options.rewards_address,
run_options.evm_network.clone(),
run_options.verbosity,
)?;
launcher.wait(run_options.interval);

@@ -544,9 +569,10 @@ mod tests {
eq(rpc_socket_addr),
eq(rewards_address),
eq(None),
eq(None),
)
.times(1)
.returning(|_, _, _, _, _, _, _| Ok(()));
.returning(|_, _, _, _, _, _, _, _| Ok(()));
mock_launcher
.expect_wait()
.with(eq(100))
@@ -593,6 +619,7 @@ mod tests {
rewards_address,
evm_network: None,
version: "0.100.12".to_string(),
verbosity: None,
},
&mock_launcher,
&mock_rpc_client,
3 changes: 3 additions & 0 deletions ant-node/src/bin/antnode/main.rs
Original file line number Diff line number Diff line change
@@ -568,6 +568,7 @@ fn init_logging(
};

if targets.is_empty() {
println!("Logging is not enabled");
return Ok(("stderr".to_string(), None, None));
}

@@ -595,6 +596,8 @@ fn init_logging(
log_builder.initialize()?
};

println!("Initialised logging. Logs will be output to {:?}", output_dest);

Ok((
output_dest.to_string(),
Some(reload_handle),

0 comments on commit 162d66b

Please sign in to comment.