Ejemplo n.º 1
0
import os
import argparse
from flask import current_app
from flask.ext.script import Manager
from alembic import __version__ as __alembic_version__
from alembic.config import Config as AlembicConfig
from alembic import command


alembic_version = tuple([int(v) for v in __alembic_version__.split('.')[0:3]])


class _MigrateConfig(object):
    def __init__(self, migrate, db, **kwargs):
        self.migrate = migrate
        self.db = db
        self.directory = migrate.directory
        self.configure_args = kwargs

    @property
    def metadata(self):
        """
        Backwards compatibility, in old releases app.extensions['migrate']
        was set to db, and env.py accessed app.extensions['migrate'].metadata
        """
        return self.db.metadata


class Config(AlembicConfig):
    def get_template_directory(self):
        package_dir = os.path.abspath(os.path.dirname(__file__))
Ejemplo n.º 2
0
import os
import argparse
from flask import current_app
from flask.ext.script import Manager
from alembic import __version__ as __alembic_version__
from alembic.config import Config as AlembicConfig
from alembic import command

alembic_version = tuple([int(v) for v in __alembic_version__.split('.')[0:3]])


class _MigrateConfig(object):
    def __init__(self, migrate, db, **kwargs):
        self.migrate = migrate
        self.db = db
        self.directory = migrate.directory
        self.configure_args = kwargs

    @property
    def metadata(self):
        """
        Backwards compatibility, in old releases app.extensions['migrate']
        was set to db, and env.py accessed app.extensions['migrate'].metadata
        """
        return self.db.metadata


class Config(AlembicConfig):
    def get_template_directory(self):
        package_dir = os.path.abspath(os.path.dirname(__file__))
        return os.path.join(package_dir, 'templates')
Ejemplo n.º 3
0
from ._utils import app_context_task

log = logging.getLogger(__name__)  # pylint: disable=invalid-name

try:
    from alembic import __version__ as __alembic_version__
    from alembic.config import Config as AlembicConfig
    from alembic import command
except ImportError:
    log.warning(
        "Alembic can't be imported, some app.db.* tasks won't be available!"
    )
else:

    alembic_version = tuple(
        [int(v) for v in __alembic_version__.split(".")[0:3]]
    )

    class Config(AlembicConfig):
        """
        自定义配置
        """

        def get_template_directory(self):
            package_dir = os.path.abspath(os.path.dirname(__file__))
            return os.path.join(package_dir, "db_templates")


def _get_config(directory, x_arg=None, opts=None):
    """
    预准备AlembicConfig实例
Ejemplo n.º 4
0
    hide_url_pass,
    raise_if_not_responsive,
)
from simcore_postgres_database.utils_cli import (
    DISCOVERED_CACHE,
    get_alembic_config_from_cache,
    get_service_published_port,
    load_cache,
    reset_cache,
)
from simcore_postgres_database.utils_migration import DEFAULT_INI
from tenacity import Retrying
from tenacity.after import after_log
from tenacity.wait import wait_fixed

ALEMBIC_VERSION = tuple(int(v) for v in __alembic_version__.split(".")[0:3])
DEFAULT_HOST = "postgres"
DEFAULT_PORT = 5432
DEFAULT_DB = "simcoredb"

log = logging.getLogger("root")

if __name__ == "__main__":
    # swallows up all log messages from tests
    # only enable it during cli invocation
    fileConfig(DEFAULT_INI)


@click.group()
def main():
    """Simplified CLI for database migration with alembic"""
Ejemplo n.º 5
0
"""Migrate commands using click."""

from alembic import __version__ as __alembic_version__

from .config import MigrateConfig

alembic_version = tuple(
    [int(v) for v in __alembic_version__.split('.') if v.isnumeric()])


class Migrate(object):
    """Handle migration commands."""
    def __init__(self, app=None, database=None, directory='migrations'):
        """Init object.

        :param app: Application.
        :param database: Database.
        :param directory: Migration directory.
        :return:
        """
        self.app = app
        if app is not None and database is not None:
            self.init_app(app, database, directory)

    def init_app(self, app, database, directory='migrations'):  # pylint: disable=no-self-use
        """Init app.

        :param app: Application.
        :param database: Database.
        :param directory: Migration directory.
        """
Ejemplo n.º 6
0
import alembic.command
import click
import docker
from alembic import __version__ as __alembic_version__
from alembic.config import Config as AlembicConfig
from simcore_postgres_database.models import *
from simcore_postgres_database.utils import (
    build_url,
    hide_dict_pass,
    hide_url_pass,
    raise_if_not_responsive,
)
from tenacity import Retrying, after_log, wait_fixed

alembic_version = tuple(int(v) for v in __alembic_version__.split(".")[0:3])

current_dir = Path(sys.argv[0] if __name__ ==
                   "__main__" else __file__).parent.resolve()
default_ini = current_dir / "alembic.ini"
migration_dir = current_dir / "migration"
discovered_cache = os.path.expanduser(
    "~/.simcore_postgres_database_cache.json")

log = logging.getLogger("root")

if __name__ == "__main__":
    # swallows up all log messages from tests
    # only enable it during cli invocation
    fileConfig(default_ini)