Docs: operation stages API + README links
This commit is contained in:
@@ -0,0 +1,85 @@
|
|||||||
|
# Стадии выполнения операции (stages)
|
||||||
|
|
||||||
|
## Эндпоинт
|
||||||
|
|
||||||
|
```
|
||||||
|
GET /instanceOperations/{operationUid}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Поле `stages`
|
||||||
|
|
||||||
|
В ответе `instanceOperation.stages` — массив объектов-стадий. Каждая стадия:
|
||||||
|
|
||||||
|
| Поле | Тип | Описание |
|
||||||
|
|------|-----|---------|
|
||||||
|
| `instanceOperationStageUid` | UUID | UID стадии |
|
||||||
|
| `stage` | string | Название (напр. `"2. Основной процесс"`) |
|
||||||
|
| `isSuccessful` | bool/null | `true`/`false`/`null` (ещё не завершена) |
|
||||||
|
| `dtStart` | datetime | Начало |
|
||||||
|
| `dtFinish` | datetime/null | Окончание (`null` — ещё идёт) |
|
||||||
|
| `duration` | float | Секунды (пересчитывается пока идёт: `729.2`) |
|
||||||
|
| `stageMsg` | JSON-string/null | Детальные логи этапа |
|
||||||
|
|
||||||
|
## Пример
|
||||||
|
|
||||||
|
Запрос:
|
||||||
|
```bash
|
||||||
|
curl -s -H "Authorization: Bearer $TOKEN" -H "User-Agent: Mozilla/5.0" \
|
||||||
|
"https://lk-api-gateway-test.ngcloud.ru/api/v1/svc/instanceOperations/{opUid}"
|
||||||
|
```
|
||||||
|
|
||||||
|
Ответ (фрагмент):
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"instanceOperation": {
|
||||||
|
"instanceOperationUid": "a955a902-...",
|
||||||
|
"operation": "create",
|
||||||
|
"isInProgress": false,
|
||||||
|
"isSuccessful": true,
|
||||||
|
"duration": 27.89,
|
||||||
|
"stages": [
|
||||||
|
{
|
||||||
|
"instanceOperationStageUid": "f88e28c9-...",
|
||||||
|
"stage": "1. Валидация",
|
||||||
|
"isSuccessful": true,
|
||||||
|
"dtStart": "2026-07-24T15:21:57.373+0300",
|
||||||
|
"dtFinish": "2026-07-24T15:22:01.804+0300",
|
||||||
|
"duration": 4.4,
|
||||||
|
"stageMsg": "[[\"Определение ресурсной платформы\",\"...\"],...]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage": "2. Основной процесс",
|
||||||
|
"isSuccessful": true,
|
||||||
|
"duration": 14.1,
|
||||||
|
"stageMsg": "[[\"Установка сервиса\",\"...\"],...]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage": "3. Проверки",
|
||||||
|
"isSuccessful": true,
|
||||||
|
"duration": 0.3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage": "4. Хранилище секретов",
|
||||||
|
"isSuccessful": null,
|
||||||
|
"dtFinish": null,
|
||||||
|
"duration": 729.2
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Использование для автотестов
|
||||||
|
|
||||||
|
Для отображения прогресса в UI:
|
||||||
|
|
||||||
|
1. Отправить операцию → получить `opUid`
|
||||||
|
2. Поллинг: `GET /instanceOperations/{opUid}` каждые 2-3 секунды
|
||||||
|
3. Пока `isInProgress == true` — показывать стадии из `stages[]`
|
||||||
|
4. Когда `isInProgress == false` — проверить `isSuccessful`
|
||||||
|
|
||||||
|
`stageMsg` содержит **JSON-строку** с массивом `[[заголовок, текст], ...]`. Можно распарсить и показать пользователю.
|
||||||
|
|
||||||
|
## Открытие 2026-07-24
|
||||||
|
|
||||||
|
Обнаружено при анализе ответа API во время сессии тестирования dummy-сервиса. Ранее поле `stages` пропускалось из-за большого размера ответа.
|
||||||
@@ -2,6 +2,12 @@
|
|||||||
|
|
||||||
Автотесты операций сервисов облачной платформы Nubes.
|
Автотесты операций сервисов облачной платформы Nubes.
|
||||||
|
|
||||||
|
## Документация API
|
||||||
|
|
||||||
|
- [Обращение к API облака](DOCS/api-access.md) — эндпоинты, curl-примеры
|
||||||
|
- [Полный поток CREATE](DOCS/api-create-flow.md) — схема, параметры, все ошибки
|
||||||
|
- [Стадии выполнения операций](DOCS/api-operation-stages.md) — `stages[]` в ответе API
|
||||||
|
|
||||||
## Структура
|
## Структура
|
||||||
|
|
||||||
- `STANDS/` — YAML-конфигурации сервисов по стендам (dev, test)
|
- `STANDS/` — YAML-конфигурации сервисов по стендам (dev, test)
|
||||||
|
|||||||
Reference in New Issue
Block a user