| 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 |
| } |