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/azurecli.js
Manuel Romero b06ab3b6db fix
2020-03-26 12:11:37 +01:00

82 lines
2.7 KiB
JavaScript

const MsRest = require('ms-rest-azure');
var computeManagementClient = require('azure-arm-compute');
const SUBSCRIPTION_ID = "62ebff8f-c40b-41be-9239-252d6c0c8ad9";
var computeClient;
function auth(cb) {
if ( computeClient ) {
cb(computeClient);
} else {
MsRest.loginWithMSI({ port: 50342 }, function(err, credentials){
if (err) {
console.log("Could not authenticate with Azure", err);
return;
}
computeClient = new computeManagementClient(credentials, SUBSCRIPTION_ID);
cb(computeClient);
});
}
}
async function asyncForEach(array, callback) {
for (let index = 0; index < array.length; index++) {
await callback(array[index], index, array);
}
}
function deallocate(resourceGroupName, cb) {
try {
console.log("Deallocating VMs for resource group: "+resourceGroupName);
auth(async function(computeClient){
let finalResult = await computeClient.virtualMachines.list(resourceGroupName);
let out = [];
await asyncForEach(finalResult, async function(vm) {
let res = await computeClient.virtualMachines.deallocate(resourceGroupName, vm.name);
out.push(res);
});
console.log("All VMs DEALLOCATED for resource group: "+resourceGroupName);
cb(null, out);
})
} catch (err) {
console.log("Error deallocating VMs for resource group: "+resourceGroupName);
cb(err, null);
}
}
function start(resourceGroupName, cb){
try {
console.log("Starting VMs for resource group: "+resourceGroupName);
auth(async function(computeClient){
let finalResult = await computeClient.virtualMachines.list(resourceGroupName);
let out = [];
await asyncForEach(finalResult, async function(vm) {
let res = await computeClient.virtualMachines.start(resourceGroupName, vm.name);
out.push(res);
});
console.log("All VMs RUNNING for resource group: "+resourceGroupName);
cb(null,out);
});
} catch (err) {
console.log("Error starting VMs for resource group: "+resourceGroupName);
cb(err, null);
}
}
function getResourceGroupVms(resourceGroupName, cb){
auth(function(computeClient){
computeClient.virtualMachines.list(resourceGroupName, cb);
});
}
function getAllVms(cb){
auth(function(computeClient){
computeClient.virtualMachines.listAll(cb);
});
}
module.exports.start = start;
module.exports.deallocate = deallocate;
module.exports.getResourceGroupVms = getResourceGroupVms;
module.exports.getAllVms = getAllVms;