blob: 059d1ee4c95576e19070777e07184041a9a8b877 [file] [log] [blame]
package tasks
import (
"time"
"github.com/giolekva/pcloud/core/installer"
)
func NewMonitorReleaseTasks(mon installer.HelmReleaseMonitor, rr installer.ReleaseResources) []Task {
var t []Task
for _, h := range rr.Helm {
t = append(t, newMonitorHelm(mon, h))
}
return t
}
func NewMonitorRelease(mon installer.HelmReleaseMonitor, rr installer.ReleaseResources) Task {
return newConcurrentParentTask("Monitor", true, NewMonitorReleaseTasks(mon, rr)...)
}
func newMonitorHelm(mon installer.HelmReleaseMonitor, h installer.Resource) Task {
rType := h.Annotations["dodo.cloud/resource-type"]
var name string
switch rType {
case "virtual-machine":
name = h.Annotations["dodo.cloud/resource.virtual-machine.name"]
case "mongodb":
name = h.Annotations["dodo.cloud/resource.mongodb.name"]
case "postgresql":
name = h.Annotations["dodo.cloud/resource.postgresql.name"]
case "volume":
name = h.Annotations["dodo.cloud/resource.volume.name"]
case "ingress":
name = h.Annotations["dodo.cloud/resource.ingress.host"]
case "service":
name = h.Annotations["dodo.cloud/resource.service.name"]
}
t := newResourceLeafTask(h.Info, &ResourceId{rType, name}, func() error {
for {
if ok, err := mon.IsReleased(h.Namespace, h.Name); err == nil && ok {
break
}
time.Sleep(5 * time.Second)
}
return nil
})
return &t
}