100 lines
3.5 KiB
Python
100 lines
3.5 KiB
Python
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)
|