svc-api: переход на Gateway (lk-api-gateway), User-Agent+Referer для DDoS-Guard, метод Виталия /instanceOperations/default/{id} с dataDescriptor, LEGACY-пометки везде
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
<!-- ⛔⛔⛔ LEGACY: deck-api.ngcloud.ru ЗАКРЫВАЕТСЯ! Все примеры ниже — ИСТОРИЧЕСКИЕ. -->
|
||||
<!-- Актуальный API: https://lk-api-gateway.ngcloud.ru/api/v1/svc -->
|
||||
# Сводка по разработке Terraform-провайдера Nubes
|
||||
|
||||
Дата: 2026-01-22
|
||||
@@ -111,7 +113,8 @@ curl -s -X POST "https://keycloak.nubes.ru/realms/cloud/protocol/openid-connect/
|
||||
```
|
||||
- Проверка API:
|
||||
```bash
|
||||
curl -H "Authorization: Bearer $TOKEN" https://deck-api.ngcloud.ru/api/v1/index.cfm/instances
|
||||
# ⛔ LEGACY: в примере ниже deck-api заменён на Gateway.
|
||||
curl -H "Authorization: Bearer $TOKEN" https://lk-api-gateway.ngcloud.ru/api/v1/svc/instances
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
# Terraform Provider для Nubes Cloud - История разработки
|
||||
|
||||
<!-- ⛔⛔⛔ LEGACY: deck-api.ngcloud.ru ЗАКРЫВАЕТСЯ! Все упоминания ниже — ИСТОРИЧЕСКИЕ. -->
|
||||
<!-- Актуальный API: https://lk-api-gateway.ngcloud.ru/api/v1/svc -->
|
||||
|
||||
**Дата**: 21 января 2026
|
||||
**Проект**: terraform-provider-mycloud
|
||||
**Цель**: Создание Terraform Provider для управления ресурсами в облачной платформе Nubes
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<!-- ⛔ LEGACY: deck-api.ngcloud.ru ЗАКРЫВАЕТСЯ. Актуальный API: lk-api-gateway.ngcloud.ru/api/v1/svc -->
|
||||
# PostgreSQL Service Analysis & Implementation Plan
|
||||
|
||||
**Date:** 2026-01-27
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<!-- ⛔ LEGACY: deck-api.ngcloud.ru ЗАКРЫВАЕТСЯ. Актуальный API: lk-api-gateway.ngcloud.ru/api/v1/svc -->
|
||||
# Resource Realm: универсальное определение через API
|
||||
|
||||
## Зачем это нужно
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<!-- ⛔ LEGACY: deck-api.ngcloud.ru ЗАКРЫВАЕТСЯ. Актуальный API: lk-api-gateway.ngcloud.ru/api/v1/svc -->
|
||||
# VM Service Discovery & Implementation Details
|
||||
|
||||
## Обзор
|
||||
|
||||
@@ -31,7 +31,8 @@ terraform {
|
||||
}
|
||||
|
||||
provider "nubes" {
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
# ⛔ LEGACY: deck-api.ngcloud.ru ЗАКРЫВАЕТСЯ. Использовать lk-api-gateway.
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc"
|
||||
api_token = var.api_token
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<!-- ⛔ LEGACY: deck-api.ngcloud.ru ЗАКРЫВАЕТСЯ. Актуальный API: lk-api-gateway.ngcloud.ru/api/v1/svc -->
|
||||
# S3 Bucket Notifications: изменения в бакете и вызов функции
|
||||
|
||||
## Короткий ответ
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_akhq" "baza" {
|
||||
resource_realm = "TODO" # Выбрать платформу из списка
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_dnsrecord" "baza" {
|
||||
zone_uid = "TODO" # UUID экземпляра услуги DNS-зоны
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_dnszone" "baza" {
|
||||
zone_email = "TODO" # Контактный e-mail
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_dummy" "baza" {
|
||||
resource_realm = "TODO" # Платформа для развертывания
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_flask" "baza" {
|
||||
resource_realm = "TODO" # Платформа для развертывания
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_gitea_complex" "baza" {
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_gitea" "baza" {
|
||||
psql_uid = "TODO" # UUID Услуги k8sPgsql. Пользователя techGitea, базу данных gitea создаёт автоматически
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_harbor" "baza" {
|
||||
resource_realm = "TODO" # Платформа для развертывания
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_http" "baza" {
|
||||
resource_realm = "TODO" # Платформа для развертывания
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_k8s_sthutrval_cluster" "baza" {
|
||||
nsxt_uid = "TODO" # InstanceUid nsxt. Nsxt должен быть создан
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_k8s_ziti_controller" "baza" {
|
||||
resource_realm = "TODO" # Платформа для развертывания
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_kafka" "baza" {
|
||||
resource_instances = 1 # Пример: `2`
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_lucee" "baza" {
|
||||
resource_realm = "TODO" # Платформа для развертывания
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_mariadb" "baza" {
|
||||
resource_realm = "TODO" # Платформа для развертывания
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_mongodb" "baza" {
|
||||
resource_instances = 1 # Пример: `2`
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_nextcloud" "baza" {
|
||||
psql_uid = "TODO"
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_nifi" "baza" {
|
||||
kafka_uid = "TODO" # Выбрать кластер из списка
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_nodejs" "baza" {
|
||||
resource_realm = "TODO" # Платформа для развертывания
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_nodered" "baza" {
|
||||
resource_realm = "TODO" # Платформа для развертывания
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_openwhisk" "baza" {
|
||||
username = "TODO" # Имя пользователя Openwhisk
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_pgadmin" "baza" {
|
||||
resource_realm = "TODO" # Платформа для развертывания
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_rabbitmq" "baza" {
|
||||
resource_realm = "TODO" # Выбрать платформу из списка
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_redis" "baza" {
|
||||
resource_realm = "TODO" # Платформа для развертывания
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_s3" "baza" {
|
||||
resource_realm = "TODO" # Платформа для развертывания
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_s3bucket" "baza" {
|
||||
s3_user_uid = "235e0546-..." # UID Корневой услуги S3. На основе него будет создан бакет.
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_superset" "baza" {
|
||||
resource_realm = "TODO" # Платформа для развертывания
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_template" "baza" {
|
||||
resource_realm = "TODO" # Платформа для развертывания
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_tenant" "baza" {
|
||||
grafana_org_name = "TODO" # WZ-Код клиента
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_valo_tenant" "baza" {
|
||||
resource_realm = "TODO"
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_vapp" "baza" {
|
||||
nsxt_uid = "TODO" # UUID Услуги `Сетевой шлюз периметра (Edge)`
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_vc_complex" "baza" {
|
||||
resource_realm = "TODO" # Платформа для развертывания
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_vc_nsxt" "baza" {
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_vc_org" "baza" {
|
||||
resource_realm = "TODO" # Облако в котором будет развёрнут тенант
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_vc_org_saas" "baza" {
|
||||
resource_realm = "TODO" # Платформа для развертывания
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_vc_vdc" "baza" {
|
||||
organization_uid = "TODO" # Для создания VDC предварительно необходимо создать организацию через услугу `Организация в Cloud Director`
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_vc_vdc_group" "baza" {
|
||||
vdc_uid = "TODO"
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_vc_vm" "baza" {
|
||||
vapp_uid = "TODO" # InstanceUid vApp. vApp должен быть создан
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_vc_vm_v2" "baza" {
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_vc_vm_v3" "baza" {
|
||||
vapp_uid = "TODO"
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_vcexternalip" "baza" {
|
||||
service_uid = "TODO"
|
||||
|
||||
@@ -21,7 +21,7 @@ terraform {
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://lk-api-gateway.ngcloud.ru/api/v1/svc" <!-- ⛔ LEGACY index.cfm удалён, заменён на Gateway -->
|
||||
}
|
||||
resource "nubes_vmpostgre" "baza" {
|
||||
vdc_uid = "TODO" # InstanceUid vdc. Vdc должен быть создан
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<!-- ⛔ LEGACY: deck-api.ngcloud.ru ЗАКРЫВАЕТСЯ. Актуальный API: lk-api-gateway.ngcloud.ru/api/v1/svc -->
|
||||
# PostgreSQL backend bugs (2026-02-28)
|
||||
|
||||
## Scope
|
||||
|
||||
@@ -33,30 +33,84 @@
|
||||
|
||||
---
|
||||
|
||||
## 3. Обнаружение схемы параметров для сервиса (Parameter Scheme Discovery)
|
||||
## 3. Обнаружение схемы параметров для сервиса (метод Виталия)
|
||||
|
||||
Поскольку прямого эндпоинта со списком всех определений параметров нет, используется паттерн "Черновик операции".
|
||||
> **Это канонический метод получения ВСЕХ параметров, включая подполя map-fixed.**
|
||||
> Источник: Виталий Зайцев (DevOps Nubes), 15.07.2026.
|
||||
|
||||
### Шаг А: Создание черновика
|
||||
1. **Запрос:** `POST /v1/index.cfm/instanceOperations`
|
||||
2. **Тело:**
|
||||
```json
|
||||
{
|
||||
"operation": "create",
|
||||
"serviceId": <svcId_из_шага_2>,
|
||||
"instanceUid": null
|
||||
}
|
||||
```
|
||||
3. **Результат:** Заголовок `Location` или тело ответа содержат `instanceOperationUid` (UUID).
|
||||
### Три шага — полный список параметров без создания инстанса:
|
||||
|
||||
### Шаг Б: Получение метаданных параметров
|
||||
1. **Запрос:** `GET /v1/index.cfm/instanceOperations/{instanceOperationUid}?fields=cfsParams`
|
||||
2. **Анализ `cfsParams`:**
|
||||
- `svcOperationCfsParamId`: Числовой ID параметра (например, `8`). **Критично для работы провайдера.**
|
||||
- `label`: Имя поля в UI (например, "UUID VDC").
|
||||
- `dataType`: Тип (`string`, `boolean`, `list`, `uuid`).
|
||||
- `isRequired`: Обязательность.
|
||||
- `descr`: Подсказка по заполнению.
|
||||
**Шаг 1: найти svcId по имени сервиса**
|
||||
```bash
|
||||
curl -s -H "Authorization: Bearer $TOKEN" $URL/services | jq '.results[] | select(.svc == "ApacheKafka") | .svcId'
|
||||
# → 116
|
||||
```
|
||||
|
||||
**Шаг 2: найти svcOperationId нужной операции**
|
||||
```bash
|
||||
curl -s -H "Authorization: Bearer $TOKEN" $URL/services/116 | jq '.svc.operations[] | select(.operation == "create") | .svcOperationId'
|
||||
# → 148
|
||||
```
|
||||
|
||||
**Шаг 3: получить параметры с подполями и допустимыми значениями**
|
||||
```bash
|
||||
curl -s -H "Authorization: Bearer $TOKEN" $URL/instanceOperations/default/148 | jq '.svcOperation.cfsParams[]'
|
||||
```
|
||||
|
||||
### Почему `/instanceOperations/default/{id}` а не `/serviceOperation/{id}`:
|
||||
|
||||
| Данные | `/serviceOperation/{id}` | `/instanceOperations/default/{id}` |
|
||||
|--------|--------------------------|-------------------------------------|
|
||||
| ID, code, тип, isRequired | ✅ | ✅ |
|
||||
| `valueList` (допустимые значения) | ❌ | ✅ `['false','true']`, `['HOT','COLD']` |
|
||||
| `dataDescriptor` (подполя map-fixed) | ❌ | ✅ cpu, memory, replicas, disk... |
|
||||
| `isModifiable` | ❌ | ✅ на уровне подполей |
|
||||
| `regex`, `maxLength`, `minValue`... | ❌ | ✅ |
|
||||
| `isSensitive` | ❌ | ✅ |
|
||||
|
||||
### Структура dataDescriptor (подполя map-fixed):
|
||||
|
||||
```json
|
||||
{
|
||||
"svcOperationCfsParamId": 788,
|
||||
"svcOperationCfsParam": "clusterConfiguration",
|
||||
"dataType": "map-fixed",
|
||||
"dataDescriptor": {
|
||||
"cpu": {
|
||||
"svcOperationCfsSubparamId": 109,
|
||||
"dataType": "integer > 0",
|
||||
"isRequired": true,
|
||||
"valueList": ""
|
||||
},
|
||||
"replicas": {
|
||||
"svcOperationCfsSubparamId": 135,
|
||||
"dataType": "integer > 0",
|
||||
"isRequired": true,
|
||||
"valueList": "1,3,5,7"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Формат valueList:
|
||||
|
||||
- Для **верхнеуровневых** параметров: JSON-массив `["false", "true"]`
|
||||
- Для **подполей** dataDescriptor: comma-separated строка `"1,3,5,7"`
|
||||
- Для `boolean`: всегда `"false,true"` или `["false","true"]`
|
||||
|
||||
### URL для разных стендов:
|
||||
|
||||
| Стенд | Базовый URL |
|
||||
|-------|-------------|
|
||||
| test (новый Gateway) | `https://lk-api-gateway-test.ngcloud.ru/api/v1/svc` |
|
||||
| test (старый proxy) | `https://deck-api-test.ngcloud.ru/api/v1/index.cfm?endpoint=` |
|
||||
| dev | `https://deck-api-dev.ngcloud.ru/api/v1/index.cfm?endpoint=` |
|
||||
| prod | `https://deck-api.ngcloud.ru/api/v1/index.cfm?endpoint=` |
|
||||
|
||||
### Старый метод (через черновик) — НЕ ИСПОЛЬЗОВАТЬ:
|
||||
|
||||
Ранее использовался паттерн "Черновик операции" (POST /instanceOperations → GET с ?fields=cfsParams).
|
||||
Он НЕ даёт dataDescriptor и valueList. Вместо него использовать `/instanceOperations/default/{id}`.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Taffy API Technical Manual for AI Agents
|
||||
|
||||
## 1. Authentication & Security
|
||||
**Base URL**: `https://deck-api.ngcloud.ru/api/v1/index.cfm`
|
||||
**Base URL**: `https://lk-api-gateway.ngcloud.ru/api/v1/svc` <!-- ⛔ LEGACY: was deck-api.ngcloud.ru/api/v1/index.cfm -->
|
||||
|
||||
All requests MUST include these headers (as indicated by CORS `access-control-allow-headers`):
|
||||
- `Authorization`: `Bearer <TOKEN>`
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<!-- ⛔ LEGACY: deck-api.ngcloud.ru ЗАКРЫВАЕТСЯ. Актуальный API: lk-api-gateway.ngcloud.ru/api/v1/svc -->
|
||||
# Universal Rebuild — Архитектура и рабочая цепочка (актуально)
|
||||
|
||||
Документ для нового чата: описывает, как устроено «универсальное ядро», как формируются YAML‑спеки сервисов и как генерируются Go‑ресурсы. Учитывает ошибки/уроки из текущего чата.
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<!-- ⛔ LEGACY: deck-api.ngcloud.ru ЗАКРЫВАЕТСЯ. Актуальный API: lk-api-gateway.ngcloud.ru/api/v1/svc -->
|
||||
# Резюме для нового чата (подробно)
|
||||
|
||||
## Контекст
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<!-- ⛔ LEGACY: deck-api.ngcloud.ru ЗАКРЫВАЕТСЯ. Актуальный API: lk-api-gateway.ngcloud.ru/api/v1/svc -->
|
||||
# Полный анализ кодовой базы и план развития
|
||||
|
||||
**Дата:** 2026-03-13
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<!-- ⛔ LEGACY: deck-api.ngcloud.ru ЗАКРЫВАЕТСЯ. Актуальный API: lk-api-gateway.ngcloud.ru/api/v1/svc -->
|
||||
# Матрица состояний ресурсов в облаке ngcloud
|
||||
|
||||
## Основные параметры состояния
|
||||
|
||||
@@ -8,6 +8,34 @@
|
||||
- Чеклист разработки/клона: [docs/00_overview/dev-clone-checklist.md](00_overview/dev-clone-checklist.md)
|
||||
- НЛИ/чат-материалы: [docs/00_overview/for_nomo_chat.md](00_overview/for_nomo_chat.md)
|
||||
|
||||
## ⛔ API: как работать с токеном (читать перед любым curl!)
|
||||
|
||||
**Токены НЕ ПРОТУХАЮТ до декабря 2026.** Они в `secrets/{dev,test,prod}.token`.
|
||||
Проверить дату: `python3 -c "import json,base64; t=open('secrets/test.token').read().split('.'); d=json.loads(base64.urlsafe_b64decode(t[1]+'==')); from datetime import datetime,timezone; print(datetime.fromtimestamp(d['exp'],tz=timezone.utc))"`
|
||||
|
||||
**Старый API (index.cfm) — DDoS-Guard требует 3 заголовка, иначе 403:**
|
||||
```bash
|
||||
curl -s --max-time 10 \
|
||||
-H "Authorization: Bearer $(cat secrets/test.token)" \
|
||||
-H "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36" \
|
||||
-H "Referer: https://deck-test.ngcloud.ru/" \
|
||||
"https://deck-api-test.ngcloud.ru/api/v1/index.cfm?endpoint=/services/90"
|
||||
```
|
||||
**Referer должен совпадать со стендом!** Без Referer — 403. Без User-Agent — 403.
|
||||
|
||||
**Новый Gateway (lk-api-gateway) — только Authorization:**
|
||||
```bash
|
||||
curl -s --max-time 10 \
|
||||
-H "Authorization: Bearer $(cat secrets/test.token)" \
|
||||
"https://lk-api-gateway-test.ngcloud.ru/api/v1/svc/services/90"
|
||||
```
|
||||
|
||||
| Стенд | Старый API | Новый Gateway | Referer |
|
||||
|-------|-----------|---------------|---------|
|
||||
| test | `deck-api-test.ngcloud.ru/api/v1/index.cfm` | `lk-api-gateway-test.ngcloud.ru/api/v1/svc` | `https://deck-test.ngcloud.ru/` |
|
||||
| dev | `deck-api-dev.ngcloud.ru/api/v1/index.cfm` | `lk-api-gateway-dev.ngcloud.ru/api/v1/svc` | `https://deck-dev.ngcloud.ru/` |
|
||||
| prod | `deck-api.ngcloud.ru/api/v1/index.cfm` | `lk-api-gateway.ngcloud.ru/api/v1/svc` | `https://deck.ngcloud.ru/` |
|
||||
|
||||
## API и схемы
|
||||
- Алгоритмы API-дискавери: [docs/70_api/api-discovery-algorithms.md](70_api/api-discovery-algorithms.md)
|
||||
- Полный API-дамп: [docs/70_api/api_analysis/API_DOCUMENTATION_SUMMARY.md](70_api/api_analysis/API_DOCUMENTATION_SUMMARY.md)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<!-- ⛔ LEGACY: deck-api.ngcloud.ru ЗАКРЫВАЕТСЯ. Актуальный API: lk-api-gateway.ngcloud.ru/api/v1/svc -->
|
||||
# Instance State Transitions - Матрица состояний инстансов ngcloud
|
||||
|
||||
Полное руководство по определению состояния инстансов через API ngcloud на основе комбинаций флагов и истории операций.
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<!-- ⛔ LEGACY: deck-api.ngcloud.ru ЗАКРЫВАЕТСЯ. Актуальный API: lk-api-gateway.ngcloud.ru/api/v1/svc -->
|
||||
# AI-Agent Glossary (Search-Oriented Index)
|
||||
|
||||
Purpose: compact, English, link-rich glossary to help AI agents find facts fast in this repo.
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<!-- ⛔ LEGACY: deck-api.ngcloud.ru ЗАКРЫВАЕТСЯ. Актуальный API: lk-api-gateway.ngcloud.ru/api/v1/svc -->
|
||||
# Архитектура и методы (CRUD)
|
||||
|
||||
## 1. Актуальная архитектура (универсальный rebuild)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<!-- ⛔ LEGACY: deck-api.ngcloud.ru ЗАКРЫВАЕТСЯ. Актуальный API: lk-api-gateway.ngcloud.ru/api/v1/svc -->
|
||||
# СУПЕРглоссарий (словарь с ссылками)
|
||||
|
||||
Каждый термин содержит ссылки на места употребления в документации.
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
<!-- ⛔⛔⛔ LEGACY: deck-api.ngcloud.ru ЗАКРЫВАЕТСЯ! Все примеры ниже — ИСТОРИЧЕСКИЕ. -->
|
||||
<!-- Актуальный API: https://lk-api-gateway.ngcloud.ru/api/v1/svc -->
|
||||
# How It Was Done — Developer Guide (закрытая страница)
|
||||
|
||||
**Filename & Versioning:** howitwasdone.md / 2026‑02‑04 / Draft v1
|
||||
@@ -76,6 +78,25 @@
|
||||
## 2. База знаний ошибок
|
||||
|
||||
### A. Аутентификация и токены
|
||||
|
||||
**Токены лежат в `secrets/{dev,test,prod}.token`. Срок действия — до декабря 2026.**
|
||||
Проверить дату JWT:
|
||||
```bash
|
||||
python3 -c "import json,base64; t=open('secrets/test.token').read().split('.'); d=json.loads(base64.urlsafe_b64decode(t[1]+'==')); from datetime import datetime,timezone; print(datetime.fromtimestamp(d['exp'],tz=timezone.utc))"
|
||||
```
|
||||
|
||||
**Симптом:** 403 Forbidden (НЕ 401!)
|
||||
**Причина (старый API index.cfm):** DDoS-Guard блокирует — нет Referer или нет User-Agent.
|
||||
**Решение для curl (старый API):**
|
||||
```bash
|
||||
curl -s --max-time 10 \
|
||||
-H "Authorization: Bearer $TOKEN" \
|
||||
-H "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36" \
|
||||
-H "Referer: https://deck-test.ngcloud.ru/" \
|
||||
"https://deck-api-test.ngcloud.ru/api/v1/index.cfm?endpoint=/services/90"
|
||||
```
|
||||
Referer должен совпадать со стендом (test/dev/prod). Новый Gateway (lk-api-gateway) требует только Authorization.
|
||||
|
||||
**Симптом:** 401 Unauthorized / Authorization header expected
|
||||
**Причина:** токен истёк или не передан в окружение
|
||||
**Решение:** обновить access_token и сохранить в файле HH‑MM‑SS.token; убедиться, что Terraform читает токен
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<!-- ⛔ LEGACY: deck-api.ngcloud.ru ЗАКРЫВАЕТСЯ. Актуальный API: lk-api-gateway.ngcloud.ru/api/v1/svc -->
|
||||
# API Token Saga — 30.06.2026
|
||||
|
||||
**Дата:** 30 июня 2026
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<!-- ⛔ LEGACY: deck-api.ngcloud.ru ЗАКРЫВАЕТСЯ. Актуальный API: lk-api-gateway.ngcloud.ru/api/v1/svc -->
|
||||
# ⛔⛔⛔ ПРАВИЛА РАЗДЕЛЕНИЯ СТЕНДОВ ⛔⛔⛔
|
||||
|
||||
> **НАРУШЕНИЕ = УВОЛЬНЕНИЕ. Без шуток.**
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<!-- ⛔ LEGACY: deck-api.ngcloud.ru ЗАКРЫВАЕТСЯ. Актуальный API: lk-api-gateway.ngcloud.ru/api/v1/svc -->
|
||||
# Testing Safety Rules
|
||||
|
||||
## ⛔ ЗАПРЕЩЕНО — прогонять тесты в PROD
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<!-- ⛔ LEGACY: deck-api.ngcloud.ru ЗАКРЫВАЕТСЯ. Актуальный API: lk-api-gateway.ngcloud.ru/api/v1/svc -->
|
||||
# Troubleshooting
|
||||
|
||||
## API Nubes — ошибки доступа (403, 401, IAM error)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<!-- ⛔ LEGACY: deck-api.ngcloud.ru ЗАКРЫВАЕТСЯ. Актуальный API: lk-api-gateway.ngcloud.ru/api/v1/svc -->
|
||||
# План: валидация параметров с выбором из списка
|
||||
|
||||
Дата составления: 2026-03-25
|
||||
|
||||
Reference in New Issue
Block a user