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/server/processor-apply.js
Manuel Romero 316ab85ffe outputs
2019-12-11 14:22:24 +01:00

44 lines
1.6 KiB
JavaScript

const db = require('./mongo.js');
const path = require('path');
const PROJECT_PATH = process.env.PROJECT_PATH;
const tf = require("./docker/tf.js");
module.exports = async function(job){
const provJob = await db.provision.update(job.data.id, {
"status": "initializing",
"jobId": job.id,
"logFile": path.join('/logs', 'provision', `${job.data.id}.log`),
"path": path.join(PROJECT_PATH, '..', 'qmi-cloud-provisions', `${job.data.scenario}_${job.data.id}`)
});
// TERRAFORM INIT
return tf.init(provJob)
.then(async function() {
return await db.provision.update(provJob._id,{"status": "provisioning"});
}).then(function(provJobUpdated) {
// TERRAFORM APPLY
return tf.apply(provJobUpdated, job.data.user.displayName);
}).then(async function(output) {
var status = ( output.indexOf("Error") !== -1 )? "error" : "provisioned";
return await db.provision.update(provJob._id, {"status": status});
}).then(async function(mongoUpdated) {
if (mongoUpdated.status === "provisioned"){
return tf.outputs(mongoUpdated, "Connect-to-QDC-at").then( async function(outputs){
return await db.provision.update(mongoUpdated._id, {"outputs": outputs});
});
} else {
return mongoUpdated;
}
}).then(function(mongoUpdated) {
return Promise.resolve({"success": true, provMongo: mongoUpdated});
}).catch(function(err) {
console.log("Provision: error", err);
db.provision.update(provJob._id, {"status": "error"});
return Promise.reject({"success": false, "error": err});
});
}