efc6e7a3ab
paginate discovered devices
2026-01-31 10:31:37 -06:00
6ca22c5dd0
enhance user auditing
2026-01-30 17:38:07 -06:00
0d4ab7fc14
fix session view
2026-01-30 16:20:04 -06:00
25397139c1
nif ci fix complie in ci
2026-01-30 13:01:44 -06:00
de1ad8bc8a
nif ci fixes and dialyzer fixes
2026-01-30 12:38:50 -06:00
836749ba6b
complete overhaul of snmp engine
2026-01-30 10:41:07 -06:00
c7ca0dcb27
poller clarification
2026-01-29 13:30:34 -06:00
e76bd1fd91
track more state changes
2026-01-29 10:43:23 -06:00
c95487f55d
sensor graphing improvement
2026-01-29 10:14:34 -06:00
8e739283ad
refactoring
2026-01-29 10:03:43 -06:00
58b1aa50c2
security fixes
2026-01-28 16:55:41 -06:00
fd4f8b2342
totp debugging
2026-01-28 16:50:12 -06:00
f350a9ade4
test cleanup
2026-01-28 10:31:22 -06:00
5fb92dd961
add device/org limit
2026-01-27 14:14:25 -06:00
328d4659a7
show correct agent on edit screen and fix airfiber/ltu
2026-01-27 12:52:43 -06:00
6782309682
add default temp unit
2026-01-26 15:39:36 -06:00
a05b125600
update cloud poller icon
2026-01-26 15:38:09 -06:00
b20a58aec4
test fixes
2026-01-26 15:27:59 -06:00
756a6b4cd4
poller agent fix and trigger device rediscovery
2026-01-26 14:51:32 -06:00
74f2970664
ui tweaks
2026-01-26 13:34:52 -06:00
c41b479ed8
more tests
2026-01-26 11:01:47 -06:00
99414459d3
device reorder
2026-01-26 10:22:12 -06:00
e781a70c7e
device list update
2026-01-26 09:44:08 -06:00
21802eede4
adjust timestamps to be relative
2026-01-25 14:52:13 -06:00
9c5b4096f9
discovery working
2026-01-25 14:48:57 -06:00
d12ffda8b0
show unit
2026-01-25 12:18:41 -06:00
788004cb97
fix: handle :global agent source in device form template
...
Production was crashing with CaseClauseError when viewing device edit
form for devices using the global default cloud poller.
Added missing :global case branch to the agent source case statement
in form.html.heex line 127.
Displays: 'Using global default cloud poller: <agent_name>'
2026-01-25 11:04:29 -06:00
6c1f344b5e
fix: resolve all dialyzer unmatched return and pattern match warnings
...
Fixed dialyzer warnings across multiple files by properly handling return
values from functions that are called for side effects.
Changes:
- lib/towerops/agents.ex: Explicitly match broadcast and if-expression returns
- lib/towerops/devices.ex: Match worker start function returns in if-expressions
- lib/towerops/workers/agent_latency_evaluator.ex: Match broadcast return
- lib/towerops/workers/device_monitor_worker.ex: Match perform_check and handle_status_change returns, handle schedule_next_check errors
- lib/towerops/workers/device_poller_worker.ex: Match all PubSub broadcast returns, handle schedule_next_poll errors, remove unreachable pattern
- lib/towerops/workers/stale_agent_worker.ex: Match process_stale_agents and broadcast returns
- lib/towerops_web/channels/agent_channel.ex: Match PubSub.subscribe return, improve get_addr pattern matching, remove unreachable format_ip clause
- lib/towerops_web/live/device_live/form.ex: Match enqueue_discovery return, replace compile-time @dev_env with runtime check
Pattern applied:
- PubSub broadcasts: `_ = Phoenix.PubSub.broadcast(...)`
- If-expressions with side effects: `_ = if condition do ... end`
- Critical operations: Added error logging with case statements
All 3625 tests passing. No dialyzer warnings remaining in lib/towerops or lib/towerops_web.
🤖 Generated with Claude Code
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-24 17:34:37 -06:00
d0946c3cd0
refactor: simplify job architecture from Oban coordinators to direct workers
...
Removes unnecessary two-layer architecture (Oban Coordinator → GenServer)
in favor of direct Oban workers that perform the actual work.
Changes:
- Replace DevicePollerCoordinator + PollerWorker with DevicePollerWorker
- Replace DeviceMonitorCoordinator + DeviceMonitor with DeviceMonitorWorker
- Simplify Monitoring.Supervisor (removed Registries, DynamicSupervisors)
- Remove all Exq dependencies (workers, supervisor, mix deps)
- Convert DiscoveryWorker from Exq to Oban pattern
- Update Devices context to auto-start/stop monitoring and polling
- Update all LiveView callers to use new Oban enqueue pattern
- Fix all tests to use Oban.Job struct instead of raw IDs
Benefits:
- Simpler codebase (~850 lines removed)
- Better reliability (Oban handles retries, failures)
- Lower memory (no persistent GenServers)
- Better observability (work visible in Oban dashboard)
- Cluster-wide coordination via PostgreSQL
- Extensive PubSub usage for real-time events
Files deleted:
- lib/towerops/workers/device_monitor_coordinator.ex
- lib/towerops/workers/device_poller_coordinator.ex
- lib/towerops/snmp/poller_worker.ex
- lib/towerops/monitoring/device_monitor.ex
- lib/towerops/workers/monitor_worker.ex
- lib/towerops/workers/poll_worker.ex
- lib/towerops/exq_supervisor.ex
- All related test files
Files created:
- lib/towerops/workers/device_poller_worker.ex
- lib/towerops/workers/device_monitor_worker.ex
All 3,686 tests passing.
2026-01-24 16:36:57 -06:00
f084e09ea1
add multiple cloud agents
2026-01-23 18:04:01 -06:00
518b49318c
routeros fix
2026-01-23 13:16:02 -06:00
a4335a047a
allow nonroutable for me
2026-01-23 13:10:12 -06:00
a0ba9285dd
bring in snmpkit
2026-01-23 12:52:17 -06:00
80d1864700
mac discovery
2026-01-23 09:22:08 -06:00
7bd3b1f9ec
arp
2026-01-23 08:40:57 -06:00
f402dcb7af
fix mikrotik sensors
2026-01-22 18:07:20 -06:00
639ffd4a2c
better discovery
2026-01-22 17:40:58 -06:00
96fc488023
sanitize snmp data and fix some cpu things
2026-01-22 16:53:01 -06:00
d401e0b036
mikrotik improvements
2026-01-22 13:05:28 -06:00
0a4482f974
feat: add 5 new vendor modules and fix dialyzer issues
...
Vendor modules added:
- Aviat (WTM microwave radios)
- Aruba (wireless controllers and APs)
- CiscoWLC (Cisco wireless LAN controllers)
- Teltonika (RUTOS LTE routers)
- Sub10 (mmWave backhaul radios)
Dialyzer fixes:
- Fix unknown type Devices.t/0 in alert.ex and device.ex
- Fix unmatched_return warnings across multiple files
- Add :exq to PLT for Exq function detection
- Remove dead code in base.ex, dynamic.ex, vendor.ex
- Fix Device.t() type spec to allow nil name field
Tests: 1437 tests, 0 failures
Dialyzer: 0 errors
Credo: no issues
2026-01-22 09:34:50 -06:00
605f8c09ec
feat: add discovered sensors table to debug tab
...
Display discovered sensors in a parsed table format showing type,
description, OID, value with unit, and state description for state
sensors.
2026-01-21 17:18:44 -06:00
c26e379dd7
fix device update handler
2026-01-21 14:42:55 -06:00
1b7c4f6a6a
update
2026-01-21 12:31:01 -06:00
8509a4a64c
feat: display neighbor IP address in device neighbors tab
2026-01-21 11:01:48 -06:00
c54b5d81bb
more dark mode
2026-01-20 17:23:11 -06:00
77d4b25da7
test cleanup
2026-01-19 13:29:38 -06:00
fe7a44e5e2
test improvements
2026-01-19 12:08:48 -06:00
adec4b134f
snmp overhaul
2026-01-18 16:00:01 -06:00
94311a48aa
discovery fix and favicon
2026-01-18 13:47:19 -06:00
212744365f
fix: add timezone attribute to form layouts
2026-01-18 13:07:07 -06:00