Перейти к основному содержимому

delete, transfer, invoke

Глаголы, меняющие жизнь записи. Все три принимают цель как <kind> <id> или kind/id.

delete

graphenectl delete <kind> <id> [--wait]

Сигналит удаление: у записи отрабатывает finalize (реальный ресурс сносится), затем запись доходит до deleted. Удаление каскадное: владеемые дети умирают первыми.

ФлагЧто делает
--waitждать, пока запись станет deleted или исчезнет целиком
$ graphenectl delete docker-volume cache-v1
docker-volume/cache-v1: deletion signaled
$ graphenectl delete docker-volume cache-v1 --wait
docker-volume/cache-v1: deleting...
docker-volume/cache-v1: deleted

transfer

graphenectl transfer <kind> <id> <new-owner> [--keep <длительность>]

Владение движется в одну сторону: отдать запись можно, забрать — нельзя. Передача стенду (stand/<pipelineId>) — способ ресурса пережить свой прогон; --keep ограничивает срок — собственный таймер стенда соберёт запись после TTL. Ненулевой --keep валиден только для stand-назначений — в остальные сервер откажет.

ФлагДефолтЧто делает
--keep0 (держать до явного удаления)TTL под новым владельцем, например 72h
$ graphenectl transfer docker-volume cache-v1 stand/perf-nightly --keep 72h
docker-volume/cache-v1 -> stand/perf-nightly

invoke

graphenectl invoke <kind> <id> <command> [--data JSON | --data-file f.yaml]

Отправляет записи одну из её собственных команд — типизированные update'ы, которые определил её kind. Payload — запрос команды; ответ — её результат как JSON.

ФлагЧто делает
--datapayload как inline JSON
--data-filepayload из JSON- или YAML-файла; - читает stdin

Флаги взаимоисключающие; YAML-файл конвертируется в JSON по дороге (то же соглашение — в run).

$ graphenectl invoke agent vm-1 transfer-owner --data '{"newOwner":"stand/perf-nightly"}'
{}
$ graphenectl invoke stand perf-nightly extend --data-file extend.yaml