Skip to content

Commit

Permalink
Use json output from kube-linter to format into a table to display
Browse files Browse the repository at this point in the history
  • Loading branch information
BlythMeister committed Aug 1, 2023
1 parent b572e05 commit 8ec790e
Showing 1 changed file with 17 additions and 10 deletions.
27 changes: 17 additions & 10 deletions src/Scripts/kubernetesHelper.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -123,26 +123,33 @@ function ValidateK8sYaml([string]$yamlFile, [string]$kubernetesConfigFile)
$ErrorActionPreference = "SilentlyContinue"
if(Test-Path $KubeLinterConfigYamlFile)
{
$kubeLinterOutput = & $KubeLinterExe lint $yamlFile --fail-if-no-objects-found --fail-on-invalid-resource --config $KubeLinterConfigYamlFile 2>&1
$kubeLinterOutput = & $KubeLinterExe lint $yamlFile --fail-if-no-objects-found --fail-on-invalid-resource --format json --config $KubeLinterConfigYamlFile 2>&1
}
else
{
$kubeLinterOutput = & $KubeLinterExe lint $yamlFile --fail-if-no-objects-found --fail-on-invalid-resource 2>&1
$kubeLinterOutput = & $KubeLinterExe lint $yamlFile --fail-if-no-objects-found --fail-on-invalid-resource --format json 2>&1
}
$ErrorActionPreference = $ErrorActionPreferenceOrig

if ($LASTEXITCODE -ne 0)
$kubeLinterData = ConvertFrom-Json $kubeLinterOutput

if ($LASTEXITCODE -ne 0 -or $kubeLinterData.Summary.ChecksStatus -eq "Failed")
{
$KubeLinterFailureMessage = @()
$FailureCount = 0
$kubeLinterOutput | Where-Object {
$_.StartsWith($yamlFile)
} | ForEach-Object {
$formattedLine = $_.Substring($yamlFile.Length + 2)
$KubeLinterFailureMessage += "* $formattedLine"
$ErrorTable = @()
$kubeLinterData.Reports | ForEach-Object {
$ErrorTable += [PSCustomObject] @{
Name = $_.Object.K8sObject.Name
Check = $_.Check
Message = $_.Diagnostic.Message
Remediation = $_.Remediation
Docs = "https://docs.kubelinter.io/#/generated/checks?id=$($_.Check)"
}
$FailureCount++
}
$KubeLinterFailureMessage += "$FailureCount Errors for yaml file $yamlFile (kube-linter)"
$ErrorTable | Format-Table

$KubeLinterFailureMessage = "$FailureCount Errors for yaml file $yamlFile (kube-linter)"
if($KubeLinterFailureMode -eq "LOG")
{
$KubeLinterFailureMessage | Write-Host
Expand Down

0 comments on commit 8ec790e

Please sign in to comment.