AppManager: App installation status monitoring

Change-Id: I64f4ae0d27892b74f8827a275907cb75da09a758
diff --git a/core/installer/cmd/app_manager.go b/core/installer/cmd/app_manager.go
index c2547d6..2f9aef7 100644
--- a/core/installer/cmd/app_manager.go
+++ b/core/installer/cmd/app_manager.go
@@ -138,6 +138,10 @@
 	if err != nil {
 		return err
 	}
+	im, err := newInstanceMonitor()
+	if err != nil {
+		return err
+	}
 	s, err := appmanager.NewServer(
 		appManagerFlags.port,
 		ssClient,
@@ -147,6 +151,7 @@
 		fr,
 		tasks.NewFixedReconciler(env.Id, env.Id),
 		helmMon,
+		im,
 		cnc,
 		vpnAPIClient,
 	)
diff --git a/core/installer/cmd/kube.go b/core/installer/cmd/kube.go
index 1a74731..b83a5a0 100644
--- a/core/installer/cmd/kube.go
+++ b/core/installer/cmd/kube.go
@@ -3,6 +3,7 @@
 import (
 	"github.com/giolekva/pcloud/core/installer"
 	"github.com/giolekva/pcloud/core/installer/kube"
+	"github.com/giolekva/pcloud/core/installer/status"
 )
 
 func newNSCreator() (installer.NamespaceCreator, error) {
@@ -15,8 +16,16 @@
 	return installer.NewZoneStatusFetcher(rootFlags.kubeConfig)
 }
 
-func newHelmReleaseMonitor() (installer.HelmReleaseMonitor, error) {
-	return installer.NewHelmReleaseMonitor(rootFlags.kubeConfig)
+func newHelmReleaseMonitor() (status.ResourceMonitor, error) {
+	return status.NewHelmReleaseMonitor(rootFlags.kubeConfig)
+}
+
+func newInstanceMonitor() (*status.InstanceMonitor, error) {
+	m, err := status.NewDelegatingMonitor(rootFlags.kubeConfig)
+	if err != nil {
+		return nil, err
+	}
+	return status.NewInstanceMonitor(m), nil
 }
 
 func newJobCreator() (installer.JobCreator, error) {