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}); } ); } }