]> git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/dashboard/osd-summary.pipe.ts
import quincy beta 17.1.0
[ceph.git] / ceph / src / pybind / mgr / dashboard / frontend / src / app / ceph / dashboard / osd-summary.pipe.ts
1 import { Pipe, PipeTransform } from '@angular/core';
2
3 import _ from 'lodash';
4
5 @Pipe({
6 name: 'osdSummary'
7 })
8 export class OsdSummaryPipe implements PipeTransform {
9 transform(value: any): any {
10 if (!value) {
11 return '';
12 }
13
14 let inCount = 0;
15 let upCount = 0;
16 let nearFullCount = 0;
17 let fullCount = 0;
18 _.each(value.osds, (osd) => {
19 if (osd.in) {
20 inCount++;
21 }
22 if (osd.up) {
23 upCount++;
24 }
25 if (osd.state.includes('nearfull')) {
26 nearFullCount++;
27 }
28 if (osd.state.includes('full')) {
29 fullCount++;
30 }
31 });
32
33 const osdSummary = [
34 {
35 content: `${value.osds.length} ${$localize`total`}`,
36 class: ''
37 }
38 ];
39 osdSummary.push({
40 content: '',
41 class: 'card-text-line-break'
42 });
43 osdSummary.push({
44 content: `${upCount} ${$localize`up`}, ${inCount} ${$localize`in`}`,
45 class: ''
46 });
47
48 const downCount = value.osds.length - upCount;
49 const outCount = value.osds.length - inCount;
50 if (downCount > 0 || outCount > 0) {
51 osdSummary.push({
52 content: '',
53 class: 'card-text-line-break'
54 });
55
56 const downText = downCount > 0 ? `${downCount} ${$localize`down`}` : '';
57 const separator = downCount > 0 && outCount > 0 ? ', ' : '';
58 const outText = outCount > 0 ? `${outCount} ${$localize`out`}` : '';
59 osdSummary.push({
60 content: `${downText}${separator}${outText}`,
61 class: 'card-text-error'
62 });
63 }
64
65 if (nearFullCount > 0) {
66 osdSummary.push(
67 {
68 content: '',
69 class: 'card-text-line-break'
70 },
71 {
72 content: `${nearFullCount} ${$localize`near full`}`,
73 class: 'card-text-error'
74 },
75 {
76 content: '',
77 class: 'card-text-line-break'
78 }
79 );
80 }
81
82 if (fullCount > 0) {
83 osdSummary.push({
84 content: `${fullCount} ${$localize`full`}`,
85 class: 'card-text-error'
86 });
87 }
88
89 return osdSummary;
90 }
91 }