diff --git a/pkg/dashboard/templates/dashboard.gohtml b/pkg/dashboard/templates/dashboard.gohtml
index db5b60241..0fd0dadf8 100644
--- a/pkg/dashboard/templates/dashboard.gohtml
+++ b/pkg/dashboard/templates/dashboard.gohtml
@@ -108,24 +108,23 @@
- {{ range $namespace, $results := .AuditData.NamespacedResults }}
+ {{ range $namespace, $nsResult := .AuditData.NamespacedResults }}
Namespace: {{ $namespace }}
+ {{ range .DeploymentResults }}
- Deployment: {{ .Name }}
-
- {{ range .PodResults}}
+ Deployment: {{ .Name }}
Pod Spec:
- {{ range $message := .Messages}}
+ {{ range $message := .PodResult.Messages}}
- {{ .Message }}
{{ end }}
- {{ range .ContainerResults}}
+ {{ range .PodResult.ContainerResults}}
Container: {{ .Name }}
@@ -134,19 +133,20 @@
{{ end }}
- {{ end }} {{/* end range .ContainerResults */}}
- {{ end }} {{/* end range .PodResults */}}
+ {{ end }} {{/* end range .PodResult.ContainerResults */}}
+
|
|
+ {{ end }} {{/* end range .DeploymentResults */}}
{{ end }} {{/* end range .AuditData.NamespacedResults */}}
diff --git a/pkg/validator/deploy.go b/pkg/validator/deployment.go
similarity index 60%
rename from pkg/validator/deploy.go
rename to pkg/validator/deployment.go
index d800430bb..2583462f6 100644
--- a/pkg/validator/deploy.go
+++ b/pkg/validator/deployment.go
@@ -20,17 +20,19 @@ import (
appsv1 "k8s.io/api/apps/v1"
)
-// ValidateDeploy validates a single deployment, returns a PodResult.
-func ValidateDeploy(conf conf.Configuration, deploy *appsv1.Deployment) PodResult {
+// ValidateDeployment validates a single deployment, returns a PodResult.
+func ValidateDeployment(conf conf.Configuration, deploy *appsv1.Deployment) DeploymentResult {
pod := deploy.Spec.Template.Spec
podResult := ValidatePod(conf, &pod)
- podResult.Name = deploy.Name
- return podResult
+ return DeploymentResult{
+ Name: deploy.Name,
+ PodResult: podResult,
+ }
}
-// ValidateDeploys validates that each deployment conforms to the Fairwinds config,
+// ValidateDeployments validates that each deployment conforms to the Fairwinds config,
// returns a list of ResourceResults organized by namespace.
-func ValidateDeploys(config conf.Configuration, k8sAPI *kube.API) (NamespacedResults, error) {
+func ValidateDeployments(config conf.Configuration, k8sAPI *kube.API) (NamespacedResults, error) {
nsResults := NamespacedResults{}
deploys, err := k8sAPI.GetDeploys()
if err != nil {
@@ -38,14 +40,14 @@ func ValidateDeploys(config conf.Configuration, k8sAPI *kube.API) (NamespacedRes
}
for _, deploy := range deploys.Items {
- podResult := ValidateDeploy(config, &deploy)
- nsResults = addResult(podResult, nsResults, deploy.Namespace)
+ deploymentResult := ValidateDeployment(config, &deploy)
+ nsResults = addResult(deploymentResult, nsResults, deploy.Namespace)
}
return nsResults, nil
}
-func addResult(podResult PodResult, nsResults NamespacedResults, nsName string) NamespacedResults {
+func addResult(deploymentResult DeploymentResult, nsResults NamespacedResults, nsName string) NamespacedResults {
nsResult := &NamespaceResult{}
// If there is already data stored for this namespace name,
@@ -53,16 +55,16 @@ func addResult(podResult PodResult, nsResults NamespacedResults, nsName string)
switch nsResults[nsName] {
case nil:
nsResult = &NamespaceResult{
- Summary: &ResultSummary{},
- PodResults: []PodResult{},
+ Summary: &ResultSummary{},
+ DeploymentResults: []DeploymentResult{},
}
nsResults[nsName] = nsResult
default:
nsResult = nsResults[nsName]
}
- nsResult.PodResults = append(nsResult.PodResults, podResult)
- nsResult.Summary.appendResults(*podResult.Summary)
+ nsResult.DeploymentResults = append(nsResult.DeploymentResults, deploymentResult)
+ nsResult.Summary.appendResults(*deploymentResult.PodResult.Summary)
return nsResults
}
diff --git a/pkg/validator/fullaudit.go b/pkg/validator/fullaudit.go
index 86ae90f5f..7fa5c2b21 100644
--- a/pkg/validator/fullaudit.go
+++ b/pkg/validator/fullaudit.go
@@ -35,7 +35,7 @@ func RunAudit(config conf.Configuration, kubeAPI *kube.API) (AuditData, error) {
// TODO: Once we are validating more than deployments,
// we will need to merge the namespaceResults that get returned
// from each validation.
- nsResults, err := ValidateDeploys(config, kubeAPI)
+ nsResults, err := ValidateDeployments(config, kubeAPI)
if err != nil {
return AuditData{}, err
}
@@ -44,8 +44,8 @@ func RunAudit(config conf.Configuration, kubeAPI *kube.API) (AuditData, error) {
// Aggregate all summary counts to get a clusterwide count.
for _, nsRes := range nsResults {
- for _, pr := range nsRes.PodResults {
- clusterResults.appendResults(*pr.Summary)
+ for _, dr := range nsRes.DeploymentResults {
+ clusterResults.appendResults(*dr.PodResult.Summary)
}
}
diff --git a/pkg/validator/fullaudit_test.go b/pkg/validator/fullaudit_test.go
index 686413d6b..033c965df 100644
--- a/pkg/validator/fullaudit_test.go
+++ b/pkg/validator/fullaudit_test.go
@@ -42,8 +42,8 @@ func TestGetTemplateData(t *testing.T) {
assert.Equal(t, err, nil, "error should be nil")
assert.EqualValues(t, sum, actualAudit.ClusterSummary.Results)
- assert.Equal(t, 1, len(actualAudit.NamespacedResults["test"].PodResults), "should be equal")
- assert.Equal(t, 1, len(actualAudit.NamespacedResults["test"].PodResults), "should be equal")
- assert.Equal(t, 1, len(actualAudit.NamespacedResults["test"].PodResults[0].ContainerResults), "should be equal")
- assert.Equal(t, 6, len(actualAudit.NamespacedResults["test"].PodResults[0].ContainerResults[0].Messages), "should be equal")
+ assert.Equal(t, 1, len(actualAudit.NamespacedResults["test"].DeploymentResults), "should be equal")
+ assert.Equal(t, 1, len(actualAudit.NamespacedResults["test"].DeploymentResults), "should be equal")
+ assert.Equal(t, 1, len(actualAudit.NamespacedResults["test"].DeploymentResults[0].PodResult.ContainerResults), "should be equal")
+ assert.Equal(t, 6, len(actualAudit.NamespacedResults["test"].DeploymentResults[0].PodResult.ContainerResults[0].Messages), "should be equal")
}
diff --git a/pkg/validator/types.go b/pkg/validator/types.go
index d531750cc..2c35f18bb 100644
--- a/pkg/validator/types.go
+++ b/pkg/validator/types.go
@@ -33,9 +33,9 @@ type NamespacedResults map[string]*NamespaceResult
// NamespaceResult groups container results by parent resource.
type NamespaceResult struct {
- Name string
- Summary *ResultSummary
- PodResults []PodResult
+ Name string
+ Summary *ResultSummary
+ DeploymentResults []DeploymentResult
}
// CountSummary provides a high level overview of success, warnings, and errors.
@@ -73,6 +73,12 @@ func (rs *ResultSummary) appendResults(toAppend ResultSummary) {
}
}
+// DeploymentResult provides a wrapper around a PodResult
+type DeploymentResult struct {
+ Name string
+ PodResult PodResult
+}
+
// ContainerResult provides a list of validation messages for each container.
type ContainerResult struct {
Name string
diff --git a/pkg/webhook/validator.go b/pkg/webhook/validator.go
index 466f876a2..c665fc0c9 100644
--- a/pkg/webhook/validator.go
+++ b/pkg/webhook/validator.go
@@ -94,7 +94,8 @@ func (v *Validator) Handle(ctx context.Context, req types.Request) types.Respons
case "Deployment":
deploy := appsv1.Deployment{}
err = v.decoder.Decode(req, &deploy)
- podResult = validator.ValidateDeploy(v.Config, &deploy)
+ deployResult := validator.ValidateDeployment(v.Config, &deploy)
+ podResult = deployResult.PodResult
case "Pod":
pod := corev1.Pod{}
err = v.decoder.Decode(req, &pod)