From 76297d8821a49b88f4766141338d7f962e303442 Mon Sep 17 00:00:00 2001 From: Chris O'Neil Date: Tue, 4 Mar 2025 17:45:46 +0000 Subject: [PATCH] feat: provide `--client-env` argument The `deploy` command now provides this argument so that the client can also be supplied environment variables, which we will mainly use to control logging options. --- .../uploaders/templates/ant_uploader.service.j2 | 3 +++ src/ansible/extra_vars.rs | 7 +++++++ src/ansible/provisioning.rs | 5 ++++- src/cmd/deployments.rs | 14 ++++++++------ src/cmd/mod.rs | 8 ++++++++ src/deploy.rs | 3 ++- src/main.rs | 4 +++- src/upscale.rs | 6 ++++-- 8 files changed, 39 insertions(+), 11 deletions(-) diff --git a/resources/ansible/roles/uploaders/templates/ant_uploader.service.j2 b/resources/ansible/roles/uploaders/templates/ant_uploader.service.j2 index 314ef00..94b34d5 100644 --- a/resources/ansible/roles/uploaders/templates/ant_uploader.service.j2 +++ b/resources/ansible/roles/uploaders/templates/ant_uploader.service.j2 @@ -13,6 +13,9 @@ Environment="EVM_NETWORK=arbitrum-sepolia" {% elif evm_network_type == "evm-arbitrum-one" %} Environment="EVM_NETWORK=arbitrum-one" {% endif %} +{% if client_env_variables is defined %} +Environment="{{ client_env_variables }}" +{% endif %} User=ant{{ count }} {% if testnet_name.startswith('PROD-') %} ExecStart=/home/ant{{ count }}/upload-random-data.sh diff --git a/src/ansible/extra_vars.rs b/src/ansible/extra_vars.rs index d1f4213..0864f47 100644 --- a/src/ansible/extra_vars.rs +++ b/src/ansible/extra_vars.rs @@ -348,6 +348,10 @@ pub fn build_node_extra_vars_doc( extra_vars.add_env_variable_list("node_env_variables", env_vars.clone()); } + if let Some(client_env_vars) = &options.client_env_variables { + extra_vars.add_env_variable_list("client_env_variables", client_env_vars.clone()); + } + if let Some((logstash_stack_name, logstash_hosts)) = &options.logstash_details { extra_vars.add_variable("logstash_stack_name", logstash_stack_name); extra_vars.add_list_variable( @@ -475,6 +479,9 @@ pub fn build_uploaders_extra_vars_doc( if let Some(network_id) = options.network_id { extra_vars.add_variable("network_id", &network_id.to_string()); } + if let Some(client_env_variables) = &options.client_env_variables { + extra_vars.add_env_variable_list("client_env_variables", client_env_variables.clone()); + } extra_vars.add_variable("enable_telegraf", &options.enable_telegraf.to_string()); diff --git a/src/ansible/provisioning.rs b/src/ansible/provisioning.rs index 839d67f..fa67f5e 100644 --- a/src/ansible/provisioning.rs +++ b/src/ansible/provisioning.rs @@ -51,6 +51,7 @@ pub struct ProvisionOptions { pub ant_version: Option, pub binary_option: BinaryOption, pub chunk_size: Option, + pub client_env_variables: Option>, pub downloaders_count: u16, pub enable_telegraf: bool, pub evm_data_payments_address: Option, @@ -261,6 +262,7 @@ impl From for ProvisionOptions { rewards_address: bootstrap_options.rewards_address, token_amount: None, uploaders_count: None, + client_env_variables: None, } } } @@ -273,7 +275,7 @@ impl From for ProvisionOptions { chunk_size: deploy_options.chunk_size, downloaders_count: deploy_options.downloaders_count, enable_telegraf: deploy_options.enable_telegraf, - node_env_variables: deploy_options.env_variables, + node_env_variables: deploy_options.node_env_variables, evm_data_payments_address: deploy_options.evm_data_payments_address, evm_network: deploy_options.evm_network, evm_payment_token_address: deploy_options.evm_payment_token_address, @@ -296,6 +298,7 @@ impl From for ProvisionOptions { rewards_address: deploy_options.rewards_address, token_amount: deploy_options.initial_tokens, uploaders_count: Some(deploy_options.uploaders_count), + client_env_variables: deploy_options.client_env_variables, } } } diff --git a/src/cmd/deployments.rs b/src/cmd/deployments.rs index cdad203..aa673d1 100644 --- a/src/cmd/deployments.rs +++ b/src/cmd/deployments.rs @@ -198,9 +198,9 @@ pub async fn handle_deploy( antnode_version: Option, branch: Option, chunk_size: Option, + client_env_variables: Option>, disable_telegraf: bool, downloaders_count: u16, - env_variables: Option>, environment_type: crate::EnvironmentType, evm_data_payments_address: Option, evm_network_type: EvmNetwork, @@ -225,6 +225,7 @@ pub async fn handle_deploy( network_id: Option, network_contacts_file_name: Option, node_count: Option, + node_env_variables: Option>, node_vm_count: Option, node_vm_size: Option, node_volume_size: Option, @@ -339,16 +340,16 @@ pub async fn handle_deploy( let deploy_options = DeployOptions { binary_option: binary_option.clone(), chunk_size, + client_env_variables, current_inventory: inventory, downloaders_count, - env_variables, + enable_telegraf: !disable_telegraf, environment_type: environment_type.clone(), evm_data_payments_address, evm_network: evm_network_type, evm_node_vm_size, evm_payment_token_address, evm_rpc_url, - funding_wallet_secret_key, full_cone_nat_gateway_vm_size, full_cone_private_node_count, full_cone_private_node_vm_count, @@ -357,6 +358,7 @@ pub async fn handle_deploy( full_cone_private_node_count, )) }), + funding_wallet_secret_key, genesis_node_volume_size: genesis_node_volume_size .or_else(|| Some(calculate_size_per_attached_volume(1))), initial_gas, @@ -369,6 +371,7 @@ pub async fn handle_deploy( name: name.clone(), network_id, node_count, + node_env_variables, node_vm_count, node_vm_size, node_volume_size: node_volume_size @@ -382,6 +385,8 @@ pub async fn handle_deploy( peer_cache_node_vm_size, peer_cache_node_volume_size: peer_cache_node_volume_size .or_else(|| Some(calculate_size_per_attached_volume(peer_cache_node_count))), + public_rpc, + rewards_address, symmetric_nat_gateway_vm_size, symmetric_private_node_count, symmetric_private_node_vm_count, @@ -390,12 +395,9 @@ pub async fn handle_deploy( symmetric_private_node_count, )) }), - public_rpc, - rewards_address, uploader_vm_count, uploader_vm_size, uploaders_count, - enable_telegraf: !disable_telegraf, }; if to_genesis { diff --git a/src/cmd/mod.rs b/src/cmd/mod.rs index d6ff582..8965c0c 100644 --- a/src/cmd/mod.rs +++ b/src/cmd/mod.rs @@ -358,6 +358,14 @@ pub enum Commands { /// Example: --node-env SN_LOG=all,RUST_LOG=libp2p=debug #[clap(name = "node-env", long, use_value_delimiter = true, value_parser = parse_environment_variables, verbatim_doc_comment)] node_env_variables: Option>, + /// Provide environment variables for the antnode RPC client. + /// + /// This is useful to set the client's log levels. Each variable should be comma + /// separated without any space. + /// + /// Example: --client-env CLIENT_LOG=all,RUST_LOG=debug + #[clap(name = "client-env", long, use_value_delimiter = true, value_parser = parse_environment_variables, verbatim_doc_comment)] + client_env_variables: Option>, /// The type of deployment. /// /// Possible values are 'development', 'production' or 'staging'. The value used will diff --git a/src/deploy.rs b/src/deploy.rs index 9d0b306..ed98a12 100644 --- a/src/deploy.rs +++ b/src/deploy.rs @@ -22,11 +22,11 @@ use std::{net::SocketAddr, path::PathBuf, time::Duration}; pub struct DeployOptions { pub binary_option: BinaryOption, pub chunk_size: Option, + pub client_env_variables: Option>, pub current_inventory: DeploymentInventory, pub downloaders_count: u16, pub enable_telegraf: bool, pub environment_type: EnvironmentType, - pub env_variables: Option>, pub evm_data_payments_address: Option, pub evm_network: EvmNetwork, pub evm_node_vm_size: Option, @@ -48,6 +48,7 @@ pub struct DeployOptions { pub name: String, pub network_id: Option, pub node_count: u16, + pub node_env_variables: Option>, pub node_vm_count: Option, pub node_vm_size: Option, pub node_volume_size: Option, diff --git a/src/main.rs b/src/main.rs index 62ae98e..ae09a41 100644 --- a/src/main.rs +++ b/src/main.rs @@ -127,6 +127,7 @@ async fn main() -> Result<()> { antnode_version, branch, chunk_size, + client_env_variables, downloaders_count, disable_telegraf, environment_type, @@ -182,9 +183,9 @@ async fn main() -> Result<()> { antnode_version, branch, chunk_size, + client_env_variables, disable_telegraf, downloaders_count, - node_env_variables, environment_type, evm_data_payments_address, evm_network_type, @@ -209,6 +210,7 @@ async fn main() -> Result<()> { network_id, network_contacts_file_name, node_count, + node_env_variables, node_vm_count, node_vm_size, node_volume_size, diff --git a/src/upscale.rs b/src/upscale.rs index 23a6304..950892a 100644 --- a/src/upscale.rs +++ b/src/upscale.rs @@ -182,9 +182,9 @@ impl TestnetDeployer { let mut provision_options = ProvisionOptions { binary_option: options.current_inventory.binary_option.clone(), chunk_size: None, + client_env_variables: None, downloaders_count: 0, enable_telegraf: true, - node_env_variables: None, evm_network: options .current_inventory .environment_details @@ -213,6 +213,7 @@ impl TestnetDeployer { name: options.current_inventory.name.clone(), network_id: options.current_inventory.environment_details.network_id, node_count: desired_node_count, + node_env_variables: None, max_archived_log_files: options.max_archived_log_files, max_log_files: options.max_log_files, output_inventory_dir_path: self @@ -479,9 +480,9 @@ impl TestnetDeployer { let provision_options = ProvisionOptions { binary_option: options.current_inventory.binary_option.clone(), chunk_size: None, + client_env_variables: None, downloaders_count: 0, enable_telegraf: true, - node_env_variables: None, evm_data_payments_address: options .current_inventory .environment_details @@ -510,6 +511,7 @@ impl TestnetDeployer { name: options.current_inventory.name.clone(), network_id: options.current_inventory.environment_details.network_id, node_count: 0, + node_env_variables: None, max_archived_log_files: options.max_archived_log_files, max_log_files: options.max_log_files, output_inventory_dir_path: self