1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
|
<ul ngbNav
#nav="ngbNav"
class="nav-tabs">
<li ngbNavItem>
<a ngbNavLink
i18n>OSDs List</a>
<ng-template ngbNavContent>
<cd-table [data]="osds"
(fetchData)="getOsdList()"
[columns]="columns"
selectionType="multiClick"
[hasDetails]="true"
(setExpandedRow)="setExpandedRow($event)"
(updateSelection)="updateSelection($event)"
[updateSelectionOnRefresh]="'never'">
<div class="table-actions btn-toolbar">
<cd-table-actions [permission]="permissions.osd"
[selection]="selection"
class="btn-group"
id="osd-actions"
[tableActions]="tableActions">
</cd-table-actions>
<cd-table-actions [permission]="{read: true}"
[selection]="selection"
dropDownOnly="Cluster-wide configuration"
btnColor="light"
class="btn-group"
id="cluster-wide-actions"
[tableActions]="clusterWideActions">
</cd-table-actions>
</div>
<cd-osd-details cdTableDetail
[selection]="expandedRow">
</cd-osd-details>
</cd-table>
</ng-template>
</li>
<li ngbNavItem
*ngIf="permissions.grafana.read">
<a ngbNavLink
i18n>Overall Performance</a>
<ng-template ngbNavContent>
<cd-grafana [grafanaPath]="'osd-overview?'"
uid="lo02I1Aiz"
grafanaStyle="four">
</cd-grafana>
</ng-template>
</li>
</ul>
<div [ngbNavOutlet]="nav"></div>
<ng-template #markOsdConfirmationTpl
let-markActionDescription="markActionDescription"
let-osdIds="osdIds">
<ng-container i18n><strong>OSD(s) {{ osdIds | join }}</strong> will be marked
<strong>{{ markActionDescription }}</strong> if you proceed.</ng-container>
</ng-template>
<ng-template #criticalConfirmationTpl
let-safeToPerform="safeToPerform"
let-message="message"
let-active="active"
let-missingStats="missingStats"
let-storedPgs="storedPgs"
let-actionDescription="actionDescription"
let-osdIds="osdIds">
<div *ngIf="!safeToPerform"
class="danger mb-3">
<cd-alert-panel type="warning">
<span i18n>
The {selection.hasSingleSelection, select, true {OSD is} other {OSDs are}} not safe to be
{{ actionDescription }}!
</span>
<br>
<ul class="mb-0 pl-4">
<li *ngIf="active.length > 0"
i18n>
{selection.hasSingleSelection, select, true {} other {{{ active | join }} : }}
Some PGs are currently mapped to
{active.length === 1, select, true {it} other {them}}.
</li>
<li *ngIf="missingStats.length > 0"
i18n>
{selection.hasSingleSelection, select, true {} other {{{ missingStats | join }} : }}
There are no reported stats and not all PGs are active and clean.
</li>
<li *ngIf="storedPgs.length > 0"
i18n>
{selection.hasSingleSelection, select, true {OSD} other {{{ storedPgs | join }} : OSDs }}
still store some PG data and not all PGs are active and clean.
</li>
<li *ngIf="message">
{{ message }}
</li>
</ul>
</cd-alert-panel>
</div>
<div *ngIf="safeToPerform"
class="danger mb-3">
<cd-alert-panel type="info">
<span i18n>
The {selection.hasSingleSelection, select, true {OSD is} other {OSDs are}}
safe to destroy without reducing data durability.
</span>
</cd-alert-panel>
</div>
<ng-container i18n><strong>OSD {{ osdIds | join }}</strong> will be
<strong>{{ actionDescription }}</strong> if you proceed.</ng-container>
</ng-template>
<ng-template #flagsTpl
let-row="row">
<span *ngFor="let flag of row.cdClusterFlags;"
class="badge badge-hdd mr-1">{{ flag }}</span>
<span *ngFor="let flag of row.cdIndivFlags;"
class="badge badge-info mr-1">{{ flag }}</span>
</ng-template>
<ng-template #osdUsageTpl
let-row="row">
<cd-usage-bar [total]="row.stats.stat_bytes"
[used]="row.stats.stat_bytes_used"
[warningThreshold]="osdSettings.nearfull_ratio"
[errorThreshold]="osdSettings.full_ratio">
</cd-usage-bar>
</ng-template>
<ng-template #deleteOsdExtraTpl
let-form="form">
<ng-container [formGroup]="form">
<ng-container formGroupName="child">
<div class="form-group">
<div class="custom-control custom-checkbox">
<input type="checkbox"
class="custom-control-input"
name="preserve"
id="preserve"
formControlName="preserve">
<label class="custom-control-label"
for="preserve"
i18n>Preserve OSD ID(s) for replacement.</label>
</div>
</div>
</ng-container>
</ng-container>
</ng-template>
|