added documentation and updated VTHs
authorChen, Jackie <jv246a@att.com>
Mon, 8 Jun 2020 19:37:56 +0000 (15:37 -0400)
committerChen, Jackie (jv246a) <jv246a@att.com>
Fri, 12 Jun 2020 15:29:22 +0000 (11:29 -0400)
updated dmaap and a1
added basic documentation for using otf-ui and basic installation guides
deleted duplicate image folder and update image path on documentation
added listExecution image
update package.json for frontend

Change-Id: I0dea40e44691341cf5f082a9315d0f6cb4731236
Signed-off-by: Chen, Jackie <jv246a@att.com>
Signed-off-by: Chen, Jackie (jv246a) <jv246a@att.com>
25 files changed:
a1-mediator-vth/a1-mediator-vth.py
a1-mediator-vth/a1_mock_server/index.js [deleted file]
a1-mediator-vth/a1_mock_server/package-lock.json [deleted file]
a1-mediator-vth/a1_mock_server/package.json [deleted file]
dmaap-vth/dmaap_vth.py
docs/developer-guide.rst
docs/images/executionShownTI.PNG [new file with mode: 0644]
docs/images/executionTabs.PNG [new file with mode: 0644]
docs/images/folderModeler.PNG [new file with mode: 0644]
docs/images/group-tab.PNG [new file with mode: 0644]
docs/images/listExecutionsTI.PNG [new file with mode: 0644]
docs/images/mongo-user.PNG [new file with mode: 0644]
docs/images/saveAndDeployIcon.PNG [new file with mode: 0644]
docs/images/testDefinitionPlus.PNG [new file with mode: 0644]
docs/images/testDefinitionSave.PNG [new file with mode: 0644]
docs/images/testDefinitionTab.PNG [new file with mode: 0644]
docs/images/testDefinitionTabModeler.PNG [new file with mode: 0644]
docs/images/testDesignerTab.PNG [new file with mode: 0644]
docs/images/testInstanceExecutionConfirm.PNG [new file with mode: 0644]
docs/images/testInstanceNew.PNG [new file with mode: 0644]
docs/images/testInstancePlay.PNG [new file with mode: 0644]
docs/images/testInstancesTab.PNG [new file with mode: 0644]
docs/images/uploadWorkflow1.PNG [new file with mode: 0644]
docs/user-guide.rst
otf-frontend/package.json

index e0269b1..59ed7b8 100644 (file)
@@ -80,7 +80,7 @@ def executeRicRequest():
         action = requestData['action'].lower()\r
         _check_incoming_request(requestData)\r
 \r
-        os.environ['NO_PROXY'] = '127.0.0.1'  # TODO testing purpose w/ mock server. Needs to remove on final version\r
+        os.environ['NO_PROXY'] = '*'\r
         with open('config.json') as configFile:\r
             config = json.load(configFile)\r
 \r
@@ -153,7 +153,7 @@ def _send_edit_request(request_data, config):
         return requests.get(path)\r
     if request_type == 'put':\r
         payload = request_data['payload']\r
-        return requests.put(path, payload)\r
+        return requests.put(path, json=payload)\r
     if request_type == 'delete':\r
         return requests.delete(path)\r
 \r
diff --git a/a1-mediator-vth/a1_mock_server/index.js b/a1-mediator-vth/a1_mock_server/index.js
deleted file mode 100644 (file)
index 5830d11..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-const express = require('express')\r
-const app = express()\r
-const port = 3000\r
-\r
-app.use(express.json())\r
-\r
-app.get('/', (req, res) => res.send('Hello World!'))\r
-\r
-app.get('/a1-p/healthcheck',function(req,res){\r
-    console.log("health checking")\r
-    res.sendStatus(200)\r
-})\r
-\r
-app.get('/a1-p/policytypes',function(req,res){\r
-    res.status=(200)\r
-    res.send([20000, 20020])\r
-})\r
-\r
-app.get('/a1-p/policytypes/:policy_type_id',function(req,res){\r
-    res.status=(200)\r
-    policy_type_id = req.params['policy_type_id']\r
-    res.send({"name": "example policy instance","description":"fake description","policy_type_id": policy_type_id,"create_schema":"{name:sample object}"})\r
-})\r
-app.delete('/a1-p/policytypes/:policy_type_id',function(req,res){\r
-    res.sendStatus(204)\r
-})\r
-\r
-app.put('/a1-p/policytypes/:policy_type_id',function(req,res){\r
-    console.log(req.body)\r
-    res.sendStatus(201)\r
-})\r
-\r
-app.get('/a1-p/policytypes/:policy_type_id/policies',function(req,res){\r
-    console.log('listing policies')\r
-    res.status=(200)\r
-    res.send(["3d2157af-6a8f-4a7c-810f-38c2f824bf12", "06911bfc-c127-444a-8eb1-1bffad27cc3d"])\r
-})\r
-\r
-app.get('/a1-p/policytypes/:policy_type_id/policies/:policy_instance_id',function(req,res){\r
-    res.status=(200)\r
-    policy_type_id = req.params['policy_type_id']\r
-    policy_instance_id = req.params['policy_instance_id']\r
-    res.send({"name": "example policy instance","description":"fake description","policy_type_id": policy_type_id,"create_schema":"{name:sample object}"})\r
-})\r
-app.delete('/a1-p/policytypes/:policy_type_id/policies/:policy_instance_id',function(req,res){\r
-    res.sendStatus(202)\r
-})\r
-\r
-app.put('/a1-p/policytypes/:policy_type_id/policies/:policy_instance_id',function(req,res){\r
-    console.log(req.body)\r
-    res.sendStatus(202)\r
-})\r
-\r
-app.get('/a1-p/policytypes/:policy_type_id/policies/:policy_instance_id/status',function(req,res){\r
-    res.status(200)\r
-    res.send({"properties":{"instance_status": "fake status","enum": "IN EFFECT"}})\r
-})\r
-\r
-\r
-\r
-\r
-\r
-\r
-app.get('/appmgr/ric/v1/xapps',function(req,res){\r
-    res.status(200)\r
-    res.send([{"name":"admin-xapp","status":"deployed","version":"1.0","instances":null},{"name":"mcxapp","status":"deployed","version":"1.0","instances":[{"name":"mcxapp-649d7494-h5tjb","status":"running","ip":"service-ricxapp-mcxapp-rmr.ricxapp","port":4560,"txMessages":null,"rxMessages":["RIC_SUB_RESP","RIC_SUB_FAILURE","RIC_SUB_DEL_RESP","RIC_SUB_DEL_FAILURE","RIC_INDICATION"]}]},{"name":"ueec","status":"deployed","version":"1.0","instances":[{"name":"ueec-6675694b75-jtnz6","status":"running","ip":"service-ricxapp-ueec-rmr.ricxapp","port":4560,"txMessages":["RIC_SUB_REQ","RIC_SUB_DEL_REQ"],"rxMessages":["RIC_SUB_RESP","RIC_SUB_FAILURE","RIC_SUB_DEL_RESP","RIC_SUB_DEL_FAILURE","RIC_INDICATION"]}]}])\r
-})\r
-\r
-app.post('/appmgr/ric/v1/xapps', function(req,res){\r
-    res.statusMessage = 'Created'\r
-    res.status(201)\r
-    res.send({"result_output":{"name":"anr","status":"deployed","version":"1.0","instances":[{"name":"anr-7d4c47b4bb-jlslm","status":"running","ip":"service-ricxapp-anr-rmr.ricxapp","port":4560,"txMessages":null,"rxMessages":["RIC_SGNB_ADDITION_REQ","RIC_RRC_TRANSFER"]}]}})\r
-})\r
-\r
-app.delete('/appmgr/ric/v1/xapps/:name',function(req,res){\r
-    res.sendStatus(204)\r
-})\r
-\r
-app.listen(port, () => console.log(`Example app listening on port ${port}!`))\r
-\r
diff --git a/a1-mediator-vth/a1_mock_server/package-lock.json b/a1-mediator-vth/a1_mock_server/package-lock.json
deleted file mode 100644 (file)
index 3877b38..0000000
+++ /dev/null
@@ -1,374 +0,0 @@
-{
-  "name": "a1_mock_server",
-  "version": "1.0.0",
-  "lockfileVersion": 1,
-  "requires": true,
-  "dependencies": {
-    "accepts": {
-      "version": "1.3.7",
-      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
-      "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
-      "requires": {
-        "mime-types": "~2.1.24",
-        "negotiator": "0.6.2"
-      }
-    },
-    "array-flatten": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
-      "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
-    },
-    "body-parser": {
-      "version": "1.19.0",
-      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
-      "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
-      "requires": {
-        "bytes": "3.1.0",
-        "content-type": "~1.0.4",
-        "debug": "2.6.9",
-        "depd": "~1.1.2",
-        "http-errors": "1.7.2",
-        "iconv-lite": "0.4.24",
-        "on-finished": "~2.3.0",
-        "qs": "6.7.0",
-        "raw-body": "2.4.0",
-        "type-is": "~1.6.17"
-      }
-    },
-    "bytes": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
-      "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
-    },
-    "content-disposition": {
-      "version": "0.5.3",
-      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
-      "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
-      "requires": {
-        "safe-buffer": "5.1.2"
-      }
-    },
-    "content-type": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
-      "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
-    },
-    "cookie": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
-      "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
-    },
-    "cookie-signature": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
-      "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
-    },
-    "debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "requires": {
-        "ms": "2.0.0"
-      }
-    },
-    "depd": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
-      "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
-    },
-    "destroy": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
-      "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
-    },
-    "ee-first": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
-      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
-    },
-    "encodeurl": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
-      "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
-    },
-    "escape-html": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
-      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
-    },
-    "etag": {
-      "version": "1.8.1",
-      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
-      "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
-    },
-    "express": {
-      "version": "4.17.1",
-      "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
-      "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
-      "requires": {
-        "accepts": "~1.3.7",
-        "array-flatten": "1.1.1",
-        "body-parser": "1.19.0",
-        "content-disposition": "0.5.3",
-        "content-type": "~1.0.4",
-        "cookie": "0.4.0",
-        "cookie-signature": "1.0.6",
-        "debug": "2.6.9",
-        "depd": "~1.1.2",
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "etag": "~1.8.1",
-        "finalhandler": "~1.1.2",
-        "fresh": "0.5.2",
-        "merge-descriptors": "1.0.1",
-        "methods": "~1.1.2",
-        "on-finished": "~2.3.0",
-        "parseurl": "~1.3.3",
-        "path-to-regexp": "0.1.7",
-        "proxy-addr": "~2.0.5",
-        "qs": "6.7.0",
-        "range-parser": "~1.2.1",
-        "safe-buffer": "5.1.2",
-        "send": "0.17.1",
-        "serve-static": "1.14.1",
-        "setprototypeof": "1.1.1",
-        "statuses": "~1.5.0",
-        "type-is": "~1.6.18",
-        "utils-merge": "1.0.1",
-        "vary": "~1.1.2"
-      }
-    },
-    "finalhandler": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
-      "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
-      "requires": {
-        "debug": "2.6.9",
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "on-finished": "~2.3.0",
-        "parseurl": "~1.3.3",
-        "statuses": "~1.5.0",
-        "unpipe": "~1.0.0"
-      }
-    },
-    "forwarded": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
-      "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
-    },
-    "fresh": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
-      "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
-    },
-    "http-errors": {
-      "version": "1.7.2",
-      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
-      "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
-      "requires": {
-        "depd": "~1.1.2",
-        "inherits": "2.0.3",
-        "setprototypeof": "1.1.1",
-        "statuses": ">= 1.5.0 < 2",
-        "toidentifier": "1.0.0"
-      }
-    },
-    "iconv-lite": {
-      "version": "0.4.24",
-      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
-      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
-      "requires": {
-        "safer-buffer": ">= 2.1.2 < 3"
-      }
-    },
-    "inherits": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
-    },
-    "ipaddr.js": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
-      "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
-    },
-    "media-typer": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
-      "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
-    },
-    "merge-descriptors": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
-      "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
-    },
-    "methods": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
-      "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
-    },
-    "mime": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
-      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
-    },
-    "mime-db": {
-      "version": "1.43.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz",
-      "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ=="
-    },
-    "mime-types": {
-      "version": "2.1.26",
-      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz",
-      "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==",
-      "requires": {
-        "mime-db": "1.43.0"
-      }
-    },
-    "ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
-    },
-    "negotiator": {
-      "version": "0.6.2",
-      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
-      "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
-    },
-    "on-finished": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
-      "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
-      "requires": {
-        "ee-first": "1.1.1"
-      }
-    },
-    "parseurl": {
-      "version": "1.3.3",
-      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
-      "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
-    },
-    "path-to-regexp": {
-      "version": "0.1.7",
-      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
-      "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
-    },
-    "proxy-addr": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
-      "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==",
-      "requires": {
-        "forwarded": "~0.1.2",
-        "ipaddr.js": "1.9.1"
-      }
-    },
-    "qs": {
-      "version": "6.7.0",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
-      "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
-    },
-    "range-parser": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
-      "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
-    },
-    "raw-body": {
-      "version": "2.4.0",
-      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
-      "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
-      "requires": {
-        "bytes": "3.1.0",
-        "http-errors": "1.7.2",
-        "iconv-lite": "0.4.24",
-        "unpipe": "1.0.0"
-      }
-    },
-    "safe-buffer": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
-    },
-    "safer-buffer": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
-      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
-    },
-    "send": {
-      "version": "0.17.1",
-      "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
-      "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
-      "requires": {
-        "debug": "2.6.9",
-        "depd": "~1.1.2",
-        "destroy": "~1.0.4",
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "etag": "~1.8.1",
-        "fresh": "0.5.2",
-        "http-errors": "~1.7.2",
-        "mime": "1.6.0",
-        "ms": "2.1.1",
-        "on-finished": "~2.3.0",
-        "range-parser": "~1.2.1",
-        "statuses": "~1.5.0"
-      },
-      "dependencies": {
-        "ms": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
-          "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
-        }
-      }
-    },
-    "serve-static": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
-      "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
-      "requires": {
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "parseurl": "~1.3.3",
-        "send": "0.17.1"
-      }
-    },
-    "setprototypeof": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
-      "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
-    },
-    "statuses": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
-      "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
-    },
-    "toidentifier": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
-      "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
-    },
-    "type-is": {
-      "version": "1.6.18",
-      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
-      "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
-      "requires": {
-        "media-typer": "0.3.0",
-        "mime-types": "~2.1.24"
-      }
-    },
-    "unpipe": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
-      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
-    },
-    "utils-merge": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
-      "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
-    },
-    "vary": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
-      "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
-    }
-  }
-}
diff --git a/a1-mediator-vth/a1_mock_server/package.json b/a1-mediator-vth/a1_mock_server/package.json
deleted file mode 100644 (file)
index 8d910e3..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-  "name": "a1_mock_server",
-  "version": "1.0.0",
-  "description": "mock for a1 ",
-  "main": "index.js",
-  "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
-  },
-  "author": "jackie chen (jv246a)",
-  "license": "ISC",
-  "dependencies": {
-    "express": "^4.17.1"
-  }
-}
index fce93fd..6744c95 100644 (file)
@@ -122,13 +122,13 @@ def _send_request(url, config, is_subscribe_request=False, payload=None):
     if is_subscribe_request:\r
         return requests.get(url,\r
                             auth=(username, password) if auth_enabled else None,\r
-                            proxies=req_proxies if proxy_enabled else None)\r
+                            proxies=req_proxies)\r
     # for publish request\r
     req_headers = {'Content-type': 'application/json'}\r
     return requests.post(url,\r
                          json=payload,\r
                          auth=(username, password) if auth_enabled else None,\r
-                         proxies=req_proxies if proxy_enabled else None,\r
+                         proxies=req_proxies,\r
                          headers=req_headers)\r
 \r
 @app.route("/otf/vth/oran/dmaap/v1/health", methods=['GET'])\r
index 97c6533..021a954 100644 (file)
@@ -1,35 +1,96 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-..
-.. Copyright (C) 2019 AT&T Intellectual Property
-
-
-Developer-Guide
-===============
-
-.. contents::
-   :depth: 3
-   :local:
-
-.. note:
-..   * This section is used to describe what a contributor needs to know in order to work on the componenta
-
-..   * this should be very technical, aimed at people who want to help develop the components
-
-..   * this should be how the component does what it does, not a requirements document of what the component should do
-
-..   * this should contain what language(s) and frameworks are used, with versions
-
-..   * this should contain how to obtain the code, where to look at work items (Jira tickets), how to get started developing
-   
-..   * This note must be removed after content has been added.
-
-
-Processes
----------
-
-
-
-Actions
--------
-
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.\r
+.. http://creativecommons.org/licenses/by/4.0\r
+..\r
+.. Copyright (C) 2019 AT&T Intellectual Property\r
+\r
+\r
+Developer-Guide\r
+===============\r
+\r
+.. contents::\r
+   :depth: 3\r
+   :local:\r
+\r
+.. note:\r
+..   * This section is used to describe what a contributor needs to know in order to work on the componenta\r
+\r
+..   * this should be very technical, aimed at people who want to help develop the components\r
+\r
+..   * this should be how the component does what it does, not a requirements document of what the component should do\r
+\r
+..   * this should contain what language(s) and frameworks are used, with versions\r
+\r
+..   * this should contain how to obtain the code, where to look at work items (Jira tickets), how to get started developing\r
+\r
+..   * This note must be removed after content has been added.\r
+\r
+Deployment\r
+----------\r
+\r
+OTF Frontend\r
+^^^^^^^^^^^^\r
+1) docker build -t otf-frontend:0.0.1-SNAPSHOT .\r
+2) docker run -d --network="host" otf-frontend:0.0.1-SNAPSHOT\r
+\r
+OTF SERVICE API\r
+^^^^^^^^^^^^^^^^\r
+1) Modify src/main/resources/application.properties according to needs (disable aaf/ssl, set ports)\r
+2) navigate to otf-service-api folder and run "docker build -t otf-service-api:0.0.1-SNAPSHOT -f docker/Dockerfile ." (maven will run from inside the container, command is inside the Dockerfile)\r
+3) docker run -d --network="host" otf-service-api:0.0.1-SNAPSHOT\r
+\r
+OTF CAMUNDA\r
+^^^^^^^^^^^^\r
+1) Modify src/main/resources/application.yaml according to needs, and validate the yaml is correct format (disable aaf/ssl, set ports)\r
+2) navigate to otf-camunda folder and run "docker build -t otf-camunda:0.0.1-SNAPSHOT -f docker/Dockerfile ." (maven will run from inside the container, command is inside the Dockerfile)\r
+3) docker run -d --network="host" otf-camunda:0.0.1-SNAPSHOT\r
+\r
+Virtual Test Head (VTH)\r
+^^^^^^^^^^^^^^^^^^^^^^^\r
+VTH can be deployed in many ways. The following is a simple example of running vths via docker and using it on OTF UI.\r
+\r
+    - Sample vth deployment example\r
+        1) docker build -t [VTH_NAME] .\r
+        2) docker run --rm --network [NETWORK-NAME] --name [VTH-NAME] -dit [DOCKER_IMAGE_NAME]\r
+        3) use url and port to onboard it via OTF UI (instructions can be found in  user guide)\r
+\r
+To update vth port, you will have to update its python file (App.py). Most of them will default to port 5000.\r
+\r
+OTF-DATABASE\r
+-------------\r
+\r
+1) run sudo installdbs.sh and export PATH=/usr/local/mysql/bin:$PATH to add mysql commands to path\r
+2) run sudo createMongoUser.sh\r
+3) edit mongo to create a replica set by modifying replication and net fields on file /etc/mongod.conf\r
+    - add security: authorization: 'enabled'\r
+4) after script is ran mysql should be able to be used, connect to mysql using the password set by script and mysql command and\r
+    - alter the root password\r
+        - alter user 'root'@'localhost' identified by 'new_password'\r
+    - grant root ability to connect remotely\r
+        - grant all on *.* to 'root'@'%' identified by 'password'\r
+    - create db and exit mysql shell\r
+        - create database 'new_db'\r
+    - create tables using mysql scripts\r
+        - mysql -u root -p db < engine.sql\r
+\r
+Common issues\r
+--------------\r
+Unable to log in to OTF UI as the first user on the platform\r
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r
+When registering as a new user, you will eventually need an admin to "enable" you. If you are the first User,\r
+there will be no admin and you will be unable to log in even after you register. In order to fix this, you will have to\r
+manually go into the mongo database and alter certain attributes for this new user.\r
+\r
+.. image:: images/mongo-user.PNG\r
+\r
+- make sure enabled is set to true\r
+- on the permission section, change role from user to admin\r
+\r
+\r
+Processes\r
+---------\r
+\r
+\r
+\r
+Actions\r
+-------\r
+\r
diff --git a/docs/images/executionShownTI.PNG b/docs/images/executionShownTI.PNG
new file mode 100644 (file)
index 0000000..ab862a7
Binary files /dev/null and b/docs/images/executionShownTI.PNG differ
diff --git a/docs/images/executionTabs.PNG b/docs/images/executionTabs.PNG
new file mode 100644 (file)
index 0000000..4474f6e
Binary files /dev/null and b/docs/images/executionTabs.PNG differ
diff --git a/docs/images/folderModeler.PNG b/docs/images/folderModeler.PNG
new file mode 100644 (file)
index 0000000..e542cf2
Binary files /dev/null and b/docs/images/folderModeler.PNG differ
diff --git a/docs/images/group-tab.PNG b/docs/images/group-tab.PNG
new file mode 100644 (file)
index 0000000..3844e7a
Binary files /dev/null and b/docs/images/group-tab.PNG differ
diff --git a/docs/images/listExecutionsTI.PNG b/docs/images/listExecutionsTI.PNG
new file mode 100644 (file)
index 0000000..2363c44
Binary files /dev/null and b/docs/images/listExecutionsTI.PNG differ
diff --git a/docs/images/mongo-user.PNG b/docs/images/mongo-user.PNG
new file mode 100644 (file)
index 0000000..0f28268
Binary files /dev/null and b/docs/images/mongo-user.PNG differ
diff --git a/docs/images/saveAndDeployIcon.PNG b/docs/images/saveAndDeployIcon.PNG
new file mode 100644 (file)
index 0000000..92b4625
Binary files /dev/null and b/docs/images/saveAndDeployIcon.PNG differ
diff --git a/docs/images/testDefinitionPlus.PNG b/docs/images/testDefinitionPlus.PNG
new file mode 100644 (file)
index 0000000..78ef08c
Binary files /dev/null and b/docs/images/testDefinitionPlus.PNG differ
diff --git a/docs/images/testDefinitionSave.PNG b/docs/images/testDefinitionSave.PNG
new file mode 100644 (file)
index 0000000..6d67da6
Binary files /dev/null and b/docs/images/testDefinitionSave.PNG differ
diff --git a/docs/images/testDefinitionTab.PNG b/docs/images/testDefinitionTab.PNG
new file mode 100644 (file)
index 0000000..f6a9a77
Binary files /dev/null and b/docs/images/testDefinitionTab.PNG differ
diff --git a/docs/images/testDefinitionTabModeler.PNG b/docs/images/testDefinitionTabModeler.PNG
new file mode 100644 (file)
index 0000000..1a5256b
Binary files /dev/null and b/docs/images/testDefinitionTabModeler.PNG differ
diff --git a/docs/images/testDesignerTab.PNG b/docs/images/testDesignerTab.PNG
new file mode 100644 (file)
index 0000000..82b5e6d
Binary files /dev/null and b/docs/images/testDesignerTab.PNG differ
diff --git a/docs/images/testInstanceExecutionConfirm.PNG b/docs/images/testInstanceExecutionConfirm.PNG
new file mode 100644 (file)
index 0000000..5ec6ab2
Binary files /dev/null and b/docs/images/testInstanceExecutionConfirm.PNG differ
diff --git a/docs/images/testInstanceNew.PNG b/docs/images/testInstanceNew.PNG
new file mode 100644 (file)
index 0000000..8099906
Binary files /dev/null and b/docs/images/testInstanceNew.PNG differ
diff --git a/docs/images/testInstancePlay.PNG b/docs/images/testInstancePlay.PNG
new file mode 100644 (file)
index 0000000..7fc1a00
Binary files /dev/null and b/docs/images/testInstancePlay.PNG differ
diff --git a/docs/images/testInstancesTab.PNG b/docs/images/testInstancesTab.PNG
new file mode 100644 (file)
index 0000000..b639d1a
Binary files /dev/null and b/docs/images/testInstancesTab.PNG differ
diff --git a/docs/images/uploadWorkflow1.PNG b/docs/images/uploadWorkflow1.PNG
new file mode 100644 (file)
index 0000000..0f173cc
Binary files /dev/null and b/docs/images/uploadWorkflow1.PNG differ
index e4e423b..8f16a6d 100644 (file)
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-..
-.. Copyright (C) 2019 AT&T Intellectual Property
-
-
-User Guide
-==========
-
-This is the user guide of OSC <COMPONENT>.
-
-.. contents::
-   :depth: 3
-   :local:
-
-..  a user guide should be how to use the component or system; it should not be a requirements document
-..  delete this content after edittng it
-
-
-Description
------------
-.. Describe the traget users of the projcet, for example, modeler/data scientist, ORAN-OSC platform admin, marketplace user, design studio end user, etc
-.. Descirbe how the target users can get use of a O-RAN SC component.
-.. If the guide contains sections on third-party tools, is it clearly stated why the O-RAN-OSC platform is using those tools? Are there instructions on how to install and configure each tool/toolset?
-
-Feature Introduction
---------------------
-.. Provide enough information that a user will be able to operate the feature on a deployed scenario. content can be added from administration, management, using, Troubleshooting sections perspectives.
-
-
-
-    
-
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.\r
+.. http://creativecommons.org/licenses/by/4.0\r
+..\r
+.. Copyright (C) 2019 AT&T Intellectual Property\r
+\r
+\r
+User Guide\r
+==========\r
+\r
+This is the user guide of OSC <COMPONENT>.\r
+\r
+.. contents::\r
+   :depth: 3\r
+   :local:\r
+\r
+..  a user guide should be how to use the component or system; it should not be a requirements document\r
+..  delete this content after edittng it\r
+\r
+\r
+Description\r
+-----------\r
+.. Describe the traget users of the projcet, for example, modeler/data scientist, ORAN-OSC platform admin, marketplace user, design studio end user, etc\r
+.. Descirbe how the target users can get use of a O-RAN SC component.\r
+.. If the guide contains sections on third-party tools, is it clearly stated why the O-RAN-OSC platform is using those tools? Are there instructions on how to install and configure each tool/toolset?\r
+\r
+Feature Introduction\r
+--------------------\r
+.. Provide enough information that a user will be able to operate the feature on a deployed scenario. content can be added from administration, management, using, Troubleshooting sections perspectives.\r
+\r
+\r
+Onboarding\r
+-----------\r
+1) Register for an account on login page\r
+2) Verify email via confirmation link that will be sent to your email\r
+3) To access full features, a site admin will have to enable you\r
+\r
+Enabling user\r
+^^^^^^^^^^^^^^\r
+1) Login to a admin account\r
+2) Go to admin -> user management tab that is located on the side bar\r
+3) Locate new user and enable them by clicking the switch on the Enabled column\r
+\r
+Group Management\r
+------------------\r
+Users can create new groups that allows you to organize and share workflows easily.\r
+\r
+Creating new group\r
+^^^^^^^^^^^^^^^^^^\r
+1) select the group tab (located on the top) and click the + new group sign\r
+    .. image:: images/group-tab.PNG\r
+\r
+2) Fill in basic information about the new group\r
+3) Once the group is created, the creator will automatically be a admin for that group\r
+\r
+Managing group\r
+^^^^^^^^^^^^^^^\r
+1) Go to the group you would like to manage via the group tab located on the top\r
+2) select Manage Group Tab via side bar and the following feature will be available\r
+\r
+    - Add/remove new users\r
+    - Create roles with specific permissions\r
+    - Edit roles\r
+    - Manage user's roles\r
+\r
+\r
+Uploading A Workflow\r
+--------------------\r
+In order to upload a workflow, select the "Test Designer" tab in the left side bar.\r
+\r
+.. image:: /images/testDesignerTab.PNG\r
+\r
+Once in the Modeler view, on the top left, select the folder icon which will open up the file explorer.\r
+\r
+.. image:: /images/folderModeler.PNG\r
+\r
+Choose a local bpmn file to upload.\r
+After the bpmn is loaded into the modeler, go to the "Test Definitions" panel on the right hand side and enter a Name and Description.\r
+\r
+.. image:: /images/testDefinitionTabModeler.PNG\r
+\r
+By default, the group currently selected in the platform will be associated with the workflow. If a different group is desired, that can be selected also within the "Test Definition" panel on the right hand side.\r
+Any specific test Input templates can also be included within this panel.\r
+When finished, the save icon can be pressed in the top bar on the left side to save the actual workflow.\r
+Next to the save icon is the deploy icon which is used to deploy the workflow.\r
+\r
+.. image:: /images/saveAndDeployIcon.PNG\r
+\r
+Creating a Test Instance\r
+------------------------\r
+A Test Instance can be created for any Test Definition. To start, navigate to the "Test Definitions" tab on the left side panel.\r
+\r
+.. image:: /images/testDefinitionTab.PNG\r
+\r
+Select the specific Test Definition that would need a Test Instance. Once a single row (Test Definition) is selected, click the plus icon in the top right.\r
+\r
+.. image:: /images/testDefinitionPlus.PNG\r
+\r
+This action will open up a modal where the properties of the Test Instance are configured.\r
+If the latest version of the Test Definition workflow would like to be used, the "Latest Version" option should be in the ON position.\r
+If there is a test Input template, this information can be included during this step.\r
+For each of the VTH's within the workflow, the specific template properties defined need to be entered.\r
+After all of the data has been entered, clicking the "Save" button in the bottom right will essentially save the Test Instance.\r
+\r
+.. image:: /images/testDefinitionSave.PNG\r
+\r
+If the Test Instance would also want to be executed at this point, the "Save and Execute" button can be pressed.\r
+\r
+There is an additional way to create a Test Instance that follows similar steps as the process documented above.\r
+The difference is that the "New" button in the top right of the "Test Instances" page is selected. Once the modal pops up, the specific Test Definition that is being used will be selected here.\r
+\r
+.. image:: /images/testInstanceNew.PNG\r
+\r
+Executing the Test Instance\r
+---------------------------\r
+Executing a Test Instance is a fairly simple process. Executions are completed from the "Test Instances" page found on the left side panel.\r
+\r
+.. image:: /images/testInstancesTab.PNG\r
+\r
+A singular Test Instance row needs to be selected. Once selected, there is a play button icon that appears in the top right.\r
+\r
+.. image:: /images/testInstancePlay.PNG\r
+\r
+Clicking the play button will trigger a confirmation window to ensure that the execution is intentional. Once confirmed, the Test Instance will run.\r
+\r
+.. image:: /images/testInstanceExecutionConfirm.PNG\r
+\r
+After executing, deselect and reselect the same row which will make the execution appear in the right side panel.\r
+\r
+.. image:: /images/listExecutionsTI.PNG\r
+\r
+View Details of an Execution\r
+----------------------------\r
+Once a Test Instance has started running, the execution can be viewed.\r
+To view the execution, navigate to the "Test Instances" page and select the Test Instance which was ran.\r
+Once the row containing the instance has been selected, a panel on the right side will open with all of the executions listed.\r
+\r
+.. image:: /images/listExecutionsTI.PNG\r
+\r
+Select the specific execution which needs to be viewed.\r
+In the execution viewer, the workflow can be seen at the top. When a box has been completed successfully, it will appear green. If it has not been completed, it will appear white. If it has failed, it will appear red.\r
+The "Overview" tab is where information related to the general execution of the instance is found.\r
+The "Test Head Results" tab is where data associated with the specific test heads in the workflow are found.\r
+The "Parameters" tab is where the test data and test head inputs can be found.\r
+The "Execution Job log" and "Execution External Task Log" tabs are logs used to debugging what occurred during the execution.\r
+The "Execution Variables" tab show all the properties associated with each variable during the execution.\r
+\r
+.. image:: /images/executionTabs.PNG\r
+\r
+\r
+\r
index 2971bcb..c952d06 100644 (file)
     "test-ci": "TEST_CI=true ng test",\r
     "lint": "ng lint",\r
     "e2e": "ng e2e",\r
-    "postinstall": "ng add ng-cli-pug-loader@0.1.7"\r
+    "postinstall": "ng add ng-cli-pug-loader@0.1.7 && node ./ng-add-pug-loader.js && node ./ng-add-pug-loader.js && node ./ng-add-pug-loader.js"\r
   },\r
   "directories": {\r
     "lib": "server/src/feathers"\r
   },\r
   "private": true,\r
   "dependencies": {\r
+    "@ag-grid-community/all-modules": "^22.0.0",\r
+    "@ag-grid-community/angular": "^22.0.0",\r
     "@amcharts/amcharts4": "^4.5.3",\r
+    "@amcharts/amcharts4-geodata": "^4.1.12",\r
     "@angular/animations": "^6.1.7",\r
     "@angular/cdk": "^6.4.7",\r
     "@angular/common": "^6.1.7",\r
     "@angular/forms": "^6.1.7",\r
     "@angular/http": "^6.1.7",\r
     "@angular/material": "^6.4.7",\r
-    "@angular/platform-browser": "^7.0.2",\r
-    "@angular/platform-browser-dynamic": "^7.0.2",\r
+    "@angular/platform-browser": "^6.1.7",\r
+    "@angular/platform-browser-dynamic": "^6.1.7",\r
     "@angular/router": "^6.1.7",\r
+    "@azure/core-http": "^1.1.0",\r
+    "@azure/storage-blob": "^12.0.0",\r
     "@casl/ability": "^3.1.2",\r
     "@casl/angular": "^2.1.0",\r
     "@casl/mongoose": "^2.3.1",\r
@@ -62,6 +67,7 @@
     "@ngx-translate/core": "^10.0.1",\r
     "@ngx-translate/http-loader": "^3.0.1",\r
     "@types/socket.io-client": "^1.4.32",\r
+    "adm-zip": "^0.4.13",\r
     "ag-grid-angular": "^20.2.0",\r
     "ag-grid-community": "^20.2.0",\r
     "agenda": "^2.0.2",\r
     "classlist.js": "^1.1.20150312",\r
     "clean": "^4.0.2",\r
     "codemirror": "^5.41.0",\r
+    "cookie-parser": "^1.4.4",\r
+    "core-js": "^2.6.11",\r
     "cors": "^2.8.5",\r
     "datatables.net": "^1.10.19",\r
     "datatables.net-dt": "^1.10.19",\r
     "diagram-js-minimap": "^1.3.0",\r
     "dot-object": "^1.9.0",\r
+    "dotenv-override": "^5.0.1",\r
     "express-rate-limit": "^3.3.2",\r
+    "feathers-authentication-custom": "^0.1.0",\r
     "feathers-authentication-management": "^2.0.1",\r
     "feathers-hooks-common": "^4.17.14",\r
-    "feathers-mongoose": "^6.2.0",\r
+    "feathers-mongoose": "^8.1.0",\r
     "feathers-permissions": "^0.2.1",\r
     "file-saver": "^2.0.1",\r
+    "file-system": "^2.2.2",\r
     "font-awesome": "^4.7.0",\r
     "helmet": "^3.14.0",\r
     "http-response-object": "^3.0.1",\r
     "jquery": "^3.4.1",\r
     "json-beautify": "^1.0.1",\r
     "jsonbeautify": "0.0.1",\r
+    "jszip": "^3.4.0",\r
+    "karma-sonarqube-unit-reporter": "0.0.21",\r
     "lodash.pick": "^4.4.0",\r
     "mat-progress-buttons": "^7.0.10",\r
     "material-design-icons": "^3.0.1",\r
+    "md5": "^2.2.1",\r
     "moment": "^2.22.2",\r
-    "mongoose": "^5.6.4",\r
-    "mongoose-gridfs": "^0.5.0",\r
+    "moment-timezone": "^0.5.27",\r
+    "mongoose": "^5.7.1",\r
+    "mongoose-gridfs": "0.5.0",\r
     "multer": "^1.4.1",\r
     "ng-cli-pug-loader": "^0.1.7",\r
+    "ng-pick-datetime": "^6.0.16",\r
     "ng2-codemirror": "^1.1.3",\r
     "ng2-completer": "^2.0.8",\r
     "ng2-file-upload": "^1.3.0",\r
     "pickle-rick": "^0.1.0",\r
     "rate-limit-mongo": "^1.0.3",\r
     "redis": "^2.8.0",\r
+    "rimraf": "^3.0.2",\r
     "rxjs-compat": "^6.4.0",\r
     "sendmail": "^1.4.1",\r
     "serve-favicon": "^2.5.0",\r
   },\r
   "devDependencies": {\r
     "@angular-devkit/build-angular": "^0.6.8",\r
-    "@angular/cli": "^6.2.7",\r
+    "@angular/cli": "^6.2.9",\r
     "@angular/compiler-cli": "^6.1.7",\r
     "@angular/language-service": "^6.1.7",\r
     "@types/datatables.net": "^1.10.16",\r
-    "@types/jasmine": "^2.8.11",\r
-    "@types/jasminewd2": "^2.0.6",\r
+    "@types/jasmine": "~2.8.6",\r
+    "@types/jasminewd2": "^2.0.3",\r
     "@types/jquery": "^3.3.29",\r
     "@types/node": "^9.6.52",\r
     "apply-loader": "^2.0.0",\r
+    "chai": "^4.2.0",\r
     "codelyzer": "~4.2.1",\r
-    "eslint": "^5.8.0",\r
+    "eslint": "^5.16.0",\r
     "eslint-plugin-import": "^2.14.0",\r
     "eslint-plugin-node": "^7.0.1",\r
     "eslint-plugin-promise": "^4.0.1",\r
     "eslint-plugin-standard": "^4.0.0",\r
-    "jasmine-core": "^3.3.0",\r
+    "jasmine-core": "~2.8.0",\r
     "jasmine-spec-reporter": "~4.2.1",\r
-    "karma": "~2.0.0",\r
-    "karma-chrome-launcher": "~2.2.0",\r
+    "karma": "^2.0.5",\r
+    "karma-chrome-launcher": "^2.2.0",\r
     "karma-cli": "~1.0.1",\r
-    "karma-coverage-istanbul-reporter": "^1.4.2",\r
+    "karma-coverage": "^2.0.1",\r
+    "karma-coverage-istanbul-reporter": "~2.0.0",\r
     "karma-jasmine": "~1.1.1",\r
-    "karma-jasmine-html-reporter": "^1.4.0",\r
+    "karma-jasmine-html-reporter": "~0.2.2",\r
+    "karma-pug-preprocessor": "^1.0.0-beta.2",\r
     "mocha": "^5.2.0",\r
     "protractor": "^5.4.2",\r
     "pug": "^2.0.4",\r
     "pug-loader": "^2.4.0",\r
     "request": "^2.88.0",\r
     "request-promise": "^4.2.2",\r
-    "ts-node": "~5.0.1",\r
+    "shx": "^0.3.2",\r
+    "ts-node": "^5.0.1",\r
     "tslint": "~5.9.1",\r
-    "typescript": "~2.8.0"\r
+    "typescript": "^2.8.4"\r
   }\r
 }\r