29 lines
809 B
JavaScript
29 lines
809 B
JavaScript
'use strict';
|
|
|
|
const { settings } = require('./settings');
|
|
const { getUpstreams } = require('./config');
|
|
const {
|
|
getLastProbeAt,
|
|
rankedUpstreams,
|
|
describeUpstream,
|
|
totalConnectionCapacity,
|
|
} = require('./upstream-pool');
|
|
|
|
function healthPayload() {
|
|
const upstreams = getUpstreams();
|
|
const ranked = rankedUpstreams();
|
|
const selected = ranked.find((entry) => !entry.busy) || ranked[0] || null;
|
|
|
|
return {
|
|
ok: upstreams.some((upstream) => upstream.state.healthy),
|
|
configFile: settings.configFile,
|
|
probeIntervalSec: settings.probeIntervalSec,
|
|
lastProbeAt: getLastProbeAt(),
|
|
maxConnections: totalConnectionCapacity(),
|
|
selected: selected ? describeUpstream(selected.upstream) : null,
|
|
upstreams: upstreams.map(describeUpstream),
|
|
};
|
|
}
|
|
|
|
module.exports = { healthPayload };
|