add debug for retention

This commit is contained in:
Volobuev Andrey
2025-07-24 10:21:24 +03:00
parent d23eef096a
commit 672be4fd19
5 changed files with 58 additions and 7 deletions

View File

@@ -81,10 +81,24 @@ def setup_clients(logger: SupersetLogger):
)
# [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:
@@ -175,7 +189,14 @@ def backup_dashboards(client: SupersetClient,
if rotate_archive:
# [ANCHOR] ARCHIVE_OLD_BACKUPS
try:
archive_exports(dashboard_dir, logger=logger, deduplicate=True)
archive_exports(
str(dashboard_dir),
daily_retention=7, # Сохранять последние 7 дней
weekly_retention=2, # Сохранять последние 2 недели
monthly_retention=3, # Сохранять последние 3 месяца
logger=logger,
deduplicate=True
)
logger.debug(f"[DEBUG] Старые экспорты для '{dashboard_title}' архивированы.")
except Exception as cleanup_error:
logger.warning(
@@ -214,7 +235,7 @@ def backup_dashboards(client: SupersetClient,
if clean_folders:
# [ANCHOR] Удаляем пустые папки
try:
dirs_count = remove_empty_directories(backup_root / env_name , logger=logger)
dirs_count = remove_empty_directories(str(backup_root / env_name), logger=logger)
logger.debug(f"[DEBUG] {dirs_count} пустых папок в '{backup_root / env_name }' удалены.")
except Exception as clean_error:
logger.warning(
@@ -303,6 +324,15 @@ def main() -> int:
rotate_archive=True,
logger=logger
)
# [ANCHOR] BACKUP_PROD_ENVIRONMENT
preprod_success = backup_dashboards(
clients['preprod'],
"PREPROD",
superset_backup_repo,
rotate_archive=True,
logger=logger
)
# [ANCHOR] FINAL_REPORT
# [INFO] Итоговый отчет о выполнении бэкапа
@@ -311,6 +341,7 @@ def main() -> int:
logger.info(f"[INFO] DEV: {'Успешно' if dev_success else 'С ошибками'}")
logger.info(f"[INFO] SBX: {'Успешно' if sbx_success else 'С ошибками'}")
logger.info(f"[INFO] PROD: {'Успешно' if prod_success else 'С ошибками'}")
logger.info(f"[INFO] PREPROD: {'Успешно' if preprod_success else 'С ошибками'}")
logger.info(f"[INFO] Полный лог доступен в: {log_dir}")
if not (dev_success and sbx_success and prod_success):