networker-ppdm
Moodswing9/networker-ppdmPython REST API клиенты и Claude Code скилл для Dell EMC NetWorker, PowerProtect Data Manager и Data Domain. Покрывает backup/restore, защиту Kubernetes, DDBoost, агенты баз данных и SLA-отчётность.
Установка
npx skills add Moodswing9/networker-ppdm -gREADME
networker-ppdm
Python REST API клиенты, скрипты автоматизации и Claude Code скилл для Dell EMC NetWorker, PowerProtect Data Manager (PPDM) и Data Domain — резервное копирование и восстановление, защита Kubernetes, DDBoost, агенты баз данных, SLA-отчётность и автоматизация.
Python-библиотека
Установите и импортируйте клиенты напрямую в свои скрипты:
pip install -r requirements.txt
cp .env.example .env # укажите host/user/passPPDMClient
from ppdm import PPDMClient
with PPDMClient.from_env() as ppdm:
# Список всех упавших задач резервного копирования Kubernetes
for job in ppdm.failed_activities(asset_type="KUBERNETES"):
print(job["name"], job["startTime"])
# Запуск резервного копирования по требованию и получение ID активности
policy = ppdm.get_policy_by_name("k8s-daily")
result = ppdm.trigger_backup(policy["id"])
# Восстановление namespace в новое расположение
copy = ppdm.latest_copy(asset_id)
ppdm.restore_kubernetes_to_new_namespace(
copy["id"], target_namespace="ns-restored", target_cluster_id="..."
)Доступные методы: list_assets, get_asset, list_copies, latest_copy, list_activities, failed_activities, running_activities, cancel_activity, list_policies, get_policy_by_name, create_policy, assign_assets, trigger_backup, create_protection_rule, list_inventory_sources, discover_inventory_source, list_storage_systems, restore, restore_kubernetes_to_new_namespace
NWClient
from networker import NWClient
with NWClient.from_env() as nw:
savesets = nw.list_savesets_for_client("web01.example.com")
latest = nw.latest_full_backup("web01.example.com")
nw.trigger_group_backup("Linux-Clients")Доступные методы: list_clients, get_client, list_savesets, list_savesets_for_client, latest_full_backup, list_policies, list_workflows, list_protection_groups, trigger_group_backup, start_recover
DDClient
from datadomain import DDClient
with DDClient.from_env() as dd:
dd.enable_ddboost()
dd.create_storage_unit("ppdm-su-01", "ddboost-user", soft_limit_tib=10.0)
print(dd.filesystem_stats())Доступные методы: ddboost_status, enable_ddboost, disable_ddboost, list_storage_units, create_storage_unit, assign_user_to_storage_unit, system_info, filesystem_stats, list_users, create_user
Скрипты автоматизации
Готовые к запуску скрипты — требуют заполненного .env с учётными данными.
# Отчёт по всем упавшим задачам резервного копирования (exit 1 при наличии ошибок — удобно для CI)
python scripts/check_failed_jobs.py
python scripts/check_failed_jobs.py --asset-type KUBERNETES
python scripts/check_failed_jobs.py --json
# Отчёт о соответствии SLA
python scripts/sla_report.py
python scripts/sla_report.py --non-compliant-only
# Запуск резервного копирования по требованию (опционально — ожидание завершения)
python scripts/ondemand_backup.py --asset "prod-namespace" --policy "k8s-daily"
python scripts/ondemand_backup.py --asset "prod-namespace" --policy "k8s-daily" --waitЕдиный CLI
Новый тонкий слой оркестрации backupctl располагается поверх существующих клиентов PPDM, NetWorker и Data Domain и предоставляет единую точку входа для операторов: проверка состояния, инвентаризация и запуск резервного копирования.
pip install -e .
backupctl doctor
backupctl inventory --format json
backupctl protect ppdm --target k8s-daily
backupctl protect networker --target Linux-Clients
backupctl dd statusОсновные команды
backupctl doctor— кросс-платформенная проверка состояния PPDM, NetWorker и Data Domainbackupctl inventory— объединённый вывод инвентаря PPDM + NetWorkerbackupctl protect— запуск резервного копирования по политике PPDM или группе защиты NetWorkerbackupctl dd status— просмотр состояния Data Domain и деталей файловой системы
Claude Code скилл
Установите скилл глобально, чтобы получить экспертные подсказки по NetWorker / PPDM прямо в Claude Code:
npx skills add Moodswing9/networker-ppdm -g
После установки скилл активируется автоматически при вопросах о NetWorker, PPDM, Data Domain или операциях резервного копирования и восстановления.
Требования: Claude Code CLI, npx (Node.js)
Что покрывает скилл
| Продукт | Области |
|---|---|
| PPDM REST API | Ресурсы, политики, правила защиты, активности, восстановление, соответствие SLA, оповещения, учётные данные, пользователи и RBAC, LDAP/AD, отчёты, конфигурация системы, облачный уровень, репликация, управление копиями, NAS, VMware, Kubernetes, защита баз данных (Oracle / SQL Server / SAP HANA), vProxy, теги, диагностика, обновление |
| NetWorker REST API + CLI | Клиенты, savesets, резервное копирование/восстановление, политики/рабочие процессы/действия, клонирование, узлы хранения, устройства, тома, директивы, уведомления, NDMP, bootstrap/DR, lockbox, свойства клиентов, статистика сервера |
| Data Domain REST API + CLI | DDBoost, единицы хранения, VTL, облачный уровень, NFS/CIFS-шары, шифрование данных в покое, управление пользователями, SNMP, syslog, репликация, метрики дедупликации/сжатия, обслуживание файловой системы |
| CloudBoost | Регистрация устройства, облачные профили AWS S3 / Azure Blob, интеграция с устройствами NetWorker |
| Kubernetes | Полное руководство по защите PPDM из 10 шагов — CDI, VolumeSnapshot, RBAC, политика, восстановление, мониторинг |
Тесты
Два набора тестов — один для Python-библиотеки, один для Claude Code скилла.
Модульные тесты (Python-библиотека)
pip install -e ".[dev]"
python -m pytest tests/unit/ # 43 теста, полностью замоканы — реальные серверы не нужныТесты валидации скилла
Директория tests/ валидирует каждый раздел SKILL.md, отправляя промпты в Claude и проверяя, что ответы содержат ожидаемые эндпоинты, команды и терминологию.
Что тестируется
| Категория | Кол-во тестов | Покрытие |
|---|---|---|
| PPDM Core | 5 | Аутентификация, ресурсы, активности, восстановление, фрагменты Python/PowerShell |
| PPDM Policies | 2 | Создание политики, правила защиты |
| PPDM Credentials | 1 | CRUD + тест подключения |