예제 #1
0
파일: migrate.py 프로젝트: henryw2019/zato
            def _reset_alembic_log(logger, config, repo_dir):
                session = get_odb_session_from_server_config(
                    config,
                    get_crypto_manager_from_server_config(config, repo_dir))

                with closing(session) as session:
                    query = 'SELECT version_num FROM alembic_version'
                    result = session.execute(query).fetchone()

                    # Check if there is any previous migration and if there is one that indicates
                    # that migrations from previous versions were run (i.e.. from 2.0), delete them.
                    if result:

                        # There will be only one row
                        current_revision = result[0]

                        # All revisions for commit d25de71c have this label in their names
                        if 'git_25de71c' not in current_revision:

                            # Log to user
                            logger.info('Removing old Alembic revisions')

                            # Actually delete
                            query = 'DELETE FROM alembic_version'
                            session.execute(query)

                    # Commit all changes
                    session.commit()
예제 #2
0
def get_client_from_server_conf(server_dir, client_auth_func, get_config_func, server_url=None):
    """ Returns a Zato client built out of data found in a given server's config files.
    """

    # To avoid circular references
    from zato.common.util import get_crypto_manager_from_server_config, get_odb_session_from_server_config

    class ZatoClient(AnyServiceInvoker):
        def __init__(self, *args, **kwargs):
            super(ZatoClient, self).__init__(*args, **kwargs)
            self.cluster_id = None
            self.odb_session = None

    repo_dir = os.path.join(os.path.abspath(os.path.join(server_dir)), 'config', 'repo')
    config = get_config_func(repo_dir, 'server.conf')

    server_url = server_url if server_url else config.main.gunicorn_bind
    client = ZatoClient('http://{}'.format(server_url),
        '/zato/admin/invoke', client_auth_func(config, repo_dir), max_response_repr=15000)

    session = get_odb_session_from_server_config(
        config, get_crypto_manager_from_server_config(config, repo_dir))

    client.cluster_id = session.query(Server).\
        filter(Server.token == config.main.token).\
        one().cluster_id

    client.odb_session = session

    return client
예제 #3
0
파일: __init__.py 프로젝트: lukeplus/zato
def get_client_from_server_conf(server_dir, client_auth_func, get_config_func, server_url=None):
    """ Returns a Zato client built out of data found in a given server's config files.
    """

    # To avoid circular references
    from zato.common.crypto import ServerCryptoManager
    from zato.common.util import get_odb_session_from_server_config, get_repo_dir_from_component_dir

    class ZatoClient(AnyServiceInvoker):
        def __init__(self, *args, **kwargs):
            super(ZatoClient, self).__init__(*args, **kwargs)
            self.cluster_id = None
            self.odb_session = None

    repo_dir = get_repo_dir_from_component_dir(server_dir)
    cm = ServerCryptoManager.from_repo_dir(None, repo_dir, None)

    secrets_conf = get_config_func(repo_dir, 'secrets.conf', needs_user_config=False)
    config = get_config_func(repo_dir, 'server.conf', crypto_manager=cm, secrets_conf=secrets_conf)
    server_url = server_url if server_url else config.main.gunicorn_bind
    client_auth = client_auth_func(config, repo_dir, cm, False)
    client = ZatoClient('http://{}'.format(server_url), '/zato/admin/invoke', client_auth, max_response_repr=15000)
    session = get_odb_session_from_server_config(config, None, False)

    client.cluster_id = session.query(Server).\
        filter(Server.token == config.main.token).\
        one().cluster_id

    client.odb_session = session

    return client
예제 #4
0
    def set_zato_client(self):

        repo_dir = os.path.join(
            os.path.abspath(os.path.join(self.server_path)), 'config', 'repo')
        config = get_config(repo_dir, 'server.conf')

        self.client = ZatoClient('http://{}'.format(config.main.gunicorn_bind),
                                 '/zato/admin/invoke',
                                 get_server_client_auth(config, repo_dir),
                                 max_response_repr=15000)

        session = get_odb_session_from_server_config(
            config, get_crypto_manager_from_server_config(config, repo_dir))

        self.client.cluster_id = session.query(odb.model.Server).\
            filter(odb.model.Server.token == config.main.token).\
            one().cluster_id

        self.client.odb_session = session

        # Sanity check
        self.client.invoke('zato.ping')


# ################################################################################################################################
예제 #5
0
    def set_zato_client(self):

        repo_dir = os.path.join(os.path.abspath(os.path.join(self.server_path)), 'config', 'repo')
        config = get_config(repo_dir, 'server.conf')

        self.client = ZatoClient('http://{}'.format(config.main.gunicorn_bind),
            '/zato/admin/invoke', get_server_client_auth(config, repo_dir), max_response_repr=15000)

        session = get_odb_session_from_server_config(
            config, get_crypto_manager_from_server_config(config, repo_dir))

        self.client.cluster_id = session.query(odb.model.Server).\
            filter(odb.model.Server.token == config.main.token).\
            one().cluster_id

        self.client.odb_session = session

        # Sanity check
        self.client.invoke('zato.ping')
예제 #6
0
    def from_server_conf(server_dir, cache_name, is_https):
        # type: (str, str, bool) -> Client
        repo_dir = get_repo_dir_from_component_dir(server_dir)
        cm = ServerCryptoManager.from_repo_dir(None, repo_dir, None)
        secrets_conf = get_config(repo_dir,
                                  'secrets.conf',
                                  needs_user_config=False)
        config = get_config(repo_dir,
                            'server.conf',
                            crypto_manager=cm,
                            secrets_conf=secrets_conf)

        session = None
        password = None

        try:
            session = get_odb_session_from_server_config(config, None, False)

            cluster = session.query(Server).\
                filter(Server.token == config.main.token).\
                one().cluster # type: Cluster

            security = session.query(HTTPBasicAuth).\
                filter(Cluster.id == HTTPBasicAuth.cluster_id).\
                filter(HTTPBasicAuth.username == CACHE.API_USERNAME).\
                filter(HTTPBasicAuth.cluster_id == cluster.id).\
                first() # type: HTTPBasicAuth

            if security:
                password = security.password

        finally:
            if session:
                session.close()

        return Client.from_dict({
            'username': CACHE.API_USERNAME,
            'password': password,
            'address': config.main.gunicorn_bind,
            'cache_name': cache_name,
            'is_https': is_https,
        })