feat(provider): add ai_hint_level attribute to provider schema
This commit is contained in:
@@ -22,6 +22,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"terraform-provider-sless/internal/client"
|
"terraform-provider-sless/internal/client"
|
||||||
@@ -45,6 +46,7 @@ type SlessProviderModel struct {
|
|||||||
Endpoint types.String `tfsdk:"endpoint"`
|
Endpoint types.String `tfsdk:"endpoint"`
|
||||||
Token types.String `tfsdk:"token"`
|
Token types.String `tfsdk:"token"`
|
||||||
NubesEndpoint types.String `tfsdk:"nubes_endpoint"`
|
NubesEndpoint types.String `tfsdk:"nubes_endpoint"`
|
||||||
|
AIHintLevel types.Int64 `tfsdk:"ai_hint_level"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// New возвращает фабрику провайдера — точная копия паттерна nubes.
|
// 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",
|
MarkdownDescription: "URL nubes API для валидации токена (env: NUBES_ENDPOINT). Опционально. Пример: https://deck-api.ngcloud.ru/api/v1",
|
||||||
Optional: true,
|
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.ResourceData = c
|
||||||
resp.DataSourceData = c
|
resp.DataSourceData = c
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user