# [DEF:debug_db_api:Module] # # @SEMANTICS: debug, api, database, script # @PURPOSE: Скрипт для отладки структуры ответа API баз данных. # @LAYER: App # @RELATION: DEPENDS_ON -> superset_tool.client # @RELATION: DEPENDS_ON -> superset_tool.utils # @PUBLIC_API: debug_database_api # [SECTION: IMPORTS] import json import logging from superset_tool.client import SupersetClient from superset_tool.utils.init_clients import setup_clients from superset_tool.utils.logger import SupersetLogger # [/SECTION] # [DEF:debug_database_api:Function] # @PURPOSE: Отладка структуры ответа API баз данных. # @RELATION: CALLS -> setup_clients # @RELATION: CALLS -> client.get_databases def debug_database_api(): logger = SupersetLogger(name="debug_db_api", level=logging.DEBUG) # Инициализируем клиенты clients = setup_clients(logger) # Log JWT bearer tokens for each client for env_name, client in clients.items(): try: # Ensure authentication (access token fetched via headers property) _ = client.headers token = client.network._tokens.get("access_token") logger.info(f"[debug_database_api][Token] Bearer token for {env_name}: {token}") except Exception as exc: logger.error(f"[debug_database_api][Token] Failed to retrieve token for {env_name}: {exc}", exc_info=True) # Проверяем доступные окружения print("Доступные окружения:") for env_name, client in clients.items(): print(f" {env_name}: {client.config.base_url}") # Выбираем два окружения для тестирования if len(clients) < 2: print("Недостаточно окружений для тестирования") return env_names = list(clients.keys())[:2] from_env, to_env = env_names[0], env_names[1] from_client = clients[from_env] to_client = clients[to_env] print(f"\nТестируем API для окружений: {from_env} -> {to_env}") try: # Получаем список баз данных из первого окружения print(f"\nПолучаем список БД из {from_env}:") count, dbs = from_client.get_databases() print(f"Найдено {count} баз данных") print("Полный ответ API:") print(json.dumps({"count": count, "result": dbs}, indent=2, ensure_ascii=False)) # Получаем список баз данных из второго окружения print(f"\nПолучаем список БД из {to_env}:") count, dbs = to_client.get_databases() print(f"Найдено {count} баз данных") print("Полный ответ API:") print(json.dumps({"count": count, "result": dbs}, indent=2, ensure_ascii=False)) except Exception as e: print(f"Ошибка при тестировании API: {e}") import traceback traceback.print_exc() # [/DEF:debug_database_api:Function] if __name__ == "__main__": debug_database_api() # [/DEF:debug_db_api:Module]