AppManager: App installation status monitoring
Change-Id: I64f4ae0d27892b74f8827a275907cb75da09a758
diff --git a/core/installer/tasks/release.go b/core/installer/tasks/release.go
index 059d1ee..1bd0d6e 100644
--- a/core/installer/tasks/release.go
+++ b/core/installer/tasks/release.go
@@ -4,9 +4,10 @@
"time"
"github.com/giolekva/pcloud/core/installer"
+ "github.com/giolekva/pcloud/core/installer/status"
)
-func NewMonitorReleaseTasks(mon installer.HelmReleaseMonitor, rr installer.ReleaseResources) []Task {
+func NewMonitorReleaseTasks(mon status.ResourceMonitor, rr installer.ReleaseResources) []Task {
var t []Task
for _, h := range rr.Helm {
t = append(t, newMonitorHelm(mon, h))
@@ -14,11 +15,11 @@
return t
}
-func NewMonitorRelease(mon installer.HelmReleaseMonitor, rr installer.ReleaseResources) Task {
+func NewMonitorRelease(mon status.ResourceMonitor, rr installer.ReleaseResources) Task {
return newConcurrentParentTask("Monitor", true, NewMonitorReleaseTasks(mon, rr)...)
}
-func newMonitorHelm(mon installer.HelmReleaseMonitor, h installer.Resource) Task {
+func newMonitorHelm(mon status.ResourceMonitor, h installer.Resource) Task {
rType := h.Annotations["dodo.cloud/resource-type"]
var name string
switch rType {
@@ -36,11 +37,18 @@
name = h.Annotations["dodo.cloud/resource.service.name"]
}
t := newResourceLeafTask(h.Info, &ResourceId{rType, name}, func() error {
+ ref := status.ResourceRef{
+ Name: h.Name,
+ Namespace: h.Namespace,
+ }
for {
- if ok, err := mon.IsReleased(h.Namespace, h.Name); err == nil && ok {
- break
+ if s, err := mon.Get(ref); err != nil {
+ return err
+ } else if status.IsStatusTerminal(s) {
+ return nil
+ } else {
+ time.Sleep(5 * time.Second)
}
- time.Sleep(5 * time.Second)
}
return nil
})