towerops/lib/towerops
Graham McIntire b3fae05693
feat: implement Arista EOS sensor enhancements (DOM power, thresholds, grouping)
Implemented all critical and nice-to-have Arista sensor improvements identified
in LibreNMS parity audit. Upgrades Arista EOS support from 85% to 100% parity.

Files Changed:
- lib/towerops/snmp/profiles/vendors/arista.ex (enhanced)
  Added 4 major enhancements:
  1. DOM power conversion (watts→dBm): Detects optical power sensors via regex,
     converts using formula dBm = 10*log10(watts*1000), preserves original value
     in metadata
  2. Arista threshold discovery: Walks ARISTA-ENTITY-SENSOR-MIB threshold table
     (OID 1.3.6.1.4.1.30065.3.3.1.1.1), applies 4 threshold types (low_critical,
     low_warn, high_warn, high_critical), converts thresholds to dBm for optical
     sensors
  3. Smart grouping: Organizes sensors by SFPs, PSUs, Platform (chipsets), Power
     Connectors, System for better UX
  4. Description cleanup: Removes redundant "sensor" text, simplifies PSU naming,
     cleans whitespace

- lib/towerops/snmp/profiles/dynamic.ex (integration)
  Added apply_vendor_post_processing/3 to call Arista enhancements after sensor
  discovery. Applies to both arista_eos and arista-mos profiles.

- test/towerops/snmp/profiles/vendors/arista_test.exs (comprehensive tests)
  Added 23 new tests covering:
  - DOM conversion (6 tests): Rx/Tx power, Xcvr power, non-DOM sensors, edge cases
  - Threshold discovery (4 tests): Basic thresholds, dBm conversion, no thresholds,
    SNMP failures
  - Smart grouping (6 tests): SFPs, Xcvr, PSUs, power connectors, platform, system
  - Description cleanup (5 tests): Trailing sensor, duplicate Sensor strings, PSU
    naming, hotspot, whitespace
  - End-to-end post-processing (1 test): All enhancements in correct order

All tests passing (30/30 in arista_test.exs, 6367/6367 total).

Result: Arista EOS support upgraded from 85% to 100% LibreNMS parity. All critical
gaps closed: optical power now displayed correctly in dBm, alerting enabled via
thresholds, sensors organized for better UX, descriptions cleaned up.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-11 17:23:33 -06:00
..
accounts add device count to superadmin 2026-02-06 09:32:13 -06:00
admin feat: add audit logging to grant_sudo_mode/1 2026-02-01 14:09:40 -06:00
agent fix heartbeat validation rejecting git-describe version strings 2026-02-11 11:31:19 -06:00
agents fix siteless devices not inheriting org default agent 2026-02-11 12:20:53 -06:00
alerts feat: add Meraki/FortiWLC vendors, remove AlertNotifier temporarily 2026-01-22 10:40:44 -06:00
api_tokens refactor: use API token auth for profile imports instead of session cookies 2026-01-18 09:30:21 -06:00
contexts help update 2026-02-04 17:56:48 -06:00
devices add sensor value change events for all sensor types 2026-02-11 15:06:55 -06:00
ecto_types Fix all Credo issues 2026-02-06 10:31:09 -06:00
geoip remove Mix.env and support ip database import 2026-01-28 13:08:06 -06:00
job_monitoring more tests and fixes 2026-02-07 11:50:18 -06:00
mobile_sessions Fix datetime truncation for mobile session schemas 2026-01-15 16:17:05 -06:00
monitoring routeros fixes and latency rounding 2026-02-09 17:30:06 -06:00
organizations fix device count 2026-02-05 15:04:34 -06:00
profiles Reliability improvements: agent channel, polling, discovery, batch ops 2026-02-09 16:28:12 -06:00
proto Add agent restart and self-update commands 2026-02-10 13:06:10 -06:00
security fix 5 failing tests 2026-02-11 12:21:06 -06:00
settings remote agent/cloud improvements 2026-01-24 09:16:41 -06:00
sites tcp snmp test 2026-02-04 17:28:14 -06:00
snmp feat: implement Arista EOS sensor enhancements (DOM power, thresholds, grouping) 2026-02-11 17:23:33 -06:00
workers add sensor value change events for all sensor types 2026-02-11 15:06:55 -06:00
accounts.ex more dialyzer specs 2026-02-05 13:11:18 -06:00
admin.ex add device count to superadmin 2026-02-06 09:32:13 -06:00
agents.ex fix siteless devices not inheriting org default agent 2026-02-11 12:20:53 -06:00
alerts.ex more dialyzer specs 2026-02-05 13:11:18 -06:00
api_tokens.ex fix my-data page 2026-01-30 16:47:11 -06:00
application.ex Add 404-based brute force protection system 2026-02-10 16:31:48 -06:00
devices.ex fix siteless devices not inheriting org default agent 2026-02-11 12:20:53 -06:00
geoip.ex remove Mix.env and support ip database import 2026-01-28 13:08:06 -06:00
honeybadger_filter.ex filter more honeybadger alerts, format dates to users time zone, email template cleanup 2026-02-01 09:27:42 -06:00
job_monitoring.ex more tests and fixes 2026-02-07 11:50:18 -06:00
log_filter.ex Add comprehensive Dialyzer type specifications 2026-01-17 10:52:02 -06:00
logger_filters.ex fix: suppress repetitive SNMP MIB resolution errors 2026-02-08 14:09:26 -06:00
mailer.ex moduledocs 2026-01-17 15:08:49 -06:00
mobile_sessions.ex credo cleanup 2026-01-17 15:00:52 -06:00
monitoring.ex Replace conditionals with functional pattern matching 2026-02-10 17:11:37 -06:00
organizations.ex fix siteless devices not inheriting org default agent 2026-02-11 12:20:53 -06:00
profiles.ex add universoal import 2026-01-18 16:59:34 -06:00
rate_limit.ex update hammer 2026-02-08 10:08:31 -06:00
redis_health_check.ex fix: remove to_charlist conversion for Redix host option 2026-01-24 17:49:57 -06:00
release.ex fix dialyzer things 2026-01-03 12:56:40 -06:00
repo.ex moduledocs 2026-01-17 15:08:49 -06:00
result.ex more tests 2026-02-03 13:20:33 -06:00
settings.ex remote agent/cloud improvements 2026-01-24 09:16:41 -06:00
sites.ex more dialyzer specs 2026-02-05 13:11:18 -06:00
snmp.ex Reliability improvements: agent channel, polling, discovery, batch ops 2026-02-09 16:28:12 -06:00
vault.ex add mikrotik device handling 2026-02-01 16:42:39 -06:00