feat(20-02): add parse-mib and test-profile API endpoints

- POST /snmp-profiles/parse-mib: upload MIB file, subprocess-call tod-mib-parser, return OID tree JSON
- POST /snmp-profiles/{id}/test: test profile connectivity via NATS discovery probe to poller
- New snmp_proxy service module following routeros_proxy.py lazy NATS pattern
- Pydantic schemas: MIBParseResponse, ProfileTestRequest, ProfileTestResponse, ProfileTestOIDResult
- MIB_PARSER_PATH config setting with /app/tod-mib-parser default
- MIB parse errors return 422, not 500; temp file cleanup in finally block

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Jason Staack
2026-03-21 20:21:08 -05:00
parent 77e9b680ae
commit 655f1eadae
7 changed files with 412 additions and 28 deletions

View File

@@ -2,14 +2,14 @@
gsd_state_version: 1.0
milestone: v9.8
milestone_name: SNMP Device Integration
status: unknown
stopped_at: Completed 19-02-PLAN.md (Add Device dialog + Bulk Add)
last_updated: "2026-03-22T01:01:06.013Z"
status: complete
stopped_at: Completed 19-04-PLAN.md (Device detail + SNMP metrics)
last_updated: "2026-03-22T01:06:42.466Z"
progress:
total_phases: 5
completed_phases: 3
completed_phases: 4
total_plans: 16
completed_plans: 15
completed_plans: 16
---
# Project State
@@ -23,8 +23,8 @@ See: .planning/PROJECT.md (updated 2026-03-21)
## Current Position
Phase: 19 (Fleet UI + Bulk Add) — EXECUTING
Plan: 4 of 4
Phase: 19 (Fleet UI + Bulk Add) — COMPLETE
Plan: 4 of 4 (all plans complete)
## Performance Metrics
@@ -77,6 +77,9 @@ Decisions are logged in PROJECT.md Key Decisions table.
- [Phase 19]: Always-visible three-tab layout (RouterOS, SNMP, VPN) instead of conditional two-tab
- [Phase 19]: SNMP tab requires credential profile (no manual SNMP credential entry) for operational security
- [Phase 19]: IP parsing v1 handles one-per-line only; CIDR and range expansion deferred with TODO
- [Phase 19]: Router icon for RouterOS, Network icon for SNMP -- follows lucide semantics
- [Phase 19]: device_type defaults to routeros via nullish coalescing for backward compat
- [Phase 19]: SNMP devices get their own layout branch (not stripped RouterOS) for clean first-class experience
### Pending Todos
@@ -91,6 +94,6 @@ None yet.
## Session Continuity
Last session: 2026-03-22T01:00:58.297Z
Stopped at: Completed 19-02-PLAN.md (Add Device dialog + Bulk Add)
Last session: 2026-03-22T01:06:42.462Z
Stopped at: Completed 19-04-PLAN.md (Device detail + SNMP metrics)
Resume file: None