Merge branch 'projects' of https://osm.etsi.org/gerrit/osm/UI into projects
authorLaurence Maultsby <laurence.maultsby@riftio.com>
Mon, 3 Apr 2017 13:10:47 +0000 (09:10 -0400)
committerLaurence Maultsby <laurence.maultsby@riftio.com>
Mon, 3 Apr 2017 15:37:23 +0000 (11:37 -0400)
Signed-off-by: Laurence Maultsby <laurence.maultsby@riftio.com>
skyquake/framework/core/api_utils/utils.js
skyquake/framework/core/modules/api/sessions.js
skyquake/framework/core/modules/routes/navigation.js
skyquake/plugins/composer/api/composer.js
skyquake/plugins/composer/src/src/libraries/utils.js
skyquake/plugins/launchpad/api/launchpad.js

index 488cd9e..185c7c6 100644 (file)
@@ -51,7 +51,7 @@ var confdPort = function(api_server) {
 
 var projectContextUrl = function(req, url) {
        if (req.session && req.session.projectId) {
-               return url.replace(/(\/api\/operational\/|\/api\/config\/|\/api\/operations\/)(.*)/, '$1project/pname/$2');
+               return url.replace(/(\/api\/operational\/|\/api\/config\/|\/api\/operations\/)(.*)/, '$1project/' + req.session.projectId + '/$2');
 
        }
        return url;
@@ -69,12 +69,12 @@ var validateResponse = function(callerName, error, response, body, resolve, reje
                };
                reject(res);
                return false;
-       } else if (response.statusCode >= 400) {
+       } else if (response.statusCode >= CONSTANTS.HTTP_RESPONSE_CODES.ERROR.BAD_REQUEST) {
                console.log('Problem with "', callerName, '": ', response.statusCode, ':', body);
                res.statusCode = response.statusCode;
 
                // auth specific
-               if (response.statusCode == 401) {
+               if (response.statusCode == CONSTANTS.HTTP_RESPONSE_CODES.ERROR.UNAUTHORIZED) {
                        res.errorMessage = {
                                error: 'Authentication needed' + body
                        };
@@ -89,7 +89,7 @@ var validateResponse = function(callerName, error, response, body, resolve, reje
 
                reject(res);
                return false;
-       } else if (response.statusCode == 204) {
+       } else if (response.statusCode == CONSTANTS.HTTP_RESPONSE_CODES.SUCCESS.NO_CONTENT) {
                resolve({
                        statusCode: response.statusCode,
                        data: {}
@@ -127,12 +127,12 @@ if (process.env.LOG_REQUESTS) {
                                reject(res);
                                fs.appendFileSync(logFile, 'Request API: ' + response.request.uri.href + ' ; ' + 'Error: ' + error);
                                return false;
-                       } else if (response.statusCode >= 400) {
+                       } else if (response.statusCode >= CONSTANTS.HTTP_RESPONSE_CODES.ERROR.BAD_REQUEST) {
                                console.log('Problem with "', callerName, '": ', response.statusCode, ':', body);
                                res.statusCode = response.statusCode;
 
                                // auth specific
-                               if (response.statusCode == 401) {
+                               if (response.statusCode == CONSTANTS.HTTP_RESPONSE_CODES.ERROR.UNAUTHORIZED) {
                                        res.errorMessage = {
                                                error: 'Authentication needed' + body
                                        };
@@ -148,7 +148,7 @@ if (process.env.LOG_REQUESTS) {
                                reject(res);
                                fs.appendFileSync(logFile, 'Request API: ' + response.request.uri.href + ' ; ' + 'Error Body: ' + body);
                                return false;
-                       } else if (response.statusCode == 204) {
+                       } else if (response.statusCode == CONSTANTS.HTTP_RESPONSE_CODES.SUCCESS.NO_CONTENT) {
                                resolve();
                                fs.appendFileSync(logFile, 'Request API: ' + response.request.uri.href + ' ; ' + 'Response Body: ' + body);
                                return false;
index 769ea2b..2036030 100644 (file)
@@ -31,6 +31,7 @@ var sessionsAPI = {};
 var _ = require('lodash');
 var base64 = require('base-64');
 var APIVersion = '/v2';
+var configurationAPI = require('./configuration');
 
 function logAndReject(mesg, reject) {
     res.errorMessage = {
@@ -41,8 +42,10 @@ function logAndReject(mesg, reject) {
 }
 
 function logAndRedirectToLogin(mesg, res, req) {
+    var api_server = req.query['api_server'] || (req.protocol + '://' + configurationAPI.globalConfiguration.get().api_server);
+    var upload_server = req.protocol + '://' + (configurationAPI.globalConfiguration.get().upload_server || req.hostname);
     console.log(mesg);
-    res.redirect('login.html?api_server=' + req.query['api_server']);
+    res.redirect('login.html?api_server=' + api_server + '&upload_server=' + upload_server);
     res.end();
 }
 
index 9b8fbf7..bf9c47b 100644 (file)
@@ -44,12 +44,12 @@ Router.get('/login.html', cors(), function(req, res) {
 
 Router.get('/', cors(), function(req, res) {
        var api_server = req.query['api_server'] || (req.protocol + '://' + configurationAPI.globalConfiguration.get().api_server);
-       if (req.session.loggedIn) {
+       if (req.session && req.session.loggedIn) {
                console.log('Logged in. Redirect to launchpad')
                res.redirect('/launchpad/?api_server=' + api_server + '&upload_server=' + req.protocol + '://' + (configurationAPI.globalConfiguration.get().upload_server || req.hostname));
        } else {
                console.log('Redirect to login.html');
-               res.redirect('login.html?api_server=' + api_server);
+               res.redirect('login.html?api_server=' + api_server + '&upload_server=' + req.protocol + '://' + (configurationAPI.globalConfiguration.get().upload_server || req.hostname));
        }
 });
 
index 447e1d9..f98020c 100644 (file)
@@ -34,6 +34,7 @@ var DataCenters = {};
 Composer.get = function(req) {
     var api_server = req.query['api_server'];
     var results = {}
+    var projectPrefix = req.session.projectId ? "project-" : "";
     return new Promise(function(resolve, reject) {
         Promise.all([
             rp({
@@ -121,7 +122,7 @@ Composer.get = function(req) {
                 "descriptors": []
             }];
             if (result[0].body) {
-                response[0].descriptors = JSON.parse(result[0].body).collection['nsd:nsd'];
+                response[0].descriptors = JSON.parse(result[0].body).collection[projectPrefix + 'nsd:nsd'];
                 if (result[2].body) {
                     var data = JSON.parse(result[2].body);
                     if (data && data["nsr:ns-instance-opdata"] && data["nsr:ns-instance-opdata"]["rw-nsr:nsd-ref-count"]) {
@@ -141,10 +142,10 @@ Composer.get = function(req) {
                 }
             };
             if (result[1].body) {
-                response[1].descriptors = JSON.parse(result[1].body).collection['vnfd:vnfd'];
+                response[1].descriptors = JSON.parse(result[1].body).collection[projectPrefix + 'vnfd:vnfd'];
             };
             // if (result[2].body) {
-            //   response[2].descriptors = JSON.parse(result[2].body).collection['pnfd:pnfd'];
+            //   response[2].descriptors = JSON.parse(result[2].body).collection[projectPrefix + 'pnfd:pnfd'];
             // };
             resolve({
                 statusCode: response.statusCode || 200,
index ee4163c..ff2adc0 100644 (file)
@@ -180,6 +180,9 @@ export default {
                                                console.log('Something went wrong while resolving a leafref. Reached a leaf with predicate.');
                                        } else {
                                                // contains no predicate
+                                               if (!objectCopy) {
+                                                       break;
+                                               }
                                                results.push(objectCopy[fragment]);
                                        }
                                }
@@ -236,6 +239,9 @@ export default {
                                                }
                                        } else {
                                                // contains no predicate
+                                               if (!objectCopy) {
+                                                       break;
+                                               }
                                                objectCopy = objectCopy[fragment];
                                        }
                                }
index 6fe48f4..2febc3c 100644 (file)
@@ -168,6 +168,7 @@ var DataCenters = {};
 Catalog.get = function(req) {
     var api_server = req.query['api_server'];
     var results = {}
+    var projectPrefix = req.session.projectId ? "project-" : "";
     return new Promise(function(resolve, reject) {
         Promise.all([
             rp({
@@ -258,12 +259,12 @@ Catalog.get = function(req) {
             var vnfdCatalog = null;
             var vnfdDict = {};
             if (result[1].body) {
-                vnfdCatalog = JSON.parse(result[1].body).collection['vnfd:vnfd'].map(function(v, i) {
+                vnfdCatalog = JSON.parse(result[1].body).collection[projectPrefix + 'vnfd:vnfd'].map(function(v, i) {
                     vnfdDict[v.id] = v['short-name'] || v.name;
                 })
             }
             if (result[0].body) {
-                response[0].descriptors = JSON.parse(result[0].body).collection['nsd:nsd'];
+                response[0].descriptors = JSON.parse(result[0].body).collection[projectPrefix + 'nsd:nsd'];
                 if (result[2].body) {
                     var data = JSON.parse(result[2].body);
                     if (data && data["nsr:ns-instance-opdata"] && data["nsr:ns-instance-opdata"]["rw-nsr:nsd-ref-count"]) {
@@ -286,10 +287,10 @@ Catalog.get = function(req) {
                 }
             };
             if (result[1].body) {
-                response[1].descriptors = JSON.parse(result[1].body).collection['vnfd:vnfd'];
+                response[1].descriptors = JSON.parse(result[1].body).collection[projectPrefix + 'vnfd:vnfd'];
             };
             // if (result[2].body) {
-            //   response[2].descriptors = JSON.parse(result[2].body).collection['pnfd:pnfd'];
+            //   response[2].descriptors = JSON.parse(result[2].body).collection[projectPrefix + 'pnfd:pnfd'];
             // };
             resolve({
                 statusCode: response.statusCode || 200,
@@ -508,6 +509,7 @@ NSR.get = function(req) {
     var nsrPromises = [];
     var api_server = req.query["api_server"];
     var id = req.params.id;
+    var projectPrefix = req.session.projectId ? "project-" : "";
     var nsdInfo = new Promise(function(resolve, reject) {
         request({
             uri: utils.projectContextUrl(req, utils.confdPort(api_server) + APIVersion + '/api/config/nsd-catalog/nsd?deep'),
@@ -523,7 +525,7 @@ NSR.get = function(req) {
                 var isString = typeof(response.body) == "string";
                 if (isString && response.body == '') return resolve('empty');
                 data = isString ? JSON.parse(response.body) : response.body;
-                var nsdData = data.collection["nsd:nsd"];
+                var nsdData = data.collection[projectPrefix + "nsd:nsd"];
                 if (nsdData.constructor.name == "Object") {
                     nsdData = [nsdData];
                 }