added pillar structure to database

This commit is contained in:
Linus Vogel 2025-12-27 19:59:27 +01:00
parent 5393ea5669
commit 9d4123a734
3 changed files with 113 additions and 1 deletions

View File

@ -0,0 +1,68 @@
"""added pillar structure
Revision ID: 678356102624
Revises: 4cc7f4e295f1
Create Date: 2025-12-27 19:58:09.382682
"""
from typing import Sequence, Union
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision: str = '678356102624'
down_revision: Union[str, Sequence[str], None] = '4cc7f4e295f1'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None:
"""Upgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.create_table('pillar_tool_host_group',
sa.Column('id', sa.UUID(), nullable=False),
sa.Column('name', sa.String(), nullable=False),
sa.Column('parent_id', sa.UUID(), nullable=True),
sa.ForeignKeyConstraint(['parent_id'], ['pillar_tool_host_group.id'], ),
sa.PrimaryKeyConstraint('id'),
sa.UniqueConstraint('name', name='pillar_tool_host_group_unique_name')
)
op.create_table('pillar_tool_pillar',
sa.Column('id', sa.UUID(), nullable=False),
sa.Column('name', sa.String(), nullable=False),
sa.Column('parent_id', sa.UUID(), nullable=True),
sa.ForeignKeyConstraint(['parent_id'], ['pillar_tool_pillar.id'], ),
sa.PrimaryKeyConstraint('id')
)
op.create_table('pillar_tool_host',
sa.Column('id', sa.UUID(), nullable=False),
sa.Column('name', sa.String(), nullable=False),
sa.Column('host_group_id', sa.UUID(), nullable=True),
sa.ForeignKeyConstraint(['host_group_id'], ['pillar_tool_host_group.id'], ),
sa.PrimaryKeyConstraint('id'),
sa.UniqueConstraint('name', name='pillar_tool_host_unique_name')
)
op.create_table('pillar_tool_pillar_value',
sa.Column('pillar_id', sa.UUID(), nullable=False),
sa.Column('host_id', sa.UUID(), nullable=False),
sa.Column('host_group_id', sa.UUID(), nullable=False),
sa.Column('type', sa.String(), nullable=False),
sa.Column('value', sa.String(), nullable=False),
sa.ForeignKeyConstraint(['host_group_id'], ['pillar_tool_host_group.id'], ),
sa.ForeignKeyConstraint(['host_id'], ['pillar_tool_host.id'], ),
sa.ForeignKeyConstraint(['pillar_id'], ['pillar_tool_pillar.id'], ),
sa.PrimaryKeyConstraint('pillar_id', 'host_id', 'host_group_id')
)
# ### end Alembic commands ###
def downgrade() -> None:
"""Downgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.drop_table('pillar_tool_pillar_value')
op.drop_table('pillar_tool_host')
op.drop_table('pillar_tool_pillar')
op.drop_table('pillar_tool_host_group')
# ### end Alembic commands ###

View File

@ -1 +1,2 @@
from .user import *
from .pillar_data import *

View File

@ -0,0 +1,43 @@
from pillar_tool.db.base_model import Base
from sqlalchemy import Column, UUID, String, ForeignKey, UniqueConstraint
class Pillar(Base):
__tablename__ = 'pillar_tool_pillar'
id = Column(UUID, primary_key=True)
name = Column(String, nullable=False)
parent_id = Column(UUID, ForeignKey('pillar_tool_pillar.id'), nullable=True)
class PillarValue(Base):
__tablename__ = 'pillar_tool_pillar_value'
pillar_id = Column(UUID, ForeignKey('pillar_tool_pillar.id'), primary_key=True)
host_id = Column(UUID, ForeignKey('pillar_tool_host.id'), primary_key=True)
host_group_id = Column(UUID, ForeignKey('pillar_tool_host_group.id'), primary_key=True)
type = Column(String, nullable=False)
value = Column(String, nullable=False)
class Host(Base):
__tablename__ = 'pillar_tool_host'
id = Column(UUID, primary_key=True)
name = Column(String, nullable=False)
host_group_id = Column(UUID, ForeignKey('pillar_tool_host_group.id'), nullable=True)
__table_args__ = (
UniqueConstraint('name', name='pillar_tool_host_unique_name'),
)
class HostGroup(Base):
__tablename__ = 'pillar_tool_host_group'
id = Column(UUID, primary_key=True)
name = Column(String, nullable=False)
parent_id = Column(UUID, ForeignKey('pillar_tool_host_group.id'), nullable=True)
__table_args__ = (
UniqueConstraint('name', name='pillar_tool_host_group_unique_name'),
)