PillarTool/pillar_tool/db/models/pillar_data.py

52 lines
1.7 KiB
Python

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)
__table_args__ = (
UniqueConstraint('parent_id', 'name', name="pillar_parent_unique_name_parent"),
)
class PillarValue(Base):
__tablename__ = 'pillar_tool_pillar_value'
id = Column(UUID, primary_key=True)
pillar_id = Column(UUID, ForeignKey('pillar_tool_pillar.id'), nullable=False)
host_id = Column(UUID, ForeignKey('pillar_tool_host.id'), nullable=True)
host_group_id = Column(UUID, ForeignKey('pillar_tool_host_group.id'), nullable=True)
type = Column(String, nullable=False)
value = Column(String, nullable=False)
__table_args__ = (
UniqueConstraint('pillar_id', 'host_id', 'host_group_id', name='pillar_value_unique_pillar_value'),
)
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', 'parent_id', name='pillar_tool_host_group_unique_name_parent'),
)