luci/applications/luci-app-keepalived/htdocs/luci-static/resources/view/keepalived/overview.js
Jaymin Patel d1a82d2886 luci-app-keepalived: Add LuCI for keepalived
LuCI Support for Keepalived

Signed-off-by: Jaymin Patel <jem.patel@gmail.com>
2022-10-23 16:19:33 +05:30

75 lines
1.8 KiB
JavaScript

'use strict';
'require view';
'require form';
'require uci';
'require rpc';
'require poll';
var callKeepalivedStatus = rpc.declare({
object: 'keepalived',
method: 'dump',
expect: { },
});
return view.extend({
load: function() {
return Promise.all([
uci.load('keepalived'),
]);
},
render: function() {
var table =
E('table', { 'class': 'table lases' }, [
E('tr', { 'class': 'tr table-titles' }, [
E('th', { 'class': 'th' }, _('Name')),
E('th', { 'class': 'th' }, _('Interface')),
E('th', { 'class': 'th' }, _('Active State/State')),
E('th', { 'class': 'th' }, _('Probes Sent')),
E('th', { 'class': 'th' }, _('Probes Received')),
E('th', { 'class': 'th' }, _('Last Transition')),
E([])
])
]);
poll.add(function() {
return callKeepalivedStatus().then(function(instancesInfo) {
var targets = Array.isArray(instancesInfo.status) ? instancesInfo.status : [];
var instances = uci.sections('keepalived', 'vrrp_instance');
cbi_update_table(table,
targets.map(function(target) {
var state = (target.stats.become_master - target.stats.release_master) ? 'MASTER' : 'BACKUP';
if (instances != '') {
for (var i = 0; i < instances.length; i++) {
if (instances[i]['name'] == target.data.iname) {
state = state + '/' + instances[i]['state'];
break;
}
}
}
return [
target.data.iname,
target.data.ifp_ifname,
state,
target.stats.advert_sent,
target.stats.advert_rcvd,
new Date(target.data.last_transition * 1000)
];
}),
E('em', _('There are no active instances'))
);
});
});
return E([
E('h3', _('Keepalived Instances Status')),
E('br'),
table
]);
},
handleSave: null,
handleSaveApply:null,
handleReset: null
});