Architecture
Components and command execution model of Portivo.
Component model
Browser
|
v
Portivo Web UI
|
v
FastAPI application
+--> Authentication / RBAC
+--> Jobs / Audit / Fleet Audits / Scheduler
+--> Device inventory / state cache
+--> Vendor driver registry
| +--> ALE AOS 6
| +--> ALE AOS 8
+--> Per-device SSH coordinator --> OmniSwitch
+--> SNMPv3 monitoring ----------> UPS / stack telemetry
+--> SQLite database
Command execution lifecycle
- User selects an action and targets.
- The backend resolves compatibility and renders AOS-specific command templates.
- The UI displays the exact preview.
- A Job and per-device Job Items are created.
- Workers execute with bounded fleet parallelism while the same switch remains serialized through its per-device lane.
- Read-only actions stop after collection/verification.
- Configuration changes update running configuration and create pending persistent state where applicable.
- An explicit save workflow writes pending changes persistently using the AOS-family-specific save command.
Vendor driver boundary
The driver registry isolates platform identity, Netmiko transport selection, CLI rejection behavior and capability metadata. The current registry contains only AOS 6 and AOS 8 switch drivers.
Persistent data
SQLite stores current operational data and audit records. Port state cache stores latest observed state and transition timestamps, not a full time-series. Traffic graphs and long-term telemetry belong in a time-series system outside the current Portivo database design.
Concurrency and state boundaries
FastAPI serves the application and operational API. SQLite stores configuration, normalized current state and audit evidence, while in-process coordinators protect live SSH sessions. Cross-device work uses bounded parallelism; same-device work enters one strict FIFO lane.
Background availability monitoring is deliberately lighter than authenticated operations. Detailed inventory, diagnostics, audits and execution use explicit authenticated sessions.
Data-model limit
The database is not a full time-series platform. It retains current observations, transitions and bounded operational history. Long-term traffic graphs belong in a purpose-built time-series system.