v1.0.67: autotest instances are shown by cloud prefix

This commit is contained in:
2026-07-27 12:03:48 +04:00
parent 9a49312390
commit 44f7524821
4 changed files with 15 additions and 10 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
# Архитектура app-autotest — полный документ
v1.0.66, 27.07.2026
v1.0.67, 27.07.2026
---
+11 -1
View File
@@ -1,6 +1,16 @@
# История разработки app-autotest
# v1.0.66 (27.07.2026) — backend status resolver for operations
# v1.0.67 (27.07.2026) — autotest instances are shown by cloud prefix
### Что изменилось
- В `site/routes/main.py` список инстансов сервиса больше не отфильтровывается через `/tmp/instances.json`.
- Теперь в таблицу попадают все облачные инстансы с префиксом `autotest-`.
- Трекер оставлен только как fallback, если новый autotest-инстанс ещё не успел появиться в ответе облака.
### Что это чинит
- Ситуацию, когда autotest-инстанс уже есть в облаке, но не показывается в таблице из-за отсутствия записи в json.
## v1.0.66 (27.07.2026) — backend status resolver for operations
### Что изменилось
- В `site/routes/main.py` добавлен канонический резолвер статуса инстанса для `/api/operations/<svc_id>`.
+1 -1
View File
@@ -6,7 +6,7 @@ from routes.main import bp as main_bp
from routes.api import bp as api_bp
from routes.api_test import bp as api_test_bp
VERSION = "1.0.66"
VERSION = "1.0.67"
app = Flask(__name__, template_folder="templates", static_folder="static")
app.config["NUBES_API_ENDPOINT"] = os.getenv("NUBES_API_ENDPOINT", "https://lk-api-gateway-dev.ngcloud.ru/api/v1/svc")
+2 -7
View File
@@ -152,25 +152,20 @@ def api_operations(svc_id):
client = HttpClient(current_app.config["NUBES_API_ENDPOINT"], active_token)
detail = get_service_detail(client, svc_id)
ops = detail.get("operations", [])
# только отслеживаемые инстансы этого сервиса
tracked = tracker_list()
tracked_by_uid = {t["instanceUid"]: t for t in tracked if t["svcId"] == svc_id}
tracked_uids = set(tracked_by_uid.keys())
instances = get_instances(client)
nubes_uids = {i["instanceUid"] for i in instances}
svc_instances = []
for i in instances:
uid = i.get("instanceUid")
if uid not in tracked_uids:
continue
if not str(i.get("displayName", "")).startswith(AUTOTEST_PREFIX):
continue
if i.get("explainedStatus") in ("deleted",):
continue
item = dict(i)
item["status"] = _resolve_instance_status(item, tracked_by_uid.get(uid))
item["status"] = _resolve_instance_status(item, tracked_by_uid.get(i.get("instanceUid")))
svc_instances.append(item)
# Если Nubes уже не отдаёт tracked-инстанс после reload, добавляем его из трекера.
# Если Nubes ещё не отдаёт только что созданный autotest-инстанс, добавляем его из трекера.
for uid, t in tracked_by_uid.items():
if uid not in nubes_uids:
svc_instances.append({