Files

53 lines
2.2 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
Операции с инстансами Nubes — получение списка и организации через API.
Используется:
- main.py → отображение инфраструктуры на главной
- api_test.py → список инстансов для выбора
- scenario.py → поиск refSvcId-инстансов
"""
from api.http_client import HttpClient
def get_instances(client):
"""GET /instances с пагинацией → ВСЕ инстансы пользователя.
pageSize=200 — максимум за один запрос (API лимит).
Остановка по len(batch) < pageSize — НЕ доверяет total из ответа.
Почему не доверяем total:
Бывали баги где API возвращал total=500, а реально инстансов 3.
Проверка по размеру страницы надёжнее.
Returns:
list[dict] — каждый dict содержит instanceUid, displayName, serviceId,
svc, explainedStatus, instanceConfigDtCreated и др."""
results = []
page = 1
page_size = 200
while True:
data = client.get("/instances", params={"pageSize": page_size, "page": page})
batch = data.get("results", []) or []
results.extend(batch)
# Если страница неполная — данных больше нет.
# Это надёжнее чем проверка page * pageSize >= total.
if len(batch) < page_size:
break
page += 1
return results
def get_organization(client):
"""Первый инстанс с serviceId=19 (Организация).
Организация всегда одна на пользователя — это его «корневой» инстанс.
Используется в UI: название организации, статус, ClientID.
Returns:
dict или None — инстанс организации или None если не найден."""
for inst in get_instances(client):
if inst.get("serviceId") == 19:
return inst
return None