fix: provider v0.1.8 — wait for trigger URL after create

trigger_resource.go: after CreateTrigger, if URL is empty (HTTP trigger),
retry GetTrigger every 2s up to 30s until controller sets status.URL.
Without this, URL in terraform state was always empty after apply.
This commit is contained in:
“Naeel”
2026-03-09 09:58:37 +04:00
parent b90b1bd7a6
commit 42387163c0
@@ -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))...)
}