wp-performance-cluster/scripts/updateTriggers.js

53 lines
1.6 KiB
JavaScript
Executable File

var SCALE = "scale-",
DOWN = "down",
UP = "up",
scaleUp = SCALE + UP,
scaleDown = SCALE + DOWN,
addNode = "ADD_NODE",
removeNode = "REMOVE_NODE",
count = getParam('count'),
ENV_NAME = "${env.name}",
triggersToEdit = [],
triggerActions,
customData,
triggers,
upLimit,
resp;
resp = jelastic.environment.trigger.GetTriggers(ENV_NAME, session, addNode + ";" + removeNode);
if (resp.result != 0) return resp;
triggers = resp.array;
for (var i = 0, n = triggers.length; i < n; i++) {
if ([scaleUp, scaleDown].indexOf(String(triggers[i].name)) != -1) {
triggerActions = triggers[i].actions;
for (var l = 0, m = triggerActions.length; l < m; l++) {
customData = triggerActions[l].customData;
if (triggers[i].name == scaleUp) upLimit = customData.limit;
if ((triggerActions[l].type == addNode && customData.limit < count) || triggerActions[l].type == removeNode) {
triggers[i].actions[l].customData.limit = count;
triggersToEdit.push({
scale: triggers[i].name.indexOf(UP) != -1 ? UP : DOWN,
trigger: triggers[i]
});
}
}
}
}
for (var i = 0, n = triggersToEdit.length; i < n; i++) {
trigger = triggersToEdit[i].trigger;
if (triggersToEdit[i].scale == DOWN && trigger.actions[0].customData.limit >= upLimit) trigger.actions[0].customData.limit = upLimit - 1;
resp = jelastic.environment.trigger.EditTrigger(ENV_NAME, session, trigger.id, trigger);
if (resp.result != 0) return resp;
}
return {result: 0};