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
|
'use strict';
'require baseclass';
'require uci';
'require rpc';
const callKeepalivedStatus = rpc.declare({
object: 'keepalived',
method: 'dump',
expect: { },
});
return baseclass.extend({
title: _('Keepalived Instances'),
load() {
return Promise.all([
callKeepalivedStatus(),
uci.load('keepalived'),
]);
},
render(data) {
const targets = (data[0].status) ? data[0].status : [];
const instances = uci.sections('keepalived', 'vrrp_instance');
const table =
E('table', { 'class': 'table leases' }, [
E('tr', { 'class': 'tr table-titles' }, [
E('th', { 'class': 'th' }, _('Name')),
E('th', { 'class': 'th' }, _('Interface')),
E('th', { 'class': 'th' }, _('Active State')),
E('th', { 'class': 'th' }, _('Initial State')),
E('th', { 'class': 'th' }, _('Probes Sent')),
E('th', { 'class': 'th' }, _('Probes Received')),
E('th', { 'class': 'th' }, _('Last Transition')),
E([])
])
]);
cbi_update_table(table,
targets.map(function(target) {
let state;
let state_initial;
const instance_state = target.data.state;
if (instance_state === 2) {
state = 'MASTER';
} else if (instance_state === 1) {
state = 'BACKUP';
} else if (instance_state === 0) {
state = 'INIT';
} else if (instance_state === 3) {
state = 'FAULT';
} else {
state = 'UNKNOWN';
}
if (instances != '') {
for (let i = 0; i < instances.length; i++) {
if (instances[i]['name'] == target.data.iname) {
state_initial = instances[i]['state'];
break;
}
}
}
return [
target.data.iname,
target.data.ifp_ifname,
state,
state_initial,
target.stats.advert_sent,
target.stats.advert_rcvd,
new Date(target.data.last_transition * 1000)
];
}, this), E('em', _('There are no active instances')));
return E([
table
]);
},
});
|