From 8602b023fcd8edc3f830cec1319cc9566f42eb7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Mon, 9 Mar 2026 09:58:37 +0400 Subject: [PATCH] =?UTF-8?q?fix:=20provider=20v0.1.8=20=E2=80=94=20wait=20f?= =?UTF-8?q?or=20trigger=20URL=20after=20create?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- .../internal/resources/trigger_resource.go | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) 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))...) }