tests ready
This commit is contained in:
@@ -113,14 +113,21 @@ class BackupPlugin(PluginBase):
|
||||
|
||||
# [DEF:execute:Function]
|
||||
# @PURPOSE: Executes the dashboard backup logic with TaskContext support.
|
||||
# @PARAM: params (Dict[str, Any]) - Backup parameters (env, backup_path).
|
||||
# @PARAM: params (Dict[str, Any]) - Backup parameters (env, backup_path, dashboard_ids).
|
||||
# @PARAM: context (Optional[TaskContext]) - Task context for logging with source attribution.
|
||||
# @PRE: Target environment must be configured. params must be a dictionary.
|
||||
# @POST: All dashboards are exported and archived.
|
||||
async def execute(self, params: Dict[str, Any], context: Optional[TaskContext] = None):
|
||||
with belief_scope("execute"):
|
||||
config_manager = get_config_manager()
|
||||
env_id = params.get("environment_id")
|
||||
|
||||
# Support both parameter names: environment_id (for task creation) and env (for direct calls)
|
||||
env_id = params.get("environment_id") or params.get("env")
|
||||
dashboard_ids = params.get("dashboard_ids") or params.get("dashboards")
|
||||
|
||||
# Log the incoming parameters for debugging
|
||||
log = context.logger if context else app_logger
|
||||
log.info(f"Backup parameters received: env_id={env_id}, dashboard_ids={dashboard_ids}")
|
||||
|
||||
# Resolve environment name if environment_id is provided
|
||||
if env_id:
|
||||
@@ -131,6 +138,8 @@ class BackupPlugin(PluginBase):
|
||||
env = params.get("env")
|
||||
if not env:
|
||||
raise KeyError("env")
|
||||
|
||||
log.info(f"Backup started for environment: {env}, selected dashboards: {dashboard_ids}")
|
||||
|
||||
storage_settings = config_manager.get_config().settings.storage
|
||||
# Use 'backups' subfolder within the storage root
|
||||
@@ -156,8 +165,20 @@ class BackupPlugin(PluginBase):
|
||||
|
||||
client = SupersetClient(env_config)
|
||||
|
||||
dashboard_count, dashboard_meta = client.get_dashboards()
|
||||
superset_log.info(f"Found {dashboard_count} dashboards to export")
|
||||
# Get all dashboards
|
||||
all_dashboard_count, all_dashboard_meta = client.get_dashboards()
|
||||
superset_log.info(f"Found {all_dashboard_count} total dashboards in environment")
|
||||
|
||||
# Filter dashboards if specific IDs are provided
|
||||
if dashboard_ids:
|
||||
dashboard_ids_int = [int(did) for did in dashboard_ids]
|
||||
dashboard_meta = [db for db in all_dashboard_meta if db.get('id') in dashboard_ids_int]
|
||||
dashboard_count = len(dashboard_meta)
|
||||
superset_log.info(f"Filtered to {dashboard_count} selected dashboards: {dashboard_ids_int}")
|
||||
else:
|
||||
dashboard_count = all_dashboard_count
|
||||
superset_log.info("No dashboard filter applied - backing up all dashboards")
|
||||
dashboard_meta = all_dashboard_meta
|
||||
|
||||
if dashboard_count == 0:
|
||||
log.info("No dashboards to back up")
|
||||
|
||||
Reference in New Issue
Block a user