Files
tf_provider/docs/CHAT_RESUME.md
T
2026-06-30 15:45:24 +04:00

134 lines
6.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Universal Provider Work Summary (Detailed)
## 1) Repository & Workspace
- Workspace root: `/home/naeel/terra`
- Active generator project: `/home/naeel/terra/nubes_provider_gen`
- Shared Terraform test config (the one you requested): `/home/naeel/terra/test_persistent/main.tf`
- Provider dev override for this shared config: `/home/naeel/terra/test_persistent/dev_override.tfrc`
## 2) What Was Built / Changed (High Level)
### Universal generator-based provider (Go)
We implemented a generator that reads YAML specs in `resources_yaml` and produces Go resources in `internal/resources_gen`, plus a resource registry.
### Exporter (auto YAML generation)
Created/extended exporter tool to pull CFS params and outputs from API:
- Path: `/home/naeel/terra/nubes_provider_gen/tools/export_yaml/main.go`
- Exports full `create` and `modify` params (cfsParams)
- Added outputs extraction from `state/out`
- Handles non-string `defaultValue`
- Resolves `svcOperationId` via instance details and operations history
- Doesnt fail if `modify` op is absent (for resources that have no modify)
### Generator updates
- Path: `/home/naeel/terra/nubes_provider_gen/tools/gen/main.go`
- Added `outputs` to YAML schema and generated resource schema
- Added output fetch during Create/Read/Update (uses `GetInstanceOutputs`)
- If outputs fetch fails, outputs are set to `null` (avoid unknowns)
- Improved `attrNameFromCode` to avoid `resource_c_p_u` / `allow_no_s_s_l` style
- Required params with defaults now become optional+computed in schema
### Core client updates
- Path: `/home/naeel/terra/nubes_provider_gen/internal/core/client.go`
- Added `GetInstanceOutputs()` to fetch `state.out` for computed outputs
### Documentation
- Added MAYDO section in `/home/naeel/terra/docs/ai_universal_provider_gen.md` for future enhancements
## 3) Key Files (Current)
- Generator: `/home/naeel/terra/nubes_provider_gen/tools/gen/main.go`
- Exporter: `/home/naeel/terra/nubes_provider_gen/tools/export_yaml/main.go`
- Core client: `/home/naeel/terra/nubes_provider_gen/internal/core/client.go`
- YAML specs: `/home/naeel/terra/nubes_provider_gen/resources_yaml/*.yaml`
- Generated resources: `/home/naeel/terra/nubes_provider_gen/internal/resources_gen/*`
- Shared Terraform test config: `/home/naeel/terra/test_persistent/main.tf`
- Dev override: `/home/naeel/terra/test_persistent/dev_override.tfrc`
## 4) Exported YAML Specs (Current)
### Dummy
- File: `/home/naeel/terra/nubes_provider_gen/resources_yaml/dummy.yaml`
- `create` and `modify` params exported
- `outputs` are **absent** (API returns `state.out = null` for dummy)
### Bucket (S3 bucket)
- File: `/home/naeel/terra/nubes_provider_gen/resources_yaml/bucket.yaml`
- `modify` is empty (API does not expose modify op for that instance)
- `outputs` are **absent** (API returns `state.out = null`)
### Postgres
- File: `/home/naeel/terra/nubes_provider_gen/resources_yaml/postgres.yaml`
- CFS params exported, outputs include:
- `externalConnect`, `internalConnect`, `monitoring` (all as string)
- `resourceDisk` type conflict fixed (kept as string for both create/modify)
## 5) Shared Terraform Test Config (as requested)
File: `/home/naeel/terra/test_persistent/main.tf`
Contains **dummy + bucket + postgres**. Current content:
- `nubes_dummy.test_bolt`:
- display_name = `Terraform-Test-Bolvanka-20260201-01`
- resource_realm = `dummy`
- delete_mode = `suspend`
- resume_if_exists = `true`
- `nubes_bucket.test_bucket`:
- display_name = `tf-bucket-gen-20260201-02`
- delete_mode = `delete`
- resume_if_exists = `false`
- `nubes_postgres.test_pg`:
- display_name = `tf-postgres-20260201-03`
- delete_mode = `state_only`
- resume_if_exists = `false`
- other required params from exported YAML
**Dev override** now points to generator build:
`/home/naeel/terra/test_persistent/dev_override.tfrc``"terrareg.kube5s.ru/nubes/nubes" = "/home/naeel/terra/nubes_provider_gen"`
## 6) Tokens & Auth Handling
Rule: on new access_token, save to `/home/naeel/terra/HH-MM-SS.token` (expiry time).
Saved tokens so far:
- `/home/naeel/terra/11-53-16.token` (old)
- `/home/naeel/terra/15-20-50.token` (old)
- `/home/naeel/terra/15-23-19.token` (old)
- `/home/naeel/terra/15-25-59.token` (latest)
Important:
- `/home/naeel/terra/test_persistent/terraform.tfvars` was updated to use the latest token from `15-25-59.token`.
- `/user` endpoint returns 200 with the latest token (so token is valid).
## 7) Test Runs / Current State
### Dummy & Bucket
- Dummy created successfully (id: `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`).
- Bucket created successfully (id: `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`).
### Postgres
- Postgres resource is **not in Terraform state** (it was removed with `terraform state rm`).
- New create was attempted with display_name `tf-postgres-20260201-03` but apply was **cancelled** by user.
- Last error before name change: duplicate display name (400). Now fixed with new display_name.
### TLS timeouts
Occasional TLS handshake timeouts when creating resources. Retrying apply usually works.
## 8) Known Issues / Fixes Applied
- **Outputs**: provider now sets outputs to `null` if `state/out` is missing/unavailable, preventing “unknown after apply” errors.
- **Attribute names**: fixed to avoid `resource_c_p_u` or `allow_no_s_s_l`.
- **Required + default**: required params with defaults are optional+computed in schema.
- **Bucket delete**: fails if instance not fully created. Fixed by waiting and retrying destroy.
## 9) What To Do Next (Continuation Steps)
1) Rebuild provider (if not already):
- `cd /home/naeel/terra/nubes_provider_gen`
- `go run ./tools/gen`
- `go build -o terraform-provider-nubes`
2) Ensure token in `/home/naeel/terra/test_persistent/terraform.tfvars` is valid.
3) Apply from shared config:
- `cd /home/naeel/terra/test_persistent`
- `TF_CLI_CONFIG_FILE=./dev_override.tfrc terraform apply -auto-approve`
4) If TLS timeouts occur, re-run `terraform apply`.
5) If Postgres creation fails due to name conflict, change `display_name` to a new unique value.
## 10) Notes on Outputs
- For dummy & bucket: `state.out` is null, so YAML does not list outputs.
- For postgres: outputs are present in YAML; provider sets them to `null` when not returned yet.
---
If you want a shorter summary or specific error fixes, tell me what to focus on.