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 [ngClass]="{'overview-health-card-tab-selected': activeSection === 'system'}">
108 [type]="vm?.overallSystemSev"></cd-icon>
109 <cds-tooltip-definition
110 [highContrast]="true"
115 (click)="toggleSection('system')"
116 description="Click to view health incidents"
122 </cds-tooltip-definition>
125 <cds-skeleton-text [lines]="1"></cds-skeleton-text>
130 <div [ngSwitch]="activeSection">
131 <ng-container *ngSwitchCase="'system'">
132 <div class="overview-health-card-tab-content">
133 <p class="overview-health-card-secondary-text cds--type-body-compact-01"
134 i18n>Some cluster components are degraded and may require attention.</p>
135 <div cdsStack="horizontal"
137 <div class="overview-health-card-tab-content-item cds-pr-8">
139 <cd-icon [type]="vm?.mon?.severity"></cd-icon>
140 <span class="cds--type-body-compact-01 cds-ml-2">Monitor</span>
142 <p class="cds--type-label-01 cds-mt-3 overview-health-card-secondary-text">Quorum: {{vm?.mon?.value}}</p>
144 <div class="overview-health-card-tab-content-item cds-pr-8">
146 <cd-icon [type]="vm?.mgr?.severity"></cd-icon>
147 <span class="cds--type-body-compact-01 cds-ml-2">Manager</span>
149 <p class="cds--type-label-01 cds-mt-3 overview-health-card-secondary-text">{{vm?.mgr?.value}}</p>
151 <div class="overview-health-card-tab-content-item cds-pr-8">
153 <cd-icon [type]="vm?.osd?.severity"></cd-icon>
154 <span class="cds--type-body-compact-01 cds-ml-2"
157 <p class="cds--type-label-01 cds-mt-3 overview-health-card-secondary-text">{{vm?.osd?.value}}</p>
161 <cd-icon [type]="vm?.hosts?.severity"></cd-icon>
162 <span class="cds--type-body-compact-01 cds-ml-2">Nodes</span>
164 <p class="cds--type-label-01 cds-mt-3 overview-health-card-secondary-text">{{vm?.hosts?.value}}</p>
170 <ng-container *ngSwitchDefault></ng-container>
172 </cd-productive-card>