mirror of
https://github.com/FairwindsOps/polaris.git
synced 2026-05-20 16:14:32 +00:00
176 lines
7.4 KiB
Plaintext
176 lines
7.4 KiB
Plaintext
{{define "dashboard"}}
|
|
<div class="card cluster">
|
|
<h3>
|
|
<span>{{ .AuditData.SourceType }} Overview</span>
|
|
{{- if .AuditData.DisplayName -}}
|
|
<small>: {{ .AuditData.DisplayName }}</small>
|
|
{{ end }}
|
|
</h3>
|
|
<div class="cluster-overview">
|
|
<div class="cluster-score">
|
|
<div class="score-details">
|
|
<div class="weather"><i class="fas {{ getWeatherIcon .AuditData.GetSummary }}"></i></div>
|
|
<div class="sailing">{{ getWeatherText .FilteredAuditData.GetSummary }}</div>
|
|
<div class="scores"><span>Grade: </span><strong>{{ getGrade .FilteredAuditData.GetSummary }}</strong></div>
|
|
<div class="scores"><span>Score: </span><strong>{{ .FilteredAuditData.GetSummary.GetScore }}%</strong></div>
|
|
<p class="score-description">
|
|
Score is the percentage of passing checks. Warnings get half the weight of dangerous checks.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<div class="graph">
|
|
<canvas width="275" height="275" id="clusterScoreChart"></canvas>
|
|
</div>
|
|
<div class="result-messages">
|
|
<ul class="message-list">
|
|
<li class="success">
|
|
<i class="message-icon fas fa-check"></i>
|
|
<div class="message-group">
|
|
<span class="count"> {{ .FilteredAuditData.GetSummary.Successes }}</span>
|
|
<span class="message"> passing checks</span>
|
|
</div>
|
|
</li>
|
|
<li class="failure warning">
|
|
<i class="message-icon fas fa-exclamation"></i>
|
|
<div class="message-group">
|
|
<span class="count"> {{ .FilteredAuditData.GetSummary.Warnings }}</span>
|
|
<span class="message"> warning checks</span>
|
|
</div>
|
|
</li>
|
|
<li class="failure danger">
|
|
<i class="message-icon fas fa-times"></i>
|
|
<div class="message-group">
|
|
<span class="count"> {{ .FilteredAuditData.GetSummary.Dangers }}</span>
|
|
<span class="message"> dangerous checks</span>
|
|
</div>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<div class="cluster-overview-footer">
|
|
<div class="kubernetes-stats">
|
|
<div class="kubernetes-stat">
|
|
<span>Kubernetes Version:</span>
|
|
<strong>{{.FilteredAuditData.ClusterInfo.Version}}</strong>
|
|
</div>
|
|
<div class="kubernetes-stat">
|
|
<span>Nodes:</span>
|
|
<strong>{{.FilteredAuditData.ClusterInfo.Nodes}}</strong>
|
|
</div>
|
|
<div class="kubernetes-stat">
|
|
<span>Namespaces:</span>
|
|
<strong>{{.FilteredAuditData.ClusterInfo.Namespaces}}</strong>
|
|
</div>
|
|
<div class="kubernetes-stat">
|
|
<span>Controllers:</span>
|
|
<strong>{{.FilteredAuditData.ClusterInfo.Controllers}}</strong>
|
|
</div>
|
|
<div class="kubernetes-stat">
|
|
<span>Pods:</span>
|
|
<strong>{{.FilteredAuditData.ClusterInfo.Pods}}</strong>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card category">
|
|
<h3>Results by Category</h3>
|
|
<div class="expandable-table">
|
|
{{ range $category, $summary := .FilteredAuditData.GetSummaryByCategory }}
|
|
<div class="resource-info">
|
|
<div class="status-bar">
|
|
<div class="status">
|
|
<div class="failing">
|
|
<div class="warning" style="width: {{ getWarningWidth $summary 200 }}px;">
|
|
<div class="passing" style="width: {{ getSuccessWidth $summary 200 }}px;"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="name"><span class="caret-expander"></span>{{ $category }}<span class="category-score">Score: <strong>{{ $summary.GetScore }}%</strong></span></div>
|
|
<div class="result-messages expandable-content">
|
|
<p class="category-info">{{ getCategoryInfo $category }} Refer to the <a href="details/{{ getCategoryLink $category }}">Polaris documentation about {{ $category }}</a> for more information.</p>
|
|
</div>
|
|
</div>
|
|
{{ end }} {{/* end range categories */}}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card filters">
|
|
<div class="resource-info">
|
|
<div class="name">
|
|
<span class="caret-expander"></span>
|
|
<span class="title">Filter by Namespace</span>
|
|
</div>
|
|
<div class="result-messages expandable-content">
|
|
<form id="namespaceFiltersForm" class="namespace-list">
|
|
{{ range $namespace, $ctrlResults := .AuditData.GetResultsByNamespace }}
|
|
<div class="namespace-row">
|
|
<input type="checkbox" name="{{ $namespace }}" id="namespace-{{ $namespace }}">
|
|
<label for="namespace-{{ $namespace }}">{{ $namespace }}</label>
|
|
</div>
|
|
{{ end }}
|
|
<input type="submit" value="Apply">
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
{{ range $namespace, $ctrlResults := .FilteredAuditData.GetResultsByNamespace }}
|
|
<div class="card namespace">
|
|
<h3>Namespace: <strong>{{ $namespace }}</strong></h3>
|
|
<div class="expandable-table">
|
|
{{ range $ctrlResults }}
|
|
<div class="resource-info">
|
|
<div class="status-bar">
|
|
<div class="status">
|
|
<div class="failing">
|
|
<div class="warning" style="width: {{ getWarningWidth .PodResult.GetSummary 200 }}px;">
|
|
<div class="passing" style="width: {{ getSuccessWidth .PodResult.GetSummary 200 }}px;"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="name"><span class="caret-expander"></span>
|
|
<span class="controller-type">{{ .Kind }}:</span>
|
|
<strong>{{ .Name }}</strong></div>
|
|
<div class="result-messages expandable-content">
|
|
<h4>Pod Spec:</h4>
|
|
<ul class="message-list">
|
|
{{ range $message := .PodResult.Results.GetSortedResults }}
|
|
<li class="{{ getResultClass . }}">
|
|
<i class="message-icon {{ getIcon $message }}"></i>
|
|
<span class="message">{{ .Message }}</span>
|
|
<a class="more-info" href="details/{{ getCategoryLink .Category }}">
|
|
<i class="far fa-question-circle"></i>
|
|
</a>
|
|
</li>
|
|
{{ end }}
|
|
</ul>
|
|
</div>
|
|
{{ range .PodResult.ContainerResults }}
|
|
<div class="result-messages expandable-content">
|
|
<h4>Container: {{ .Name }}</h4>
|
|
<ul class="message-list">
|
|
{{ range $message := .Results.GetSortedResults }}
|
|
<li class="{{ getResultClass . }}">
|
|
<i class="message-icon {{ getIcon $message }}"></i>
|
|
<span class="message">{{ .Message }}</span>
|
|
<a class="more-info" href="details/{{ getCategoryLink .Category }}">
|
|
<i class="far fa-question-circle"></i>
|
|
</a>
|
|
</li>
|
|
{{ end }}
|
|
</ul>
|
|
</div>
|
|
{{ end }} {{/* end range .PodResult.ContainerResults */}}
|
|
</div>
|
|
{{ end }} {{/* end range .Results.GetSortedResults */}}
|
|
</div>
|
|
</div>
|
|
{{ end }} {{/* end range .AuditData.GetResultsByNamespace */}}
|
|
<script src="static/js/charts.js"></script>
|
|
<script src="static/js/filter.js"></script>
|
|
{{end}}
|