"""SNMP devices are rows edited on the SNMP page Devices lived in plugin.yaml's config, which the UI could not edit, and a poll that failed left no trace. A row per device holds what to ask and how, and the newest poll's outcome (milestone 491). Revision ID: snmp_001_devices Revises: (none — a branch off core via depends_on) Create Date: 2026-10-08 """ from typing import Sequence, Union import sqlalchemy as sa from alembic import op revision: str = "snmp_001_devices" down_revision: Union[str, None] = None branch_labels: Union[str, Sequence[str], None] = "snmp" depends_on: Union[str, Sequence[str], None] = ("0004_app_settings",) def upgrade() -> None: op.create_table( "snmp_devices", sa.Column("id", sa.String(36), primary_key=True), sa.Column("name", sa.String(100), nullable=False, unique=True), sa.Column("address", sa.String(255), nullable=False), sa.Column("port", sa.Integer, nullable=False, server_default="161"), sa.Column("version", sa.String(3), nullable=False, server_default="2c"), sa.Column("community", sa.Text, nullable=False, server_default=""), sa.Column("v3_user", sa.String(100), nullable=False, server_default=""), sa.Column("v3_auth", sa.String(16), nullable=False, server_default="none"), sa.Column("v3_auth_key", sa.Text, nullable=False, server_default=""), sa.Column("v3_priv", sa.String(16), nullable=False, server_default="none"), sa.Column("v3_priv_key", sa.Text, nullable=False, server_default=""), sa.Column("presets", sa.JSON, nullable=False, server_default="[]"), sa.Column("interfaces", sa.String(255), nullable=False, server_default=""), sa.Column("custom", sa.Text, nullable=False, server_default=""), sa.Column("host_id", sa.String(36), nullable=True), sa.Column("created_at", sa.DateTime(timezone=True), nullable=False), sa.Column("last_polled_at", sa.DateTime(timezone=True), nullable=True), sa.Column("last_ok_at", sa.DateTime(timezone=True), nullable=True), sa.Column("last_error", sa.Text, nullable=True), sa.Column("missing", sa.JSON, nullable=False, server_default="[]"), ) def downgrade() -> None: op.drop_table("snmp_devices")