blob: 9a99698fc74cd41285e070270e19442b5c2d9261 [file] [log] [blame]
gio778577f2024-04-29 09:44:38 +04001package tasks
2
3import (
gio778577f2024-04-29 09:44:38 +04004 "time"
5
6 "github.com/giolekva/pcloud/core/installer"
7)
8
gio1cd65152024-08-16 08:18:49 +04009func NewMonitorReleaseTasks(mon installer.HelmReleaseMonitor, rr installer.ReleaseResources) []Task {
gio778577f2024-04-29 09:44:38 +040010 var t []Task
11 for _, h := range rr.Helm {
12 t = append(t, newMonitorHelm(mon, h))
13 }
gio1cd65152024-08-16 08:18:49 +040014 return t
15}
16
17func NewMonitorRelease(mon installer.HelmReleaseMonitor, rr installer.ReleaseResources) Task {
18 return newConcurrentParentTask("Monitor", true, NewMonitorReleaseTasks(mon, rr)...)
gio778577f2024-04-29 09:44:38 +040019}
20
21func newMonitorHelm(mon installer.HelmReleaseMonitor, h installer.Resource) Task {
giof9f0bee2024-06-11 20:10:05 +040022 t := newLeafTask(h.Info, func() error {
gio778577f2024-04-29 09:44:38 +040023 for {
24 if ok, err := mon.IsReleased(h.Namespace, h.Name); err == nil && ok {
25 break
26 }
27 time.Sleep(5 * time.Second)
28 }
29 return nil
30 })
31 return &t
32}