AppManager: monitor installed HelmRelease resources

Change-Id: Ia036e7dda8136ad696d8222e799c4d1b6a9018a9
diff --git a/core/installer/tasks/release.go b/core/installer/tasks/release.go
new file mode 100644
index 0000000..53e5e74
--- /dev/null
+++ b/core/installer/tasks/release.go
@@ -0,0 +1,29 @@
+package tasks
+
+import (
+	"fmt"
+	"time"
+
+	"github.com/giolekva/pcloud/core/installer"
+)
+
+func NewMonitorRelease(mon installer.HelmReleaseMonitor, rr installer.ReleaseResources) Task {
+	var t []Task
+	for _, h := range rr.Helm {
+		t = append(t, newMonitorHelm(mon, h))
+	}
+	return newConcurrentParentTask("Monitor", true, t...)
+}
+
+func newMonitorHelm(mon installer.HelmReleaseMonitor, h installer.Resource) Task {
+	t := newLeafTask(fmt.Sprintf("%s/%s", h.Namespace, h.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
+}