wp-performance-cluster/scripts/addTriggers.js

93 lines
2.6 KiB
JavaScript
Executable File

//@auth
//@req(nodeGroup, resourceType, cleanOldTriggers, loadGrowth)
var scaleUpLoadPeriod = 1,
scaleDownLimit = getParam("scaleDownLimit") || 2,
scaleDownLoadPeriod = 5;
var resp = jelastic.billing.account.GetQuotas('environment.maxsamenodescount');
if (resp.result != 0) return resp;
var scaleUpLimit = resp.array[0] && resp.array[0].value ? resp.array[0].value : 1000;
if (scaleUpLimit <= scaleDownLimit) return {result:0, warning: 'autoscaling triggers have not been added due to upLimit ['+scaleUpLimit+'] <= downLimit ['+scaleDownLimit+']'}
if (loadGrowth.toLowerCase() == "slow") {
var scaleUpValue = 70,
scaleDownValue = 20,
scaleNodeCount = 1;
}
if (loadGrowth.toLowerCase() == "medium") {
var scaleUpValue = 50,
scaleDownValue = 20,
scaleNodeCount = 1;
}
if (loadGrowth.toLowerCase() == "fast") {
var scaleUpValue = 30,
scaleDownValue = 10,
scaleNodeCount = 2;
}
if (cleanOldTriggers) {
var actions = ['ADD_NODE', 'REMOVE_NODE'];
for (var i = 0; i < actions.length; i++){
var array = jelastic.env.trigger.GetTriggers(appid, session, actions[i]).array;
for (var j = 0; j < array.length; j++) jelastic.env.trigger.DeleteTrigger(appid, session, array[j].id);
}
}
resp = jelastic.env.trigger.AddTrigger('${env.envName}', session,
{
"isEnabled": true,
"name": "scale-up",
"nodeGroup": nodeGroup,
"period": scaleUpLoadPeriod,
"condition": {
"type": "GREATER",
"value": scaleUpValue,
"resourceType": resourceType,
"valueType": "PERCENTAGES"
},
"actions": [
{
"type": "ADD_NODE",
"customData": {
"limit": scaleUpLimit,
"count": scaleNodeCount,
"notify": true
}
}
]
}
);
if (resp.result != 0) return resp;
resp = jelastic.env.trigger.AddTrigger('${env.envName}', session,
{
"isEnabled": true,
"name": "scale-down",
"nodeGroup": nodeGroup,
"period": scaleDownLoadPeriod,
"condition": {
"type": "LESS",
"value": scaleDownValue,
"resourceType": resourceType,
"valueType": "PERCENTAGES"
},
"actions": [
{
"type": "REMOVE_NODE",
"customData": {
"limit": scaleDownLimit,
"count": 1,
"notify": true
}
}
]
}
);
return resp;