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 d46d651e61
commit 8ac444dd55
@@ -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))...)
}