Skip to content
Snippets Groups Projects
Commit 96cfc99a authored by Sastre, Alfonso (asastre)'s avatar Sastre, Alfonso (asastre)
Browse files

add support for jupyter notebooks, add variables to config

parent 593aca2f
Branches
Tags
No related merge requests found
...@@ -11,6 +11,7 @@ function main() { ...@@ -11,6 +11,7 @@ function main() {
var cmds = [] var cmds = []
var imageType = "beaker" var imageType = "beaker"
const usage = `node ${args[1]} [-h|--help] [--image-type [beaker|jupyter]] [webserver|watcher]` const usage = `node ${args[1]} [-h|--help] [--image-type [beaker|jupyter]] [webserver|watcher]`
console.log(`Started with arguments ${JSON.stringify(args)}`)
while (iarg < args.length) { while (iarg < args.length) {
var arg = args[iarg] var arg = args[iarg]
iarg += 1 iarg += 1
...@@ -18,12 +19,12 @@ function main() { ...@@ -18,12 +19,12 @@ function main() {
console.log(usage) console.log(usage)
return; return;
} else if (arg == "--image-type") { } else if (arg == "--image-type") {
iarg += 1 if (iarg >= args.length) {
if (iarg > args.length) {
console.log(`Expected image type after --image-type, ${usage}`) console.log(`Expected image type after --image-type, ${usage}`)
return; return;
} }
imageType = args[iarg] imageType = args[iarg]
iarg += 1
} else if (arg == "webserver") { } else if (arg == "webserver") {
cmds.push("webserver") cmds.push("webserver")
} else if (arg == "apiserver") { } else if (arg == "apiserver") {
......
...@@ -34,7 +34,7 @@ ProxyRouter.prototype.kubernetesServiceLookup = function(req, res, userID, isWeb ...@@ -34,7 +34,7 @@ ProxyRouter.prototype.kubernetesServiceLookup = function(req, res, userID, isWeb
if(err) if(err)
k8.ns(config.k8component.namespace).service.post({ body: k8component('service', userID)}, function(err, result){ k8.ns(config.k8component.namespace).service.post({ body: k8component('service', userID)}, function(err, result){
if(err){ if(err){
console.log(`#ERROR# Can't start service ${config.k8component.imageType} for the user: ${userID}`); console.log(`#ERROR# Cannot start service ${config.k8component.imageType} for the user: ${userID}`);
console.log(stringify(err, null, 2)); console.log(stringify(err, null, 2));
} }
else else
...@@ -176,16 +176,16 @@ ProxyRouter.prototype.lookup = function(req, res, userID, isWebsocket, path, nex ...@@ -176,16 +176,16 @@ ProxyRouter.prototype.lookup = function(req, res, userID, isWebsocket, path, nex
} }
self.expire_route(userID, self.cache_ttl); self.expire_route(userID, self.cache_ttl);
http.request({method:'HEAD',host:target.host,port:target.port,path: '/'}, (r) => { http.request({method:'HEAD',host:target.host,port:target.port,path: '/'}, (r) => {
if(r.statusCode >= 200 && r.statusCode < 400 ){ if(r.statusCode >= 200 && r.statusCode < 500 ){
console.log("Forwarding to the target!"); console.log("Forwarding to the target!");
self.set_user_state(userID,self.stateEnum.AVAILABLE); self.set_user_state(userID,self.stateEnum.AVAILABLE);
next(target); next(target);
} else { } else {
self.expire_route(userID, 0); self.expire_route(userID, 0);
self.push_user_error(userID, err.message); self.push_user_error(userID, `ERROR, statusCode: ${r.statusCode}, err: ${JSON.stringify(err)}`);
self.clear_user_state(userID); self.clear_user_state(userID);
self.client.hdel(userID, path, () =>{}); self.client.hdel(userID, path, () =>{});
console.log("Sending message back to the browser!") console.log(`ERROR, statusCode: ${r.statusCode}, err: ${JSON.stringify(err)}, Sending message back to the browser!`)
if (!isWebsocket) { if (!isWebsocket) {
res.send(reloadMsg); res.send(reloadMsg);
} }
......
...@@ -8,21 +8,21 @@ docker run --name redis-db -d -p 6390:6379 redis:3.2 ...@@ -8,21 +8,21 @@ docker run --name redis-db -d -p 6390:6379 redis:3.2
#MongoDB #MongoDB
docker run --name filemanager-mongo -p 27017:27017 --restart=unless-stopped -d mongo docker run --name filemanager-mongo -p 27017:27017 --restart=unless-stopped -d mongo
docker run -p 80:80 --name=node-manager --env PORT=80 --env NODE_ENV=production -v $PWD:/usr/src/app -w /usr/src/app -d node:6 bash -c "npm install && npm start watcher webserver apiserver" docker run -p 80:80 --name=node-manager --env PORT=80 --env NODE_ENV=production -v $PWD:/usr/src/app -w /usr/src/app -d node:6 bash -c "npm install && npm start -- watcher webserver apiserver"
#to use the jupyter image #to use the jupyter image
docker run -p 80:80 --name=node-manager --env PORT=80 --env NODE_ENV=production -v $PWD:/usr/src/app -w /usr/src/app -d node:6 bash -c "npm install && npm start --image-type jupyter watcher webserver apiserver" docker run -p 80:80 --name=node-manager --env PORT=80 --env NODE_ENV=production -v $PWD:/usr/src/app -w /usr/src/app -d node:6 bash -c "npm install && npm start -- --image-type jupyter watcher webserver apiserver"
#On labdev-nomad ; To be run from the folder where nodejs code is present #On labdev-nomad ; To be run from the folder where nodejs code is present
docker run -p 8801:443 --restart=unless-stopped --name=beaker-manager-https --env PORT=443 --env NODE_ENV=labdev -v /u/ankar/certi:/certs:ro -v $PWD:/usr/src/app -w /usr/src/app -v /nomad/nomadlab/beaker-notebooks/user-data:/nomad/nomadlab/beaker-notebooks/user-data -d node:6 bash -c "npm install && npm start webserver" docker run -p 8801:443 --restart=unless-stopped --name=beaker-manager-https --env PORT=443 --env NODE_ENV=labdev -v /u/ankar/certi:/certs:ro -v $PWD:/usr/src/app -w /usr/src/app -v /nomad/nomadlab/beaker-notebooks/user-data:/nomad/nomadlab/beaker-notebooks/user-data -d node:6 bash -c "npm install && npm start -- webserver"
docker run -p 880:443 --restart=unless-stopped --name=beaker-manager-api --env PORT=443 --env NODE_ENV=labdev -v /u/ankar/certi:/certs:ro -v $PWD:/usr/src/app -w /usr/src/app -v /nomad/nomadlab/beaker-notebooks/user-data:/nomad/nomadlab/beaker-notebooks/user-data -d node:6 bash -c "npm install && npm start apiserver" docker run -p 880:443 --restart=unless-stopped --name=beaker-manager-api --env PORT=443 --env NODE_ENV=labdev -v /u/ankar/certi:/certs:ro -v $PWD:/usr/src/app -w /usr/src/app -v /nomad/nomadlab/beaker-notebooks/user-data:/nomad/nomadlab/beaker-notebooks/user-data -d node:6 bash -c "npm install && npm start -- apiserver"
docker run --restart=unless-stopped --name=beaker-manager-watcher --env PORT=443 --env NODE_ENV=labdev -v /u/ankar/certi:/certs:ro -v $PWD:/usr/src/app -w /usr/src/app -v /nomad/nomadlab/beaker-notebooks/user-data:/nomad/nomadlab/beaker-notebooks/user-data -d node:6 bash -c "npm install && npm start watcher" docker run --restart=unless-stopped --name=beaker-manager-watcher --env PORT=443 --env NODE_ENV=labdev -v /u/ankar/certi:/certs:ro -v $PWD:/usr/src/app -w /usr/src/app -v /nomad/nomadlab/beaker-notebooks/user-data:/nomad/nomadlab/beaker-notebooks/user-data -d node:6 bash -c "npm install && npm start -- watcher"
# jupyter: # jupyter:
docker run -p 8807:443 --restart=unless-stopped --name=jupyter-manager-https --env PORT=443 --env NODE_ENV=labdev -v /u/ankar/certi:/certs:ro -v $PWD:/usr/src/app -w /usr/src/app -v /nomad/nomadlab/beaker-notebooks/user-data:/nomad/nomadlab/beaker-notebooks/user-data -d node:6 bash -c "npm install && npm start --image-type jupyter webserver" docker run -p 8807:443 --restart=unless-stopped --name=jupyter-manager-https --env PORT=443 --env NODE_ENV=labdev -v /u/ankar/certi:/certs:ro -v $PWD:/usr/src/app -w /usr/src/app -v /nomad/nomadlab/beaker-notebooks/user-data:/nomad/nomadlab/beaker-notebooks/user-data -d node:6 bash -c "npm install && npm start -- --image-type jupyter webserver"
#On analytics-toolkit or labtest-nomad; To be run from the folder where nodejs code is present #On analytics-toolkit or labtest-nomad; To be run from the folder where nodejs code is present
docker run -p 8801:443 --restart=unless-stopped --name=beaker-manager-https --env PORT=443 --env NODE_ENV=analyticsToolkit -v /root/nomad-coe:/certs:ro -v $PWD:/usr/src/app -w /usr/src/app -v /nomad/nomadlab/beaker-notebooks/user-data:/nomad/nomadlab/beaker-notebooks/user-data -d node:6 bash -c "npm install && npm start webserver" docker run -p 8801:443 --restart=unless-stopped --name=beaker-manager-https --env PORT=443 --env NODE_ENV=analyticsToolkit -v /root/nomad-coe:/certs:ro -v $PWD:/usr/src/app -w /usr/src/app -v /nomad/nomadlab/beaker-notebooks/user-data:/nomad/nomadlab/beaker-notebooks/user-data -d node:6 bash -c "npm install && npm start -- webserver"
docker run -p 8802:443 --restart=unless-stopped --beaker-manager-api --env PORT=443 --env NODE_ENV=analyticsToolkit -v /root/nomad-coe:/certs:ro -v $PWD:/usr/src/app -w /usr/src/app -v /nomad/nomadlab/beaker-notebooks/user-data:/nomad/nomadlab/beaker-notebooks/user-data -d node:6 bash -c "npm install && npm start apiserver" docker run -p 8802:443 --restart=unless-stopped --beaker-manager-api --env PORT=443 --env NODE_ENV=analyticsToolkit -v /root/nomad-coe:/certs:ro -v $PWD:/usr/src/app -w /usr/src/app -v /nomad/nomadlab/beaker-notebooks/user-data:/nomad/nomadlab/beaker-notebooks/user-data -d node:6 bash -c "npm install && npm start -- apiserver"
docker run --restart=unless-stopped --name=beaker-manager-watcher --env PORT=443 --env NODE_ENV=analyticsToolkit -v /root/nomad-coe:/certs:ro -v $PWD:/usr/src/app -w /usr/src/app -v /nomad/nomadlab/beaker-notebooks/user-data:/nomad/nomadlab/beaker-notebooks/user-data -d node:6 bash -c "npm install && npm start watcher" docker run --restart=unless-stopped --name=beaker-manager-watcher --env PORT=443 --env NODE_ENV=analyticsToolkit -v /root/nomad-coe:/certs:ro -v $PWD:/usr/src/app -w /usr/src/app -v /nomad/nomadlab/beaker-notebooks/user-data:/nomad/nomadlab/beaker-notebooks/user-data -d node:6 bash -c "npm install && npm start -- watcher"
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
module.exports = { module.exports = {
development: { development: {
specialUsers: { specialUsers: {
sastre: { host: "172.17.0.21", port: 8801} pepe: { host: "172.17.0.21", port: 8801}
}, },
app: { app: {
name: 'Container per user manager', name: 'Container per user manager',
...@@ -51,7 +51,7 @@ module.exports = { ...@@ -51,7 +51,7 @@ module.exports = {
homePath: '/home/beaker' homePath: '/home/beaker'
}, },
jupyter: { jupyter: {
image: 'labdev-nomad.esc.rzg.mpg.de:5000/jupyter-notebook', image: 'labdev-nomad.esc.rzg.mpg.de:5000/nomadlab/notebook-jupyter-libatoms-tutorial',
port: 8888, port: 8888,
prefix: '/jupyter', prefix: '/jupyter',
homePath: '/home/beaker' homePath: '/home/beaker'
...@@ -119,7 +119,7 @@ module.exports = { ...@@ -119,7 +119,7 @@ module.exports = {
homePath: '/home/beaker' homePath: '/home/beaker'
}, },
jupyter: { jupyter: {
image: 'labdev-nomad.esc.rzg.mpg.de:5000/jupyter-notebook', image: 'labdev-nomad.esc.rzg.mpg.de:5000/nomadlab/notebook-jupyter-libatoms-tutorial',
port: 8888, port: 8888,
prefix: '/jupyter', prefix: '/jupyter',
homePath: '/home/beaker' homePath: '/home/beaker'
...@@ -188,7 +188,7 @@ module.exports = { ...@@ -188,7 +188,7 @@ module.exports = {
homePath: '/home/beaker' homePath: '/home/beaker'
}, },
jupyter: { jupyter: {
image: 'labdev-nomad.esc.rzg.mpg.de:5000/jupyter-notebook', image: 'labdev-nomad.esc.rzg.mpg.de:5000/nomadlab/notebook-jupyter-libatoms-tutorial',
port: 8888, port: 8888,
prefix: '/jupyter', prefix: '/jupyter',
homePath: '/home/beaker' homePath: '/home/beaker'
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment