1 @let data=(data$ | async);
2 @let colorClass="overview-health-card-status--" + vm?.health?.icon;
3 <cd-productive-card class="overview-health-card">
4 <!-- HEALTH CARD Title -->
7 <div class="overview-health-card-header">
8 <div class="cds-mb-4 cds-mr-3">
9 <cd-icon type="dataCenter"></cd-icon>
11 <h2 class="cds--type-heading-compact-02"
13 <span class="cds-mr-2">{{vm?.fsid}}</span>
15 <cd-copy-2-clipboard-button
17 title="Copy cluster fsid"
20 </cd-copy-2-clipboard-button>
26 description="Check logs"
28 [routerLink]="['/logs']">
29 <cd-icon type="dataViewAlt"></cd-icon>
36 [minLineWidth]="400"></cds-skeleton-text>
38 <!-- HEALTH CARD BODY -->
40 <p class="cds--type-heading-05 cds-mb-0"
41 [ngClass]="colorClass">
43 <cd-icon [type]="vm?.health?.icon"></cd-icon>
45 <p class="cds--type-label-01 overview-health-card-secondary-text">{{vm?.health?.message}}</p>
47 <cds-skeleton-placeholder></cds-skeleton-placeholder>
50 @if(data?.summary?.version) {
52 <p class="cds--type-label-02">
53 <span i18n>Ceph version: </span>
54 <span class="cds--type-heading-compact-01">{{ data?.summary?.version | cephVersion }}</span>
55 @if (data?.upgrade?.versions?.length) {
56 <a [routerLink]="['/upgrade']"
61 <cd-icon type="upgrade"></cd-icon>
68 [maxLineWidth]="250"></cds-skeleton-text>
71 <div cdsStack="horizontal"
73 <!-- HEALTH CHECKS -->
74 @if(vm?.incidents > 0) {
77 type="incidentReporter"
78 [ngClass]="colorClass"></cd-icon>
79 <cds-tooltip-definition
84 (click)="onViewIncidentsClick()"
85 description="Click to view health incidents"
88 class="cds--type-heading-compact-01"
89 [ngClass]="colorClass"
91 {{vm?.incidents}} Health incidents
93 </cds-tooltip-definition>
97 description="Health incidents represent Ceph health check warnings that indicate abnormal conditions requiring intervention and persist until the condition is resolved."
100 <cd-icon type="help"></cd-icon> |
105 @if(vm?.overallSystemSev) {
106 <div class="overview-health-card-tab"
107 [ngClass]="{'overview-health-card-tab-selected': activeSection === 'system'}">
108 <div class="cds-mb-1"><cd-icon
109 [type]="vm?.overallSystemSev"></cd-icon></div>
110 <cds-tooltip-definition
111 [highContrast]="true"
116 (click)="toggleSection('system')"
121 [ngClass]="{'cds--type-heading-compact-01': activeSection === 'system'}"
125 </cds-tooltip-definition>
128 <cds-skeleton-text [lines]="1"></cds-skeleton-text>
133 <div [ngSwitch]="activeSection">
134 <ng-container *ngSwitchCase="'system'">
135 <div class="overview-health-card-tab-content">
136 <p class="overview-health-card-secondary-text cds--type-body-compact-01"
137 i18n>Some cluster components are degraded and may require attention.</p>
138 <div cdsStack="horizontal"
140 <div class="overview-health-card-tab-content-item cds-pr-8">
142 <cd-icon [type]="vm?.mon?.severity"></cd-icon>
143 <span class="cds--type-body-compact-01 cds-ml-3">Monitor</span>
145 <p class="cds--type-label-01 cds-mt-3 cds-mb-0 overview-health-card-secondary-text">Quorum: {{vm?.mon?.value}}</p>
147 <div class="overview-health-card-tab-content-item cds-pr-8">
149 <cd-icon [type]="vm?.mgr?.severity"></cd-icon>
150 <span class="cds--type-body-compact-01 cds-ml-3">Manager</span>
152 <p class="cds--type-label-01 cds-mt-3 cds-mb-0 overview-health-card-secondary-text">{{vm?.mgr?.value}}</p>
154 <div class="overview-health-card-tab-content-item cds-pr-8">
156 <cd-icon [type]="vm?.osd?.severity"></cd-icon>
157 <span class="cds--type-body-compact-01 cds-ml-3"
160 <p class="cds--type-label-01 cds-mt-3 cds-mb-0 overview-health-card-secondary-text">{{vm?.osd?.value}}</p>
164 <cd-icon [type]="vm?.hosts?.severity"></cd-icon>
165 <span class="cds--type-body-compact-01 cds-ml-3">Nodes</span>
167 <p class="cds--type-label-01 cds-mt-3 cds-mb-0 overview-health-card-secondary-text">{{vm?.hosts?.value}}</p>
173 <ng-container *ngSwitchDefault></ng-container>
175 </cd-productive-card>