4 <ng-container ngbNavItem
>
7 <ng-template ngbNavContent
>
8 <cd-table [data]=
"osds"
9 (fetchData)=
"getOsdList()"
11 selectionType=
"multiClick"
13 (setExpandedRow)=
"setExpandedRow($event)"
14 (updateSelection)=
"updateSelection($event)"
15 [updateSelectionOnRefresh]=
"'never'">
17 <div class=
"table-actions btn-toolbar">
18 <cd-table-actions [permission]=
"permissions.osd"
19 [selection]=
"selection"
22 [tableActions]=
"tableActions">
24 <cd-table-actions [permission]=
"{read: true}"
25 [selection]=
"selection"
26 dropDownOnly=
"Cluster-wide configuration"
29 id=
"cluster-wide-actions"
30 [tableActions]=
"clusterWideActions">
34 <cd-osd-details cdTableDetail
35 [selection]=
"expandedRow">
41 <ng-container ngbNavItem
42 *
ngIf=
"permissions.grafana.read">
44 i18n
>Overall Performance
</a>
45 <ng-template ngbNavContent
>
46 <cd-grafana i18n-title
48 [grafanaPath]=
"'osd-overview?'"
57 <div [ngbNavOutlet]=
"nav"></div>
59 <ng-template #markOsdConfirmationTpl
60 let-markActionDescription=
"markActionDescription"
62 <ng-container i18n
><strong>OSD(s) {{ osdIds | join }}
</strong> will be marked
63 <strong>{{ markActionDescription }}
</strong> if you proceed.
</ng-container>
66 <ng-template #criticalConfirmationTpl
67 let-safeToPerform=
"safeToPerform"
70 let-missingStats=
"missingStats"
71 let-storedPgs=
"storedPgs"
72 let-actionDescription=
"actionDescription"
74 <div *
ngIf=
"!safeToPerform"
76 <cd-alert-panel type=
"warning">
78 The {selection.hasSingleSelection, select, true {OSD is} other {OSDs are}} not safe to be
79 {{ actionDescription }}!
82 <ul class=
"mb-0 ps-4">
83 <li *
ngIf=
"active.length > 0"
85 {selection.hasSingleSelection, select, true {} other {{{ active | join }} : }}
86 Some PGs are currently mapped to
87 {active.length ===
1, select, true {it} other {them}}.
89 <li *
ngIf=
"missingStats.length > 0"
91 {selection.hasSingleSelection, select, true {} other {{{ missingStats | join }} : }}
92 There are no reported stats and not all PGs are active and clean.
94 <li *
ngIf=
"storedPgs.length > 0"
96 {selection.hasSingleSelection, select, true {OSD} other {{{ storedPgs | join }} : OSDs }}
97 still store some PG data and not all PGs are active and clean.
105 <div *
ngIf=
"safeToPerform"
107 <cd-alert-panel type=
"info">
109 The {selection.hasSingleSelection, select, true {OSD is} other {OSDs are}}
110 safe to destroy without reducing data durability.
114 <ng-container i18n
><strong>OSD {{ osdIds | join }}
</strong> will be
115 <strong>{{ actionDescription }}
</strong> if you proceed.
</ng-container>
118 <ng-template #flagsTpl
120 <span *
ngFor=
"let flag of row.cdClusterFlags;"
121 class=
"badge badge-hdd me-1">{{ flag }}
</span>
122 <span *
ngFor=
"let flag of row.cdIndivFlags;"
123 class=
"badge badge-info me-1">{{ flag }}
</span>
126 <ng-template #osdUsageTpl
128 <cd-usage-bar [title]=
"'osd ' + row.osd"
129 [total]=
"row.stats.stat_bytes"
130 [used]=
"row.stats.stat_bytes_used"
131 [warningThreshold]=
"osdSettings.nearfull_ratio"
132 [errorThreshold]=
"osdSettings.full_ratio">
136 <ng-template #deleteOsdExtraTpl
138 <ng-container [formGroup]=
"form">
139 <ng-container formGroupName=
"child">
140 <div class=
"form-group">
141 <div class=
"custom-control custom-checkbox">
142 <input type=
"checkbox"
143 class=
"custom-control-input"
146 formControlName=
"preserve">
147 <label class=
"custom-control-label"
149 i18n
>Preserve OSD ID(s) for replacement.
</label>