github.com/kiali/kiali@v1.84.0/business/checkers/workloads_checker.go (about) 1 package checkers 2 3 import ( 4 security_v1beta1 "istio.io/client-go/pkg/apis/security/v1beta1" 5 6 "github.com/kiali/kiali/business/checkers/workloads" 7 "github.com/kiali/kiali/models" 8 ) 9 10 const WorkloadCheckerType = "workload" 11 12 type WorkloadChecker struct { 13 AuthorizationPolicies []*security_v1beta1.AuthorizationPolicy 14 WorkloadsPerNamespace map[string]models.WorkloadList 15 Cluster string 16 } 17 18 func (w WorkloadChecker) Check() models.IstioValidations { 19 validations := models.IstioValidations{} 20 21 for _, wls := range w.WorkloadsPerNamespace { 22 for _, wl := range wls.Workloads { 23 validations.MergeValidations(w.runChecks(wl, wls.Namespace)) 24 } 25 } 26 27 return validations 28 } 29 30 // runChecks runs all the individual checks for a single workload and appends the result into validations. 31 func (w WorkloadChecker) runChecks(workload models.WorkloadListItem, namespace string) models.IstioValidations { 32 wlName := workload.Name 33 key, rrValidation := EmptyValidValidation(wlName, namespace, WorkloadCheckerType, w.Cluster) 34 35 enabledCheckers := []Checker{ 36 workloads.UncoveredWorkloadChecker{Workload: workload, Namespace: namespace, AuthorizationPolicies: w.AuthorizationPolicies}, 37 } 38 39 for _, checker := range enabledCheckers { 40 checks, validChecker := checker.Check() 41 rrValidation.Checks = append(rrValidation.Checks, checks...) 42 rrValidation.Valid = rrValidation.Valid && validChecker 43 } 44 45 return models.IstioValidations{key: rrValidation} 46 }