From 64bd739f1da1bd415b86f4a6afd9d5f57cc4e4ab Mon Sep 17 00:00:00 2001 From: "ryan.kuba" Date: Sat, 5 Nov 2022 14:57:43 -0700 Subject: [PATCH] KASM-3512 use deep merge on the exec and run configs to load the default values alongside the gpu modifications --- index.js | 18 +++++++++++++++--- package.json | 1 + 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/index.js b/index.js index cd7c119..d0bd09c 100644 --- a/index.js +++ b/index.js @@ -6,6 +6,7 @@ var fsw = require('fs').promises; var fs = require('fs'); var os = require('os'); var yaml = require('js-yaml'); +var _ = require('lodash'); var si = require('systeminformation'); var express = require('express'); var app = require('express')(); @@ -72,10 +73,21 @@ io.on('connection', async function (socket) { if (installSettings.forceGpu !== 'disabled') { let card = installSettings.forceGpu.slice(-1); let render = (Number(card) + 128).toString(); - console.log(card, render); + let baseRun = JSON.parse('{"environment":{"KASM_EGL_CARD":"/dev/dri/card' + card + '","KASM_RENDERD":"/dev/dri/renderD' + render + '"},"devices":["/dev/dri/card' + card + ':/dev/dri/card' + card + ':rwm","/dev/dri/renderD' + render + ':/dev/dri/renderD' + render + ':rwm"]}'); + let baseExec = JSON.parse('{"first_launch":{"user":"root","cmd": "bash -c \'chown -R kasm-user:kasm-user /dev/dri/*\'"}}'); for await (let image of Object.keys(images.images)) { - imagesD.images[image]['run_config'] = '{"environment":{"KASM_EGL_CARD":"/dev/dri/card' + card + '","KASM_RENDERD":"/dev/dri/renderD' + render + '"},"devices":["/dev/dri/card' + card + ':/dev/dri/card' + card + ':rwm","/dev/dri/renderD' + render + ':/dev/dri/renderD' + render + ':rwm"]}' - imagesD.images[image]['exec_config'] = '{"first_launch":{"user":"root","cmd": "bash -c \'chown -R kasm-user:kasm-user /dev/dri/*\'"}}' + if (imagesD.images[image]['run_config']) { + finalRun = _.merge(JSON.parse(imagesD.images[image]['run_config']), baseRun) + } else { + finalRun = baseRun; + } + if (imagesD.images[image]['exec_config']) { + finalExec = _.merge(JSON.parse(imagesD.images[image]['exec_config']), baseExec) + } else { + finalExec = baseExec; + } + imagesD.images[image]['run_config'] = JSON.stringify(finalRun); + imagesD.images[image]['exec_config'] = JSON.stringify(finalExec); } } let yamlStr = yaml.dump(imagesD); diff --git a/package.json b/package.json index 730cde5..1b39770 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "dockerode": "^3.3.2", "express": "^4.18.1", "js-yaml": "^4.1.0", + "lodash": "^4.17.21", "node-pty": "^0.10.1", "socket.io": "^4.5.1", "systeminformation": "^5.11.16"