67 lines
2.8 KiB
JavaScript
67 lines
2.8 KiB
JavaScript
const db = require('qmi-cloud-common/mongo');
|
|
const synapse = require("./docker/synapse");
|
|
|
|
module.exports = async function(job) {
|
|
|
|
console.log(`ProcessorAzCLI# will execute ${job.data.tasktype} task`);
|
|
|
|
if (job.data.tasktype === 'pause') {
|
|
|
|
var prov = await db.provision.getById(job.data.provId);
|
|
|
|
if ( !prov ) {
|
|
console.log(`ProcessorAzCLI# Error: Not found Provision object in Database (it should exist!), provisionId is: ${job.data.id}` );
|
|
return Promise.reject({"success": false, "err": "Not found Provision object in Worker"});
|
|
}
|
|
|
|
// Synapse Pause
|
|
db.provision.update(prov._id, {"statusVms": "Stopping"});
|
|
return synapse.pause(prov)
|
|
.then( function(res) {
|
|
db.provision.update(prov._id, {"statusVms": "Stopped"});
|
|
return Promise.resolve( { "success": true, "output": res });
|
|
} ).catch( function(err) {
|
|
console.log("ProcessorAzCLI# Error:", err);
|
|
db.provision.update(prov._id, {"statusVms": "Running"});
|
|
return Promise.reject({"success": false, "error": err});
|
|
} );
|
|
} else if (job.data.tasktype === 'resume') {
|
|
|
|
var prov = await db.provision.getById(job.data.provId);
|
|
|
|
if ( !prov ) {
|
|
console.log(`ProcessorAzCLI# Error: Not found Provision object in Database (it should exist!), provisionId is: ${job.data.id}` );
|
|
return Promise.reject({"success": false, "err": "Not found Provision object in Worker"});
|
|
}
|
|
|
|
// Synapse Resume
|
|
db.provision.update(prov._id, {"statusVms": "Starting"});
|
|
return synapse.resume(prov)
|
|
.then( function(res) {
|
|
db.provision.update(prov._id, {"statusVms": "Running"});
|
|
return Promise.resolve( { "success": true, "output": res });
|
|
} ).catch( function(err) {
|
|
console.log("ProcessorAzCLI# Error:", err);
|
|
db.provision.update(prov._id, {"statusVms": "Stopped"});
|
|
return Promise.reject({"success": false, "error": err});
|
|
} );
|
|
} else if (job.data.tasktype === 'copy-snapshots') {
|
|
|
|
return synapse.copySnapshots(job.data)
|
|
.then( function(res) {
|
|
return Promise.resolve( { "success": true, "output": res });
|
|
} ).catch( function(err) {
|
|
console.log("ProcessorAzCLI# Error:", err);
|
|
return Promise.reject({"success": false, "error": err});
|
|
} );
|
|
} else if (job.data.tasktype === 'check-copy-snapshots') {
|
|
|
|
return synapse.checkCopySnapshots(job.data)
|
|
.then( function(res) {
|
|
return Promise.resolve( { "success": true, "output": res });
|
|
} ).catch( function(err) {
|
|
console.log("ProcessorAzCLI# Error:", err);
|
|
return Promise.reject({"success": false, "error": err});
|
|
} );
|
|
}
|
|
} |