craton/craton/cmd/dbsync.py

87 lines
2.6 KiB
Python

from oslo_config import cfg
from craton.db.sqlalchemy import migration
CONF = cfg.CONF
class DBCommand(object):
def upgrade(self):
migration.upgrade(CONF.command.revision)
def revision(self):
migration.revision(CONF.command.message, CONF.command.autogenerate)
def stamp(self):
migration.stamp(CONF.command.revision)
def version(self):
print(migration.version())
def create_schema(self):
migration.create_schema()
def bootstrap_project(self):
name = 'bootstrap'
project = migration.create_bootstrap_project(
name,
db_uri=CONF.database.connection)
user = migration.create_bootstrap_user(
project.id,
name,
db_uri=CONF.database.connection)
msg = ("\nProjectId: %s\nUsername: %s\nAPIKey: %s"
% (user.project_id, user.username, user.api_key))
print(msg)
def add_command_parsers(subparsers):
command_object = DBCommand()
parser = subparsers.add_parser(
'upgrade',
help=("Upgrade the database schema to the latest version. "
"Optionally, use --revision to specify an alembic revision "
"string to upgrade to."))
parser.set_defaults(func=command_object.upgrade)
parser.add_argument('--revision', nargs='?')
parser = subparsers.add_parser('stamp')
parser.add_argument('--revision', nargs='?')
parser.set_defaults(func=command_object.stamp)
parser = subparsers.add_parser(
'revision',
help=("Create a new alembic revision. "
"Use --message to set the message string."))
parser.add_argument('-m', '--message')
parser.add_argument('--autogenerate', action='store_true')
parser.set_defaults(func=command_object.revision)
parser = subparsers.add_parser(
'version',
help=("Print the current version information and exit."))
parser.set_defaults(func=command_object.version)
parser = subparsers.add_parser(
'create_schema',
help=("Create the database schema."))
parser.set_defaults(func=command_object.create_schema)
parser = subparsers.add_parser('bootstrap')
parser.set_defaults(func=command_object.bootstrap_project)
def main():
command_opt = cfg.SubCommandOpt('command',
title='Command',
help=('Available commands'),
handler=add_command_parsers)
CONF.register_cli_opt(command_opt)
CONF(project='craton-api')
CONF.command.func()