Initial public ModelForge release
This commit is contained in:
@@ -0,0 +1,194 @@
|
||||
"""M1 hardware plane persistence.
|
||||
|
||||
Revision ID: 20260824_0002
|
||||
Revises: 20260824_0001
|
||||
"""
|
||||
|
||||
import sqlalchemy as sa
|
||||
|
||||
from alembic import op
|
||||
|
||||
revision = "20260824_0002"
|
||||
down_revision = "20260824_0001"
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
for column in (
|
||||
sa.Column("display_name", sa.String(255), nullable=False, server_default=""),
|
||||
sa.Column("identity_source", sa.String(32), nullable=False, server_default="unknown"),
|
||||
sa.Column("os_name", sa.String(128)),
|
||||
sa.Column("os_version", sa.Text()),
|
||||
sa.Column("architecture", sa.String(128)),
|
||||
sa.Column("kernel_version", sa.String(255)),
|
||||
sa.Column("cpu_model", sa.String(255)),
|
||||
sa.Column("logical_cpu_count", sa.Integer()),
|
||||
sa.Column("physical_core_count", sa.Integer()),
|
||||
sa.Column("total_ram_bytes", sa.BigInteger()),
|
||||
sa.Column("agent_version", sa.String(64)),
|
||||
sa.Column("status_reason", sa.Text()),
|
||||
sa.Column(
|
||||
"first_seen_at",
|
||||
sa.DateTime(timezone=True),
|
||||
nullable=False,
|
||||
server_default=sa.func.now(),
|
||||
),
|
||||
sa.Column("inventory_at", sa.DateTime(timezone=True)),
|
||||
):
|
||||
op.add_column("compute_nodes", column)
|
||||
for column in (
|
||||
sa.Column("pci_bus_id", sa.String(64)),
|
||||
sa.Column("vendor", sa.String(64), nullable=False, server_default="NVIDIA"),
|
||||
sa.Column("architecture", sa.String(64)),
|
||||
sa.Column("compute_capability_major", sa.Integer()),
|
||||
sa.Column("compute_capability_minor", sa.Integer()),
|
||||
sa.Column("total_vram_bytes", sa.BigInteger()),
|
||||
sa.Column("mig_mode_current", sa.Boolean()),
|
||||
sa.Column("status", sa.String(32), nullable=False, server_default="active"),
|
||||
sa.Column("status_reason", sa.Text()),
|
||||
sa.Column("inventory_source", sa.String(32), nullable=False, server_default="nvidia_nvml"),
|
||||
sa.Column(
|
||||
"first_seen_at",
|
||||
sa.DateTime(timezone=True),
|
||||
nullable=False,
|
||||
server_default=sa.func.now(),
|
||||
),
|
||||
sa.Column("last_seen_at", sa.DateTime(timezone=True)),
|
||||
sa.Column("inventory_at", sa.DateTime(timezone=True)),
|
||||
):
|
||||
op.add_column("accelerators", column)
|
||||
op.create_table(
|
||||
"host_telemetry_latest",
|
||||
sa.Column(
|
||||
"compute_node_id",
|
||||
sa.Uuid(),
|
||||
sa.ForeignKey("compute_nodes.id", ondelete="CASCADE"),
|
||||
nullable=False,
|
||||
unique=True,
|
||||
),
|
||||
sa.Column("available_ram_bytes", sa.BigInteger()),
|
||||
sa.Column("availability", sa.JSON(), nullable=False),
|
||||
sa.Column("observed_at", sa.DateTime(timezone=True), nullable=False),
|
||||
sa.Column("id", sa.Uuid(), primary_key=True),
|
||||
)
|
||||
op.create_index(
|
||||
"ix_host_telemetry_latest_compute_node_id",
|
||||
"host_telemetry_latest",
|
||||
["compute_node_id"],
|
||||
unique=True,
|
||||
)
|
||||
op.create_table(
|
||||
"accelerator_telemetry_latest",
|
||||
sa.Column(
|
||||
"accelerator_id",
|
||||
sa.Uuid(),
|
||||
sa.ForeignKey("accelerators.id", ondelete="CASCADE"),
|
||||
nullable=False,
|
||||
unique=True,
|
||||
),
|
||||
sa.Column("used_vram_bytes", sa.BigInteger()),
|
||||
sa.Column("free_vram_bytes", sa.BigInteger()),
|
||||
sa.Column("gpu_utilization_percent", sa.Integer()),
|
||||
sa.Column("memory_utilization_percent", sa.Integer()),
|
||||
sa.Column("temperature_c", sa.Integer()),
|
||||
sa.Column("power_draw_w", sa.Float()),
|
||||
sa.Column("power_limit_w", sa.Float()),
|
||||
sa.Column("graphics_clock_mhz", sa.Integer()),
|
||||
sa.Column("memory_clock_mhz", sa.Integer()),
|
||||
sa.Column("fan_speed_percent", sa.Integer()),
|
||||
sa.Column("performance_state", sa.String(32)),
|
||||
sa.Column("availability", sa.JSON(), nullable=False),
|
||||
sa.Column("observed_at", sa.DateTime(timezone=True), nullable=False),
|
||||
sa.Column("id", sa.Uuid(), primary_key=True),
|
||||
)
|
||||
op.create_index(
|
||||
"ix_accelerator_telemetry_latest_accelerator_id",
|
||||
"accelerator_telemetry_latest",
|
||||
["accelerator_id"],
|
||||
unique=True,
|
||||
)
|
||||
op.create_table(
|
||||
"storage_volume_states",
|
||||
sa.Column(
|
||||
"compute_node_id",
|
||||
sa.Uuid(),
|
||||
sa.ForeignKey("compute_nodes.id", ondelete="CASCADE"),
|
||||
nullable=False,
|
||||
),
|
||||
sa.Column("purpose", sa.String(64), nullable=False),
|
||||
sa.Column("path", sa.Text(), nullable=False),
|
||||
sa.Column("total_bytes", sa.BigInteger()),
|
||||
sa.Column("used_bytes", sa.BigInteger()),
|
||||
sa.Column("free_bytes", sa.BigInteger()),
|
||||
sa.Column("availability", sa.JSON(), nullable=False),
|
||||
sa.Column("observed_at", sa.DateTime(timezone=True), nullable=False),
|
||||
sa.Column("id", sa.Uuid(), primary_key=True),
|
||||
sa.UniqueConstraint("compute_node_id", "purpose", "path", name="uq_node_storage_path"),
|
||||
)
|
||||
op.create_index(
|
||||
"ix_storage_volume_states_compute_node_id", "storage_volume_states", ["compute_node_id"]
|
||||
)
|
||||
op.create_table(
|
||||
"hardware_inventory_runs",
|
||||
sa.Column(
|
||||
"compute_node_id", sa.Uuid(), sa.ForeignKey("compute_nodes.id", ondelete="SET NULL")
|
||||
),
|
||||
sa.Column("status", sa.String(32), nullable=False),
|
||||
sa.Column("source", sa.String(64), nullable=False),
|
||||
sa.Column("fingerprint", sa.String(64)),
|
||||
sa.Column("summary", sa.JSON(), nullable=False),
|
||||
sa.Column("error", sa.Text()),
|
||||
sa.Column("started_at", sa.DateTime(timezone=True), nullable=False),
|
||||
sa.Column("completed_at", sa.DateTime(timezone=True)),
|
||||
sa.Column("id", sa.Uuid(), primary_key=True),
|
||||
)
|
||||
op.create_index(
|
||||
"ix_hardware_inventory_runs_compute_node_id", "hardware_inventory_runs", ["compute_node_id"]
|
||||
)
|
||||
op.create_index(
|
||||
"ix_hardware_inventory_runs_fingerprint", "hardware_inventory_runs", ["fingerprint"]
|
||||
)
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
for table in (
|
||||
"hardware_inventory_runs",
|
||||
"storage_volume_states",
|
||||
"accelerator_telemetry_latest",
|
||||
"host_telemetry_latest",
|
||||
):
|
||||
op.drop_table(table)
|
||||
for column in (
|
||||
"inventory_at",
|
||||
"last_seen_at",
|
||||
"first_seen_at",
|
||||
"inventory_source",
|
||||
"status_reason",
|
||||
"status",
|
||||
"mig_mode_current",
|
||||
"total_vram_bytes",
|
||||
"compute_capability_minor",
|
||||
"compute_capability_major",
|
||||
"architecture",
|
||||
"vendor",
|
||||
"pci_bus_id",
|
||||
):
|
||||
op.drop_column("accelerators", column)
|
||||
for column in (
|
||||
"inventory_at",
|
||||
"first_seen_at",
|
||||
"status_reason",
|
||||
"agent_version",
|
||||
"total_ram_bytes",
|
||||
"physical_core_count",
|
||||
"logical_cpu_count",
|
||||
"cpu_model",
|
||||
"kernel_version",
|
||||
"architecture",
|
||||
"os_version",
|
||||
"os_name",
|
||||
"identity_source",
|
||||
"display_name",
|
||||
):
|
||||
op.drop_column("compute_nodes", column)
|
||||
Reference in New Issue
Block a user