All checks were successful
Run Check Script / check (pull_request) Successful in 2m29s
Review feedback: "iot" is the wrong scope label. The pattern this crate encodes — a central operator writing desired state to NATS JetStream KV, a remote agent watching KV and reconciling — is the foundation for harmony's decentralized infrastructure management, not an IoT thing. Raspberry Pi is one concrete use case; the next consumers (OKD fleet agents, edge-compute reconcilers, any host harmony can't reach directly over a control-plane API) aren't IoT either. Rename the crate to reflect what it actually is: - `iot/iot-contracts/` → `harmony-reconciler-contracts/` (moved to the repo root, alongside the other support crates). - Package name `iot-contracts` → `harmony-reconciler-contracts`. - Consumer `Cargo.toml` path references updated in operator, agent. - `use iot_contracts::…` → `use harmony_reconciler_contracts::…` across agent + operator sources. - Crate-level prose in lib.rs + kv.rs rewritten to drop the IoT framing and describe the reconciler pattern in its own terms. - harmony/Cargo.toml drops the dep entirely — after the preceding commit moved podman Score types back in-tree, harmony no longer pulls anything from this crate. No behavior change. Wire format unchanged — the two existing public modules (`kv`, `status`) are byte-identical. Verified: - `cargo check --all-targets --all-features` clean. - `cargo test -p harmony-reconciler-contracts` — 5/5 pass. - x86_64 `smoke-a3.sh` end-to-end PASS (reboot-reconnect included). Out of scope / follow-up: the operator and agent crate names (`iot-operator-v0`, `iot-agent-v0`) and `IotScore` are still IoT-branded. Evaluating whether to flip those in this branch next.
107 lines
2.4 KiB
TOML
107 lines
2.4 KiB
TOML
[workspace]
|
|
resolver = "2"
|
|
members = [
|
|
"examples/*",
|
|
"private_repos/*",
|
|
"harmony",
|
|
"harmony_types",
|
|
"harmony_macros",
|
|
"harmony_tui",
|
|
"harmony_execution",
|
|
"opnsense-config",
|
|
"opnsense-config-xml",
|
|
"harmony_cli",
|
|
"k3d",
|
|
"harmony_composer",
|
|
"harmony_inventory_agent",
|
|
"harmony_secret_derive",
|
|
"harmony_secret",
|
|
"network_stress_test",
|
|
"examples/kvm_okd_ha_cluster",
|
|
"examples/example_linux_vm",
|
|
"harmony_i18n",
|
|
"harmony_config_derive",
|
|
"harmony_config",
|
|
"brocade",
|
|
"harmony_agent",
|
|
"harmony_agent/deploy",
|
|
"harmony_node_readiness",
|
|
"harmony-k8s",
|
|
"harmony_assets", "opnsense-codegen", "opnsense-api",
|
|
"iot/iot-operator-v0",
|
|
"iot/iot-agent-v0",
|
|
"harmony-reconciler-contracts",
|
|
]
|
|
|
|
[workspace.package]
|
|
version = "0.1.0"
|
|
readme = "README.md"
|
|
license = "GNU AGPL v3"
|
|
|
|
[workspace.dependencies]
|
|
log = { version = "0.4", features = ["kv"] }
|
|
env_logger = "0.11"
|
|
derive-new = "0.7"
|
|
async-trait = "0.1"
|
|
tokio = { version = "1.40", features = [
|
|
"io-std",
|
|
"io-util",
|
|
"fs",
|
|
"macros",
|
|
"net",
|
|
"rt-multi-thread",
|
|
] }
|
|
tokio-retry = "0.3.0"
|
|
tokio-util = "0.7.15"
|
|
cidr = { features = ["serde"], version = "0.2" }
|
|
russh = "0.45"
|
|
russh-keys = "0.45"
|
|
rand = "0.9"
|
|
url = "2.5"
|
|
kube = { version = "1.1.0", features = [
|
|
"config",
|
|
"client",
|
|
"runtime",
|
|
"rustls-tls",
|
|
"ws",
|
|
"jsonpatch",
|
|
] }
|
|
k8s-openapi = { version = "0.25", features = ["v1_30"] }
|
|
# TODO replace with https://github.com/bourumir-wyngs/serde-saphyr as serde_yaml is deprecated https://github.com/sebastienrousseau/serde_yml
|
|
serde_yaml = "0.9"
|
|
serde-value = "0.7"
|
|
http = "1.2"
|
|
inquire = "0.7"
|
|
convert_case = "0.8"
|
|
chrono = "0.4"
|
|
similar = "2"
|
|
uuid = { version = "1.11", features = ["v4", "fast-rng", "macro-diagnostics"] }
|
|
pretty_assertions = "1.4.1"
|
|
tempfile = "3.20.0"
|
|
bollard = "0.19.1"
|
|
base64 = "0.22.1"
|
|
tar = "0.4.44"
|
|
lazy_static = "1.5.0"
|
|
directories = "6.0.0"
|
|
futures-util = "0.3"
|
|
thiserror = "2.0.14"
|
|
serde = { version = "1.0.209", features = ["derive", "rc"] }
|
|
serde_json = "1.0.127"
|
|
askama = "0.14"
|
|
sqlx = { version = "0.8", features = ["runtime-tokio", "sqlite"] }
|
|
reqwest = { version = "0.12", features = [
|
|
"blocking",
|
|
"stream",
|
|
"rustls-tls",
|
|
"http2",
|
|
"json",
|
|
], default-features = false }
|
|
assertor = "0.0.4"
|
|
tokio-test = "0.4"
|
|
anyhow = "1.0"
|
|
clap = { version = "4", features = ["derive", "env"] }
|
|
async-nats = "0.45.0"
|
|
tracing = "0.1"
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
|
toml = "0.8"
|