122 lines
3.6 KiB
Python
122 lines
3.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
import datetime
|
|
|
|
from sqlalchemy import Column, Integer, String, DateTime, Text
|
|
from sqlalchemy.ext.declarative import declarative_base
|
|
from sqlalchemy import create_engine
|
|
from sqlalchemy.orm import sessionmaker
|
|
from sqlalchemy.orm import scoped_session
|
|
from sqlalchemy_utils import ChoiceType
|
|
|
|
import autocloud
|
|
|
|
Base = declarative_base()
|
|
|
|
|
|
class JobDetails(Base):
|
|
__tablename__ = 'job_details'
|
|
|
|
STATUS_TYPES = (
|
|
('s', 'Success'),
|
|
('f', 'Failed'),
|
|
('a', 'Aborted'),
|
|
('r', 'Running'),
|
|
('q', 'Queued')
|
|
)
|
|
|
|
IMAGE_FAMILY_TYPES = (
|
|
('b', 'Base'),
|
|
('a', 'Atomic')
|
|
)
|
|
|
|
ARCH_TYPES = (
|
|
('i386', 'i386'),
|
|
('x86_64', 'x86_64')
|
|
)
|
|
|
|
id = Column(Integer, primary_key=True)
|
|
taskid = Column(String(255), nullable=False)
|
|
status = Column(ChoiceType(STATUS_TYPES))
|
|
family = Column(ChoiceType(IMAGE_FAMILY_TYPES))
|
|
arch = Column(ChoiceType(ARCH_TYPES))
|
|
release = Column(String(255))
|
|
output = Column(Text, nullable=False, default='')
|
|
created_on = Column(DateTime, default=datetime.datetime.utcnow)
|
|
last_updated = Column(DateTime, default=datetime.datetime.utcnow)
|
|
user = Column(String(255), nullable=False)
|
|
|
|
|
|
class ComposeDetails(Base):
|
|
__tablename__ = 'compose_details'
|
|
|
|
STATUS_TYPES = (
|
|
('c', 'Complete'),
|
|
('q', 'Queued'),
|
|
('r', 'Running'),
|
|
)
|
|
id = Column(Integer, primary_key=True)
|
|
date = Column(DateTime, nullable=False)
|
|
compose_id = Column(String(255), nullable=False, unique=True)
|
|
respin = Column(Integer, nullable=False)
|
|
type = Column(String(255), nullable=False)
|
|
passed = Column(Integer, nullable=True, default=0)
|
|
failed = Column(Integer, nullable=True, default=0)
|
|
status = Column(ChoiceType(STATUS_TYPES))
|
|
created_on = Column(DateTime, default=datetime.datetime.utcnow)
|
|
last_updated = Column(DateTime, default=datetime.datetime.utcnow)
|
|
location = Column(String(255), nullable=False)
|
|
|
|
|
|
class ComposeJobDetails(Base):
|
|
__tablename__ = 'compose_job_details'
|
|
|
|
STATUS_TYPES = (
|
|
('s', 'Success'),
|
|
('f', 'Failed'),
|
|
('a', 'Aborted'),
|
|
('r', 'Running'),
|
|
('q', 'Queued')
|
|
)
|
|
|
|
IMAGE_FAMILY_TYPES = (
|
|
('b', u'Base'),
|
|
('a', u'Atomic')
|
|
)
|
|
|
|
ARCH_TYPES = (
|
|
('i386', 'i386'),
|
|
('x86_64', 'x86_64'),
|
|
('aarch64', 'aarch64')
|
|
)
|
|
|
|
id = Column(Integer, primary_key=True)
|
|
arch = Column(ChoiceType(ARCH_TYPES))
|
|
compose_id = Column(String(255), nullable=False)
|
|
created_on = Column(DateTime, default=datetime.datetime.utcnow)
|
|
family = Column(ChoiceType(IMAGE_FAMILY_TYPES))
|
|
image_url = Column(String(255), nullable=False)
|
|
last_updated = Column(DateTime, default=datetime.datetime.utcnow)
|
|
output = Column(Text, nullable=False, default='')
|
|
release = Column(String(255))
|
|
status = Column(ChoiceType(STATUS_TYPES))
|
|
subvariant = Column(String(255), nullable=False)
|
|
user = Column(String(255), nullable=False)
|
|
image_format = Column(String(255), nullable=False)
|
|
image_type = Column(String(255), nullable=False)
|
|
image_name = Column(String(255), nullable=False)
|
|
|
|
|
|
def create_tables():
|
|
# Create an engine that stores data in the local directory
|
|
engine = create_engine(autocloud.SQLALCHEMY_URI)
|
|
|
|
# Create all tables in the engine. This is equivalent to "Create Table"
|
|
# statements in raw SQL.
|
|
Base.metadata.create_all(engine)
|
|
|
|
|
|
def init_model():
|
|
engine = create_engine(autocloud.SQLALCHEMY_URI)
|
|
scopedsession = scoped_session(sessionmaker(bind=engine))
|
|
return scopedsession
|