Fix
This commit is contained in:
@@ -24,8 +24,9 @@ async function asyncForEach(array, callback) {
|
||||
}
|
||||
}
|
||||
|
||||
function deallocate(resourceGroupName, cb){
|
||||
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 = [];
|
||||
@@ -33,9 +34,11 @@ function deallocate(resourceGroupName, cb){
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -43,6 +46,7 @@ function deallocate(resourceGroupName, cb){
|
||||
|
||||
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 = [];
|
||||
@@ -50,9 +54,11 @@ function start(resourceGroupName, cb){
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,10 @@ mongoose.set('useFindAndModify', false);
|
||||
//mongoose.set('debug', true)
|
||||
|
||||
const provisionSchema = new mongoose.Schema({
|
||||
userId: String,
|
||||
userId: {
|
||||
type: String,
|
||||
index: true
|
||||
},
|
||||
created: {
|
||||
type: Date,
|
||||
default: Date.now
|
||||
@@ -31,6 +34,10 @@ const provisionSchema = new mongoose.Schema({
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
statusVms: {
|
||||
type: String,
|
||||
default: "Running"
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
const express = require('express')
|
||||
const router = express.Router()
|
||||
const db = require('../mongo.js');
|
||||
const db = require('../mongo');
|
||||
const passport = require('../passport');
|
||||
const fs = require('fs-extra');
|
||||
const azurecli = require('../azurecli');
|
||||
|
||||
|
||||
import { queues, TF_APPLY_QUEUE, TF_APPLY_QSEOK_QUEUE, TF_DESTROY_QUEUE } from '../queues';
|
||||
@@ -196,11 +197,11 @@ router.delete('/:userId/provisions/:id', passport.ensureAuthenticatedAndIsMe, as
|
||||
try {
|
||||
const mongoJob = await db.provision.getSingle(req.params.id);
|
||||
if (!mongoJob){
|
||||
return res.status(404).json({"msg": "Not found"});
|
||||
return res.status(404).json({"msg": "Not found privision with id "+req.params.id});
|
||||
}
|
||||
const toDestroy = await db.destroy.get({"provId": req.params.id});
|
||||
const delDest = await db.destroy.del(toDestroy[0]._id.toString());
|
||||
const delProv = await db.provision.del(req.params.id);
|
||||
const delProv = await db.provision.update(req.params.id, {"isDeleted": true});
|
||||
|
||||
//Move folder
|
||||
fs.moveSync(`/provisions/${mongoJob.scenario}_${req.params.id}`, `/provisions/deleted/${mongoJob.scenario}_${req.params.id}`, { overwrite: true })
|
||||
@@ -211,6 +212,107 @@ router.delete('/:userId/provisions/:id', passport.ensureAuthenticatedAndIsMe, as
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /users/{userId}/provisions/{id}/deallocatevms:
|
||||
* delete:
|
||||
* description: Stop all VMs for this provision
|
||||
* summary: Stop all VMs for this provision
|
||||
* produces:
|
||||
* - application/json
|
||||
* parameters:
|
||||
* - name: userId
|
||||
* in: path
|
||||
* type: string
|
||||
* required: true
|
||||
* - name: id
|
||||
* in: path
|
||||
* type: string
|
||||
* required: true
|
||||
* responses:
|
||||
* 200:
|
||||
* description: Provision
|
||||
* 404:
|
||||
* description: Not found
|
||||
*
|
||||
*/
|
||||
router.post('/:userId/provisions/:id/deallocatevms', passport.ensureAuthenticatedAndIsMe, async (req, res, next) => {
|
||||
try {
|
||||
let mongoJob = await db.provision.getSingle(req.params.id);
|
||||
if (!mongoJob){
|
||||
return res.status(404).json({"msg": "Not found privision with id "+req.params.id});
|
||||
}
|
||||
|
||||
let rgName = mongoJob.scenario.toUpperCase();
|
||||
rgName = rgName.replace(/AZQMI/g, 'QMI');
|
||||
rgName = rgName + "-" + mongoJob._id.toString();
|
||||
|
||||
db.provision.update(req.params.id, {"statusVms": "Stopping"});
|
||||
azurecli.deallocate(rgName, function(err, res){
|
||||
if (err) {
|
||||
db.provision.update(req.params.id, {"statusVms": "Error_Stopping"});
|
||||
} else {
|
||||
db.provision.update(req.params.id, {"statusVms": "Stopped"});
|
||||
}
|
||||
});
|
||||
|
||||
return res.json({"statusVms": "Stopping"});
|
||||
|
||||
} catch (error) {
|
||||
next(error);
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /users/{userId}/provisions/{id}/startvms:
|
||||
* delete:
|
||||
* description: Start all VMs for this provision
|
||||
* summary: Start all VMs for this provision
|
||||
* produces:
|
||||
* - application/json
|
||||
* parameters:
|
||||
* - name: userId
|
||||
* in: path
|
||||
* type: string
|
||||
* required: true
|
||||
* - name: id
|
||||
* in: path
|
||||
* type: string
|
||||
* required: true
|
||||
* responses:
|
||||
* 200:
|
||||
* description: Provision
|
||||
* 404:
|
||||
* description: Not found
|
||||
*
|
||||
*/
|
||||
router.post('/:userId/provisions/:id/startvms', passport.ensureAuthenticatedAndIsMe, async (req, res, next) => {
|
||||
try {
|
||||
let mongoJob = await db.provision.getSingle(req.params.id);
|
||||
if (!mongoJob){
|
||||
return res.status(404).json({"msg": "Not found privision with id "+req.params.id});
|
||||
}
|
||||
let rgName = mongoJob.scenario.toUpperCase();
|
||||
rgName = rgName.replace(/AZQMI/g, 'QMI');
|
||||
rgName = rgName + "-" + mongoJob._id.toString();
|
||||
|
||||
db.provision.update(req.params.id, {"statusVms": "Starting"});
|
||||
azurecli.start(rgName, function(err, res){
|
||||
if (err) {
|
||||
db.provision.update(req.params.id, {"statusVms": "Error_Starting"});
|
||||
} else {
|
||||
db.provision.update(req.params.id, {"statusVms": "Running"});
|
||||
}
|
||||
});
|
||||
|
||||
return res.json({"statusVms": "Starting"});
|
||||
|
||||
} catch (error) {
|
||||
next(error);
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /users/{userId}/destroyprovisions:
|
||||
@@ -284,7 +386,7 @@ router.post('/:userId/destroyprovisions', passport.ensureAuthenticatedAndIsMe, a
|
||||
router.get('/:userId/provisions', passport.ensureAuthenticatedAndIsMe, async (req, res, next) => {
|
||||
|
||||
try {
|
||||
const result = await db.provision.get({"userId": req.params.userId});
|
||||
const result = await db.provision.get({"userId": req.params.userId, "isDeleted": false});
|
||||
return res.json(result);
|
||||
} catch (error) {
|
||||
next(error);
|
||||
|
||||
Reference in New Issue
Block a user