v1.2.1: fix tracker_add in executor + labelCls + descr context + script order
Opus review fixes: - executor.py: tracker_add inside executor after instance_uid, before params/run (A3, orphan protection) - executor.py: descr parameter (version/context instead of hardcoded) - api_test.py: pass client_id/stand/descr, remove duplicate tracker_add - scenario.py: pass client_id/stand/descr with scenario context - params-render.js: fix labelCls ReferenceError in renderMapFixedRow (pre-existing bug) - index.html: params-render.js already before operations.js (verified)
This commit is contained in:
@@ -2,15 +2,18 @@
|
||||
Единый executor операции Nubes.
|
||||
|
||||
Делает всё до /run включительно. НЕ поллит.
|
||||
Вызывает tracker_add для create сразу после получения instance_uid (защита от сирот).
|
||||
Используется api_test.py (ручной) и scenario.py (сценарный).
|
||||
"""
|
||||
|
||||
from api.utils import find_uid, uid_from_location
|
||||
from operations.terraform import send_params_terraform
|
||||
from operations.tracker import add as tracker_add
|
||||
|
||||
|
||||
def execute_operation(client, service_id, operation, instance_uid, params,
|
||||
svc_op_id=None, display_name=None):
|
||||
svc_op_id=None, display_name=None, descr=None,
|
||||
client_id="", stand=""):
|
||||
"""Запустить операцию и вернуть результат.
|
||||
|
||||
Args:
|
||||
@@ -21,6 +24,9 @@ def execute_operation(client, service_id, operation, instance_uid, params,
|
||||
params: dict — {numeric_param_id: value}
|
||||
svc_op_id: int|None — svcOperationId (игнорируется для create)
|
||||
display_name: str|None — displayName (только для create)
|
||||
descr: str|None — описание инстанса
|
||||
client_id: str — для tracker_add
|
||||
stand: str — для tracker_add
|
||||
|
||||
Returns:
|
||||
dict {ok, error, failed_step, instance_uid, op_uid, display_name}
|
||||
@@ -32,7 +38,8 @@ def execute_operation(client, service_id, operation, instance_uid, params,
|
||||
if is_create:
|
||||
if not display_name:
|
||||
display_name = f"autotest-{service_id}"
|
||||
descr = f"created by autotest"
|
||||
if not descr:
|
||||
descr = "created by autotest"
|
||||
payload = {"serviceId": service_id, "displayName": display_name, "descr": descr}
|
||||
try:
|
||||
resp = client.post("/instances", payload)
|
||||
@@ -44,6 +51,12 @@ def execute_operation(client, service_id, operation, instance_uid, params,
|
||||
return {"ok": False, "error": "No instanceUid in response", "failed_step": "instances",
|
||||
"instance_uid": None, "op_uid": None, "display_name": display_name}
|
||||
|
||||
# tracker_add СРАЗУ после instance_uid, до params/run — защита от сирот
|
||||
try:
|
||||
tracker_add(client_id, stand, instance_uid, service_id, display_name)
|
||||
except Exception:
|
||||
pass # не ронять операцию из-за трекера
|
||||
|
||||
# --- Шаг 2: POST /instanceOperations ---
|
||||
if is_create:
|
||||
op_payload = {"instanceUid": instance_uid, "operation": operation}
|
||||
|
||||
Reference in New Issue
Block a user