diff --git a/terraform/provider/internal/resources/trigger_resource.go b/terraform/provider/internal/resources/trigger_resource.go index 578b6b3..e94e0fe 100644 --- a/terraform/provider/internal/resources/trigger_resource.go +++ b/terraform/provider/internal/resources/trigger_resource.go @@ -1,4 +1,4 @@ -// 2026-03-08 +// 2026-03-08, обновлено 2025-06-05 // trigger_resource.go — Terraform ресурс sless_trigger. // Поддерживает type=http (создаёт Service+Ingress) и type=cron (запускает по schedule). // enabled=false: масштабирует Deployment функции до 0 (не принимает запросы, не потребляет ресурсы). @@ -8,6 +8,7 @@ package resources import ( "context" "fmt" + "time" "terraform-provider-sless/internal/client" @@ -147,6 +148,22 @@ func (r *TriggerResource) Create(ctx context.Context, req resource.CreateRequest return } + // Контроллер заполняет status.URL асинхронно — ждём до 30 секунд. + // Без этого URL остаётся пустым в state и требует ручного terraform refresh. + if tr.URL == "" && plan.Type.ValueString() == "http" { + ns := plan.Namespace.ValueString() + name := plan.Name.ValueString() + deadline := time.Now().Add(30 * time.Second) + for time.Now().Before(deadline) { + time.Sleep(2 * time.Second) + got, gerr := r.client.GetTrigger(ctx, ns, name) + if gerr == nil && got != nil && got.URL != "" { + tr = got + break + } + } + } + resp.Diagnostics.Append(resp.State.Set(ctx, trToModel(tr))...) }