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/workers/docker/azure.js
Manuel Romero 2a3eccfe30 fix
2020-04-24 15:51:51 +02:00

83 lines
3.0 KiB
JavaScript

const Docker = require('dockerode');
const docker = new Docker({
'socketPath': '/home/docker.sock'
//'socketPath': '/var/run/docker.sock'
});
const fs = require("fs");
const DOCKERIMAGE = "mcr.microsoft.com/azure-powershell";
//const cmd = `docker run --net=host -w /myapp -v ${FOLDER}:/myapp mcr.microsoft.com/azure-powershell pwsh appgw.ps1 -ApplicationGatewayName ${appGwName}`;
const appgateway = function( mongoJob, scenario ) {
if ( mongoJob.status === 'provisioned' && scenario.isWafPolicyAppGw ) {
var provision_id = mongoJob._id.toString();
var processStream = fs.createWriteStream(mongoJob.logFile, {flags:'a'});
var name = 'qmi-azureps-appgw-'+provision_id;
console.log(`AzurePS: will spin up container: ${name}`);
return docker.run(DOCKERIMAGE, ['pwsh', 'appgw.ps1', "-ProvisionId", provision_id ], processStream, {
"name": name,
"WorkingDir": "/myapp",
"HostConfig": {
"Binds": [
`${mongoJob.path}/shell:/myapp`
],
"NetworkMode": "host"
}
}).then(function(data) {
var output = data[0];
var container = data[1];
console.log(`AzurePS: ${name} (${container.id}) has finished with code: ${output.StatusCode}`);
return container.remove();
}).then(function() {
console.log(`AzurePS: ${name} removed!`);
return Promise.resolve(mongoJob);
});
} else {
return Promise.resolve(mongoJob);
}
};
const createimage = function( mongoJob, scenario ) {
if ( mongoJob.status === 'provisioned' && scenario.newImageName ) {
var provision_id = mongoJob._id.toString();
var processStream = fs.createWriteStream(mongoJob.logFile, {flags:'a'});
var name = 'qmi-azureps-createimage-'+provision_id;
let rgName = mongoJob.scenario.toUpperCase();
rgName = rgName + "-" + provision_id;
let imageName = scenario.newImageName + "-" + new Date().getTime();
console.log(`AzurePS: will spin up container: ${name}`);
return docker.run(DOCKERIMAGE, ['pwsh', 'createimage.ps1', "-rgName", rgName, "-imageName", imageName ], processStream, {
"name": name,
"WorkingDir": "/myapp",
"HostConfig": {
"Binds": [
`${mongoJob.path}/shell:/myapp`
],
"NetworkMode": "host"
}
}).then(function(data) {
var output = data[0];
var container = data[1];
console.log(`AzurePS: ${name} (${container.id}) has finished with code: ${output.StatusCode}`);
return container.remove();
}).then(function() {
console.log(`AzurePS: ${name} removed!`);
return Promise.resolve(mongoJob);
});
} else {
return Promise.resolve(mongoJob);
}
};
module.exports.appgateway = appgateway;
module.exports.createimage = createimage;