Rift.IO OSM R1 Initial Submission
[osm/UI.git] / skyquake / plugins / composer / test / uploadServer / server.js
diff --git a/skyquake/plugins/composer/test/uploadServer/server.js b/skyquake/plugins/composer/test/uploadServer/server.js
new file mode 100644 (file)
index 0000000..9b7f40a
--- /dev/null
@@ -0,0 +1,225 @@
+
+/*
+ * 
+ *   Copyright 2016 RIFT.IO Inc
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+
+/*Define dependencies.*/
+
+var express = require('express');
+var multer = require('multer');
+var cors = require('cors');
+var launchpadServer = express();
+var apiServer = express();
+var done = false;
+var path = require('path');
+
+/*Configure the multer.*/
+
+//apiServer.use(function(req, res, next) {
+//     res.header('Access-Control-Allow-Origin', '*');
+//     res.header('Access-Control-Allow-Headers', '*');
+//     next();
+//});
+
+var uploadPayload = {
+       "events": [
+               {
+                       "timestamp": 1445452293.688965,
+                       "value": "onboard-started",
+                       "text": "onboarding process started"
+               },
+               {
+                       "timestamp": 1445452293.7836523,
+                       "value": "onboard-pkg-upload",
+                       "text": "uploading package"
+               },
+               {
+                       "timestamp": 1445452293.8315961,
+                       "value": "onboard-img-upload",
+                       "text": "uploading image"
+               },
+               {
+                       "timestamp": 1445452293.8316283,
+                       "value": "onboard-dsc-validation",
+                       "text": "descriptor validation"
+               },
+               {
+                       "timestamp": 1445452294.00448,
+                       "value": "onboard-success",
+                       "text": "onboarding process completed"
+               }
+       ],
+       "warnings": [],
+       "status": "success",
+       "errors": [
+               {
+                       "value": "onboard vnfd/ping_vnfd.xml",
+                       "timestamp": 1445452294.0032463
+               }
+       ]
+};
+
+var updatePayload = {
+       "events": [
+               {
+                       "timestamp": 1445452293.688965,
+                       "value": "update-started",
+                       "text": "updating process started"
+               },
+               {
+                       "timestamp": 1445452293.7836523,
+                       "value": "update-pkg-upload",
+                       "text": "uploading package"
+               },
+               {
+                       "timestamp": 1445452293.8315961,
+                       "value": "update-img-upload",
+                       "text": "uploading image"
+               },
+               {
+                       "timestamp": 1445452293.8316283,
+                       "value": "update-dsc-validation",
+                       "text": "descriptor validation"
+               },
+               {
+                       "timestamp": 1445452294.00448,
+                       "value": "update-success",
+                       "text": "updating process completed"
+               }
+       ],
+       "warnings": [],
+       "status": "success",
+       "errors": [
+               {
+                       "value": "update vnfd/ping_vnfd.xml",
+                       "timestamp": 1445452294.0032463
+               }
+       ]
+};
+
+var exportPayload = {
+       "events": [
+               {
+                       "timestamp": 1445452293.688965,
+                       "value": "update-started",
+                       "text": "download process started"
+               },
+               {
+                       "timestamp": 1445452293.7836523,
+                       "value": "update-pkg-upload",
+                       "text": "building package"
+               },
+               {
+                       "timestamp": 1445452293.8315961,
+                       "value": "update-img-upload",
+                       "text": "building image"
+               },
+               {
+                       "timestamp": 1445452293.8316283,
+                       "value": "update-dsc-validation",
+                       "text": "descriptor validation"
+               },
+               {
+                       "timestamp": 1445452294.00448,
+                       "value": "download-success",
+                       "text": "download process completed"
+               }
+       ],
+       "warnings": [],
+       "status": "success",
+       "errors": [
+               {
+                       "value": "download nsd/ping-pong-nsd.xml",
+                       "timestamp": 1445452294.0032463
+               }
+       ]
+};
+
+apiServer.use(cors());
+launchpadServer.use(cors());
+
+apiServer.use(multer({
+       dest: './uploads/',
+       rename: function (fieldname, filename) {
+               return filename + '-' + Date.now();
+       },
+       onFileUploadStart: function (file) {
+               console.log(file.originalname + ' is starting ...')
+       },
+       onFileUploadComplete: function (file) {
+               console.log(file.fieldname + ' uploaded to  ' + file.path)
+               done = true;
+       }
+}));
+
+/*Handling routes.*/
+
+launchpadServer.get('/launchpad/catalog', function (req, res) {
+       res.sendFile(path.join(__dirname, '../../src/assets/ping-pong-catalog.json'));
+});
+
+launchpadServer.delete('/launchpad/catalog/nsd/:id', function (req, res) {
+       res.end();
+});
+
+launchpadServer.put('/launchpad/catalog/nsd/:id', function (req, res) {
+       res.end();
+});
+
+apiServer.post('/api/upload', function (req, res) {
+       if (done == true) {
+               res.end('{"transaction_id": "' + Date.now() + '"}');
+       }
+});
+
+apiServer.get('/api/upload/:transaction_id/state', function (req, res) {
+       if (done == true) {
+               console.log('transaction id state request', req.params.transaction_id);
+               res.end(JSON.stringify(uploadPayload));
+       }
+});
+
+apiServer.post('/api/update', function (req, res) {
+       if (done == true) {
+               res.end('{"transaction_id": "' + Date.now() + '"}');
+       }
+});
+
+apiServer.get('/api/update/:transaction_id/state', function (req, res) {
+       if (done == true) {
+               console.log('transaction id state request', req.params.transaction_id);
+               res.end(JSON.stringify(updatePayload));
+       }
+});
+
+apiServer.get('/api/export', function (req, res) {
+       res.end('{"transaction_id": "' + Date.now() + '"}');
+});
+
+apiServer.get('/api/export/:transaction_id/state', function (req, res) {
+       console.log('transaction id state request', req.params.transaction_id);
+       res.end(JSON.stringify(exportPayload));
+});
+
+/*Run the servers.*/
+launchpadServer.listen(3000, function () {
+       console.log('LaunchPad Server listening on port 3000');
+});
+
+apiServer.listen(4567, function () {
+       console.log('API Server listening on port 4567');
+});