blob: 9f8a0fc09d9b311aaf000af6982fab68534ebc9f [file] [log] [blame]
module.exports = function(logger, utils) {
// Active Endpoint
this.endPoint = '/active';
var hostMachine = process.env.HOST_MACHINE;
this.active = function(req, res) {
var method = 'active';
var response = {
worker: utils.worker,
host: utils.host,
hostMachine: hostMachine,
active: utils.host === utils.activeHost
};
if (req.query && req.query.active) {
var query = req.query.active.toLowerCase();
if (query !== 'true' && query !== 'false') {
response.error = "Invalid query string";
res.send(response);
return;
}
var redundantHost = utils.host === 'host0' ? 'host1' : 'host0';
var activeHost = query === 'true' ? utils.host : redundantHost;
if (utils.activeHost !== activeHost) {
if (utils.redisClient) {
utils.redisClient.hsetAsync(utils.redisHash, utils.redisKey, activeHost)
.then(() => {
response.active = 'swapping';
utils.redisClient.publish(utils.redisHash, activeHost);
logger.info(method, 'Active host swap in progress');
res.send(response);
})
.catch(err => {
response.error = err;
res.send(response);
});
}
else {
response.active = utils.host === activeHost;
utils.activeHost = activeHost;
var message = 'The active state has changed';
logger.info(method, message, 'to', activeHost);
response.message = message;
res.send(response);
}
}
else {
res.send(response);
}
}
else {
res.send(response);
}
};
};