feat(provider): add ai_hint_level attribute to provider schema

This commit is contained in:
Naeel
2026-03-12 08:35:07 +03:00
parent d5ce8c2fac
commit 582b589e38
@@ -22,6 +22,7 @@ import (
"context"
"fmt"
"os"
"strconv"
"strings"
"terraform-provider-sless/internal/client"
@@ -45,6 +46,7 @@ type SlessProviderModel struct {
Endpoint types.String `tfsdk:"endpoint"`
Token types.String `tfsdk:"token"`
NubesEndpoint types.String `tfsdk:"nubes_endpoint"`
AIHintLevel types.Int64 `tfsdk:"ai_hint_level"`
}
// New возвращает фабрику провайдера — точная копия паттерна nubes.
@@ -75,6 +77,10 @@ func (p *SlessProvider) Schema(_ context.Context, _ provider.SchemaRequest, resp
MarkdownDescription: "URL nubes API для валидации токена (env: NUBES_ENDPOINT). Опционально. Пример: https://deck-api.ngcloud.ru/api/v1",
Optional: true,
},
"ai_hint_level": schema.Int64Attribute{
MarkdownDescription: "Уровень AI-анализа terraform plan: 0=off, 1=syntax, 2=basic, 3=moderate, 4=detailed, 5=full. По умолчанию 0 (выключен).",
Optional: true,
},
},
}
}
@@ -160,6 +166,20 @@ func (p *SlessProvider) Configure(ctx context.Context, req provider.ConfigureReq
}
}
// --- 7. Экспортируем ai_hint_level в env AI_HINT_LEVEL для sless-plan ---
// sless-plan читает AI_HINT_LEVEL при запуске — так уровень из provider "sless" подхватывается автоматически.
// Если атрибут не задан — уровень 0 (AI выключен), env не выставляется.
if !config.AIHintLevel.IsNull() {
level := int(config.AIHintLevel.ValueInt64())
if level < 0 {
level = 0
}
if level > 5 {
level = 5
}
os.Setenv("AI_HINT_LEVEL", strconv.Itoa(level))
}
resp.ResourceData = c
resp.DataSourceData = c
}