staccato/staccato/db/models.py
John Bresnahan e11dcc65ea Fixing errors with tox config and pep8 errors
Change-Id: Iddbd796457a4d3d9e53d5ad08273b6825fd44f5b
2013-09-11 14:35:42 -10:00

55 lines
1.7 KiB
Python

"""
SQLAlchemy models for staccato data
"""
from sqlalchemy import Column
from sqlalchemy import DateTime
from sqlalchemy import Integer
from sqlalchemy import PickleType
from sqlalchemy import String
from sqlalchemy.ext.declarative import declarative_base
from staccato.openstack.common import timeutils
from staccato.openstack.common import uuidutils
BASE = declarative_base()
class ModelBase(object):
"""Base class for Nova and Glance Models"""
__table_args__ = {'mysql_engine': 'InnoDB'}
__table_initialized__ = False
__protected_attributes__ = set([
"created_at", "updated_at"])
created_at = Column(DateTime, default=timeutils.utcnow,
nullable=False)
updated_at = Column(DateTime, default=timeutils.utcnow,
nullable=False, onupdate=timeutils.utcnow)
class XferRequest(BASE, ModelBase):
__tablename__ = 'xfer_requests'
id = Column(String(36), primary_key=True, default=uuidutils.generate_uuid)
srcurl = Column(String(2048), nullable=False)
dsturl = Column(String(2048), nullable=False)
owner = Column(String(128), nullable=False)
src_module_name = Column(String(512), nullable=False)
dst_module_name = Column(String(512), nullable=False)
state = Column(Integer(), nullable=False)
start_ndx = Column(Integer(), nullable=False, default=0)
next_ndx = Column(Integer(), nullable=False)
end_ndx = Column(Integer(), nullable=False, default=-1)
# TODO add protocol specific json documents
source_opts = Column(PickleType())
dest_opts = Column(PickleType())
executor_uuid = Column(String(512), nullable=True)
def register_models(engine):
models = (XferRequest,)
for model in models:
model.metadata.create_all(engine)