Barrcuda API endpoint

This commit is contained in:
Manuel Romero
2021-04-13 13:32:13 +02:00
parent aed18cccfa
commit 2a7fec03d7
5 changed files with 77 additions and 1 deletions

View File

@@ -28,6 +28,7 @@
"angular-bootstrap-md": "9.0.0",
"animate.css": "^3.7.2",
"axios": "^0.21.1",
"barracuda-api": "https://gitlab.com/qlik_gear/barracuda-api-node.git#0.0.2",
"body-parser": "^1.19.0",
"bootstrap": "^4.3.1",
"bull-arena": "^2.6.4",

View File

@@ -39,6 +39,15 @@ const provisionSchema = new mongoose.Schema({
type: Boolean,
default: false
},
barracudaAppId: {
type: String
},
barracudaAppCname: {
type: String
},
barracudaAzureFqdn: {
type: String
},
isDestroyed: {
type: Boolean,
default: false

View File

@@ -67,7 +67,13 @@ module.exports = async function(job) {
return await db.provision.update(prov._id, {"status": status});
} ).then( async function(prov) {
return tf.outputs(prov).then( async function(outputs){
return await db.provision.update(prov._id, {"outputs": outputs});
if ( outputs.barracudaAzureFqdn ) {
let fqdn = outputs.barracudaAzureFqdn;
delete outputs['barracudaAzureFqdn'];
return await db.provision.update(prov._id, {"barracudaAzureFqdn": fqdn, "outputs": outputs});
} else {
return await db.provision.update(prov._id, {"outputs": outputs});
}
});
} ).then( async function(prov) {
// Application Gateway assign policy

View File

@@ -5,6 +5,7 @@ const config = require('qmi-cloud-common/config');
const passport = require('../passport');
const fs = require('fs-extra');
const azurecli = require('qmi-cloud-common/azurecli');
const BarracudaAPI = require('barracuda-api');
import { queues, TF_APPLY_QUEUE, TF_APPLY_QSEOK_QUEUE, TF_DESTROY_QUEUE, STOP_CONTAINER_QUEUE } from 'qmi-cloud-common/queues';
@@ -351,6 +352,59 @@ router.delete('/:userId/provisions/:id', passport.ensureAuthenticatedAndIsMe, as
}
});
/**
* @swagger
* /users/{userId}/provisions/{id}/barracuda:
* post:
* description: Barracuda - give a provision external access
* summary: Barracuda - give a provision external access
* 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/barracuda', passport.ensureAuthenticatedAndIsMe, async (req, res, next) => {
try {
let provision = await db.provision.getById(req.params.id);
if (!provision){
return res.status(404).json({"msg": "Not found provision with id "+req.params.id});
}
const client = new BarracudaAPI.QlikSenseNPrintingApp();
let appName = provision.scenario.toLowerCase();
appName = appName.replace(/azqmi/g, 'qmi');
appName = `${appName}-${provision._id}`
console.log("APIUser# Creating Barracuda App: "+ appName);
client.create(appName, `${appName}.qmi.qlik-poc.com`, provision.barracudaAzureFqdn, "443").then(function(bApp) {
console.log("APIUser# Barracuda App created! ID: "+ bApp.id);
let cname = bApp.waas_services && bApp.waas_services.length? bApp.waas_services[0].cname : null;
db.provision.update(provision._id, {"barracudaAppId": bApp.id, "barracudaAppCname":cname});
});
return res.json({});
} catch (error) {
next(error);
}
});
/**
* @swagger
* /users/{userId}/provisions/{id}/abort:

View File

@@ -2134,6 +2134,12 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
"barracuda-api@https://gitlab.com/qlik_gear/barracuda-api-node.git#0.0.2":
version "0.0.2"
resolved "https://gitlab.com/qlik_gear/barracuda-api-node.git#f95e3f3d87eee86d3bc6830e94bca59de1224a6a"
dependencies:
axios "^0.21.1"
base64-arraybuffer@0.1.5:
version "0.1.5"
resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8"