85 lines
3.1 KiB
JavaScript
85 lines
3.1 KiB
JavaScript
const db = require("./mongo");
|
|
const sendEmail = require("./send-email");
|
|
|
|
async function afterStopVms( provision, auto ) {
|
|
let timeRunning = db.utils.getNewTimeRunning(provision);
|
|
const dateNow = new Date();
|
|
let patch = {
|
|
"statusVms": "Stopped",
|
|
"timeRunning": timeRunning,
|
|
"stoppedFrom": dateNow,
|
|
"pendingNextAction": undefined
|
|
};
|
|
|
|
if ( auto && provision._scenarioDoc ) { //From CLI (auto stop)
|
|
let msg = "";
|
|
// Actual onschedule reset
|
|
if ( provision.schedule && !provision.schedule.is24x7 ) {
|
|
patch["startDateOnSchedule"] = dateNow;
|
|
patch["endDateOnSchedule"] = dateNow;
|
|
msg = "Schedule time has been reset.";
|
|
} else {
|
|
msg = "24x7 vms auto-stopped due to limitted running time reached.";
|
|
}
|
|
|
|
msg += `New totalTimeRunning: ${timeRunning} mins`;
|
|
|
|
await db.provision.update(provision._id.toString(), patch);
|
|
await sendEmail.sendVMsStopped(provision, provision._scenarioDoc);
|
|
db.event.add({ user: provision.user._id, provision: provision._id, type: 'vms.stop-auto', message: msg });
|
|
|
|
} else { //On Demand stop
|
|
let msg = "";
|
|
if ( provision.schedule && !provision.schedule.is24x7 ) {
|
|
patch["endDateOnSchedule"] = dateNow;
|
|
|
|
//This is temporary, only to make sure there is some initial value soon
|
|
if ( !provision["startDateOnSchedule"] ) {
|
|
patch["startDateOnSchedule"] = dateNow;
|
|
msg = "startDateOS: " + dateNow.toISOString();
|
|
} else {
|
|
msg = "startDateOS: " + new Date(provision.startDateOnSchedule).toISOString();
|
|
}
|
|
msg += (" - endDateOS: " + dateNow.toISOString());
|
|
|
|
}
|
|
|
|
msg += ` - New totalTimeRunning: ${timeRunning} mins`;
|
|
|
|
await db.provision.update(provision._id.toString(), patch);
|
|
|
|
db.event.add({ user: provision.user._id, provision: provision._id, type: 'vms.stop-ondemand', message: msg });
|
|
}
|
|
}
|
|
|
|
async function afterStartVms( provision ) {
|
|
const dateNow = new Date();
|
|
let countExtend = db.utils.getNewCountExtend(provision);
|
|
var patch = {
|
|
"statusVms": "Running",
|
|
"runningFrom": dateNow,
|
|
"countExtend": countExtend,
|
|
"pendingNextAction": undefined
|
|
};
|
|
|
|
// Actual onschedule reset
|
|
let msg = "";
|
|
if ( provision.schedule && !provision.schedule.is24x7 ) {
|
|
msg = "Schedule time has been reset.";
|
|
patch["startDateOnSchedule"] = dateNow;
|
|
patch["endDateOnSchedule"] = dateNow;
|
|
} else {
|
|
msg = `24x7, New count extend: ${countExtend}`;
|
|
}
|
|
|
|
msg += `TotalTimeRunning so far: ${provision.timeRunning} mins`;
|
|
|
|
await db.provision.update(provision._id.toString(), patch);
|
|
console.log("AzureCLI# All VMs RUNNING for resource group: "+rgName);
|
|
|
|
db.event.add({ user: provision.user._id, provision: provision._id, type: 'vms.start-ondemand', message: msg });
|
|
|
|
}
|
|
|
|
module.exports.afterStopVms = afterStopVms;
|
|
module.exports.afterStartVms = afterStartVms; |