From 0867bafdbd19ef524f16fc83f71ed794f570f1fd Mon Sep 17 00:00:00 2001 From: benedettadavico Date: Wed, 2 Jul 2025 17:29:59 +0200 Subject: [PATCH] Support mnemonic in the NS agent --- .github/workflows/push-node-status-agent.yaml | 2 +- documentation/docs/pages/apis/ns-api/ns-api-run-deploy.mdx | 1 + nym-node-status-api/nym-node-status-agent/Dockerfile | 2 ++ nym-node-status-api/nym-node-status-agent/run.sh | 1 + nym-node-status-api/nym-node-status-agent/src/cli/mod.rs | 6 ++++++ .../nym-node-status-agent/src/cli/run_probe.rs | 7 ++++++- nym-node-status-api/nym-node-status-agent/src/probe.rs | 2 ++ 7 files changed, 19 insertions(+), 2 deletions(-) diff --git a/.github/workflows/push-node-status-agent.yaml b/.github/workflows/push-node-status-agent.yaml index 769c7fe7d4..e0e2a3e5fb 100644 --- a/.github/workflows/push-node-status-agent.yaml +++ b/.github/workflows/push-node-status-agent.yaml @@ -57,5 +57,5 @@ jobs: - name: BuildAndPushImageOnHarbor run: | - docker build --build-arg GIT_REF=${{ github.event.inputs.gateway_probe_git_ref }} -f ${{ env.WORKING_DIRECTORY }}/Dockerfile . -t harbor.nymte.ch/nym/${{ env.CONTAINER_NAME }}:${{ steps.get_version.outputs.result }}-${{ steps.cleanup_gateway_probe_ref.outputs.git_ref }} + docker build --build-arg GIT_REF=${{ github.event.inputs.gateway_probe_git_ref }} --build-arg MNEMONIC="${{ secrets.CANARY_PROBE_MNEMONIC }}" -f ${{ env.WORKING_DIRECTORY }}/Dockerfile . -t harbor.nymte.ch/nym/${{ env.CONTAINER_NAME }}:${{ steps.get_version.outputs.result }}-${{ steps.cleanup_gateway_probe_ref.outputs.git_ref }} docker push harbor.nymte.ch/nym/${{ env.CONTAINER_NAME }} --all-tags diff --git a/documentation/docs/pages/apis/ns-api/ns-api-run-deploy.mdx b/documentation/docs/pages/apis/ns-api/ns-api-run-deploy.mdx index 9d787172d3..4df6a92c8d 100644 --- a/documentation/docs/pages/apis/ns-api/ns-api-run-deploy.mdx +++ b/documentation/docs/pages/apis/ns-api/ns-api-run-deploy.mdx @@ -306,6 +306,7 @@ export RUST_LOG="info" export NODE_STATUS_AGENT_SERVER_ADDRESS="http://127.0.0.1" export NODE_STATUS_AGENT_SERVER_PORT="8000" export NODE_STATUS_AGENT_AUTH_KEY= +export NODE_STATUS_AGENT_PROBE_MNEMONIC= export NODE_STATUS_AGENT_PROBE_EXTRA_ARGS="netstack-download-timeout-sec=30,netstack-num-ping=2,netstack-send-timeout-sec=1,netstack-recv-timeout-sec=1" workers=${1:-1} diff --git a/nym-node-status-api/nym-node-status-agent/Dockerfile b/nym-node-status-api/nym-node-status-agent/Dockerfile index fcab377e26..81aaf8271b 100644 --- a/nym-node-status-api/nym-node-status-agent/Dockerfile +++ b/nym-node-status-api/nym-node-status-agent/Dockerfile @@ -2,6 +2,7 @@ FROM harbor.nymte.ch/dockerhub/rust:latest AS builder ARG GIT_REF=main +ARG MNEMONIC RUN apt update && apt install -yy libdbus-1-dev pkg-config libclang-dev @@ -38,4 +39,5 @@ COPY --from=builder /usr/src/nym/target/release/nym-node-status-agent ./ COPY --from=builder /usr/src/nym-vpn-client/nym-vpn-core/target/release/nym-gateway-probe ./ ENV NODE_STATUS_AGENT_PROBE_PATH=/nym/nym-gateway-probe +ENV NODE_STATUS_AGENT_PROBE_MNEMONIC="$MNEMONIC" ENTRYPOINT [ "/nym/nym-node-status-agent", "run-probe" ] diff --git a/nym-node-status-api/nym-node-status-agent/run.sh b/nym-node-status-api/nym-node-status-agent/run.sh index 544c6ca731..d0f3018fdd 100755 --- a/nym-node-status-api/nym-node-status-agent/run.sh +++ b/nym-node-status-api/nym-node-status-agent/run.sh @@ -21,6 +21,7 @@ export NODE_STATUS_AGENT_SERVER_ADDRESS="http://127.0.0.1" export NODE_STATUS_AGENT_SERVER_PORT="8000" export NODE_STATUS_AGENT_PROBE_PATH="$crate_root/nym-gateway-probe" export NODE_STATUS_AGENT_AUTH_KEY="BjyC9SsHAZUzPRkQR4sPTvVrp4GgaquTh5YfSJksvvWT" +export NODE_STATUS_AGENT_PROBE_MNEMONIC="$MNEMONIC" export NODE_STATUS_AGENT_PROBE_EXTRA_ARGS="netstack-download-timeout-sec=30,netstack-num-ping=2,netstack-send-timeout-sec=1,netstack-recv-timeout-sec=1" workers=${1:-1} diff --git a/nym-node-status-api/nym-node-status-agent/src/cli/mod.rs b/nym-node-status-api/nym-node-status-agent/src/cli/mod.rs index 75601548ed..ee2d09980d 100644 --- a/nym-node-status-api/nym-node-status-agent/src/cli/mod.rs +++ b/nym-node-status-api/nym-node-status-agent/src/cli/mod.rs @@ -36,6 +36,10 @@ pub(crate) enum Command { #[arg(long, env = "NODE_STATUS_AGENT_PROBE_PATH")] probe_path: String, + /// mnemonic for acquiring zk-nyms + #[arg(long, env = "NODE_STATUS_AGENT_PROBE_MNEMONIC")] + mnemonic: String, + #[arg( long, env = "NODE_STATUS_AGENT_PROBE_EXTRA_ARGS", @@ -58,12 +62,14 @@ impl Args { server_port, ns_api_auth_key, probe_path, + mnemonic, probe_extra_args, } => run_probe::run_probe( server_address, server_port.to_owned(), ns_api_auth_key, probe_path, + mnemonic, probe_extra_args, ) .await diff --git a/nym-node-status-api/nym-node-status-agent/src/cli/run_probe.rs b/nym-node-status-api/nym-node-status-agent/src/cli/run_probe.rs index 8cf779cfbc..e2b9986785 100644 --- a/nym-node-status-api/nym-node-status-agent/src/cli/run_probe.rs +++ b/nym-node-status-api/nym-node-status-agent/src/cli/run_probe.rs @@ -7,6 +7,7 @@ pub(crate) async fn run_probe( server_port: u16, ns_api_auth_key: &str, probe_path: &str, + mnemonic: &str, probe_extra_args: &Vec, ) -> anyhow::Result<()> { let auth_key = PrivateKey::from_base58_string(ns_api_auth_key) @@ -20,7 +21,11 @@ pub(crate) async fn run_probe( tracing::info!("Probe version:\n{}", version); if let Some(testrun) = ns_api_client.request_testrun().await? { - let log = probe.run_and_get_log(&Some(testrun.gateway_identity_key), probe_extra_args); + let log = probe.run_and_get_log( + &Some(testrun.gateway_identity_key), + mnemonic, + probe_extra_args, + ); ns_api_client .submit_results(testrun.testrun_id, log, testrun.assigned_at_utc) diff --git a/nym-node-status-api/nym-node-status-agent/src/probe.rs b/nym-node-status-api/nym-node-status-agent/src/probe.rs index 67e7e508c6..90b0a4d87b 100644 --- a/nym-node-status-api/nym-node-status-agent/src/probe.rs +++ b/nym-node-status-api/nym-node-status-agent/src/probe.rs @@ -73,6 +73,7 @@ impl GwProbe { pub(crate) fn run_and_get_log( &self, gateway_key: &Option, + mnemonic: &str, probe_extra_args: &Vec, ) -> String { let mut command = std::process::Command::new(&self.path); @@ -81,6 +82,7 @@ impl GwProbe { if let Some(gateway_id) = gateway_key { command.arg("--gateway").arg(gateway_id); } + command.arg("--mnemonic").arg(mnemonic); tracing::info!("Extra args for the probe:"); for arg in probe_extra_args {