6.2 KiB
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
createandmodifyparams (cfsParams) - Added outputs extraction from
state/out - Handles non-string
defaultValue - Resolves
svcOperationIdvia instance details and operations history - Doesn’t fail if
modifyop is absent (for resources that have no modify)
Generator updates
- Path:
/home/naeel/terra/nubes_provider_gen/tools/gen/main.go - Added
outputsto 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
attrNameFromCodeto avoidresource_c_p_u/allow_no_s_s_lstyle - 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 fetchstate.outfor computed outputs
Documentation
- Added MAYDO section in
/home/naeel/terra/docs/ai_universal_provider_gen.mdfor 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 createandmodifyparams exportedoutputsare absent (API returnsstate.out = nullfor dummy)
Bucket (S3 bucket)
- File:
/home/naeel/terra/nubes_provider_gen/resources_yaml/bucket.yaml modifyis empty (API does not expose modify op for that instance)outputsare absent (API returnsstate.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)
resourceDisktype 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
- display_name =
nubes_bucket.test_bucket:- display_name =
tf-bucket-gen-20260201-02 - delete_mode =
delete - resume_if_exists =
false
- display_name =
nubes_postgres.test_pg:- display_name =
tf-postgres-20260201-03 - delete_mode =
state_only - resume_if_exists =
false - other required params from exported YAML
- display_name =
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.tfvarswas updated to use the latest token from15-25-59.token./userendpoint 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-03but 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
nullifstate/outis missing/unavailable, preventing “unknown after apply” errors. - Attribute names: fixed to avoid
resource_c_p_uorallow_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)
- Rebuild provider (if not already):
cd /home/naeel/terra/nubes_provider_gengo run ./tools/gengo build -o terraform-provider-nubes
- Ensure token in
/home/naeel/terra/test_persistent/terraform.tfvarsis valid. - Apply from shared config:
cd /home/naeel/terra/test_persistentTF_CLI_CONFIG_FILE=./dev_override.tfrc terraform apply -auto-approve
- If TLS timeouts occur, re-run
terraform apply. - If Postgres creation fails due to name conflict, change
display_nameto a new unique value.
10) Notes on Outputs
- For dummy & bucket:
state.outis null, so YAML does not list outputs. - For postgres: outputs are present in YAML; provider sets them to
nullwhen not returned yet.
If you want a shorter summary or specific error fixes, tell me what to focus on.