From c169a99040ab13e0c9a0b39e09111e38eaef6c32 Mon Sep 17 00:00:00 2001
From: Fawzi Mohamed <fawzi.mohamed@fhi-berlin.mpg.de>
Date: Fri, 2 Nov 2018 18:32:14 +0100
Subject: [PATCH] updated serviceDumper/templateEvaluer, remotevis fixes

---
 README.md                      | 40 ++++++++++++++++++++++++++++++++++
 app.js                         |  3 ++-
 app/service-dumper.js          | 10 +++++++--
 app/template-evaluer.js        |  8 +++++--
 config/default-jupyter.hjson   |  1 -
 config/default-remotevis.hjson |  9 ++++++--
 config/nomad-vis-test.hjson    |  8 +++++++
 config/nomad-vis-test.hjson.in |  8 +++++++
 config/remotevis.hjson         | 16 --------------
 9 files changed, 79 insertions(+), 24 deletions(-)
 create mode 100644 config/nomad-vis-test.hjson
 create mode 100644 config/nomad-vis-test.hjson.in
 delete mode 100644 config/remotevis.hjson

diff --git a/README.md b/README.md
index efc6115..fbddb3d 100644
--- a/README.md
+++ b/README.md
@@ -7,3 +7,43 @@ use
 With minikube do
 
 ./deploy.sh --chown-root /data --nomad-root /hosthome/$USER/nomadlab
+
+
+machine specific deploy:
+
+# labdev-nomad
+
+     cd /nomad/nomadlab/servers/labdev-nomad/analytics/beaker
+     ./deploy.sh --env labdev-nomad --target-hostname labdev-nomad --secret-web-certs web-certs --debug
+
+development machine, deploy mirroring the filesystem, you might need to manully execute npm install in the container to if you update packages
+
+# nomad-vis-test
+
+from labdev-nomad.container
+
+     cd /nomad/nomadlab/servers/nomad-vis-test/analytics/remotevis
+
+Update info on services of labdev that we use as we share the session db (we should probably clean up this ugly command)
+
+     kubectl exec -ti $(kubectl get po | grep nomad-container-manager-beaker | cut -f1 -d ' ') node app.js serviceDumper -- --out-file labdev-nomad.services.yaml
+
+update config with current info on the redis dbs of labdev (default-remotevis.hjson.in -> default-remotevis.hjson)
+
+     docker run -ti -v $PWD:/usr/src/app -v /nomad/nomadlab/servers/labdev-nomad/analytics/beaker:/mnt -w /usr/src/app --rm node:carbon node app.js templateEvaluer --replacements /mnt/labdev-nomad.services.yaml --template config/nomad-vis-test.hjson.in --out-file config/nomad-vis-test.hjson
+
+deploy
+     ./deploy.sh --tls --env nomad-vis-test --target-hostname nomad-vis-test --secret-web-certs web-certs
+
+and execute the deploy for remote vis
+
+     kubectl create -f container-manager-service-remotevis.yaml
+     if ! kubectl get deployment nomad-container-manager-remotevis >& /dev/null ;  then
+       kubectl create --save-config -f container-manager-deploy-remotevis.yaml
+     else
+       kubectl apply -f container-manager-deploy-remotevis.yaml
+     fi
+
+if only that changed, otherwise on has also to create the secrets and analytics namespace.
+
+A serviceDump has to be run to reexport the ports to the frontend, then the frontend setup needs to be updated.
diff --git a/app.js b/app.js
index 66b14e6..6c4f8da 100644
--- a/app.js
+++ b/app.js
@@ -20,7 +20,8 @@ function main() {
   var cmds = []
   const usage = `node ${args[1]} [-h|--help] [--image-type [beaker|jupyter|creedo|remotevis]] [webserver|watcher|apiserver]
 
-  node ${args[1]} serviceDumper <serviceListFile>
+  node ${args[1]} serviceDumper [--help <serviceListFile>...]
+  node ${args[1]} templateEvaluer [--help ...]
     `
   var imageType = undefined
   if (iarg < args.length) {
diff --git a/app/service-dumper.js b/app/service-dumper.js
index 63d780a..72169fe 100644
--- a/app/service-dumper.js
+++ b/app/service-dumper.js
@@ -30,10 +30,12 @@ exports.serviceDumper = function(args) {
     iarg += 1
     if (arg == '--help') {
       console.log(usage)
+      process.exit(0)
       return;
     } else if (arg == '--in-file') {
       if (iarg >= args.length) {
         console.log(`Expected in file after --in-file, ${usage}`)
+        process.exit(1)
         return;
       }
       inFile = args[iarg]
@@ -41,6 +43,7 @@ exports.serviceDumper = function(args) {
     } else if (arg == '--out-file') {
       if (iarg >= args.length) {
         console.log(`Expected out file after --out-file, ${usage}`)
+        process.exit(1)
         return;
       }
       outFile = args[iarg]
@@ -48,12 +51,14 @@ exports.serviceDumper = function(args) {
     } else if (arg == '--namespace') {
       if (iarg >= args.length) {
         console.log(`Expected namespace after --namespace, ${usage}`)
+        process.exit(1)
         return;
       }
       namespace = args[iarg]
       iarg += 1
     } else {
       console.log(`unexpected argument ${arg}, ${usage}`)
+      process.exit(1)
     }
   }
   if (inFile.length > 0) {
@@ -64,9 +69,10 @@ exports.serviceDumper = function(args) {
       services = inF.services
   }
   k8D.getServiceInfo(namespace, function(err, ss){
-    if (err)
+    if (err) {
       logger.warn(`error getting services for namespace ${namespace}`)
-    else {
+      process.exit(1)
+    } else {
       let sss = ss
       if (services.length != 0){
         sss = {}
diff --git a/app/template-evaluer.js b/app/template-evaluer.js
index 8a7c95e..3edb56f 100644
--- a/app/template-evaluer.js
+++ b/app/template-evaluer.js
@@ -1,7 +1,6 @@
 const yaml = require('js-yaml')
 const logger = require('./logger')
 const fs = require('fs')
-const k8D = require('./k8-data')
 const stringify = require('json-stringify-safe')
 const components = require('./components')
 
@@ -27,10 +26,12 @@ exports.templateEvaluer = function(args) {
     iarg += 1
     if (arg == '--help') {
       console.log(usage)
+      process.exit(0)
       return;
     } else if (arg == '--template') {
       if (iarg >= args.length) {
         console.log(`Expected in file after --template, ${usage}`)
+        process.exit(1)
         return;
       }
       inFile = args[iarg]
@@ -38,6 +39,7 @@ exports.templateEvaluer = function(args) {
     } else if (arg == '--replacements') {
       if (iarg >= args.length) {
         console.log(`Expected a replacements file after --replacements, ${usage}`)
+        process.exit(1)
         return;
       }
       let repl = yaml.safeLoad(fs.readFileSync(args[iarg]))
@@ -46,19 +48,21 @@ exports.templateEvaluer = function(args) {
     } else if (arg == '--out-file') {
       if (iarg >= args.length) {
         console.log(`Expected out file after --out-file, ${usage}`)
+        process.exit(1)
         return;
       }
       outFile = args[iarg]
       iarg += 1
     } else {
       console.log(`unexpected argument ${arg}, ${usage}`)
+      process.exit(1)
       return;
     }
   }
   if (inFile.length > 0) {
     let inF = fs.readFileSync(inFile, {encoding:'utf8'})
     let outF = components.templatize(inF)(replacements)
-    if (outFile.lenght > 0)
+    if (outFile.length > 0)
       fs.writeFileSync(outFile, outF, { encoding: 'utf8'})
     else
       console.log(outF)
diff --git a/config/default-jupyter.hjson b/config/default-jupyter.hjson
index 7f43a2e..a51870d 100644
--- a/config/default-jupyter.hjson
+++ b/config/default-jupyter.hjson
@@ -1,7 +1,6 @@
 k8component: {
   templatePath: "kube/jupyterTemplate.yaml"
   image: {
-    name: jupyter
     imageType: jupyter
     imageSubtype: default1
     subType: default1 
diff --git a/config/default-remotevis.hjson b/config/default-remotevis.hjson
index aea6fed..aed4af2 100644
--- a/config/default-remotevis.hjson
+++ b/config/default-remotevis.hjson
@@ -1,10 +1,15 @@
 k8component: {
   image: {
-    name: remotevis
+    imageType: remotevis
     subtype: default1
     image: "labdev-nomad.esc.rzg.mpg.de:5000/nomadlab/notebook-jupyter-libatoms-tutorial",
     port: 8809,
-    prefix: "/jupyter",
+    prefix: "/remotevis",
     templatePath: "kube/remoteVisTemplate.yaml"
   }
+  entryPoint: {
+    redirectTarget: "{{prefix}}/vnc.html"
+    execCommand: []
+    exclusiveStartPoint: true
+  }
 }
diff --git a/config/nomad-vis-test.hjson b/config/nomad-vis-test.hjson
new file mode 100644
index 0000000..953de5b
--- /dev/null
+++ b/config/nomad-vis-test.hjson
@@ -0,0 +1,8 @@
+session_redis: {
+  port: 30289
+  host: 130.183.207.101
+}
+usersettings_redis: {
+  port: 31996
+  host: 130.183.207.101
+}
diff --git a/config/nomad-vis-test.hjson.in b/config/nomad-vis-test.hjson.in
new file mode 100644
index 0000000..5c9fb8d
--- /dev/null
+++ b/config/nomad-vis-test.hjson.in
@@ -0,0 +1,8 @@
+session_redis: {
+  port: {{analytics-session-db-redis-master.0.ports.0.nodePort}}
+  host: {{analytics-session-db-redis-master.0.nodes.[0]}}
+}
+usersettings_redis: {
+  port: {{user-settings-db-redis-master.0.ports.0.nodePort}}
+  host: {{user-settings-db-redis-master.0.nodes.[0]}}
+}
diff --git a/config/remotevis.hjson b/config/remotevis.hjson
deleted file mode 100644
index 661b3f2..0000000
--- a/config/remotevis.hjson
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  k8component: {
-    imageType: remotevis
-  }
-  k8Api: {
-    url: "https://130.183.207.115:6443"
-    node: "130.183.207.115"
-  }
-  session_redis: {
-    # from labdev
-    #   export KUBECONFIG=/etc/kubernetes/admin.conf
-    #   kubectl svc analytics-session-db-redis-master
-    port: 30289
-    host: "labdev3-nomad.rzg.mpg.de"
-  }
-}
-- 
GitLab