This is an automated email from the ASF dual-hosted git repository.
csantanapr pushed a commit to branch master
in repository
https://gitbox.apache.org/repos/asf/incubator-openwhisk-package-alarms.git
The following commit(s) were added to refs/heads/master by this push:
new 70a5b11 loosen restrictions on redis values (#149)
70a5b11 is described below
commit 70a5b11f5648187f7d79068b2579d4bfc629c7e7
Author: Jason Peterson <[email protected]>
AuthorDate: Wed May 9 08:46:48 2018 -0400
loosen restrictions on redis values (#149)
---
provider/lib/active.js | 4 +-
provider/lib/constants.js | 4 +-
provider/lib/health.js | 19 ++---
provider/lib/sanitizer.js | 14 +--
provider/lib/utils.js | 213 +++++++++++++++++++++++-----------------------
5 files changed, 126 insertions(+), 128 deletions(-)
diff --git a/provider/lib/active.js b/provider/lib/active.js
index 25a8a6b..1e90bb2 100644
--- a/provider/lib/active.js
+++ b/provider/lib/active.js
@@ -28,10 +28,10 @@ module.exports = function(logger, utils) {
var activeHost = query === 'true' ? utils.host : redundantHost;
if (utils.activeHost !== activeHost) {
if (utils.redisClient) {
- utils.redisClient.hsetAsync(utils.redisHash, utils.redisKey,
activeHost)
+ utils.redisClient.hsetAsync(utils.redisKey,
utils.redisField, activeHost)
.then(() => {
response.active = 'swapping';
- utils.redisClient.publish(utils.redisHash, activeHost);
+ utils.redisClient.publish(utils.redisKey, activeHost);
logger.info(method, 'Active host swap in progress');
res.send(response);
})
diff --git a/provider/lib/constants.js b/provider/lib/constants.js
index 5352696..dca9352 100644
--- a/provider/lib/constants.js
+++ b/provider/lib/constants.js
@@ -2,7 +2,7 @@ const TRIGGER_DB_SUFFIX = 'alarmservice';
const DEFAULT_MAX_TRIGGERS = -1;
const RETRY_ATTEMPTS = 10;
const RETRY_DELAY = 1000; //in milliseconds
-const REDIS_KEY = 'active';
+const REDIS_FIELD = 'active';
const FILTERS_DESIGN_DOC = 'triggerFilters';
const VIEWS_DESIGN_DOC = 'triggerViews';
const TRIGGERS_BY_WORKER = 'triggers_by_worker';
@@ -14,7 +14,7 @@ module.exports = {
DEFAULT_MAX_TRIGGERS: DEFAULT_MAX_TRIGGERS,
RETRY_ATTEMPTS: RETRY_ATTEMPTS,
RETRY_DELAY: RETRY_DELAY,
- REDIS_KEY: REDIS_KEY,
+ REDIS_FIELD: REDIS_FIELD,
FILTERS_DESIGN_DOC: FILTERS_DESIGN_DOC,
VIEWS_DESIGN_DOC: VIEWS_DESIGN_DOC,
TRIGGERS_BY_WORKER: TRIGGERS_BY_WORKER,
diff --git a/provider/lib/health.js b/provider/lib/health.js
index 19874c2..98246a6 100644
--- a/provider/lib/health.js
+++ b/provider/lib/health.js
@@ -13,7 +13,6 @@ module.exports = function(logger, utils) {
var alarmTypes = ['interval', 'date', 'cron'];
var alarmTypeIndex = 0;
var monitorStages = ['triggerStarted', 'triggerFired', 'triggerStopped'];
- var healthMonitor = this;
// Health Logic
this.health = function (req, res) {
@@ -91,18 +90,18 @@ module.exports = function(logger, utils) {
var triggerURL = utils.uriHost + '/api/v1/namespaces/_/triggers/' +
triggerName;
var triggerID = `${apikey}/_/${triggerName}`;
- healthMonitor.createTrigger(triggerURL, auth)
+ createTrigger(triggerURL, auth)
.then((info) => {
logger.info(method, triggerID, info);
- var newTrigger = healthMonitor.createAlarmTrigger(triggerID,
apikey, alarmType);
- healthMonitor.createTriggerInDB(triggerID, newTrigger);
+ var newTrigger = createAlarmTrigger(triggerID, apikey, alarmType);
+ createTriggerInDB(triggerID, newTrigger);
})
.catch(err => {
logger.error(method, triggerID, err);
});
};
- this.createAlarmTrigger = function(triggerID, apikey, alarmType) {
+ function createAlarmTrigger(triggerID, apikey, alarmType) {
var method = 'createAlarmTrigger';
var newTrigger = {
@@ -131,9 +130,9 @@ module.exports = function(logger, utils) {
}
return newTrigger;
- };
+ }
- this.createTrigger = function(triggerURL, auth) {
+ function createTrigger(triggerURL, auth) {
var method = 'createTrigger';
return new Promise(function(resolve, reject) {
@@ -155,9 +154,9 @@ module.exports = function(logger, utils) {
}
});
});
- };
+ }
- this.createTriggerInDB = function(triggerID, newTrigger) {
+ function createTriggerInDB (triggerID, newTrigger) {
var method = 'createTriggerInDB';
utils.db.insert(newTrigger, triggerID, function (err) {
@@ -168,6 +167,6 @@ module.exports = function(logger, utils) {
logger.error(method, triggerID, err);
}
});
- };
+ }
};
diff --git a/provider/lib/sanitizer.js b/provider/lib/sanitizer.js
index 3553010..31f8f79 100644
--- a/provider/lib/sanitizer.js
+++ b/provider/lib/sanitizer.js
@@ -2,7 +2,7 @@ var request = require('request');
module.exports = function(logger, triggerDB, uriHost) {
- var sanitizer = this;
+ var self = this;
this.deleteTriggerFromDB = function(triggerID, retryCount) {
var method = 'deleteTriggerFromDB';
@@ -14,7 +14,7 @@ module.exports = function(logger, triggerDB, uriHost) {
if (err) {
if (err.statusCode === 409 && retryCount < 5) {
setTimeout(function () {
- sanitizer.deleteTriggerFromDB(triggerID,
(retryCount + 1));
+ self.deleteTriggerFromDB(triggerID,
(retryCount + 1));
}, 1000);
}
else {
@@ -53,7 +53,7 @@ module.exports = function(logger, triggerDB, uriHost) {
}
else {
//delete the trigger
- sanitizer.deleteTrigger(dataTrigger, auth, 0)
+ self.deleteTrigger(dataTrigger, auth, 0)
.then((info) => {
logger.info(method, triggerIdentifier, info);
if (body) {
@@ -62,7 +62,7 @@ module.exports = function(logger, triggerDB, uriHost) {
for (var rule in jsonBody.rules) {
var qualifiedName = rule.split('/');
var uri = uriHost + '/api/v1/namespaces/' +
qualifiedName[0] + '/rules/' + qualifiedName[1];
- sanitizer.deleteRule(rule, uri, auth, 0);
+ self.deleteRule(rule, uri, auth, 0);
}
}
catch (err) {
@@ -96,7 +96,7 @@ module.exports = function(logger, triggerDB, uriHost) {
if (!error && response.statusCode === 409 && retryCount <
5) {
logger.info(method, 'attempting to delete trigger
again', triggerIdentifier, 'Retry Count:', (retryCount + 1));
setTimeout(function () {
- sanitizer.deleteTrigger(dataTrigger, auth,
(retryCount + 1))
+ self.deleteTrigger(dataTrigger, auth, (retryCount
+ 1))
.then(info => {
resolve(info);
})
@@ -131,7 +131,7 @@ module.exports = function(logger, triggerDB, uriHost) {
if (!error && response.statusCode === 409 && retryCount < 5) {
logger.info(method, 'attempting to delete rule again',
rule, 'Retry Count:', (retryCount + 1));
setTimeout(function () {
- sanitizer.deleteRule(rule, uri, auth, (retryCount +
1));
+ self.deleteRule(rule, uri, auth, (retryCount + 1));
}, 1000);
} else {
logger.error(method, rule, 'rule delete request failed');
@@ -172,7 +172,7 @@ module.exports = function(logger, triggerDB, uriHost) {
});
})
.then(triggerID => {
- sanitizer.deleteTriggerFromDB(triggerID, 0);
+ self.deleteTriggerFromDB(triggerID, 0);
})
.catch(err => {
logger.error(method, triggerID, 'an error occurred while deleting
the trigger feed', err);
diff --git a/provider/lib/utils.js b/provider/lib/utils.js
index 28b2f08..108973f 100644
--- a/provider/lib/utils.js
+++ b/provider/lib/utils.js
@@ -9,6 +9,14 @@ var Sanitizer = require('./sanitizer');
module.exports = function(logger, triggerDB, redisClient) {
+ var retryDelay = constants.RETRY_DELAY;
+ var retryAttempts = constants.RETRY_ATTEMPTS;
+ var filterDDName = constants.FILTERS_DESIGN_DOC;
+ var viewDDName = constants.VIEWS_DESIGN_DOC;
+ var triggersByWorker = constants.TRIGGERS_BY_WORKER;
+ var redisKeyPrefix = process.env.REDIS_KEY_PREFIX || triggerDB.config.db;
+ var self = this;
+
this.triggers = {};
this.endpointAuth = process.env.ENDPOINT_AUTH;
this.routerHost = process.env.ROUTER_HOST || 'localhost';
@@ -17,34 +25,27 @@ module.exports = function(logger, triggerDB, redisClient) {
this.activeHost = 'host0'; //default value on init (will be updated for
existing redis)
this.db = triggerDB;
this.redisClient = redisClient;
- this.redisHash = triggerDB.config.db + '_' + this.worker;
- this.redisKey = constants.REDIS_KEY;
+ this.redisKey = redisKeyPrefix + '_' + this.worker;
+ this.redisField = constants.REDIS_FIELD;
this.uriHost ='https://' + this.routerHost;
this.sanitizer = new Sanitizer(logger, triggerDB, this.uriHost);
this.monitorStatus = {};
- var retryDelay = constants.RETRY_DELAY;
- var retryAttempts = constants.RETRY_ATTEMPTS;
- var filterDDName = constants.FILTERS_DESIGN_DOC;
- var viewDDName = constants.VIEWS_DESIGN_DOC;
- var triggersByWorker = constants.TRIGGERS_BY_WORKER;
- var utils = this;
-
- this.createTrigger = function(triggerIdentifier, newTrigger) {
+ function createTrigger(triggerIdentifier, newTrigger) {
var method = 'createTrigger';
var callback = function onTick() {
- var triggerHandle = utils.triggers[triggerIdentifier];
- if (triggerHandle && utils.shouldFireTrigger(triggerHandle) &&
utils.hasTriggersRemaining(triggerHandle)) {
+ var triggerHandle = self.triggers[triggerIdentifier];
+ if (triggerHandle && shouldFireTrigger(triggerHandle) &&
hasTriggersRemaining(triggerHandle)) {
try {
- utils.fireTrigger(triggerHandle);
+ fireTrigger(triggerHandle);
} catch (e) {
logger.error(method, 'Exception occurred while firing
trigger', triggerIdentifier, e);
}
}
};
- newTrigger.uri = utils.uriHost + '/api/v1/namespaces/' +
newTrigger.namespace + '/triggers/' + newTrigger.name;
+ newTrigger.uri = self.uriHost + '/api/v1/namespaces/' +
newTrigger.namespace + '/triggers/' + newTrigger.name;
newTrigger.triggerID = triggerIdentifier;
var alarm;
@@ -59,27 +60,27 @@ module.exports = function(logger, triggerDB, redisClient) {
}
return alarm.scheduleAlarm(triggerIdentifier, callback);
- };
+ }
- this.fireTrigger = function(dataTrigger) {
+ function fireTrigger(dataTrigger) {
var method = 'fireTrigger';
var triggerIdentifier = dataTrigger.triggerID;
var auth = dataTrigger.apikey.split(':');
logger.info(method, 'Alarm fired for', triggerIdentifier, 'attempting
to fire trigger');
- utils.postTrigger(dataTrigger, auth, 0)
+ postTrigger(dataTrigger, auth, 0)
.then(triggerId => {
logger.info(method, 'Trigger', triggerId, 'was successfully
fired');
- utils.handleFiredTrigger(dataTrigger);
+ handleFiredTrigger(dataTrigger);
})
.catch(err => {
logger.error(method, err);
- utils.handleFiredTrigger(dataTrigger);
+ handleFiredTrigger(dataTrigger);
});
- };
+ }
- this.postTrigger = function(dataTrigger, auth, retryCount, throttleCount) {
+ function postTrigger(dataTrigger, auth, retryCount, throttleCount) {
var method = 'postTrigger';
return new Promise(function(resolve, reject) {
@@ -111,10 +112,10 @@ module.exports = function(logger, triggerDB, redisClient)
{
dataTrigger.triggersLeft++;
}
- if (!error &&
utils.shouldDisableTrigger(response.statusCode)) {
+ if (!error &&
shouldDisableTrigger(response.statusCode)) {
//disable trigger
var message = 'Automatically disabled after
receiving a ' + response.statusCode + ' status code when firing the trigger';
- utils.disableTrigger(triggerIdentifier,
response.statusCode, message);
+ disableTrigger(triggerIdentifier,
response.statusCode, message);
reject('Disabled trigger ' + triggerIdentifier + '
due to status code: ' + response.statusCode);
}
else {
@@ -122,7 +123,7 @@ module.exports = function(logger, triggerDB, redisClient) {
throttleCounter = response &&
response.statusCode === HttpStatus.TOO_MANY_REQUESTS ? throttleCounter + 1 :
throttleCounter;
logger.info(method, 'attempting to fire
trigger again', triggerIdentifier, 'Retry Count:', (retryCount + 1));
setTimeout(function () {
- utils.postTrigger(dataTrigger, auth,
(retryCount + 1), throttleCounter)
+ postTrigger(dataTrigger, auth, (retryCount
+ 1), throttleCounter)
.then(triggerId => {
resolve(triggerId);
})
@@ -133,7 +134,7 @@ module.exports = function(logger, triggerDB, redisClient) {
} else {
if (throttleCounter === retryAttempts) {
var msg = 'Automatically disabled after
continuously receiving a 429 status code when firing the trigger';
- utils.disableTrigger(triggerIdentifier,
429, msg);
+ disableTrigger(triggerIdentifier, 429,
msg);
reject('Disabled trigger ' +
triggerIdentifier + ' due to status code: 429');
}
else {
@@ -151,30 +152,30 @@ module.exports = function(logger, triggerDB, redisClient)
{
}
});
});
- };
+ }
- this.shouldDisableTrigger = function(statusCode) {
+ function shouldDisableTrigger(statusCode) {
return ((statusCode >= 400 && statusCode < 500) &&
[HttpStatus.REQUEST_TIMEOUT,
HttpStatus.TOO_MANY_REQUESTS].indexOf(statusCode) === -1);
- };
+ }
- this.shouldFireTrigger = function(trigger) {
- return trigger.monitor || utils.activeHost === utils.host;
- };
+ function shouldFireTrigger(trigger) {
+ return trigger.monitor || self.activeHost === self.host;
+ }
- this.hasTriggersRemaining = function(trigger) {
+ function hasTriggersRemaining(trigger) {
return !trigger.maxTriggers || trigger.maxTriggers === -1 ||
trigger.triggersLeft > 0;
- };
+ }
- this.isMonitoringTrigger = function(monitor, triggerName) {
- return monitor && utils.monitorStatus.triggerName === triggerName;
- };
+ function isMonitoringTrigger(monitor, triggerName) {
+ return monitor && self.monitorStatus.triggerName === triggerName;
+ }
- this.handleFiredTrigger = function(dataTrigger) {
+ function handleFiredTrigger(dataTrigger) {
var method = 'handleFiredTrigger';
- if (utils.isMonitoringTrigger(dataTrigger.monitor, dataTrigger.name)) {
- utils.monitorStatus.triggerFired = "success";
+ if (isMonitoringTrigger(dataTrigger.monitor, dataTrigger.name)) {
+ self.monitorStatus.triggerFired = "success";
}
var triggerIdentifier = dataTrigger.triggerID;
@@ -182,15 +183,15 @@ module.exports = function(logger, triggerDB, redisClient)
{
if (dataTrigger.deleteAfterFire && dataTrigger.deleteAfterFire !==
'false') {
//delete trigger feed from database
- utils.sanitizer.deleteTriggerFeed(triggerIdentifier);
+ self.sanitizer.deleteTriggerFeed(triggerIdentifier);
//check if trigger and all associated rules should be deleted
if (dataTrigger.deleteAfterFire === 'rules') {
- utils.sanitizer.deleteTriggerAndRules(dataTrigger);
+ self.sanitizer.deleteTriggerAndRules(dataTrigger);
}
else {
var auth = dataTrigger.apikey.split(':');
- utils.sanitizer.deleteTrigger(dataTrigger, auth, 0)
+ self.sanitizer.deleteTrigger(dataTrigger, auth, 0)
.then(info => {
logger.info(method, triggerIdentifier, info);
})
@@ -200,28 +201,28 @@ module.exports = function(logger, triggerDB, redisClient)
{
}
}
else {
- utils.disableTrigger(triggerIdentifier, undefined,
'Automatically disabled after firing once');
+ disableTrigger(triggerIdentifier, undefined, 'Automatically
disabled after firing once');
logger.info(method, 'the fire once date has expired,
disabled', triggerIdentifier);
}
}
else if (dataTrigger.stopDate) {
//check if the next scheduled trigger is after the stop date
if (dataTrigger.cronHandle &&
dataTrigger.cronHandle.nextDate().isAfter(new Date(dataTrigger.stopDate))) {
- utils.disableTrigger(triggerIdentifier, undefined,
'Automatically disabled after firing last scheduled cron trigger');
+ disableTrigger(triggerIdentifier, undefined, 'Automatically
disabled after firing last scheduled cron trigger');
logger.info(method, 'last scheduled cron trigger before stop
date, disabled', triggerIdentifier);
}
else if (dataTrigger.minutes && (Date.now() + (dataTrigger.minutes
* 1000 * 60) > new Date(dataTrigger.stopDate).getTime())) {
- utils.disableTrigger(triggerIdentifier, undefined,
'Automatically disabled after firing last scheduled interval trigger');
+ disableTrigger(triggerIdentifier, undefined, 'Automatically
disabled after firing last scheduled interval trigger');
logger.info(method, 'last scheduled interval trigger before
stop date, disabled', triggerIdentifier);
}
}
else if (dataTrigger.maxTriggers && dataTrigger.triggersLeft === 0) {
- utils.disableTrigger(triggerIdentifier, undefined, 'Automatically
disabled after reaching max triggers');
+ disableTrigger(triggerIdentifier, undefined, 'Automatically
disabled after reaching max triggers');
logger.warn(method, 'no more triggers left, disabled',
triggerIdentifier);
}
- };
+ }
- this.disableTrigger = function(triggerIdentifier, statusCode, message) {
+ function disableTrigger(triggerIdentifier, statusCode, message) {
var method = 'disableTrigger';
triggerDB.get(triggerIdentifier, function (err, existing) {
@@ -248,45 +249,45 @@ module.exports = function(logger, triggerDB, redisClient)
{
else {
logger.info(method, 'could not find', triggerIdentifier, 'in
database');
//make sure it is already stopped
- utils.stopTrigger(triggerIdentifier);
+ stopTrigger(triggerIdentifier);
}
});
- };
+ }
- this.stopTrigger = function (triggerIdentifier) {
+ function stopTrigger(triggerIdentifier) {
var method = 'stopTrigger';
- if (utils.triggers[triggerIdentifier]) {
- if (utils.triggers[triggerIdentifier].cronHandle) {
- utils.triggers[triggerIdentifier].cronHandle.stop();
+ if (self.triggers[triggerIdentifier]) {
+ if (self.triggers[triggerIdentifier].cronHandle) {
+ self.triggers[triggerIdentifier].cronHandle.stop();
}
- else if (utils.triggers[triggerIdentifier].intervalHandle) {
-
lt.clearInterval(utils.triggers[triggerIdentifier].intervalHandle);
+ else if (self.triggers[triggerIdentifier].intervalHandle) {
+
lt.clearInterval(self.triggers[triggerIdentifier].intervalHandle);
}
- delete utils.triggers[triggerIdentifier];
+ delete self.triggers[triggerIdentifier];
logger.info(method, 'trigger', triggerIdentifier, 'successfully
deleted from memory');
}
- };
+ }
this.initAllTriggers = function() {
var method = 'initAllTriggers';
//follow the trigger DB
- utils.setupFollow('now');
+ setupFollow('now');
logger.info(method, 'resetting system from last state');
- triggerDB.view(viewDDName, triggersByWorker, {reduce: false,
include_docs: true, key: utils.worker}, function(err, body) {
+ triggerDB.view(viewDDName, triggersByWorker, {reduce: false,
include_docs: true, key: self.worker}, function(err, body) {
if (!err) {
body.rows.forEach(function (trigger) {
var triggerIdentifier = trigger.id;
var doc = trigger.doc;
- if (!(triggerIdentifier in utils.triggers) &&
!doc.monitor) {
+ if (!(triggerIdentifier in self.triggers) && !doc.monitor)
{
//check if trigger still exists in whisk db
var namespace = doc.namespace;
var name = doc.name;
var apikey = doc.apikey;
- var uri = utils.uriHost + '/api/v1/namespaces/' +
namespace + '/triggers/' + name;
+ var uri = self.uriHost + '/api/v1/namespaces/' +
namespace + '/triggers/' + name;
var auth = apikey.split(':');
logger.info(method, 'Checking if trigger',
triggerIdentifier, 'still exists');
@@ -299,19 +300,19 @@ module.exports = function(logger, triggerDB, redisClient)
{
}
}, function (error, response) {
//disable trigger in database if trigger is dead
- if (!error &&
utils.shouldDisableTrigger(response.statusCode)) {
+ if (!error &&
shouldDisableTrigger(response.statusCode)) {
var message = 'Automatically disabled after
receiving a ' + response.statusCode + ' status code on trigger initialization';
- utils.disableTrigger(triggerIdentifier,
response.statusCode, message);
+ disableTrigger(triggerIdentifier,
response.statusCode, message);
logger.error(method, 'trigger',
triggerIdentifier, 'has been disabled due to status code:',
response.statusCode);
}
else {
- utils.createTrigger(triggerIdentifier, doc)
+ createTrigger(triggerIdentifier, doc)
.then(cachedTrigger => {
- utils.triggers[triggerIdentifier] =
cachedTrigger;
+ self.triggers[triggerIdentifier] =
cachedTrigger;
logger.info(method, triggerIdentifier,
'created successfully');
- if (cachedTrigger.intervalHandle &&
utils.shouldFireTrigger(cachedTrigger)) {
+ if (cachedTrigger.intervalHandle &&
shouldFireTrigger(cachedTrigger)) {
try {
- utils.fireTrigger(cachedTrigger);
+ fireTrigger(cachedTrigger);
} catch (e) {
logger.error(method, 'Exception
occurred while firing trigger', triggerIdentifier, e);
}
@@ -319,7 +320,7 @@ module.exports = function(logger, triggerDB, redisClient) {
})
.catch(err => {
var message = 'Automatically disabled
after receiving error on trigger initialization: ' + err;
- utils.disableTrigger(triggerIdentifier,
undefined, message);
+ disableTrigger(triggerIdentifier,
undefined, message);
logger.error(method, 'Disabled trigger',
triggerIdentifier, err);
});
}
@@ -332,7 +333,7 @@ module.exports = function(logger, triggerDB, redisClient) {
});
};
- this.setupFollow = function(seq) {
+ function setupFollow(seq) {
var method = 'setupFollow';
try {
@@ -340,7 +341,7 @@ module.exports = function(logger, triggerDB, redisClient) {
since: seq,
include_docs: true,
filter: filterDDName + '/' + triggersByWorker,
- query_params: {worker: utils.worker}
+ query_params: {worker: self.worker}
});
feed.on('change', (change) => {
@@ -349,29 +350,29 @@ module.exports = function(logger, triggerDB, redisClient)
{
logger.info(method, 'got change for trigger',
triggerIdentifier);
- if (utils.triggers[triggerIdentifier]) {
+ if (self.triggers[triggerIdentifier]) {
if (doc.status && doc.status.active === false) {
- utils.stopTrigger(triggerIdentifier);
- if (utils.isMonitoringTrigger(doc.monitor, doc.name)) {
- utils.monitorStatus.triggerStopped = "success";
+ stopTrigger(triggerIdentifier);
+ if (isMonitoringTrigger(doc.monitor, doc.name)) {
+ self.monitorStatus.triggerStopped = "success";
}
}
}
else {
//ignore changes to disabled triggers
- if ((!doc.status || doc.status.active === true) &&
(!doc.monitor || doc.monitor === utils.host)) {
- utils.createTrigger(triggerIdentifier, doc)
+ if ((!doc.status || doc.status.active === true) &&
(!doc.monitor || doc.monitor === self.host)) {
+ createTrigger(triggerIdentifier, doc)
.then(cachedTrigger => {
- utils.triggers[triggerIdentifier] = cachedTrigger;
+ self.triggers[triggerIdentifier] = cachedTrigger;
logger.info(method, triggerIdentifier, 'created
successfully');
- if
(utils.isMonitoringTrigger(cachedTrigger.monitor, cachedTrigger.name)) {
- utils.monitorStatus.triggerStarted = "success";
+ if (isMonitoringTrigger(cachedTrigger.monitor,
cachedTrigger.name)) {
+ self.monitorStatus.triggerStarted = "success";
}
- if (cachedTrigger.intervalHandle &&
utils.shouldFireTrigger(cachedTrigger)) {
+ if (cachedTrigger.intervalHandle &&
shouldFireTrigger(cachedTrigger)) {
try {
- utils.fireTrigger(cachedTrigger);
+ fireTrigger(cachedTrigger);
} catch (e) {
logger.error(method, 'Exception occurred
while firing trigger', triggerIdentifier, e);
}
@@ -379,7 +380,7 @@ module.exports = function(logger, triggerDB, redisClient) {
})
.catch(err => {
var message = 'Automatically disabled after
receiving error on trigger creation: ' + err;
- utils.disableTrigger(triggerIdentifier, undefined,
message);
+ disableTrigger(triggerIdentifier, undefined,
message);
logger.error(method, 'Disabled trigger',
triggerIdentifier, err);
});
}
@@ -395,12 +396,12 @@ module.exports = function(logger, triggerDB, redisClient)
{
catch (err) {
logger.error(method, err);
}
- };
+ }
this.authorize = function(req, res, next) {
var method = 'authorize';
- if (utils.endpointAuth) {
+ if (self.endpointAuth) {
if (!req.headers.authorization) {
res.set('www-authenticate', 'Basic realm="Private"');
res.status(HttpStatus.UNAUTHORIZED);
@@ -409,24 +410,24 @@ module.exports = function(logger, triggerDB, redisClient)
{
var parts = req.headers.authorization.split(' ');
if (parts[0].toLowerCase() !== 'basic' || !parts[1]) {
- return utils.sendError(method, HttpStatus.BAD_REQUEST,
'Malformed request, basic authentication expected', res);
+ return sendError(method, HttpStatus.BAD_REQUEST, 'Malformed
request, basic authentication expected', res);
}
var auth = new Buffer(parts[1], 'base64').toString();
auth = auth.match(/^([^:]*):(.*)$/);
if (!auth) {
- return utils.sendError(method, HttpStatus.BAD_REQUEST,
'Malformed request, authentication invalid', res);
+ return sendError(method, HttpStatus.BAD_REQUEST, 'Malformed
request, authentication invalid', res);
}
var uuid = auth[1];
var key = auth[2];
- var endpointAuth = utils.endpointAuth.split(':');
+ var endpointAuth = self.endpointAuth.split(':');
if (endpointAuth[0] === uuid && endpointAuth[1] === key) {
next();
}
else {
logger.warn(method, 'Invalid key');
- return utils.sendError(method, HttpStatus.UNAUTHORIZED,
'Invalid key', res);
+ return sendError(method, HttpStatus.UNAUTHORIZED, 'Invalid
key', res);
}
}
else {
@@ -434,10 +435,10 @@ module.exports = function(logger, triggerDB, redisClient)
{
}
};
- this.sendError = function(method, code, message, res) {
+ function sendError(method, code, message, res) {
logger.error(method, message);
res.status(code).json({error: message});
- };
+ }
this.initRedis = function() {
var method = 'initRedis';
@@ -449,10 +450,8 @@ module.exports = function(logger, triggerDB, redisClient) {
//create a subscriber client that listens for requests to
perform swap
subscriber.on('message', function (channel, message) {
- if (message === 'host0' || message === 'host1') {
- logger.info(method, message, 'set to active host in
channel', channel);
- utils.activeHost = message;
- }
+ logger.info(method, message, 'set to active host in
channel', channel);
+ self.activeHost = message;
});
subscriber.on('error', function (err) {
@@ -460,19 +459,19 @@ module.exports = function(logger, triggerDB, redisClient)
{
reject(err);
});
- subscriber.subscribe(utils.redisHash);
+ subscriber.subscribe(self.redisKey);
- redisClient.hgetAsync(utils.redisHash, utils.redisKey)
+ redisClient.hgetAsync(self.redisKey, self.redisField)
.then(activeHost => {
- return utils.initActiveHost(activeHost);
+ return initActiveHost(activeHost);
})
.then(() => {
process.on('SIGTERM', function onSigterm() {
- if (utils.activeHost === utils.host) {
- var redundantHost = utils.host === 'host0' ?
'host1' : 'host0';
- utils.redisClient.hsetAsync(utils.redisHash,
utils.redisKey, redundantHost)
+ if (self.activeHost === self.host) {
+ var redundantHost = self.host === 'host0' ?
'host1' : 'host0';
+ self.redisClient.hsetAsync(self.redisKey,
self.redisField, redundantHost)
.then(() => {
- utils.redisClient.publish(utils.redisHash,
redundantHost);
+ self.redisClient.publish(self.redisKey,
redundantHost);
})
.catch(err => {
logger.error(method, err);
@@ -491,18 +490,18 @@ module.exports = function(logger, triggerDB, redisClient)
{
});
};
- this.initActiveHost = function(activeHost) {
+ function initActiveHost(activeHost) {
var method = 'initActiveHost';
if (activeHost === null) {
//initialize redis key with active host
- logger.info(method, 'redis hset', utils.redisHash, utils.redisKey,
utils.activeHost);
- return redisClient.hsetAsync(utils.redisHash, utils.redisKey,
utils.activeHost);
+ logger.info(method, 'redis hset', self.redisKey, self.redisField,
self.activeHost);
+ return redisClient.hsetAsync(self.redisKey, self.redisField,
self.activeHost);
}
else {
- utils.activeHost = activeHost;
+ self.activeHost = activeHost;
return Promise.resolve();
}
- };
+ }
};
--
To stop receiving notification emails like this one, please contact
[email protected].