From d3164ebe7672a42a1ca9379eb8f2659037839727 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Wed, 29 Jul 2026 12:59:13 +0400 Subject: [PATCH] =?UTF-8?q?v1.1.24:=20step=206=20from=20REAL=20operation?= =?UTF-8?q?=20(not=20template)=20=E2=80=94=20fixes=20serviceInstanceUid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- site/app.py | 2 +- site/routes/api_test.py | 19 +++++++++---------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/site/app.py b/site/app.py index 1c48e63..a7dc2df 100644 --- a/site/app.py +++ b/site/app.py @@ -18,7 +18,7 @@ from routes.api import bp as api_bp from routes.api_test import bp as api_test_bp # Версия — меняется при КАЖДОМ изменении кода. Показывается в топбаре UI. -VERSION = "1.1.23" +VERSION = "1.1.24" app = Flask(__name__, template_folder="templates", static_folder="static") app.config["NUBES_API_ENDPOINT"] = os.getenv("NUBES_API_ENDPOINT", "https://lk-api-gateway-test.ngcloud.ru/api/v1/svc") diff --git a/site/routes/api_test.py b/site/routes/api_test.py index 95cac4d..64a2feb 100644 --- a/site/routes/api_test.py +++ b/site/routes/api_test.py @@ -205,26 +205,25 @@ def api_test(): client.post("/instanceOperationCfsParams", {"instanceOperationUid": op_uid, "svcOperationCfsParamId": int(pid), "paramValue": str(pval)}) - # Досылка required-параметров с defaultValue (шаг 6 Terraform) + # Досылка required-параметров (шаг 6 Terraform) + # Берём из РЕАЛЬНОЙ операции — не из шаблона (там нет paramValue) try: - tmpl = client.get(f"/instanceOperations/default/{svc_op_id}") - for p in tmpl.get("svcOperation", {}).get("cfsParams", []): + op_det = client.get(f"/instanceOperations/{op_uid}?fields=cfsParams") + for p in op_det.get("instanceOperation", {}).get("cfsParams", []): pid_str = str(p["svcOperationCfsParamId"]) if p.get("isRequired") and pid_str not in params: - dfl = p.get("defaultValue") + val = p.get("paramValue") or p.get("defaultValue") dd = p.get("dataDescriptor") - if dfl is not None and dfl != "": - # Есть явный default — отправляем как есть + if val is not None and val != "": client.post("/instanceOperationCfsParams", { "instanceOperationUid": op_uid, "svcOperationCfsParamId": p["svcOperationCfsParamId"], - "paramValue": str(dfl) + "paramValue": str(val) }) elif isinstance(dd, dict): - # map-fixed без явного default — собираем JSON из sub-param defaults sub_obj = {} for sk, sv in dd.items(): - sd = sv.get("defaultValue", "") + sd = sv.get("paramValue") or sv.get("defaultValue", "") if sv.get("isRequired") and sd: sub_obj[sk] = sd if sub_obj: @@ -234,7 +233,7 @@ def api_test(): "paramValue": json.dumps(sub_obj) }) except Exception: - pass # не ронять CREATE если шаблон не загрузился + pass # Валидация перед запуском try: