v1.0.47: fix displayName capture before form clear; fix tracker_add race; add autotest-1 to tracker

This commit is contained in:
2026-07-27 08:44:19 +04:00
parent ffa7d408c6
commit 7fdcc005b5
4 changed files with 11 additions and 7 deletions
+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.46" VERSION = "1.0.47"
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")
+1
View File
@@ -7,6 +7,7 @@ _LOCK = threading.Lock()
_PATH = "/tmp/instances.json" _PATH = "/tmp/instances.json"
_INITIAL = { _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"}, "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"}, "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"}, "fdcb5887-39f7-4ef8-a9c0-d55e434a55ff": {"svcId": 1, "displayName": "curl-final-test", "instanceUid": "fdcb5887-39f7-4ef8-a9c0-d55e434a55ff"},
+6 -5
View File
@@ -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(): if dt_finish and str(dt_finish).strip():
is_ok = op.get("isSuccessful") is_ok = op.get("isSuccessful")
err = op.get("errorLog") or "" 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] = { _op_results[op_uid] = {
"status": "OK" if is_ok else "FAIL", "status": "OK" if is_ok else "FAIL",
"error": str(err) if err else "", "error": str(err) if err else "",
"stages": op.get("stages", []), "stages": op.get("stages", []),
"duration": round(time.time() - t0, 1), "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 return
time.sleep(5) time.sleep(5)
_op_results[op_uid] = {"status": "TIMEOUT", "duration": round(time.time() - t0, 1)} _op_results[op_uid] = {"status": "TIMEOUT", "duration": round(time.time() - t0, 1)}
+3 -1
View File
@@ -215,6 +215,8 @@ function showParams(opId,opName){
async function executeOp(params){ async function executeOp(params){
stopPoll(); stopPoll();
// Захватить displayName ДО очистки формы
const displayName=document.getElementById('param-displayname')?.value||'autotest-1';
document.getElementById('params-card').style.display='block'; document.getElementById('params-card').style.display='block';
document.getElementById('params-form').innerHTML=''; document.getElementById('params-form').innerHTML='';
const btn=document.getElementById('btn-test'); const btn=document.getElementById('btn-test');
@@ -232,7 +234,7 @@ async function executeOp(params){
svcOperationId:selectedOp.opId, svcOperationId:selectedOp.opId,
params, params,
instanceUid:selectedInst||'', instanceUid:selectedInst||'',
displayName:document.getElementById('param-displayname')?.value||'autotest-1' displayName
})}); })});
const d=await r.json(); const d=await r.json();
if(d.status==='FAIL'){document.getElementById('test-status').innerHTML=` <span class="badge">FAIL</span> ${d.error||''}`;btn.disabled=false;return;} if(d.status==='FAIL'){document.getElementById('test-status').innerHTML=` <span class="badge">FAIL</span> ${d.error||''}`;btn.disabled=false;return;}