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  }