Move discovery configuration validation in config package

This commit is contained in:
TwinProduction 2020-11-11 14:22:31 -05:00
parent 559d286121
commit 42659a0878
3 changed files with 17 additions and 14 deletions

View File

@ -9,6 +9,7 @@ import (
"github.com/TwinProduction/gatus/alerting" "github.com/TwinProduction/gatus/alerting"
"github.com/TwinProduction/gatus/alerting/provider" "github.com/TwinProduction/gatus/alerting/provider"
"github.com/TwinProduction/gatus/core" "github.com/TwinProduction/gatus/core"
"github.com/TwinProduction/gatus/discovery"
"github.com/TwinProduction/gatus/k8s" "github.com/TwinProduction/gatus/k8s"
"github.com/TwinProduction/gatus/security" "github.com/TwinProduction/gatus/security"
"gopkg.in/yaml.v2" "gopkg.in/yaml.v2"
@ -123,10 +124,18 @@ func parseAndValidateConfigBytes(yamlBytes []byte) (config *Config, err error) {
validateAlertingConfig(config) validateAlertingConfig(config)
validateSecurityConfig(config) validateSecurityConfig(config)
validateServicesConfig(config) validateServicesConfig(config)
validateKubernetesConfig(config)
} }
return return
} }
func validateKubernetesConfig(config *Config) {
if config.Kubernetes != nil && config.Kubernetes.AutoDiscover {
discoveredServices := discovery.GetServices(config.Kubernetes)
config.Services = append(config.Services, discoveredServices...)
}
}
func validateServicesConfig(config *Config) { func validateServicesConfig(config *Config) {
for _, service := range config.Services { for _, service := range config.Services {
if config.Debug { if config.Debug {

View File

@ -4,27 +4,26 @@ import (
"fmt" "fmt"
"strings" "strings"
"github.com/TwinProduction/gatus/config"
"github.com/TwinProduction/gatus/core" "github.com/TwinProduction/gatus/core"
"github.com/TwinProduction/gatus/k8s" "github.com/TwinProduction/gatus/k8s"
) )
//GetServices return discovered service //GetServices return discovered service
func GetServices(cfg *config.Config) []*core.Service { func GetServices(kubernetesConfig *k8s.Config) []*core.Service {
client := k8s.NewClient(cfg.Kubernetes.ClusterMode) client := k8s.NewClient(kubernetesConfig.ClusterMode)
svcs := make([]*core.Service, 0) svcs := make([]*core.Service, 0)
for _, ns := range cfg.Kubernetes.Namespaces { for _, ns := range kubernetesConfig.Namespaces {
services := k8s.GetServices(client, ns.Name) services := k8s.GetServices(client, ns.Name)
for _, s := range services { for _, s := range services {
if exclude(cfg.Kubernetes.ExcludeSuffix, s.Name) { if exclude(kubernetesConfig.ExcludeSuffix, s.Name) {
continue continue
} }
svc := core.Service{Name: s.Name, svc := core.Service{
Name: s.Name,
URL: fmt.Sprintf("http://%s%s/%s", s.Name, ns.ServiceSuffix, ns.HealthAPI), URL: fmt.Sprintf("http://%s%s/%s", s.Name, ns.ServiceSuffix, ns.HealthAPI),
Interval: cfg.Kubernetes.ServiceTemplate.Interval, Interval: kubernetesConfig.ServiceTemplate.Interval,
Conditions: cfg.Kubernetes.ServiceTemplate.Conditions, Conditions: kubernetesConfig.ServiceTemplate.Conditions,
} }
svcs = append(svcs, &svc) svcs = append(svcs, &svc)
} }

View File

@ -10,7 +10,6 @@ import (
"time" "time"
"github.com/TwinProduction/gatus/config" "github.com/TwinProduction/gatus/config"
"github.com/TwinProduction/gatus/discovery"
"github.com/TwinProduction/gatus/security" "github.com/TwinProduction/gatus/security"
"github.com/TwinProduction/gatus/watchdog" "github.com/TwinProduction/gatus/watchdog"
"github.com/prometheus/client_golang/prometheus/promhttp" "github.com/prometheus/client_golang/prometheus/promhttp"
@ -26,10 +25,6 @@ var (
func main() { func main() {
cfg := loadConfiguration() cfg := loadConfiguration()
if cfg.Kubernetes.AutoDiscover {
discoveredServices := discovery.GetServices(cfg)
cfg.Services = append(cfg.Services, discoveredServices...)
}
resultsHandler := serviceResultsHandler resultsHandler := serviceResultsHandler
if cfg.Security != nil && cfg.Security.IsValid() { if cfg.Security != nil && cfg.Security.IsValid() {
resultsHandler = security.Handler(serviceResultsHandler, cfg.Security) resultsHandler = security.Handler(serviceResultsHandler, cfg.Security)