From 4a0cfcaa61c823b246c6802b286545e846272240 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Fri, 31 Jul 2026 23:42:41 +0400 Subject: [PATCH] =?UTF-8?q?feat:=20POLYGON=5FENDPOINT=20=E2=80=94=20=D0=BE?= =?UTF-8?q?=D1=82=D0=B4=D0=B5=D0=BB=D1=8C=D0=BD=D0=B0=D1=8F=20=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD=D0=B0=D1=8F,=20=D0=BD?= =?UTF-8?q?=D0=B5=20=D1=82=D1=80=D0=BE=D0=B3=D0=B0=D0=B5=D1=82=20NUBES=5FA?= =?UTF-8?q?PI=5FTOKEN=20(v1.2.26)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- site/api/auth.py | 31 +++++++++++++------------------ site/app.py | 3 ++- 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/site/api/auth.py b/site/api/auth.py index 7ea1858..6f06712 100644 --- a/site/api/auth.py +++ b/site/api/auth.py @@ -35,21 +35,19 @@ def get_token(): def get_client(): """HttpClient с автоопределением стенда. - Если NUBES_API_ENDPOINT — один из известных стендов (dev/test) → - автоопределение через detect_endpoint(). + Если POLYGON_ENDPOINT задан → направить ВСЕ запросы в polygon. + Реальный NUBES_API_TOKEN остаётся нетронутым — polygon его не проверяет. - Если NUBES_API_ENDPOINT — любой другой URL (localhost, polygon, кастом) → - использовать его напрямую, без detect_endpoint(). - - Это позволяет направить app-autotest в polygon: - NUBES_API_ENDPOINT=http://localhost:5000/api/v1/svc - или - NUBES_API_ENDPOINT=https://polygon.pythonk8s.dev.nubes.ru/api/v1/svc + Иначе: + - Если NUBES_API_ENDPOINT — известный стенд (STANDS) → detect_endpoint() + - Если кастомный URL → использовать напрямую """ + polygon = current_app.config.get("POLYGON_ENDPOINT", "") + if polygon: + return HttpClient(polygon, get_token()) + token = get_token() endpoint = current_app.config["NUBES_API_ENDPOINT"] - # Автоопределение ТОЛЬКО для известных стендов (dev/test). - # Для polygon/localhost/кастомных URL — используем endpoint как есть. if endpoint in STANDS: endpoint = detect_endpoint(token) or endpoint return HttpClient(endpoint, token) @@ -83,17 +81,14 @@ def get_client_id(): def get_stand(): """Определить стенд (dev/test/mock) по активному токену. - Для известных стендов (STANDS) — автоопределение через detect_endpoint(). - Для polygon/localhost — stand_name может вернуть "?" (неизвестный URL), - заменяем на "mock" чтобы трекер инстансов не сломался. + Если POLYGON_ENDPOINT задан → "polygon". + Иначе — автоопределение или stand_name.""" + if current_app.config.get("POLYGON_ENDPOINT", ""): + return "polygon" - Примечание: для https://polygon.pythonk8s.dev.nubes.ru stand_name - вернёт "dev" (подстрока есть в URL) — это ок, трекер создаст - /tmp/instances-{clientId}-dev.json.""" token = get_token() endpoint = current_app.config["NUBES_API_ENDPOINT"] if endpoint not in STANDS: - # Неизвестный стенд — polygon или localhost s = stand_name(endpoint) return s if s != "?" else "mock" endpoint = detect_endpoint(token) or endpoint diff --git a/site/app.py b/site/app.py index bb91ac8..95ec19e 100644 --- a/site/app.py +++ b/site/app.py @@ -32,7 +32,7 @@ from routes.api_scenario_defs import bp_defs as api_scenario_defs_bp # Версия — показывается в топбаре UI. Меняется при КАЖДОМ изменении кода. # Нужна для фильтрации истории (пользователь видит только записи своей версии). -VERSION = "1.2.25" +VERSION = "1.2.26" # Flask-приложение с Jinja2-шаблонами из папки templates/ app = Flask(__name__, template_folder="templates", static_folder="static") @@ -43,6 +43,7 @@ app.config["NUBES_API_ENDPOINT"] = os.getenv( "https://lk-api-gateway-test.ngcloud.ru/api/v1/svc" ) app.config["NUBES_API_TOKEN"] = os.getenv("NUBES_API_TOKEN", "") +app.config["POLYGON_ENDPOINT"] = os.getenv("POLYGON_ENDPOINT", "") # если задан → все запросы в polygon app.config["VERSION"] = VERSION # Регистрируем blueprint'ы — каждый отвечает за свою группу маршрутов