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 88a0fb9db6
commit 8602b023fc
@@ -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))...)
}