diff --git a/site/app.py b/site/app.py index c2a4b68..942241f 100644 --- a/site/app.py +++ b/site/app.py @@ -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.46" +VERSION = "1.0.47" 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") diff --git a/site/operations/tracker.py b/site/operations/tracker.py index cccb2ab..6b131fe 100644 --- a/site/operations/tracker.py +++ b/site/operations/tracker.py @@ -7,6 +7,7 @@ _LOCK = threading.Lock() _PATH = "/tmp/instances.json" _INITIAL = { + "408b7f96-6ed7-4985-be1b-f5bdcb6ab44d": {"svcId": 1, "displayName": "autotest-1", "instanceUid": "408b7f96-6ed7-4985-be1b-f5bdcb6ab44d"}, "884356cf-5212-4395-b56b-27c58a5fc1fa": {"svcId": 1, "displayName": "autotest-1-first", "instanceUid": "884356cf-5212-4395-b56b-27c58a5fc1fa"}, "6528854d-a4ea-428c-9fa4-68e85fa9b3ac": {"svcId": 1, "displayName": "curl-test-144834", "instanceUid": "6528854d-a4ea-428c-9fa4-68e85fa9b3ac"}, "fdcb5887-39f7-4ef8-a9c0-d55e434a55ff": {"svcId": 1, "displayName": "curl-final-test", "instanceUid": "fdcb5887-39f7-4ef8-a9c0-d55e434a55ff"}, diff --git a/site/routes/api_test.py b/site/routes/api_test.py index e2297d2..6daf5fe 100644 --- a/site/routes/api_test.py +++ b/site/routes/api_test.py @@ -173,17 +173,18 @@ def _finish_op(client, op_uid, instance_uid, svc_id, display_name, op_name, svc_ if dt_finish and str(dt_finish).strip(): is_ok = op.get("isSuccessful") err = op.get("errorLog") or "" + # Сначала трекер — чтобы UI при poll уже видел инстанс + if is_ok: + if is_create: + tracker_add(instance_uid, svc_id, display_name) + elif is_delete: + tracker_remove(instance_uid) _op_results[op_uid] = { "status": "OK" if is_ok else "FAIL", "error": str(err) if err else "", "stages": op.get("stages", []), "duration": round(time.time() - t0, 1), } - if is_ok: - if is_create: - tracker_add(instance_uid, svc_id, display_name) - elif is_delete: - tracker_remove(instance_uid) return time.sleep(5) _op_results[op_uid] = {"status": "TIMEOUT", "duration": round(time.time() - t0, 1)} diff --git a/site/templates/index.html b/site/templates/index.html index 55d6c27..534a960 100644 --- a/site/templates/index.html +++ b/site/templates/index.html @@ -215,6 +215,8 @@ function showParams(opId,opName){ async function executeOp(params){ stopPoll(); + // Захватить displayName ДО очистки формы + const displayName=document.getElementById('param-displayname')?.value||'autotest-1'; document.getElementById('params-card').style.display='block'; document.getElementById('params-form').innerHTML=''; const btn=document.getElementById('btn-test'); @@ -232,7 +234,7 @@ async function executeOp(params){ svcOperationId:selectedOp.opId, params, instanceUid:selectedInst||'', - displayName:document.getElementById('param-displayname')?.value||'autotest-1' + displayName })}); const d=await r.json(); if(d.status==='FAIL'){document.getElementById('test-status').innerHTML=` FAIL ${d.error||''}`;btn.disabled=false;return;}