diff --git a/pkg/dashboard/dashboard.go b/pkg/dashboard/dashboard.go index 2b4314ac..8ef5dce2 100644 --- a/pkg/dashboard/dashboard.go +++ b/pkg/dashboard/dashboard.go @@ -12,6 +12,8 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) +// DashboardData stores validation results organized by namespace and also +// tracks the total cluster count of failed/successed validation checks. type DashboardData struct { ClusterSummary *validator.ResultSummary NamespacedResults validator.NamespacedResults @@ -19,6 +21,7 @@ type DashboardData struct { var tmpl = template.Must(template.ParseFiles("pkg/dashboard/templates/dashboard.gohtml")) +// Render populates the dashboard template with validation data. func Render(w http.ResponseWriter, r *http.Request, c conf.Configuration) { dashboardData, err := getDashboardData(c) if err != nil { @@ -29,6 +32,7 @@ func Render(w http.ResponseWriter, r *http.Request, c conf.Configuration) { tmpl.Execute(w, dashboardData) } +// RenderJSON returns pod validation data in JSON format. func RenderJSON(w http.ResponseWriter, r *http.Request, c conf.Configuration) { var clientset = kube.CreateClientset() pods, err := clientset.CoreV1().Pods("").List(metav1.ListOptions{}) @@ -54,24 +58,22 @@ func getDashboardData(c conf.Configuration) (DashboardData, error) { // from each validation. nsResults, _ := validator.ValidateDeploys(c) - var clusterSuccesses uint - var clusterFailures uint - var clusterWarnings uint + var clusterSuccesses, clusterFailures, clusterWarnings uint // Aggregate all summary counts to get a clusterwide count. for _, nsRes := range nsResults { for _, rr := range nsRes.Results { - clusterSuccesses += rr.Summary.Successes clusterFailures += rr.Summary.Failures clusterWarnings += rr.Summary.Warnings + clusterSuccesses += rr.Summary.Successes } } dashboardData := DashboardData{ ClusterSummary: &validator.ResultSummary{ - Successes: clusterSuccesses, - Warnings: clusterWarnings, Failures: clusterFailures, + Warnings: clusterWarnings, + Successes: clusterSuccesses, }, NamespacedResults: nsResults, } diff --git a/pkg/validator/container.go b/pkg/validator/container.go index a70fd55e..1bffd375 100644 --- a/pkg/validator/container.go +++ b/pkg/validator/container.go @@ -27,7 +27,17 @@ import ( type ContainerValidation struct { Container corev1.Container Summary ResultSummary - Messages []ResultMessage + Failures []ResultMessage + Warnings []ResultMessage + Successes []ResultMessage +} + +func (cv *ContainerValidation) messages() []ResultMessage { + mssgs := []ResultMessage{} + mssgs = append(mssgs, cv.Failures...) + mssgs = append(mssgs, cv.Warnings...) + mssgs = append(mssgs, cv.Successes...) + return mssgs } func validateContainer(conf conf.Configuration, container corev1.Container) (ContainerResult, ResultSummary) { @@ -42,33 +52,33 @@ func validateContainer(conf conf.Configuration, container corev1.Container) (Con cRes := ContainerResult{ Name: container.Name, - Messages: cv.Messages, + Messages: cv.messages(), } return cRes, cv.Summary } -func (cv *ContainerValidation) addSuccess(message string) { - cv.Summary.Successes++ - cv.Messages = append(cv.Messages, ResultMessage{ +func (cv *ContainerValidation) addFailure(message string) { + cv.Summary.Failures++ + cv.Failures = append(cv.Failures, ResultMessage{ Message: message, - Type: "success", + Type: "failure", }) } func (cv *ContainerValidation) addWarning(message string) { cv.Summary.Warnings++ - cv.Messages = append(cv.Messages, ResultMessage{ + cv.Warnings = append(cv.Warnings, ResultMessage{ Message: message, Type: "warning", }) } -func (cv *ContainerValidation) addFailure(message string) { - cv.Summary.Failures++ - cv.Messages = append(cv.Messages, ResultMessage{ +func (cv *ContainerValidation) addSuccess(message string) { + cv.Summary.Successes++ + cv.Successes = append(cv.Successes, ResultMessage{ Message: message, - Type: "failure", + Type: "success", }) }