Workspace warning count: 408 → 105.
Three buckets cleared:
* Auto-fixable (`cargo fix` + `cargo clippy --fix`): unused imports
removed, unused variables prefixed with `_`, deprecated method
calls updated. Applied across harmony, harmony-k8s, harmony-agent,
harmony_inventory_agent, the fleet/ workspace, and ~15 examples.
* Generated code (opnsense-api/src/generated/): 269 snake_case
warnings + ~10 unreachable-pattern warnings come from
CamelCase-preserving bindings to OPNsense's HAProxy/Caddy XML
schemas. Scoped a single `#[allow(non_snake_case,
unreachable_patterns)]` at `pub mod generated;` rather than
fighting the codegen — renaming would break serde round-trips
and the codegen would regenerate them anyway.
* opnsense-codegen parser's defensive `let...else` guards on
`XmlNode` (currently single-variant): file-level
`#![allow(irrefutable_let_patterns)]` with a comment explaining
why we keep the `else` arms (they re-arm if the IR grows a
second variant).
`harmony_inventory_agent::local_presence::{DiscoveryEvent,
discover_agents}` re-exports were stripped twice by the auto-fix
passes (consumers live in another crate, so the local crate looks
"unused" to lint). Anchored with explicit `pub use` + an
`#[allow(unused_imports)]` annotation noting why.
All 151 harmony lib tests still pass. Remaining ~105 warnings are
mostly real dead code in non-fleet modules + a handful of
unused-imports/variables clippy couldn't auto-resolve; cleared in
the next pass.
78 lines
2.5 KiB
Rust
78 lines
2.5 KiB
Rust
use harmony::{
|
|
inventory::Inventory,
|
|
modules::nats::{capability::NatsCluster, score_nats_supercluster::NatsSuperclusterScore},
|
|
topology::{K8sAnywhereTopology, decentralized::DecentralizedTopology},
|
|
};
|
|
|
|
#[tokio::main]
|
|
async fn main() {
|
|
let supercluster_ca_secret_name = "nats-supercluster-ca-bundle";
|
|
let tls_cert_name = "nats-gateway";
|
|
let jetstream_enabled = "false";
|
|
let nats_namespace = "nats-example".to_string();
|
|
|
|
let site_1_name = "site-1".to_string();
|
|
let site_1_domain =
|
|
std::env::var("HARMONY_NATS_SITE_1_DOMAIN").expect("missing domain in env for site_1");
|
|
|
|
let nats_site_1 = NatsCluster {
|
|
namespace: nats_namespace.clone(),
|
|
domain: site_1_domain.clone(),
|
|
replicas: 1,
|
|
name: site_1_name.clone(),
|
|
gateway_advertise: format!("{site_1_name}-gw.{site_1_domain}:443"),
|
|
dns_name: format!("{site_1_name}-gw.{site_1_domain}"),
|
|
supercluster_ca_secret_name,
|
|
tls_cert_name,
|
|
jetstream_enabled,
|
|
};
|
|
|
|
let site_2_name = "site-2".to_string();
|
|
let site_2_domain =
|
|
std::env::var("HARMONY_NATS_SITE_2_DOMAIN").expect("missing domain in env for site_2");
|
|
|
|
let nats_site_2 = NatsCluster {
|
|
namespace: nats_namespace.clone(),
|
|
domain: site_2_domain.clone(),
|
|
replicas: 1,
|
|
name: site_2_name.clone(),
|
|
gateway_advertise: format!("{site_2_name}-gw.{site_2_domain}:443"),
|
|
dns_name: format!("{site_2_name}-gw.{site_2_domain}"),
|
|
supercluster_ca_secret_name,
|
|
tls_cert_name,
|
|
jetstream_enabled,
|
|
};
|
|
|
|
let site_3_name = "site-3".to_string();
|
|
let site_3_domain =
|
|
std::env::var("HARMONY_NATS_SITE_3_DOMAIN").expect("missing domain in env for site_3");
|
|
|
|
let nats_site_3 = NatsCluster {
|
|
namespace: nats_namespace.clone(),
|
|
domain: site_3_domain.clone(),
|
|
replicas: 1,
|
|
name: site_3_name.clone(),
|
|
gateway_advertise: format!("{site_3_name}-gw.{site_3_domain}:443"),
|
|
dns_name: format!("{site_3_name}-gw.{site_3_domain}"),
|
|
supercluster_ca_secret_name,
|
|
tls_cert_name,
|
|
jetstream_enabled,
|
|
};
|
|
|
|
let clusters = vec![nats_site_1, nats_site_2, nats_site_3];
|
|
|
|
let nats_supercluster = NatsSuperclusterScore {
|
|
nats_cluster: clusters,
|
|
ca_certs: None,
|
|
};
|
|
|
|
harmony_cli::run(
|
|
Inventory::autoload(),
|
|
DecentralizedTopology::<K8sAnywhereTopology>::from_env(),
|
|
vec![Box::new(nats_supercluster)],
|
|
None,
|
|
)
|
|
.await
|
|
.unwrap();
|
|
}
|