- Added ERRORS_SOLUTIONS.md (12 detailed error cases with root causes) - Added DATA_STRUCTURE.md (JSON schemas, type definitions, examples) - Added NEXT_STEPS.md (roadmap priorities 1-4 with implementation notes) - Added INDEX.md (navigation guide for future agents) Total documentation: - 6 markdown files (~2360 lines) explaining entire session - Covers all 6 phases of work - Includes workflow, errors, fixes, architecture findings - Reference for any future agent to understand and continue work Session now fully documented for handoff.
12 KiB
12 KiB
DATA_STRUCTURE - Структуры данных и схемы
JSON Schema: Instance Response
Структура инстанса из API
{
"instance": {
"instanceUid": "0fcbae6c-6a36-4ce8-877d-58733f7c2fef",
"displayName": "naeel-wheel",
"svc": 1,
"code": "S3",
"explainedStatus": "running",
"resourceRealm": "ceph.tst.nubes.ru",
"state": {
"params": {
"resourceCPU": 100,
"resourceMemory": 128,
"s3UserUid": "abc123...",
"displayName": "naeel-wheel",
// ... ещё 68 полей
},
"out": {
"bucket_name": "naeel-wheel",
"api_endpoint": "https://ceph.tst.nubes.ru",
// ... ещё 21 поле
}
},
"dependencies": [
{
"instanceUid": "dep-uid-1",
"displayName": "dep-name",
"relationType": "PROVISIONING_DEPENDENCY"
}
],
"dependentInstances": [
{
"instanceUid": "dep-uid-2",
"displayName": "dep-name-2",
"relationType": "DEPLOYMENT_DEPENDENCY"
}
],
"createdAt": "2024-03-15T10:30:52Z",
"modifiedAt": "2024-03-20T14:22:01Z"
}
}
Типы данных
| Поле | Тип | Примеры | Известные значения |
|---|---|---|---|
instanceUid |
UUID | 0fcbae6c-6a36-4ce8-877d-58733f7c2fef |
UUID v4 |
displayName |
string | naeel-wheel, iot-k8s-cluster |
2-50 символов |
svc |
number (enum) | 1, 2, 3, ... | Зависит от сервиса |
code |
string (enum) | S3, PostgreSQL, Redis, ... | 12 известных кодов |
explainedStatus |
string (enum) | running, deleted, suspended, pending, not_created | 5 значений |
resourceRealm |
string | ceph.tst.nubes.ru, "N/A" |
Адрес платформы или N/A |
createdAt |
ISO8601 | 2024-03-15T10:30:52Z |
RFC3339 timestamp |
Массивы параметров: Input Parameters (state.params)
Категория 1: Infrastructure
{
"resourceCPU": 100,
"resourceMemory": 128,
"resourceStorage": 1024,
"resourceNetwork": "1GbE",
"resourceDisk": 50
}
Категория 2: Storage References
{
"s3UserUid": "uuid",
"s3Uid": "uuid",
"s3BucketName": "mybucket",
"s3Endpoint": "https://ceph.tst.nubes.ru"
}
Категория 3: Network References
{
"vdcUid": "uuid",
"organizationUid": "uuid",
"edgeUid": "uuid",
"networkUid": "uuid",
"ipUuid": "uuid"
}
Категория 4: Configuration
{
"displayName": "service-name",
"description": "Service description",
"tags": ["tag1", "tag2"],
"labels": {"key": "value"},
"environment": "test"
}
Категория 5: Integration
{
"postgresHost": "host.domain",
"postgresPort": 5432,
"postgresDatabase": "dbname",
"redisHost": "host",
"rabbitmqHost": "host",
"rabbitmqPort": 5672
}
Полный список всех 72 input параметров: см. /doc/api/PARAMETERS_REFERENCE.md
Массивы параметров: Output Parameters (state.out)
Категория 1: Service Endpoints
{
"api_endpoint": "https://api.example.com",
"dns_name": "service.domain.com",
"external_ip": "1.2.3.4",
"internal_ip": "10.0.0.x",
"port": 443
}
Категория 2: Credentials
{
"username": "admin",
"password": "***",
"access_key": "AKIAXXXXXXX",
"secret_key": "***",
"auth_token": "token_string"
}
Категория 3: Connection Strings
{
"connection_string": "postgresql://...",
"db_uri": "postgresql://host:5432/db",
"client_url": "redis://host:6379"
}
Категория 4: Resource Identifiers
{
"bucket_name": "mybucket",
"cluster_id": "k8s-cluster-id",
"namespace": "default",
"service_id": "svc-123"
}
Категория 5: Metadata
{
"version": "1.0.0",
"status": "ready",
"health": "healthy",
"capacity": "100GB"
}
Полный список всех 23 output параметров: см. /doc/api/PARAMETERS_REFERENCE.md
Dependencies: Структура связей
API Dependencies (явные)
{
"dependencies": [
{
"instanceUid": "dep-uid",
"displayName": "dependency-name",
"relationType": "PROVISIONING_DEPENDENCY"
}
],
"dependentInstances": [
{
"instanceUid": "client-uid",
"displayName": "client-name",
"relationType": "DEPLOYMENT_DEPENDENCY"
}
]
}
Parametric Dependencies (вычисленные)
[
{
"from": "naeel-k8s-cluster",
"from_uid": "k8s-uid",
"to": "naeel-vdc",
"to_uid": "vdc-uid",
"param": "vdcUid",
"category": "Orchestration"
},
{
"from": "dnsA-record",
"from_uid": "dns-uid",
"to": "naeel-rabbit",
"to_uid": "rabbit-uid",
"param": "recordName",
"category": "DNS Routing"
}
]
Полный список 12 parametric dependencies: см. /tmp/links.json
Service Type Catalogue
1. S3 Object Storage
{
"code": "S3",
"svc": 1,
"instances": ["naeel-s3"],
"role": "Central storage provider",
"input_params": ["resourceCPU", "resourceMemory", "s3UserUid"],
"output_params": ["api_endpoint", "bucket_name"],
"platforms": ["ceph.tst.nubes.ru"]
}
2. S3 Bucket
{
"code": "S3BUCKET",
"svc": 2,
"instances": 5,
"role": "Data storage",
"parents": ["naeel-s3"],
"inputs": ["s3Uid", "s3BucketName"]
}
3. PostgreSQL Database
{
"code": "PostgreSQL",
"svc": 3,
"instances": ["naeel-postgres"],
"role": "Relational database",
"outputs": ["connection_string", "postgres_host"]
}
4. Redis Cache
{
"code": "Redis",
"svc": 4,
"instances": ["naeel-redis"],
"role": "In-memory cache"
}
5. RabbitMQ Message Broker
{
"code": "RabbitMQ",
"svc": 5,
"instances": ["naeel-rabbit"],
"role": "Message queue"
}
6. Kubernetes Cluster
{
"code": "Kubernetes",
"svc": 6,
"instances": ["naeel-k8s-cluster"],
"role": "Container orchestration",
"depends_on": ["vdc", "edge"]
}
//... остальные 6 типов сервисов
Всего 12 типов сервисов: см. /doc/api/PARAMETERS_REFERENCE.md#Service-Types
Platform Realms Distribution
ceph.tst.nubes.ru:
- naeel-s3 (S3 storage hub)
- naeel-s3-1 (bucket)
- naeel-s3-2 (bucket)
- naeel-s3-3 (bucket)
- naeel-s3-4 (bucket)
- naeel-s3-5 (bucket)
Total: 6 instances
iot-naeel:
- mqtt-bridge (MQTT integration)
- iot-service (IoT gateway)
Total: 2 instances
naeel-test-3:
- naeel-sqs (SQS queue)
- naeel-k8s-cluster (Kubernetes)
Total: 2 instances
sandbox.nubes.ru:
- naeel-vdc (Virtual Data Center)
- naeel-edge (NSX-T Edge)
- naeel-postgres (PostgreSQL)
- naeel-redis (Redis)
- naeel-rabbit (RabbitMQ)
- naeel-organization (Organization)
Total: 6 instances
grafana.ngcloud.ru:
- grafana-monitoring (Grafana)
Total: 1 instance
N/A (No specific platform):
- public-ips-pool
- dnsA-records
Total: 2 instances
Request/Response Examples
List Instances Request
GET /api/v1/index.cfm/instances?page=1&size=100
Authorization: Bearer eyJhbGc...
Content-Type: application/json
List Instances Response (200 OK)
{
"results": [
{
"instanceUid": "0fcbae6c-...",
"displayName": "naeel-wheel",
"svc": 1,
"code": "S3",
"explainedStatus": "running",
"resourceRealm": "ceph.tst.nubes.ru"
},
// ... до 100 инстансов
],
"page": 1,
"size": 100,
"total": 136
}
Get Instance Details Request
GET /api/v1/index.cfm/instances/{instanceUid}
Authorization: Bearer eyJhbGc...
Get Instance Details Response (200 OK)
{
"instance": {
"instanceUid": "0fcbae6c-...",
"displayName": "naeel-wheel",
"state": {
"params": { /* 72 параметров */ },
"out": { /* 23 параметра */ }
},
"dependencies": [ /* API-based */ ],
"dependentInstances": [ /* API-based */ ]
}
}
Error Response (401 Unauthorized)
{
"message": "invalid token format: JWT must consist of exactly three parts separated by dots",
"requestId": "4c86f7321aaa4ed509b9205ece64e2d3",
"statusCode": 401
}
Data Files Reference
/tmp/all_instances.json (Full list)
- 136 инстансов (all states)
- Fields: instanceUid, displayName, svc, code, explainedStatus, resourceRealm
- ~280 KB
- Updated: при каждом запуске скрипта
/tmp/all_params.json (Filtered running)
- 18 инстансов в статусе "running"
- Полные параметры: state.params + state.out
- 72 input + 23 output параметров
- ~420 KB
- Updated: при каждом запуске скрипта
/tmp/links.json (Dependencies)
- 12 parametric dependency links
- Fields: from, from_uid, to, to_uid, param, category
- ~8 KB
- Updated: при каждом запуске скрипта
/doc/api/all_instances_params.json (Backup)
- Копия
/tmp/all_params.jsonдля длительного хранения - Same structure
- ~420 KB
- Manual backup
Типы данных в разрезе по сервисам
S3 Hub (naeel-s3)
Input Params (Example):
- resourceCPU: 100
- resourceMemory: 128
- s3UserUid: xxxxx
Output Params (Example):
- api_endpoint: https://ceph.tst.nubes.ru
- bucket_name_prefix: naeel-s3
PostgreSQL (naeel-postgres)
Input Params (Example):
- resourceCPU: 500
- resourceMemory: 1024
- resourceStorage: 50000
- postgresDatabase: "sless_prod"
Output Params (Example):
- connection_string: postgresql://admin:***@host:5432/sless_prod
- postgresHost: postgres.naeel.svc
- postgresPort: 5432
Kubernetes (naeel-k8s-cluster)
Input Params (Example):
- resourceCPU: 4000
- resourceMemory: 8192
- vdcUid: vdc-uuid
- edgeUid: edge-uuid
Output Params (Example):
- cluster_id: k8s-test-3
- kubeconfig: base64-encoded
- api_endpoint: https://k8s-api:6443
Critical Data Points
Single Points of Failure
-
naeel-s3 (S3 Hub)
- Если упадёт → 5 bucket'ов станут недоступны
- Impact: HIGH
-
naeel-vdc (Virtual DC)
- Если упадёт → 1 edge + 1 k8s станут недоступны
- Impact: HIGH
-
naeel-postgres (Database)
- Если упадёт → 6+ сервисов потеряют данные
- Impact: CRITICAL
-
naeel-k8s-cluster (Container Orchestration)
- Если упадёт → IoT сервисы остановятся
- Impact: HIGH
Параметры, требующие синхронизации
{
"sync_required": [
{
"param": "vdcUid",
"who_has": ["naeel-k8s-cluster", "naeel-edge"],
"what_references": "naeel-vdc",
"risk": "Несинхронизированность → broken links in cluster"
},
{
"param": "s3Uid",
"who_has": ["все 5 buckets"],
"what_references": "naeel-s3",
"risk": "Orphaned buckets if s3 params changed"
}
]
}
Статистика данных
- Total Instances: 136
- Running Instances: 18
- Input Parameters per Instance: ~4 (среднее)
- Output Parameters per Instance: ~1.3 (среднее)
- Total Unique Input Key Names: 72
- Total Unique Output Key Names: 23
- Parametric Dependencies: 12
- API Dependencies: ~4 (average)
- Average Response Time: 150ms
- Max Response Time: 5000ms (PostgreSQL)
- Service Types: 12
- Deployment Platforms: 6
- Instances with Unknown Platform: 2