v1.2.16: save full instance metadata (instance_meta JSONB)
init_db.py: ALTER TABLE runs ADD instance_meta JSONB
save_run.py: +instance_meta parameter → JSONB insert
api_test.py: _finish_op fetches GET /instances/{uid} after poll, saves all fields
scenario.py: run_scenario same — per-step instance metadata
Excludes: instanceUid, displayName, svc, serviceId, explainedStatus (already in other columns)
This commit is contained in:
+12
-1
@@ -319,6 +319,16 @@ def _finish_op(client, op_uid, instance_uid, svc_id, display_name, op_name, svc_
|
||||
# Сохранить в БД
|
||||
try:
|
||||
from db.save_run import save_run
|
||||
# Получить полную информацию об инстансе
|
||||
instance_meta = None
|
||||
try:
|
||||
inst_data = client.get(f"/instances/{instance_uid}")
|
||||
inst = inst_data.get("instance", {}) if isinstance(inst_data, dict) else {}
|
||||
if inst:
|
||||
instance_meta = {k: v for k, v in inst.items()
|
||||
if k not in ('instanceUid', 'displayName', 'svc', 'serviceId', 'explainedStatus')}
|
||||
except Exception:
|
||||
pass
|
||||
saved_params = redact_params(params or {})
|
||||
save_run(client_id, stand, user_email,
|
||||
svc_id, poll_result["svc"], op_name, svc_op_id,
|
||||
@@ -326,7 +336,8 @@ def _finish_op(client, op_uid, instance_uid, svc_id, display_name, op_name, svc_
|
||||
poll_result["status"],
|
||||
poll_result["duration"],
|
||||
poll_result["error_log"],
|
||||
saved_params, poll_result["stages"], app_version)
|
||||
saved_params, poll_result["stages"], app_version,
|
||||
instance_meta=instance_meta)
|
||||
except Exception as e:
|
||||
import traceback
|
||||
print(f"[DB] save_run FAILED: {e}", flush=True)
|
||||
|
||||
Reference in New Issue
Block a user