From fa32488fdf565166eaa5b8ec0c156a710d9c052e Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Fri, 5 Jun 2026 18:45:16 -0400 Subject: [PATCH] =?UTF-8?q?feat(ansible):=20AnsibleGroup=20+=20join=20tabl?= =?UTF-8?q?e=20=E2=80=94=200016=5Fansible=5Finventory=5Fgroups=20migration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../versions/0016_ansible_inventory_groups.py | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 steward/migrations/versions/0016_ansible_inventory_groups.py diff --git a/steward/migrations/versions/0016_ansible_inventory_groups.py b/steward/migrations/versions/0016_ansible_inventory_groups.py new file mode 100644 index 0000000..76c5b03 --- /dev/null +++ b/steward/migrations/versions/0016_ansible_inventory_groups.py @@ -0,0 +1,51 @@ +"""Add ansible_groups and ansible_target_groups tables + +Revision ID: 0016_ansible_inventory_groups +Revises: 0015_ansible_inventory_targets +Create Date: 2026-06-05 +""" +from typing import Sequence, Union +from alembic import op +import sqlalchemy as sa + +revision: str = "0016_ansible_inventory_groups" +down_revision: Union[str, None] = "0015_ansible_inventory_targets" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + op.create_table( + "ansible_groups", + sa.Column("id", sa.String(36), primary_key=True), + sa.Column("name", sa.String(128), nullable=False), + sa.Column("ansible_vars", sa.JSON(), nullable=False, server_default="{}"), + sa.Column( + "created_at", + sa.DateTime(timezone=True), + nullable=False, + server_default=sa.text("now()"), + ), + sa.UniqueConstraint("name", name="uq_ansible_groups_name"), + ) + op.create_table( + "ansible_target_groups", + sa.Column( + "target_id", + sa.String(36), + sa.ForeignKey("ansible_targets.id", ondelete="CASCADE"), + nullable=False, + ), + sa.Column( + "group_id", + sa.String(36), + sa.ForeignKey("ansible_groups.id", ondelete="CASCADE"), + nullable=False, + ), + sa.PrimaryKeyConstraint("target_id", "group_id"), + ) + + +def downgrade() -> None: + op.drop_table("ansible_target_groups") + op.drop_table("ansible_groups")