v1.0.66: backend status resolver for operations
This commit is contained in:
+29
-5
@@ -10,6 +10,21 @@ bp = Blueprint("main", __name__)
|
||||
AUTOTEST_PREFIX = "autotest-"
|
||||
|
||||
|
||||
def _resolve_instance_status(instance, tracked=None):
|
||||
"""Вернуть канонический статус инстанса для API и UI."""
|
||||
tracked = tracked or {}
|
||||
cloud_status = str(instance.get("explainedStatus") or "").strip()
|
||||
display_name = str(instance.get("displayName") or "")
|
||||
|
||||
if cloud_status:
|
||||
return cloud_status
|
||||
|
||||
if tracked and display_name.startswith(AUTOTEST_PREFIX):
|
||||
return "creating"
|
||||
|
||||
return "unknown"
|
||||
|
||||
|
||||
def _mask(s):
|
||||
if not s or len(s) < 8:
|
||||
return ""
|
||||
@@ -143,10 +158,18 @@ def api_operations(svc_id):
|
||||
tracked_uids = set(tracked_by_uid.keys())
|
||||
instances = get_instances(client)
|
||||
nubes_uids = {i["instanceUid"] for i in instances}
|
||||
svc_instances = [i for i in instances
|
||||
if i.get("instanceUid") in tracked_uids
|
||||
and str(i.get("displayName", "")).startswith(AUTOTEST_PREFIX)
|
||||
and i.get("explainedStatus") not in ("deleted",)]
|
||||
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))
|
||||
svc_instances.append(item)
|
||||
# Если Nubes уже не отдаёт tracked-инстанс после reload, добавляем его из трекера.
|
||||
for uid, t in tracked_by_uid.items():
|
||||
if uid not in nubes_uids:
|
||||
@@ -155,7 +178,8 @@ def api_operations(svc_id):
|
||||
"displayName": t["displayName"],
|
||||
"serviceId": svc_id,
|
||||
"svc": detail.get("svc", ""),
|
||||
"explainedStatus": "creating",
|
||||
"explainedStatus": "",
|
||||
"status": "creating",
|
||||
})
|
||||
return jsonify({"svc": detail.get("svc", ""), "operations": ops, "instances": svc_instances})
|
||||
except Exception as e:
|
||||
|
||||
Reference in New Issue
Block a user