From 764c834a3c5ec95fbc3c151ec8f579373625185c Mon Sep 17 00:00:00 2001 From: Timo Litzius Date: Thu, 22 Oct 2020 11:06:58 +0200 Subject: [PATCH] Prefer direct path ingresses --- src/model/kube/k8s.go | 16 +++++++++++++--- src/model/kube/statusFetcher.go | 1 + 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/model/kube/k8s.go b/src/model/kube/k8s.go index bbbbba3..c3996ef 100644 --- a/src/model/kube/k8s.go +++ b/src/model/kube/k8s.go @@ -3,12 +3,13 @@ package kube import ( "log" "regexp" + "sort" + apps "k8s.io/api/apps/v1" v1Batch "k8s.io/api/batch/v1" + v1 "k8s.io/api/core/v1" extensions "k8s.io/api/extensions/v1beta1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - apps "k8s.io/api/apps/v1" - v1 "k8s.io/api/core/v1" "k8s.io/client-go/kubernetes" "k8s.io/client-go/rest" @@ -119,10 +120,19 @@ func groupByServiceName(ingresses *extensions.IngressList) map[string][]K8sIngre for _, rule := range ing.Spec.Rules { for _, p := range rule.HTTP.Paths { name := p.Backend.ServiceName - ingressIndex[name] = append(ingressIndex[name], K8sIngressInfo{URL: rule.Host + p.Path, Host: rule.Host}) + ingressIndex[name] = append(ingressIndex[name], K8sIngressInfo{URL: rule.Host + p.Path, Host: rule.Host, Path: p.Path}) } } } + + // sort the available ingresses for an application by their path's length + // => prefer direct path ingresses + for name, ingresses := range ingressIndex { + sort.Slice(ingresses, func(i, j int) bool { + return len(ingresses[i].Path) < len(ingresses[j].Path) + }) + ingressIndex[name] = ingresses + } return ingressIndex } diff --git a/src/model/kube/statusFetcher.go b/src/model/kube/statusFetcher.go index f848491..24f5666 100644 --- a/src/model/kube/statusFetcher.go +++ b/src/model/kube/statusFetcher.go @@ -53,6 +53,7 @@ type ( K8sIngressInfo struct { URL string Host string + Path string Alive bool }