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 — полный документ # Архитектура app-autotest — полный документ
v1.0.66, 27.07.2026 v1.0.67, 27.07.2026
--- ---
+11 -1
View File
@@ -1,6 +1,16 @@
# История разработки app-autotest # История разработки 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>`. - В `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 import bp as api_bp
from routes.api_test import bp as api_test_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 = 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") 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) client = HttpClient(current_app.config["NUBES_API_ENDPOINT"], active_token)
detail = get_service_detail(client, svc_id) detail = get_service_detail(client, svc_id)
ops = detail.get("operations", []) ops = detail.get("operations", [])
# только отслеживаемые инстансы этого сервиса
tracked = tracker_list() tracked = tracker_list()
tracked_by_uid = {t["instanceUid"]: t for t in tracked if t["svcId"] == svc_id} 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) instances = get_instances(client)
nubes_uids = {i["instanceUid"] for i in instances} nubes_uids = {i["instanceUid"] for i in instances}
svc_instances = [] svc_instances = []
for i in 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): if not str(i.get("displayName", "")).startswith(AUTOTEST_PREFIX):
continue continue
if i.get("explainedStatus") in ("deleted",): if i.get("explainedStatus") in ("deleted",):
continue continue
item = dict(i) 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) svc_instances.append(item)
# Если Nubes уже не отдаёт tracked-инстанс после reload, добавляем его из трекера. # Если Nubes ещё не отдаёт только что созданный autotest-инстанс, добавляем его из трекера.
for uid, t in tracked_by_uid.items(): for uid, t in tracked_by_uid.items():
if uid not in nubes_uids: if uid not in nubes_uids:
svc_instances.append({ svc_instances.append({