This repository has been archived on 2025-12-25. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
qmi-cloud/qmi-cloud-worker/processor-synapse.js
2022-11-09 16:07:07 +01:00

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