from superset_tool.models import SupersetConfig from superset_tool.client import SupersetClient from superset_tool.exceptions import AuthenticationError from superset_tool.utils.fileio import save_and_unpack_dashboard, update_db_yaml, archive_exports, sync_for_git import os import keyring from pathlib import Path database_config={"PROD": { "database_name": "Prod Clickhouse", "sqlalchemy_uri": "clickhousedb+connect://clicketl:XXXXXXXXXX@rgm-s-khclk.hq.root.ad:443/dm", "uuid": "b9b67cb5-9874-4dc6-87bd-354fc33be6f9", "allow_ctas": "true", "allow_cvas": "true", "allow_dml": "true" }, "DEV": { "database_name": "Dev Clickhouse", "sqlalchemy_uri": "clickhousedb+connect://dwhuser:XXXXXXXXXX@10.66.229.179:8123/dm", "uuid": "b9b67cb5-9874-4dc6-87bd-354fc33be6f9", "database_uuid": "b9b67cb5-9874-4dc6-87bd-354fc33be6f9", "allow_ctas": "true", "allow_cvas": "true", "allow_dml": "true" } } # Конфигурация для 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 ) # Конфигурация для 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 ) # Конфигурация для 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 ) # Инициализация клиента dev_client = SupersetClient(dev_config) #prod_client = SupersetClient(prod_config) dashboard_slug = "IM0010" #dashboard_id = 53 dashboard_meta = dev_client.get_dashboard(dashboard_slug) print(dashboard_meta) # print(dashboard_meta["dashboard_title"]) #dashboard_id = dashboard_meta["id"] # zip_content, filename = prod_client.export_dashboard(dashboard_id) # superset_repo = "H:\\Superset\\repo\\" # # print(f"Экспортируем дашборд ID = {dashboard_id}...") # # #Сохранение и распаковка # zip_path, unpacked_path = save_and_unpack_dashboard( # zip_content=zip_content, # original_filename=filename, # output_dir=f"dashboards\{dashboard_slug}" # ) # dest_path = os.path.join(superset_repo,dashboard_slug) # source_path = os.path.join(unpacked_path,Path(filename).stem) # print(dest_path) # print(source_path) # sync_for_git(source_path=source_path,destination_path=dest_path,verbose=True) # print(f"Сохранено в: {zip_path}") # print(f"Распаковано в: {unpacked_path}") # update_db_yaml(prod_config.database_config, path = unpacked_path,verbose=False) # prod_client.import_dashboard(zip_path) # archive_exports("dashboards", max_files=3)