</cds-tooltip-definition>
</div>
}
+ <!-- RESILIENCY TAB -->
+ @if(vm?.overallSystemSev) {
+ <div class="overview-health-card-tab"
+ [class.overview-health-card-tab-selected]="activeSection === 'resiliency'">
+ <div class="cds-mb-1"><cd-icon
+ [type]="vm?.overallSystemSev"></cd-icon></div>
+ <cds-tooltip-definition
+ [highContrast]="true"
+ [openOnHover]="true"
+ [dropShadow]="true"
+ class="cds-ml-2"
+ [caret]="true"
+ (click)="toggleSection('resiliency')"
+ description=""
+ i18n-description>
+ <span
+ class="cds-mr-1"
+ [class.cds--type-heading-compact-01]="activeSection === 'resiliency'"
+ i18n>
+ Data resiliency
+ </span>
+ </cds-tooltip-definition>
+ </div>
+ } @else {
+ <cds-skeleton-text [lines]="1"></cds-skeleton-text>
+ }
</div>
<!-- TAB CONTENT -->
}
</div>
</ng-container>
-
+ <!-- RESILIENCY TAB CONTENT -->
+ <ng-container *ngSwitchCase="'resiliency'">
+ <div class="overview-health-card-tab-content">
+ <span class="overview-health-card-icon-and-text">
+ <cd-icon type="warningAltFilled"></cd-icon>
+ <span class="cds--type-body-compact-01">
+ Status unavailable for some data
+ </span>
+ </span>
+ <p
+ class="overview-health-card-secondary-text cds--type-label-01"
+ i18n>Ceph cannot reliably determine the current state of some data. Availability may be affected.</p>
+ </div>
+ </ng-container>
<ng-container *ngSwitchDefault></ng-container>
</div>
</cd-productive-card>
error: number;
};
+const DATA_RESILIENCY = {
+ ok: {
+ icon: 'success',
+ title: $localize`Data is fully replicated and available.`,
+ description: $localize`All replicas are in place and I/O is operating normally. No action is required.`
+ },
+ progress: {
+ icon: 'sync',
+ title: $localize`Data integrity checks in progress`,
+ description: $localize`Ceph is running routine consistency checks on stored data and metadata to ensure data integrity. Data remains safe and accessible.`
+ },
+ warn: {
+ icon: 'warning',
+ title: $localize`Restoring data redundancy`,
+ description: $localize`Some data replicas are missing or not yet in their final location. Ceph is actively rebalancing data to return to a healthy state.`
+ },
+ warnDataLoss: {
+ icon: 'warning',
+ title: $localize`Status unavailable for some data`,
+ description: $localize`Ceph cannot reliably determine the current state of some data. Availability may be affected.`
+ },
+ error: {
+ icon: 'error',
+ title: $localize`Data unavailable or inconsistent, manual intervention required`,
+ description: $localize`Some data is currently unavailable or inconsistent. Ceph could not automatically restore these resources, and manual intervention is required to restore data availability and consistency.`
+ }
+};
+
@Component({
selector: 'cd-overview-health-card',
imports: [
@Output() activeSectionChange = new EventEmitter<HealthCardTabSection | null>();
activeSection: HealthCardTabSection | null = null;
+ data = DATA_RESILIENCY;
healthItems: HealthItemConfig[] = [
{ key: 'mon', label: $localize`Monitor` },