johnride
  • Joined on 2024-02-06
johnride commented on pull request NationTech/harmony#275 2026-04-23 14:39:29 +00:00
feat/iot-helm

Overall not too bad but some important items to consider.

johnride pushed to feat/iot-helm at NationTech/harmony 2026-04-23 14:32:36 +00:00
61d3a6b757 feat(iot/chart): typed variants + CRD-keep + Pod security context
20b94dfacf feat(harmony/helm): typed HelmResourceKind variants for RBAC + Namespace + CRD
3d39b670dd feat(iot-agent): config-driven routing labels
Compare 3 commits »
johnride pushed to feat/iot-helm at NationTech/harmony 2026-04-23 13:54:25 +00:00
a616204b1c refactor(nats): extract typed single-node primitive; NatsBasicScore becomes a thin wrapper
1df0ba7cdc refactor(iot): drop --system from iot-agent; add optional admin password
Compare 2 commits »
johnride created pull request NationTech/harmony#275 2026-04-23 13:26:34 +00:00
feat/iot-helm
johnride created pull request NationTech/harmony#274 2026-04-23 13:26:04 +00:00
feat/iot-aggregation-scale
johnride pushed to feat/iot-helm at NationTech/harmony 2026-04-23 12:44:18 +00:00
24b8282b7f feat(iot): Chapter 3 — operator helm chart (local, no registry)
173f549918 chore(iot): roadmap doc sync + code review pass
8a6a9f1a03 refactor(iot): Deployment.targetSelector + Device CRD (DaemonSet-like)
Compare 3 commits »
johnride created branch feat/iot-helm in NationTech/harmony 2026-04-23 12:44:17 +00:00
johnride pushed to feat/iot-aggregation-scale at NationTech/harmony 2026-04-23 02:10:40 +00:00
5e8e72df52 feat(iot-load-test): stable paths + HOLD=1 interactive mode
johnride pushed to feat/iot-aggregation-scale at NationTech/harmony 2026-04-23 01:57:33 +00:00
4d0aa069e5 perf(iot-load-test): parallel CR apply + DeviceInfo seed via tokio::JoinSet
ce7ad75dbf feat(iot): synthetic load test for fleet_aggregator + operator NATS connect retry
Compare 2 commits »
johnride pushed to feat/iot-aggregation-scale at NationTech/harmony 2026-04-23 01:28:23 +00:00
5c65ba71cc fix(iot-operator): watch device-state with LastPerSubject, not StartSequence(0)
9e42c15901 refactor(iot/smoke): update smoke scripts for new KV wire layout
2d99880770 refactor(iot): operator watches device-state KV directly; drop event stream
d28cc6a184 refactor(iot): drop LogEvent type + log subject helpers
9b35bc5314 refactor(iot): delete legacy AgentStatus path; event-driven aggregation is now authoritative
Compare 5 commits »
johnride created branch feat/iot-aggregation-scale in NationTech/harmony 2026-04-23 00:21:09 +00:00
johnride pushed to feat/iot-aggregation-scale at NationTech/harmony 2026-04-23 00:21:09 +00:00
2f08643aa0 refactor(iot): DeploymentName + Revision newtypes; LifecycleTransition models deletion; fixes bugs #1 and #2 from the review
367d63cfba test(iot/smoke-a4): clarify parity summary — matches are DEBUG-level so don't report them
3b111df578 fix(iot-operator): lazy namespace refresh in event consumer + relax smoke parity check
cc8d908fcb fix(iot-agent/fleet-publisher): await PublishAckFuture so events are durably persisted
6d4335771e test(iot/smoke-a4): surface fleet-aggregator parity summary on PASS
Compare 10 commits »
johnride commented on pull request NationTech/harmony#273 2026-04-22 17:41:02 +00:00
fix(opnsense): valid HAProxy config + From<&str> codegen cleanup

types??

johnride commented on pull request NationTech/harmony#273 2026-04-22 17:38:26 +00:00
fix(opnsense): valid HAProxy config + From<&str> codegen cleanup

MUCH better but still dumb. Why do we have to do mode from mode.as_str() ????

johnride commented on pull request NationTech/harmony#273 2026-04-22 16:14:43 +00:00
fix(opnsense): valid HAProxy config + From<&str> codegen cleanup

Instead of doing those ugly matches that depend on strings that we don't control here, implement From &str traits for those structs HealthCheckHttpMethod and the other similar above and below HealthcheckType and HealthcheckSsl and probably others around here. This is poor rust, feels like crappy python by a first year programmer. Do better.

johnride pushed to feat/iot-operator-helm-chart at NationTech/harmony 2026-04-22 15:36:37 +00:00
92150da12a feat(iot): label-selector targeting (replace target_devices with targetSelector)
johnride commented on pull request NationTech/harmony#272 2026-04-22 15:35:36 +00:00
feat/iot-operator-helm-chart

Looks reasonable, but would be much better as an easily runnable rust example.

johnride commented on pull request NationTech/harmony#272 2026-04-22 15:35:36 +00:00
feat/iot-operator-helm-chart

We have to be careful with the aggregation architecture and data model, this is what makes or breaks performance of this kind of tool at scale, which is what makes or breaks how much users love using it.

johnride commented on pull request NationTech/harmony#272 2026-04-22 15:35:36 +00:00
feat/iot-operator-helm-chart

I feel like there is a scalability issue here. Computing the aggregate on the operator's side for every device does not work with millions of devices. Then again, each device has limited compute capacity. But I do think that the rpi target is powerful enough for that. So each device would be writing multiple keys for itself that the operator could scrape. The devices can update their "last_events" key by themselves, same goes for current_state and device_info, etc. I feel like all the logs could go on the wire but probably not on jetstream kv, just regular at least once nats channels. It would be great if we could buffer the last 10000 lines to access them at any time for any time. That could be a feature we implement where when we query logs for a device the device sends the last 10k lines and streams until we're done.