v1.1.0: per-stand services list from Terraform — services_dev.txt + services_test.txt
This commit is contained in:
+1
-1
@@ -18,7 +18,7 @@ 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
|
||||||
|
|
||||||
# Версия — меняется при КАЖДОМ изменении кода. Показывается в топбаре UI.
|
# Версия — меняется при КАЖДОМ изменении кода. Показывается в топбаре UI.
|
||||||
VERSION = "1.0.99"
|
VERSION = "1.1.0"
|
||||||
|
|
||||||
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-test.ngcloud.ru/api/v1/svc")
|
app.config["NUBES_API_ENDPOINT"] = os.getenv("NUBES_API_ENDPOINT", "https://lk-api-gateway-test.ngcloud.ru/api/v1/svc")
|
||||||
|
|||||||
@@ -0,0 +1,55 @@
|
|||||||
|
# Общий список сервисов — объединение DEV/TEST/PROD
|
||||||
|
# service_id service_name # RU description
|
||||||
|
# do not delete lines; to exclude a service, comment it with #
|
||||||
|
1 dummy # Болванка
|
||||||
|
2 template # Темплейт k8s
|
||||||
|
12 s3 # S3 Object Storage
|
||||||
|
13 s3bucket # S3 бакет
|
||||||
|
19 vcOrg # Организация в Cloud Director
|
||||||
|
# 20 vcOrgSaas # Организация [DEPRECATED] — нет в UI
|
||||||
|
21 vc_vdc # Виртуальный датацентр (vDC)
|
||||||
|
22 vc_nsxt # Сетевой шлюз периметра (Edge)
|
||||||
|
# 23 vc_vm # VM в Cloud Director (старый формат) (vc_vm) — нет в UI
|
||||||
|
# 24 vcNat # DEPRECATED Правила маршрутизации для VM (vc_nat)
|
||||||
|
25 vcexternalip # Публичные IP адреса
|
||||||
|
26 vapp # Виртуальный каталог ВМ (vApp)
|
||||||
|
27 vc_vm_v2 # VM в Cloud Director (vc_vmV2)
|
||||||
|
28 vc_vm_v3 # Виртуальная машина
|
||||||
|
29 vcVdcGroup # Группа датацентров
|
||||||
|
# 32 vmpostgre # vc_vm_postgresql_std
|
||||||
|
50 nextcloud # Nextcloud
|
||||||
|
81 superset # Apache Superset
|
||||||
|
82 harbor # Container Registry
|
||||||
|
86 k8sVelero # Velero
|
||||||
|
# 87 k8svalkey # Valkey — нет в UI
|
||||||
|
# 88 k8sZitiController # k8sZitiController — нет в UI
|
||||||
|
89 flask # Web-сервер с фреймворком Flask
|
||||||
|
90 postgres # PostgreSQL
|
||||||
|
91 redis # Redis
|
||||||
|
92 mongodb # MongoDB
|
||||||
|
93 rabbitmq # RabbitMQ
|
||||||
|
94 lucee # Lucee
|
||||||
|
95 nodejs # NodeJS
|
||||||
|
96 pgadmin # pgAdmin
|
||||||
|
# 97 nodered # NodeRed
|
||||||
|
98 http # Простой HTTP контейнер
|
||||||
|
99 gitea # Gitea
|
||||||
|
# 100 openwhisk # Serverless Openwhisk — нет в UI
|
||||||
|
109 zonesV2 # Управление DNS
|
||||||
|
# 110 dnszone # DNS зона — нет в UI
|
||||||
|
111 dnsrecord # DNS запись
|
||||||
|
# 112 tenant # Тенант в Grafana — нет в UI
|
||||||
|
# 113 vcComplex # Быстрый старт — нет в UI
|
||||||
|
# 114 GiteaComplex # Комплексная услуга по созданию gitea — нет в UI
|
||||||
|
115 mariadb # Mariadb
|
||||||
|
116 kafka # ApacheKafka
|
||||||
|
# 117 nifi # Nifi
|
||||||
|
119 Akhq # Akhq
|
||||||
|
120 clickhouse # ClickHouse
|
||||||
|
148 vcMgmtSthutrvalCluster # Менеджмент Kubernetes кластер Штурвал
|
||||||
|
149 valoTenant # VALO Cloud
|
||||||
|
150 k8sSthutrvalCluster # Kubernetes кластер Штурвал
|
||||||
|
151 k8sOpenbao # Vault
|
||||||
|
# 153 nifi # Nifi (DEV)
|
||||||
|
163 llmAi # LLM
|
||||||
|
# 175 k8sGo # Go — нет в UI
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
# Общий список сервисов — объединение DEV/TEST/PROD
|
||||||
|
# service_id service_name # RU description
|
||||||
|
# do not delete lines; to exclude a service, comment it with #
|
||||||
|
1 dummy # Болванка
|
||||||
|
2 template # Темплейт k8s
|
||||||
|
12 s3 # S3 Object Storage
|
||||||
|
13 s3bucket # S3 бакет
|
||||||
|
19 vcOrg # Организация в Cloud Director
|
||||||
|
# 20 vcOrgSaas # Организация [DEPRECATED] — нет в UI
|
||||||
|
21 vc_vdc # Виртуальный датацентр (vDC)
|
||||||
|
22 vc_nsxt # Сетевой шлюз периметра (Edge)
|
||||||
|
# 23 vc_vm # VM в Cloud Director (старый формат) (vc_vm) — нет в UI
|
||||||
|
# 24 vcNat # DEPRECATED Правила маршрутизации для VM (vc_nat)
|
||||||
|
25 vcexternalip # Публичные IP адреса
|
||||||
|
26 vapp # Виртуальный каталог ВМ (vApp)
|
||||||
|
27 vc_vm_v2 # VM в Cloud Director (vc_vmV2)
|
||||||
|
28 vc_vm_v3 # Виртуальная машина
|
||||||
|
29 vcVdcGroup # Группа датацентров
|
||||||
|
# 32 vmpostgre # vc_vm_postgresql_std
|
||||||
|
50 nextcloud # Nextcloud
|
||||||
|
81 superset # Apache Superset
|
||||||
|
82 harbor # Container Registry
|
||||||
|
86 k8sVelero # Velero
|
||||||
|
# 87 k8svalkey # Valkey — нет в UI
|
||||||
|
# 88 k8sZitiController # k8sZitiController — нет в UI
|
||||||
|
89 flask # Web-сервер с фреймворком Flask
|
||||||
|
90 postgres # PostgreSQL
|
||||||
|
91 redis # Redis
|
||||||
|
92 mongodb # MongoDB
|
||||||
|
93 rabbitmq # RabbitMQ
|
||||||
|
94 lucee # Lucee
|
||||||
|
95 nodejs # NodeJS
|
||||||
|
96 pgadmin # pgAdmin
|
||||||
|
# 97 nodered # NodeRed
|
||||||
|
98 http # Простой HTTP контейнер
|
||||||
|
99 gitea # Gitea
|
||||||
|
# 100 openwhisk # Serverless Openwhisk — нет в UI
|
||||||
|
109 zonesV2 # Управление DNS
|
||||||
|
# 110 dnszone # DNS зона — нет в UI
|
||||||
|
111 dnsrecord # DNS запись
|
||||||
|
# 112 tenant # Тенант в Grafana — нет в UI
|
||||||
|
# 113 vcComplex # Быстрый старт — нет в UI
|
||||||
|
# 114 GiteaComplex # Комплексная услуга по созданию gitea — нет в UI
|
||||||
|
115 mariadb # Mariadb
|
||||||
|
116 kafka # ApacheKafka
|
||||||
|
# 117 nifi # Nifi
|
||||||
|
119 Akhq # Akhq
|
||||||
|
120 clickhouse # ClickHouse
|
||||||
|
148 vcMgmtSthutrvalCluster # Менеджмент Kubernetes кластер Штурвал
|
||||||
|
149 valoTenant # VALO Cloud
|
||||||
|
150 k8sSthutrvalCluster # Kubernetes кластер Штурвал
|
||||||
|
151 k8sOpenbao # Vault
|
||||||
|
# 153 nifi # Nifi (DEV)
|
||||||
|
163 llmAi # LLM
|
||||||
|
# 175 k8sGo # Go — нет в UI
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
"""
|
||||||
|
Чтение списка разрешённых сервисов из services_{stand}.txt.
|
||||||
|
|
||||||
|
Формат файла: service_id service_name # описание
|
||||||
|
Закомментированные (#) строки — исключены.
|
||||||
|
Пустые строки — игнорируются.
|
||||||
|
|
||||||
|
Файл лежит в site/config/, пушится с кодом, деплоится вместе с приложением.
|
||||||
|
При изменении списка: edit → commit → push → redeploy.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
|
||||||
|
_CONFIG_DIR = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "config")
|
||||||
|
|
||||||
|
|
||||||
|
def load_service_ids(stand="test"):
|
||||||
|
"""Вернуть set разрешённых service_id для указанного стенда."""
|
||||||
|
path = os.path.join(_CONFIG_DIR, f"services_{stand}.txt")
|
||||||
|
ids = set()
|
||||||
|
try:
|
||||||
|
with open(path) as f:
|
||||||
|
for line in f:
|
||||||
|
line = line.strip()
|
||||||
|
if not line or line.startswith("#"):
|
||||||
|
continue
|
||||||
|
# Формат: "1 dummy # Болванка"
|
||||||
|
parts = line.split()
|
||||||
|
if parts and parts[0].isdigit():
|
||||||
|
ids.add(int(parts[0]))
|
||||||
|
except FileNotFoundError:
|
||||||
|
pass # файла нет — показываем все сервисы
|
||||||
|
return ids
|
||||||
@@ -14,6 +14,7 @@ from api.http_client import HttpClient, detect_endpoint, create_client, stand_na
|
|||||||
from api.auth import get_token, get_client_id, get_token_info, get_token_masked
|
from api.auth import get_token, get_client_id, get_token_info, get_token_masked
|
||||||
from operations.get_instances import get_organization, get_instances
|
from operations.get_instances import get_organization, get_instances
|
||||||
from operations.get_services import get_services, get_service_detail
|
from operations.get_services import get_services, get_service_detail
|
||||||
|
from operations.service_list import load_service_ids
|
||||||
from operations.tracker import list_all as tracker_list
|
from operations.tracker import list_all as tracker_list
|
||||||
from runner import load_config
|
from runner import load_config
|
||||||
|
|
||||||
@@ -135,6 +136,8 @@ def index():
|
|||||||
# Конфиг из config.yaml + версия приложения
|
# Конфиг из config.yaml + версия приложения
|
||||||
config = dict(load_config() or {})
|
config = dict(load_config() or {})
|
||||||
config["VERSION"] = current_app.config["VERSION"]
|
config["VERSION"] = current_app.config["VERSION"]
|
||||||
|
# Список разрешённых сервисов из services_{stand}.txt
|
||||||
|
config["service_ids"] = sorted(load_service_ids(stand))
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
error = str(e)
|
error = str(e)
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -98,7 +98,7 @@
|
|||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header" style="font-size:12px;">Сервисы</div>
|
<div class="card-header" style="font-size:12px;">Сервисы</div>
|
||||||
<div class="card-body" style="padding:4px;">
|
<div class="card-body" style="padding:4px;">
|
||||||
<div class="svc-item active" onclick="selectService(1)">1. Болванка</div>
|
{% for svc in services %}{% if svc.svcId in config.service_ids %}<div class="svc-item {% if loop.first %}active{% endif %}" onclick="selectService({{ svc.svcId }})">{{ svc.svcId }}. {{ svc.svc }}</div>{% endif %}{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user