Picks up where the auto-fix pass left off. Workspace warning count
goes from 105 to 0 across `cargo build --workspace --all-targets`.
Three categories of fixes:
1. Mechanical fixes the auto-pass couldn't handle (unused imports
inside braced multi-name `use` statements, unused variables that
needed an underscore prefix without breaking other references):
batched via a small Python script, then 6 manual edits where the
warning location and the actual identifier were on different
lines.
2. Dead-code that's intentionally kept around for future wiring or
debug visibility — `#[allow(dead_code)]` at the right scope:
- 19 individual items (struct fields, methods, free functions,
type aliases, enum variants), e.g. `default_namespace` / `default_cluster_issuer`
in zitadel/mod.rs (used via serde defaults, opaque to rustc),
`score` fields on the OKD bootstrap interpret types,
`crd_exists` methods on the prometheus alerting scores, the
`harmony_inventory_agent::local_presence::{DiscoveryEvent,
discover_agents}` re-exports.
- 5 module-level allows for files where most items are
aspirational scaffolding (harmony_agent's replica workflow,
opnsense-config dnsmasq, three opnsense-api examples).
3. Special cases that needed real fixes, not allows:
- `opnsense-config-xml/src/data/haproxy.rs`: deprecated
`rand::thread_rng` / `Rng::gen` updated to `rng()` / `random`.
- `harmony_secret/src/lib.rs`: the `secrete2etest` integration
test gate is now declared in Cargo.toml's `[lints.rust]
unexpected_cfgs.check-cfg`; the gated test module is structured
so its dead `TestSecret`/`TestUserMeta` types come along for
the cfg ride and don't show up as unconditional dead code.
- `harmony/src/modules/nats/score_nats_k8s.rs:241`: `K8sIngressScore
{ name: todo!(), ... }`'s unreachable expression annotated.
- `harmony/src/domain/topology/k8s_anywhere/k8s_anywhere.rs:982`:
wrap the dead-after-`return Ok(Noop)` branch in
`#[allow(unreachable_code)] { ... }`. Behavior unchanged.
- `examples/try_rust_webapp/Cargo.toml`: `autobins = false` so
`src/main.rs` isn't auto-registered as both bin AND example.
All 16 lib-test suites pass: 437 tests, 0 failed, 13 ignored.
Ready for `-Dwarnings` in CI as a follow-up — the gate makes
sense once we're sure no contributor's local builds slip warnings
back in.
59 lines
1.5 KiB
Rust
59 lines
1.5 KiB
Rust
#![allow(dead_code)]
|
|
//! Example: reboot OPNsense and wait for it to come back.
|
|
//!
|
|
//! ```text
|
|
//! cargo run --example reboot
|
|
//! ```
|
|
|
|
mod common;
|
|
|
|
use serde::Deserialize;
|
|
|
|
#[derive(Debug, Deserialize)]
|
|
struct RebootResponse {
|
|
#[serde(default)]
|
|
status: String,
|
|
}
|
|
|
|
#[tokio::main]
|
|
async fn main() {
|
|
let client = common::client_from_env();
|
|
|
|
println!("Triggering reboot...");
|
|
let resp: RebootResponse = client
|
|
.post_typed("core", "firmware", "reboot", None::<&()>)
|
|
.await
|
|
.expect("reboot call failed");
|
|
println!("Reboot triggered: {resp:?}");
|
|
|
|
println!("Waiting for firewall to go down...");
|
|
tokio::time::sleep(std::time::Duration::from_secs(10)).await;
|
|
|
|
// Poll until the firewall comes back
|
|
println!("Polling until firewall is back...");
|
|
for i in 0..120 {
|
|
tokio::time::sleep(std::time::Duration::from_secs(5)).await;
|
|
|
|
let result = client
|
|
.get_typed::<serde_json::Value>("core", "firmware", "status")
|
|
.await;
|
|
|
|
match result {
|
|
Ok(resp) => {
|
|
let version = resp["product"]["CORE_PKGVERSION"]
|
|
.as_str()
|
|
.unwrap_or("unknown");
|
|
println!("[{i:3}] Firewall is back! Version: {version}");
|
|
return;
|
|
}
|
|
Err(_) => {
|
|
if i % 6 == 0 {
|
|
println!("[{i:3}] Still waiting...");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
println!("Timed out waiting for firewall to come back.");
|
|
}
|