From e5154576b422a0a082e6146e4aacd9b150593601 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Darveau?= Date: Tue, 7 Dec 2021 23:23:57 -0500 Subject: [PATCH] attempt to fix integrations --- controllers/apps/docker/useDocker.js | 14 ++++++++- controllers/apps/docker/useKubernetes.js | 12 ++++++++ controllers/apps/getAllApps.js | 34 +++++++++++++++------- controllers/apps/index.js | 2 +- controllers/categories/getAllCategories.js | 6 ++-- 5 files changed, 53 insertions(+), 15 deletions(-) diff --git a/controllers/apps/docker/useDocker.js b/controllers/apps/docker/useDocker.js index dff7c47..7d5d715 100644 --- a/controllers/apps/docker/useDocker.js +++ b/controllers/apps/docker/useDocker.js @@ -3,8 +3,9 @@ const axios = require('axios'); const Logger = require('../../../utils/Logger'); const logger = new Logger(); const loadConfig = require('../../../utils/loadConfig'); +const Category = require('../../../models/Category'); -dockerDefaultCategory = { +const dockerDefaultCategory = { id: -2, name: 'Docker', type: 'apps', @@ -55,6 +56,17 @@ const useDocker = async (apps) => { const dockerApps = []; + const categories = await Category.findAll({ + where: { + type: 'apps' + }, + order: [[orderType, 'ASC']] + }); + + if (!categories.find(category => category.id === dockerDefaultCategory.id)) { + categories.push(await Category.create(dockerDefaultCategory)); + } + for (const container of containers) { let labels = container.Labels; diff --git a/controllers/apps/docker/useKubernetes.js b/controllers/apps/docker/useKubernetes.js index 7378c82..2bb5f83 100644 --- a/controllers/apps/docker/useKubernetes.js +++ b/controllers/apps/docker/useKubernetes.js @@ -3,6 +3,7 @@ const k8s = require('@kubernetes/client-node'); const Logger = require('../../../utils/Logger'); const logger = new Logger(); const loadConfig = require('../../../utils/loadConfig'); +const Category = require('../../../models/Category'); const kubernetesDefaultCategory = { id: -3, @@ -39,6 +40,17 @@ const useKubernetes = async (apps) => { const kubernetesApps = []; + const categories = await Category.findAll({ + where: { + type: 'apps' + }, + order: [[orderType, 'ASC']] + }); + + if (!categories.find(category => category.id === kubernetesDefaultCategory.id)) { + categories.push(await Category.create(kubernetesDefaultCategory)); + } + for (const ingress of ingresses) { const annotations = ingress.metadata.annotations; diff --git a/controllers/apps/getAllApps.js b/controllers/apps/getAllApps.js index 36f4eb1..846850b 100644 --- a/controllers/apps/getAllApps.js +++ b/controllers/apps/getAllApps.js @@ -15,15 +15,7 @@ const getAllApps = asyncWrapper(async (req, res, next) => { kubernetesApps: useKubernetesAPI, } = await loadConfig(); - let apps; - - if (useDockerAPI) { - await useDocker(apps); - } - - if (useKubernetesAPI) { - await useKubernetes(apps); - } + let apps = await loadIntegrationsApps(); // apps visibility const where = req.isAuthenticated ? {} : { isPublic: true }; @@ -52,4 +44,26 @@ const getAllApps = asyncWrapper(async (req, res, next) => { }); }); -module.exports = getAllApps; +const loadIntegrationsApps = asyncWrapper(async () => { + const { + dockerApps: useDockerAPI, + kubernetesApps: useKubernetesAPI, + } = await loadConfig(); + + let apps; + + if (useDockerAPI) { + await useDocker(apps); + } + + if (useKubernetesAPI) { + await useKubernetes(apps); + } + + return apps; +}); + +module.exports = { + getAllApps, + loadIntegrationsApps +} diff --git a/controllers/apps/index.js b/controllers/apps/index.js index 01873b3..91f7f00 100644 --- a/controllers/apps/index.js +++ b/controllers/apps/index.js @@ -4,5 +4,5 @@ module.exports = { deleteApp: require('./deleteApp'), updateApp: require('./updateApp'), reorderApps: require('./reorderApps'), - getAllApps: require('./getAllApps'), + getAllApps: require('./getAllApps').getAllApps, }; diff --git a/controllers/categories/getAllCategories.js b/controllers/categories/getAllCategories.js index 7ccdac1..3ec1cb5 100644 --- a/controllers/categories/getAllCategories.js +++ b/controllers/categories/getAllCategories.js @@ -4,7 +4,7 @@ const App = require('../../models/App'); const Bookmark = require('../../models/Bookmark'); const { Sequelize } = require('sequelize'); const loadConfig = require('../../utils/loadConfig'); -const getAllApps = require('../apps/getAllApps'); +const loadIntegrationsApps = require('../apps/getAllApps').loadIntegrationsApps; // @desc Get all categories // @route GET /api/categories @@ -13,7 +13,7 @@ const getAllCategories = asyncWrapper(async (req, res, next) => { const { useOrdering: orderType } = await loadConfig(); // Load apps to create apps from integrations (Docker, Kubernetes, etc.) - await getAllApps(req, res, next); + await loadIntegrationsApps(); let categories; let output; @@ -34,7 +34,7 @@ const getAllCategories = asyncWrapper(async (req, res, next) => { [{ model: Bookmark, as: 'bookmarks' }, orderType, 'ASC'], ]; - categories = categories = await Category.findAll({ + categories = await Category.findAll({ include: [ { model: App,