github.com/kiali/kiali@v1.84.0/business/checkers/service_checker.go (about)

     1  package checkers
     2  
     3  import (
     4  	apps_v1 "k8s.io/api/apps/v1"
     5  	core_v1 "k8s.io/api/core/v1"
     6  	v1 "k8s.io/api/core/v1"
     7  
     8  	"github.com/kiali/kiali/business/checkers/services"
     9  	"github.com/kiali/kiali/models"
    10  )
    11  
    12  const ServiceCheckerType = "service"
    13  
    14  type ServiceChecker struct {
    15  	Services    []v1.Service
    16  	Deployments []apps_v1.Deployment
    17  	Pods        []core_v1.Pod
    18  	Cluster     string
    19  }
    20  
    21  func (sc ServiceChecker) Check() models.IstioValidations {
    22  	validations := models.IstioValidations{}
    23  
    24  	for _, s := range sc.Services {
    25  		validations.MergeValidations(sc.runSingleChecks(s))
    26  	}
    27  
    28  	return validations
    29  }
    30  
    31  func (sc ServiceChecker) runSingleChecks(service v1.Service) models.IstioValidations {
    32  	key, validations := EmptyValidValidation(service.GetObjectMeta().GetName(), service.GetObjectMeta().GetNamespace(), ServiceCheckerType, sc.Cluster)
    33  
    34  	enabledCheckers := []Checker{
    35  		services.PortMappingChecker{Service: service, Deployments: sc.Deployments, Pods: sc.Pods},
    36  	}
    37  
    38  	for _, checker := range enabledCheckers {
    39  		checks, validChecker := checker.Check()
    40  		validations.Checks = append(validations.Checks, checks...)
    41  		validations.Valid = validations.Valid && validChecker
    42  	}
    43  
    44  	return models.IstioValidations{key: validations}
    45  }