Skip to content
Snippets Groups Projects
Commit 160cbfad authored by Francesco Siddi's avatar Francesco Siddi
Browse files

Initial database migrations for server

parent e696eebc
No related branches found
No related tags found
No related merge requests found
......@@ -12,5 +12,4 @@ venv/
config.py
/brender/config.py
/brender/server/render
/brender/server/migrations
/brender/manager/migrations
Generic single-database configuration.
\ No newline at end of file
# A generic, single database configuration.
[alembic]
# template used to generate migration files
# file_template = %%(rev)s_%%(slug)s
# set to 'true' to run the environment during
# the 'revision' command, regardless of autogenerate
# revision_environment = false
# Logging configuration
[loggers]
keys = root,sqlalchemy,alembic
[handlers]
keys = console
[formatters]
keys = generic
[logger_root]
level = WARN
handlers = console
qualname =
[logger_sqlalchemy]
level = WARN
handlers =
qualname = sqlalchemy.engine
[logger_alembic]
level = INFO
handlers =
qualname = alembic
[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = generic
[formatter_generic]
format = %(levelname)-5.5s [%(name)s] %(message)s
datefmt = %H:%M:%S
from __future__ import with_statement
from alembic import context
from sqlalchemy import engine_from_config, pool
from logging.config import fileConfig
# this is the Alembic Config object, which provides
# access to the values within the .ini file in use.
config = context.config
# Interpret the config file for Python logging.
# This line sets up loggers basically.
fileConfig(config.config_file_name)
# add your model's MetaData object here
# for 'autogenerate' support
# from myapp import mymodel
# target_metadata = mymodel.Base.metadata
from flask import current_app
config.set_main_option('sqlalchemy.url', current_app.config.get('SQLALCHEMY_DATABASE_URI'))
target_metadata = current_app.extensions['migrate'].db.metadata
# other values from the config, defined by the needs of env.py,
# can be acquired:
# my_important_option = config.get_main_option("my_important_option")
# ... etc.
def run_migrations_offline():
"""Run migrations in 'offline' mode.
This configures the context with just a URL
and not an Engine, though an Engine is acceptable
here as well. By skipping the Engine creation
we don't even need a DBAPI to be available.
Calls to context.execute() here emit the given string to the
script output.
"""
url = config.get_main_option("sqlalchemy.url")
context.configure(url=url)
with context.begin_transaction():
context.run_migrations()
def run_migrations_online():
"""Run migrations in 'online' mode.
In this scenario we need to create an Engine
and associate a connection with the context.
"""
engine = engine_from_config(
config.get_section(config.config_ini_section),
prefix='sqlalchemy.',
poolclass=pool.NullPool)
connection = engine.connect()
context.configure(
connection=connection,
target_metadata=target_metadata
)
try:
with context.begin_transaction():
context.run_migrations()
finally:
connection.close()
if context.is_offline_mode():
run_migrations_offline()
else:
run_migrations_online()
"""${message}
Revision ID: ${up_revision}
Revises: ${down_revision}
Create Date: ${create_date}
"""
# revision identifiers, used by Alembic.
revision = ${repr(up_revision)}
down_revision = ${repr(down_revision)}
from alembic import op
import sqlalchemy as sa
${imports if imports else ""}
def upgrade():
${upgrades if upgrades else "pass"}
def downgrade():
${downgrades if downgrades else "pass"}
"""initial setup
Revision ID: 3fc5f3e23c05
Revises: None
Create Date: 2015-01-06 15:33:40.891617
"""
# revision identifiers, used by Alembic.
revision = '3fc5f3e23c05'
down_revision = None
from alembic import op
import sqlalchemy as sa
def upgrade():
op.create_table('setting',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('name', sa.String(length=128), nullable=True),
sa.Column('value', sa.String(length=128), nullable=True),
sa.PrimaryKeyConstraint('id')
)
op.create_table('project',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('name', sa.String(length=120), nullable=True),
sa.Column('path_server', sa.Text(), nullable=True),
sa.Column('path_linux', sa.Text(), nullable=True),
sa.Column('path_win', sa.Text(), nullable=True),
sa.Column('path_osx', sa.Text(), nullable=True),
sa.PrimaryKeyConstraint('id')
)
op.create_table('manager',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('ip_address', sa.String(length=15), nullable=True),
sa.Column('port', sa.Integer(), nullable=True),
sa.Column('name', sa.String(length=50), nullable=True),
sa.Column('total_workers', sa.Integer(), nullable=True),
sa.PrimaryKeyConstraint('id'),
sa.UniqueConstraint('ip_address', 'port', name='connection_uix')
)
op.create_table('worker',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('mac_address', sa.Integer(), nullable=True),
sa.Column('hostname', sa.String(length=120), nullable=True),
sa.Column('status', sa.String(length=60), nullable=True),
sa.Column('warning', sa.Boolean(), nullable=True),
sa.Column('config', sa.String(length=120), nullable=True),
sa.Column('system', sa.String(length=120), nullable=True),
sa.Column('ip_address', sa.String(length=32), nullable=True),
sa.Column('connection', sa.String(length=64), nullable=True),
sa.PrimaryKeyConstraint('id'),
sa.UniqueConstraint('ip_address')
)
op.create_table('job',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('project_id', sa.Integer(), nullable=True),
sa.Column('frame_start', sa.Integer(), nullable=True),
sa.Column('frame_end', sa.Integer(), nullable=True),
sa.Column('chunk_size', sa.Integer(), nullable=True),
sa.Column('current_frame', sa.Integer(), nullable=True),
sa.Column('name', sa.String(length=120), nullable=True),
sa.Column('filepath', sa.String(length=256), nullable=True),
sa.Column('render_settings', sa.String(length=120), nullable=True),
sa.Column('format', sa.String(length=10), nullable=True),
sa.Column('status', sa.String(length=64), nullable=True),
sa.Column('priority', sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(['project_id'], ['project.id'], ),
sa.PrimaryKeyConstraint('id')
)
op.create_table('task',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('job_id', sa.Integer(), nullable=True),
sa.Column('manager_id', sa.Integer(), nullable=True),
sa.Column('chunk_start', sa.Integer(), nullable=True),
sa.Column('chunk_end', sa.Integer(), nullable=True),
sa.Column('current_frame', sa.Integer(), nullable=True),
sa.Column('status', sa.String(length=64), nullable=True),
sa.Column('priority', sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(['job_id'], ['job.id'], ),
sa.PrimaryKeyConstraint('id')
)
def downgrade():
op.drop_table('task')
op.drop_table('job')
op.drop_table('worker')
op.drop_table('manager')
op.drop_table('project')
op.drop_table('setting')
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment