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()
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
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
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') # ################################################################################################################################
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')
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, })