AppManager: Implement ingress monitoring
Change-Id: I156236c3f062a616cfd5de9821aeccbf686e0c22
diff --git a/core/installer/status/instance.go b/core/installer/status/instance.go
index 9ad2ff0..8263803 100644
--- a/core/installer/status/instance.go
+++ b/core/installer/status/instance.go
@@ -4,6 +4,7 @@
"bytes"
"encoding/json"
"fmt"
+ "strings"
)
type InstanceMonitor struct {
@@ -49,40 +50,54 @@
// TODO(gio): handle volume
func (m *InstanceMonitor) monitor(namespace string, resource DodoResource, out ResourceOut, ret map[DodoResource]Status) (Status, error) {
status := StatusNoStatus
- for _, h := range out.Helm {
- hs, err := m.m.Get(Resource{
- Type: ResourceHelmRelease,
+ if resource.Type == "ingress" {
+ var err error
+ status, err = m.m.Get(Resource{
+ Type: ResourceIngress,
ResourceRef: ResourceRef{
- Id: h.Id,
- Name: h.Name,
+ Id: out.Id,
+ Name: fmt.Sprintf("ingress-%s", strings.TrimPrefix(resource.Name, "https://")),
Namespace: namespace,
},
})
- fmt.Println(hs, err)
if err != nil {
return StatusNoStatus, err
}
- status = mergeStatus(status, hs)
+ } else {
+ for _, h := range out.Helm {
+ hs, err := m.m.Get(Resource{
+ Type: ResourceHelmRelease,
+ ResourceRef: ResourceRef{
+ Id: h.Id,
+ Name: h.Name,
+ Namespace: namespace,
+ },
+ })
+ if err != nil {
+ return StatusNoStatus, err
+ }
+ status = mergeStatus(status, hs)
+ }
}
for _, i := range out.Volume {
if s, err := m.monitor(namespace, DodoResource{"volume", i.Name}, i, ret); err != nil {
return StatusNoStatus, err
} else {
- s = mergeStatus(status, s)
+ status = mergeStatus(status, s)
}
}
for _, i := range out.PostgreSQL {
if s, err := m.monitor(namespace, DodoResource{"postgresql", i.Name}, i, ret); err != nil {
return StatusNoStatus, err
} else {
- s = mergeStatus(status, s)
+ status = mergeStatus(status, s)
}
}
for _, i := range out.MongoDB {
if s, err := m.monitor(namespace, DodoResource{"mongodb", i.Name}, i, ret); err != nil {
return StatusNoStatus, err
} else {
- s = mergeStatus(status, s)
+ status = mergeStatus(status, s)
}
}
for _, i := range out.Ingress {
@@ -90,14 +105,14 @@
if s, err := m.monitor(namespace, DodoResource{"ingress", name}, i.ResourceOut, ret); err != nil {
return StatusNoStatus, err
} else {
- s = mergeStatus(status, s)
+ status = mergeStatus(status, s)
}
}
for _, i := range out.Services {
if s, err := m.monitor(namespace, DodoResource{"service", i.Name}, i, ret); err != nil {
return StatusNoStatus, err
} else {
- s = mergeStatus(status, s)
+ status = mergeStatus(status, s)
}
}
ret[resource] = status
@@ -118,6 +133,7 @@
}
type ResourceOut struct {
+ Id string `json:"id"`
Name string `json:"name"`
Volume map[string]ResourceOut `json:"volume"`
PostgreSQL map[string]ResourceOut `json:"postgresql"`