migration all
This commit is contained in:
@@ -25,85 +25,10 @@ from superset_tool.models import SupersetConfig
|
|||||||
from superset_tool.client import SupersetClient
|
from superset_tool.client import SupersetClient
|
||||||
from superset_tool.utils.logger import SupersetLogger
|
from superset_tool.utils.logger import SupersetLogger
|
||||||
from superset_tool.utils.fileio import save_and_unpack_dashboard, archive_exports, sanitize_filename,consolidate_archive_folders,remove_empty_directories
|
from superset_tool.utils.fileio import save_and_unpack_dashboard, archive_exports, sanitize_filename,consolidate_archive_folders,remove_empty_directories
|
||||||
|
from superset_tool.utils.init_clients import setup_clients
|
||||||
# [COHERENCE_CHECK_PASSED] Все необходимые модули импортированы и согласованы.
|
# [COHERENCE_CHECK_PASSED] Все необходимые модули импортированы и согласованы.
|
||||||
|
|
||||||
# [FUNCTION] setup_clients
|
|
||||||
# @contract: Инициализирует и возвращает SupersetClient для каждого заданного окружения.
|
|
||||||
# @pre:
|
|
||||||
# - `keyring` должен содержать необходимые пароли для "dev migrate", "prod migrate", "sandbox migrate".
|
|
||||||
# - `logger` должен быть инициализирован.
|
|
||||||
# @post:
|
|
||||||
# - Возвращает словарь {env_name: SupersetClient_instance}.
|
|
||||||
# - Логирует успешную инициализацию или ошибку.
|
|
||||||
# @raise:
|
|
||||||
# - `Exception`: При любой ошибке в процессе инициализации клиентов (например, отсутствие пароля в keyring, проблемы с сетью при первой аутентификации).
|
|
||||||
def setup_clients(logger: SupersetLogger):
|
|
||||||
"""Инициализация клиентов для разных окружений"""
|
|
||||||
# [ANCHOR] CLIENTS_INITIALIZATION
|
|
||||||
clients = {}
|
|
||||||
try:
|
|
||||||
# [INFO] Инициализация конфигурации для Dev
|
|
||||||
dev_config = SupersetConfig(
|
|
||||||
base_url="https://devta.bi.dwh.rusal.com/api/v1",
|
|
||||||
auth={
|
|
||||||
"provider": "db",
|
|
||||||
"username": "migrate_user",
|
|
||||||
"password": keyring.get_password("system", "dev migrate"),
|
|
||||||
"refresh": True
|
|
||||||
},
|
|
||||||
verify_ssl=False
|
|
||||||
)
|
|
||||||
# [DEBUG] Dev config created: {dev_config.base_url}
|
|
||||||
|
|
||||||
# [INFO] Инициализация конфигурации для Prod
|
|
||||||
prod_config = SupersetConfig(
|
|
||||||
base_url="https://prodta.bi.dwh.rusal.com/api/v1",
|
|
||||||
auth={
|
|
||||||
"provider": "db",
|
|
||||||
"username": "migrate_user",
|
|
||||||
"password": keyring.get_password("system", "prod migrate"),
|
|
||||||
"refresh": True
|
|
||||||
},
|
|
||||||
verify_ssl=False
|
|
||||||
)
|
|
||||||
# [DEBUG] Prod config created: {prod_config.base_url}
|
|
||||||
|
|
||||||
# [INFO] Инициализация конфигурации для Sandbox
|
|
||||||
sandbox_config = SupersetConfig(
|
|
||||||
base_url="https://sandboxta.bi.dwh.rusal.com/api/v1",
|
|
||||||
auth={
|
|
||||||
"provider": "db",
|
|
||||||
"username": "migrate_user",
|
|
||||||
"password": keyring.get_password("system", "sandbox migrate"),
|
|
||||||
"refresh": True
|
|
||||||
},
|
|
||||||
verify_ssl=False
|
|
||||||
)
|
|
||||||
# [DEBUG] Sandbox config created: {sandbox_config.base_url}
|
|
||||||
|
|
||||||
# [INFO] Инициализация конфигурации для Preprod
|
|
||||||
preprod_config = SupersetConfig(
|
|
||||||
base_url="https://preprodta.bi.dwh.rusal.com/api/v1",
|
|
||||||
auth={
|
|
||||||
"provider": "db",
|
|
||||||
"username": "migrate_user",
|
|
||||||
"password": keyring.get_password("system", "preprod migrate"),
|
|
||||||
"refresh": True
|
|
||||||
},
|
|
||||||
verify_ssl=False
|
|
||||||
)
|
|
||||||
# [DEBUG] Sandbox config created: {sandbox_config.base_url}
|
|
||||||
|
|
||||||
# [INFO] Создание экземпляров SupersetClient
|
|
||||||
clients['dev'] = SupersetClient(dev_config, logger)
|
|
||||||
clients['sbx'] = SupersetClient(sandbox_config,logger)
|
|
||||||
clients['prod'] = SupersetClient(prod_config,logger)
|
|
||||||
clients['preprod'] = SupersetClient(preprod_config,logger)
|
|
||||||
logger.info("[COHERENCE_CHECK_PASSED] Клиенты для окружений успешно инициализированы", extra={"envs": list(clients.keys())})
|
|
||||||
return clients
|
|
||||||
except Exception as e:
|
|
||||||
logger.error(f"[ERROR] Ошибка инициализации клиентов: {str(e)}", exc_info=True)
|
|
||||||
raise
|
|
||||||
|
|
||||||
# [FUNCTION] backup_dashboards
|
# [FUNCTION] backup_dashboards
|
||||||
def backup_dashboards(client: SupersetClient,
|
def backup_dashboards(client: SupersetClient,
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import logging
|
|||||||
from superset_tool.client import SupersetClient
|
from superset_tool.client import SupersetClient
|
||||||
from superset_tool.models import SupersetConfig
|
from superset_tool.models import SupersetConfig
|
||||||
from superset_tool.utils.logger import SupersetLogger
|
from superset_tool.utils.logger import SupersetLogger
|
||||||
|
from superset_tool.utils.init_clients import setup_clients
|
||||||
|
|
||||||
# [IMPORTS] Сторонние библиотеки
|
# [IMPORTS] Сторонние библиотеки
|
||||||
import keyring
|
import keyring
|
||||||
@@ -22,77 +23,6 @@ import keyring
|
|||||||
SearchResult = Dict[str, List[Dict[str, str]]]
|
SearchResult = Dict[str, List[Dict[str, str]]]
|
||||||
SearchPattern = str
|
SearchPattern = str
|
||||||
|
|
||||||
def setup_clients(logger: SupersetLogger):
|
|
||||||
# [FUNCTION] setup_clients
|
|
||||||
# [CONTRACT]
|
|
||||||
"""
|
|
||||||
Инициализация клиентов SupersetClient для разных окружений (dev, sbx, prod).
|
|
||||||
|
|
||||||
@pre:
|
|
||||||
- `logger` является инициализированным экземпляром SupersetLogger.
|
|
||||||
- Учетные данные для каждого окружения доступны через `keyring`.
|
|
||||||
@post:
|
|
||||||
- Возвращает словарь с инициализированными экземплярами SupersetClient для 'dev', 'sbx', 'prod'.
|
|
||||||
- Каждый клиент аутентифицирован.
|
|
||||||
@side_effects:
|
|
||||||
- Выполняет запросы к Superset API для аутентификации.
|
|
||||||
- Использует `keyring` для получения паролей.
|
|
||||||
- Логирует процесс инициализации и ошибки.
|
|
||||||
@raise:
|
|
||||||
- Exception: При ошибке инициализации клиента или аутентификации.
|
|
||||||
"""
|
|
||||||
# [ANCHOR] CLIENTS_INITIALIZATION
|
|
||||||
clients = {}
|
|
||||||
try:
|
|
||||||
# [INFO] Инициализация конфигурации для Dev
|
|
||||||
dev_config = SupersetConfig(
|
|
||||||
base_url="https://devta.bi.dwh.rusal.com/api/v1",
|
|
||||||
auth={
|
|
||||||
"provider": "db",
|
|
||||||
"username": "migrate_user",
|
|
||||||
"password": keyring.get_password("system", "dev migrate"),
|
|
||||||
"refresh": True
|
|
||||||
},
|
|
||||||
verify_ssl=False
|
|
||||||
)
|
|
||||||
# [DEBUG] Dev config created: {dev_config.base_url}
|
|
||||||
|
|
||||||
# [INFO] Инициализация конфигурации для Prod
|
|
||||||
prod_config = SupersetConfig(
|
|
||||||
base_url="https://prodta.bi.dwh.rusal.com/api/v1",
|
|
||||||
auth={
|
|
||||||
"provider": "db",
|
|
||||||
"username": "migrate_user",
|
|
||||||
"password": keyring.get_password("system", "prod migrate"),
|
|
||||||
"refresh": True
|
|
||||||
},
|
|
||||||
verify_ssl=False
|
|
||||||
)
|
|
||||||
# [DEBUG] Prod config created: {prod_config.base_url}
|
|
||||||
|
|
||||||
# [INFO] Инициализация конфигурации для Sandbox
|
|
||||||
sandbox_config = SupersetConfig(
|
|
||||||
base_url="https://sandboxta.bi.dwh.rusal.com/api/v1",
|
|
||||||
auth={
|
|
||||||
"provider": "db",
|
|
||||||
"username": "migrate_user",
|
|
||||||
"password": keyring.get_password("system", "sandbox migrate"),
|
|
||||||
"refresh": True
|
|
||||||
},
|
|
||||||
verify_ssl=False
|
|
||||||
)
|
|
||||||
# [DEBUG] Sandbox config created: {sandbox_config.base_url}
|
|
||||||
|
|
||||||
# [INFO] Создание экземпляров SupersetClient
|
|
||||||
clients['dev'] = SupersetClient(dev_config, logger)
|
|
||||||
clients['sbx'] = SupersetClient(sandbox_config,logger)
|
|
||||||
clients['prod'] = SupersetClient(prod_config,logger)
|
|
||||||
logger.info("[COHERENCE_CHECK_PASSED] Клиенты для окружений успешно инициализированы", extra={"envs": list(clients.keys())})
|
|
||||||
return clients
|
|
||||||
except Exception as e:
|
|
||||||
logger.error(f"[ERROR] Ошибка инициализации клиентов: {str(e)}", exc_info=True)
|
|
||||||
raise
|
|
||||||
|
|
||||||
def search_datasets(
|
def search_datasets(
|
||||||
client: SupersetClient,
|
client: SupersetClient,
|
||||||
search_pattern: str,
|
search_pattern: str,
|
||||||
|
|||||||
Reference in New Issue
Block a user