93 lines
2.6 KiB
JavaScript
Executable File
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;
|