semantics
This commit is contained in:
@@ -1,16 +1,16 @@
|
||||
# #region GitPluginModule [C:4] [TYPE Module] [SEMANTICS git, versioning, deploy, sync, superset, backup, transactional]
|
||||
#
|
||||
# @BRIEF Предоставляет плагин для версионирования и развертывания дашбордов Superset.
|
||||
# @LAYER: Plugin
|
||||
# @RELATION INHERITS_FROM -> src.core.plugin_base.PluginBase
|
||||
# @RELATION USES -> src.services.git_service.GitService
|
||||
# @RELATION USES -> src.core.superset_client.SupersetClient
|
||||
# @RELATION USES -> src.core.config_manager.ConfigManager
|
||||
# @RELATION USES -> TaskContext
|
||||
# @LAYER Plugin
|
||||
# @RELATION INHERITS -> [EXT:path:src.core.plugin_base.PluginBase]
|
||||
# @RELATION DEPENDS_ON -> [GitService]
|
||||
# @RELATION DEPENDS_ON -> [SupersetClient]
|
||||
# @RELATION DEPENDS_ON -> [ConfigManager]
|
||||
# @RELATION DEPENDS_ON -> [TaskContext]
|
||||
#
|
||||
# @INVARIANT: Все операции с Git должны выполняться через GitService.
|
||||
# @INVARIANT Все операции с Git должны выполняться через GitService.
|
||||
# @CONSTRAINT: Плагин работает только с распакованными YAML-экспортами Superset.
|
||||
# @INVARIANT: _handle_sync сохраняет backup управляемых директорий перед удалением;
|
||||
# @INVARIANT _handle_sync сохраняет backup управляемых директорий перед удалением;
|
||||
# при ошибке распаковки backup восстанавливается.
|
||||
|
||||
import io
|
||||
@@ -35,8 +35,8 @@ class GitPlugin(PluginBase):
|
||||
|
||||
# region __init__ [TYPE Function]
|
||||
# @PURPOSE: Инициализирует плагин и его зависимости.
|
||||
# @PRE: shared config_manager доступен через src.dependencies.
|
||||
# @POST: Инициализированы git_service и config_manager.
|
||||
# @PRE shared config_manager доступен через src.dependencies.
|
||||
# @POST Инициализированы git_service и config_manager.
|
||||
def __init__(self):
|
||||
with belief_scope("GitPlugin.__init__"):
|
||||
app_logger.info("Initializing GitPlugin.")
|
||||
@@ -85,9 +85,9 @@ class GitPlugin(PluginBase):
|
||||
|
||||
# region get_schema [TYPE Function]
|
||||
# @PURPOSE: Возвращает JSON-схему параметров для выполнения задач плагина.
|
||||
# @PRE: GitPlugin is initialized.
|
||||
# @POST: Returns a JSON schema dictionary.
|
||||
# @RETURN: Dict[str, Any] - Схема параметров.
|
||||
# @PRE GitPlugin is initialized.
|
||||
# @POST Returns a JSON schema dictionary.
|
||||
# @RETURN Dict[str, Any] - Схема параметров.
|
||||
def get_schema(self) -> dict[str, Any]:
|
||||
with belief_scope("GitPlugin.get_schema"):
|
||||
return {
|
||||
@@ -109,8 +109,8 @@ class GitPlugin(PluginBase):
|
||||
|
||||
# region execute [C:3] [TYPE Function]
|
||||
# @PURPOSE: Main task executor with TaskContext support.
|
||||
# @RELATION: CALLS -> self._handle_sync
|
||||
# @RELATION: CALLS -> self._handle_deploy
|
||||
# @RELATION CALLS -> self._handle_sync
|
||||
# @RELATION CALLS -> self._handle_deploy
|
||||
async def execute(self, task_data: dict[str, Any], context: TaskContext | None = None) -> dict[str, Any]:
|
||||
with belief_scope("GitPlugin.execute"):
|
||||
operation = task_data.get("operation")
|
||||
@@ -143,14 +143,14 @@ class GitPlugin(PluginBase):
|
||||
|
||||
# region _handle_sync [C:4] [TYPE Function] [SEMANTICS git,sync,backup,transactional]
|
||||
# @PURPOSE: Экспортирует дашборд из Superset и распаковывает в Git-репозиторий с backup/restore.
|
||||
# @PRE: Репозиторий для дашборда должен существовать.
|
||||
# @POST: Файлы в репозитории обновлены до текущего состояния в Superset.
|
||||
# @PRE Репозиторий для дашборда должен существовать.
|
||||
# @POST Файлы в репозитории обновлены до текущего состояния в Superset.
|
||||
# Управляемые директории backup-ируются перед удалением; при ошибке распаковки backup восстанавливается.
|
||||
# @SIDE_EFFECT: Изменяет файлы в локальной рабочей директории репозитория.
|
||||
# @SIDE_EFFECT Изменяет файлы в локальной рабочей директории репозитория.
|
||||
# Создаёт временный backup в /tmp/ss-tools-backup-{dashboard_id}-{timestamp}/.
|
||||
# @RETURN: Dict[str, str] - Результат синхронизации.
|
||||
# @RELATION: CALLS -> src.services.git_service.GitService.get_repo
|
||||
# @RELATION: CALLS -> src.core.superset_client.SupersetClient.export_dashboard
|
||||
# @RETURN Dict[str, str] - Результат синхронизации.
|
||||
# @RELATION CALLS -> src.services.git_service.GitService.get_repo
|
||||
# @RELATION CALLS -> src.core.superset_client.SupersetClient.export_dashboard
|
||||
async def _handle_sync(self, dashboard_id: int, source_env_id: str | None = None, log=None, git_log=None, superset_log=None) -> dict[str, str]:
|
||||
with belief_scope("GitPlugin._handle_sync"):
|
||||
try:
|
||||
@@ -247,9 +247,9 @@ class GitPlugin(PluginBase):
|
||||
|
||||
# region _handle_deploy [C:4] [TYPE Function] [SEMANTICS git,deploy,zip]
|
||||
# @PURPOSE: Packages repository into ZIP and imports into target Superset environment.
|
||||
# @POST: Dashboard imported into target Superset.
|
||||
# @SIDE_EFFECT: Creates and removes temporary ZIP file.
|
||||
# @RELATION: CALLS -> src.core.superset_client.SupersetClient.import_dashboard
|
||||
# @POST Dashboard imported into target Superset.
|
||||
# @SIDE_EFFECT Creates and removes temporary ZIP file.
|
||||
# @RELATION CALLS -> src.core.superset_client.SupersetClient.import_dashboard
|
||||
async def _handle_deploy(self, dashboard_id: int, env_id: str, log=None, git_log=None, superset_log=None) -> dict[str, Any]:
|
||||
with belief_scope("GitPlugin._handle_deploy"):
|
||||
try:
|
||||
@@ -297,11 +297,11 @@ class GitPlugin(PluginBase):
|
||||
|
||||
# region _get_env [C:4] [TYPE Function] [SEMANTICS env,config,strict]
|
||||
# @PURPOSE: Вспомогательный метод для получения конфигурации окружения.
|
||||
# @PARAM: env_id (Optional[str]) - ID окружения.
|
||||
# @PRE: env_id is a string or None.
|
||||
# @POST: Returns an Environment object from config or DB.
|
||||
# @PARAM env_id (Optional[str]) - ID окружения.
|
||||
# @PRE env_id is a string or None.
|
||||
# @POST Returns an Environment object from config or DB.
|
||||
# When env_id is explicitly provided and not found, raises ValueError (no fallback).
|
||||
# @RETURN: Environment - Объект конфигурации окружения.
|
||||
# @RETURN Environment - Объект конфигурации окружения.
|
||||
def _get_env(self, env_id: str | None = None):
|
||||
with belief_scope("GitPlugin._get_env"):
|
||||
app_logger.reason(f"Fetching environment for ID: {env_id}", extra={"src": "_get_env"})
|
||||
|
||||
Reference in New Issue
Block a user