58 lines
1.8 KiB
Markdown
58 lines
1.8 KiB
Markdown
# 2026-07-24 — Финальный поток создания инстанса
|
||
|
||
## Поток API (1:1 с Go-клиентом Terraform)
|
||
|
||
### Шаг 1: Создать инстанс
|
||
```
|
||
POST /instances
|
||
{"serviceId": 1, "displayName": "autotest-1-xxx", "descr": "autotest"}
|
||
→ 201, Location: /instances/{instanceUid}
|
||
→ извлечь instanceUid из Location
|
||
```
|
||
|
||
### Шаг 2: Создать операцию
|
||
```
|
||
POST /instanceOperations
|
||
{"instanceUid": "...", "operation": "create"}
|
||
→ 201, Location: /instanceOperations/{opUid}
|
||
→ извлечь opUid из Location
|
||
```
|
||
|
||
### Шаг 3: Задать параметры (по одному)
|
||
```
|
||
POST /instanceOperations/{opUid}/params
|
||
{"instanceOperationUid": "{opUid}", "svcOperationCfsParamId": 200, "paramValue": "false"}
|
||
```
|
||
Повторить для каждого cfsParam (12 штук для dummy).
|
||
|
||
### Шаг 4: Валидация
|
||
```
|
||
POST /instanceOperations/{opUid}/validate
|
||
(пустое тело)
|
||
```
|
||
|
||
### Шаг 5: Запуск
|
||
```
|
||
POST /instanceOperations/{opUid}/run
|
||
(пустое тело)
|
||
```
|
||
|
||
### Шаг 6: Поллинг
|
||
```
|
||
GET /instances?pageSize=200&page=1
|
||
→ искать instanceUid → ждать !operationIsInProgress && status не "creating"
|
||
→ если не нашли — page++
|
||
```
|
||
|
||
## Баг 8: `/params` без instanceOperationUid (v1.0.24-1.0.25)
|
||
- **Пропущенное поле:** `instanceOperationUid` в POST /params
|
||
- **Пропущенный шаг:** `/validate` перед `/run`
|
||
- **Исправление:** добавлены `instanceOperationUid` + `/validate`
|
||
|
||
## Баг 9: пропущен `/run` (v1.0.20-1.0.22)
|
||
- Операция создавалась но не запускалась
|
||
- Исправлено: POST /instanceOperations/{opUid}/run
|
||
|
||
## Итого: 5 шагов API + поллинг
|
||
Идентично Go-клиенту `CreateGenericInstanceUniversalV6`.
|