"""Docker disk usage + image storage tables Adds docker_disk_usage (one per-host /system/df summary row) and docker_images (the heavy-hitter image storage records). Both current-state, host-scoped, re-reported each interval. Additive create_table. Revision ID: docker_007_disk_usage Revises: docker_006_metric_rollup Create Date: 2026-06-19 """ from typing import Sequence, Union from alembic import op import sqlalchemy as sa revision: str = "docker_007_disk_usage" down_revision: Union[str, None] = "docker_006_metric_rollup" branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: op.create_table( "docker_disk_usage", sa.Column("host_id", sa.String(length=36), nullable=False), sa.Column("layers_size", sa.BigInteger(), nullable=False, server_default="0"), sa.Column("images_size", sa.BigInteger(), nullable=False, server_default="0"), sa.Column("images_reclaimable", sa.BigInteger(), nullable=False, server_default="0"), sa.Column("containers_size", sa.BigInteger(), nullable=False, server_default="0"), sa.Column("volumes_size", sa.BigInteger(), nullable=False, server_default="0"), sa.Column("build_cache_size", sa.BigInteger(), nullable=False, server_default="0"), sa.Column("images_total", sa.Integer(), nullable=False, server_default="0"), sa.Column("images_active", sa.Integer(), nullable=False, server_default="0"), sa.Column("containers_count", sa.Integer(), nullable=False, server_default="0"), sa.Column("volumes_count", sa.Integer(), nullable=False, server_default="0"), sa.Column("updated_at", sa.DateTime(timezone=True), nullable=False), sa.ForeignKeyConstraint(["host_id"], ["hosts.id"], ondelete="CASCADE"), sa.PrimaryKeyConstraint("host_id"), ) op.create_table( "docker_images", sa.Column("host_id", sa.String(length=36), nullable=False), sa.Column("image_id", sa.String(length=64), nullable=False), sa.Column("repo_tag", sa.String(length=512), nullable=False, server_default=""), sa.Column("size", sa.BigInteger(), nullable=False, server_default="0"), sa.Column("shared_size", sa.BigInteger(), nullable=False, server_default="0"), sa.Column("containers", sa.Integer(), nullable=False, server_default="0"), sa.Column("updated_at", sa.DateTime(timezone=True), nullable=False), sa.ForeignKeyConstraint(["host_id"], ["hosts.id"], ondelete="CASCADE"), sa.PrimaryKeyConstraint("host_id", "image_id"), ) def downgrade() -> None: op.drop_table("docker_images") op.drop_table("docker_disk_usage")