From: Laurence Maultsby Date: Wed, 25 Jan 2017 14:13:38 +0000 (-0500) Subject: Merge branch 'pkg_mgmt' into v1.1 X-Git-Tag: v1.1.0~12^2 X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FUI.git;a=commitdiff_plain;h=5c4722a7fb7e022971726d729e87b094ac891aee;hp=5e37df206e5667d681be1b9b4c450024733c4617 Merge branch 'pkg_mgmt' into v1.1 Signed-off-by: Laurence Maultsby --- diff --git a/skyquake/framework/core/api_utils/sockets.js b/skyquake/framework/core/api_utils/sockets.js index 607659476..5e0b25bfb 100644 --- a/skyquake/framework/core/api_utils/sockets.js +++ b/skyquake/framework/core/api_utils/sockets.js @@ -32,17 +32,9 @@ var Promise = require('promise'); var url = require('url'); var sockjs = require('sockjs'); var websocket_multiplex = require('websocket-multiplex'); +var utils = require('./utils.js'); -function getPortForProtocol (protocol) { - switch (protocol) { - case 'http': - return 8000; - case 'https': - return 8443; - } -} - var Subscriptions = function() { this.ID = 0; this.socketServers = {}; @@ -85,7 +77,7 @@ Subscriptions.prototype.subscribe = function(req, callback) { var origin = ''; if (req.query['api_server']) { var api_server_protocol = req.query['api_server'].match(protocolTest)[1]; - var api_server_origin = req.query['api_server'] + ':' + getPortForProtocol(api_server_protocol); + var api_server_origin = req.query['api_server'] + ':' + utils.getPortForProtocol(api_server_protocol); origin = api_server_origin; protocol = api_server_protocol; } else { diff --git a/skyquake/framework/core/api_utils/utils.js b/skyquake/framework/core/api_utils/utils.js index 0d1990c64..5b17279d5 100644 --- a/skyquake/framework/core/api_utils/utils.js +++ b/skyquake/framework/core/api_utils/utils.js @@ -217,6 +217,15 @@ var passThroughConstructor = function(app) { }); } +var getPortForProtocol = function(protocol) { + switch (protocol) { + case 'http': + return 8000; + case 'https': + return 8443; + } +} + module.exports = { /** * Ensure confd port is on api_server variable. @@ -233,5 +242,7 @@ module.exports = { sendSuccessResponse: sendSuccessResponse, - passThroughConstructor: passThroughConstructor + passThroughConstructor: passThroughConstructor, + + getPortForProtocol: getPortForProtocol }; diff --git a/skyquake/plugins/composer/api/composer.js b/skyquake/plugins/composer/api/composer.js index 864f2b06e..801873a36 100644 --- a/skyquake/plugins/composer/api/composer.js +++ b/skyquake/plugins/composer/api/composer.js @@ -272,36 +272,36 @@ Composer.create = function(req) { }); }); }; -// Composer.update = function(req) { -// var api_server = req.query['api_server']; -// var catalogType = req.params.catalogType; -// var id = req.params.id; -// var data = req.body; -// console.log('Updating', catalogType, 'id', id, 'on', api_server); -// var jsonData = {}; -// jsonData[catalogType] = {}; -// jsonData[catalogType] = data; -// return new Promise(function(resolve, reject) { -// var requestHeaders = {}; -// _.extend(requestHeaders, constants.HTTP_HEADERS.accept.data, constants.HTTP_HEADERS.content_type.data, { -// 'Authorization': req.get('Authorization') -// }); -// request({ -// uri: utils.confdPort(api_server) + APIVersion + '/api/config/' + catalogType + '-catalog' + '/' + catalogType + '/' + id, -// method: 'PUT', -// headers: requestHeaders, -// forever: constants.FOREVER_ON, -// rejectUnauthorized: false, -// json: jsonData -// }, function(error, response, body) { -// if (utils.validateResponse('Composer.update', error, response, body, resolve, reject)) { -// resolve({ -// statusCode: response.statusCode -// }); -// } -// }); -// }); -// +Composer.updateSave = function(req) { + var api_server = req.query['api_server']; + var catalogType = req.params.catalogType; + var id = req.params.id; + var data = req.body; + console.log('Updating', catalogType, 'id', id, 'on', api_server); + var jsonData = {}; + jsonData[catalogType] = {}; + jsonData[catalogType] = data; + return new Promise(function(resolve, reject) { + var requestHeaders = {}; + _.extend(requestHeaders, constants.HTTP_HEADERS.accept.data, constants.HTTP_HEADERS.content_type.data, { + 'Authorization': req.get('Authorization') + }); + request({ + uri: utils.confdPort(api_server) + APIVersion + '/api/config/' + catalogType + '-catalog' + '/' + catalogType + '/' + id, + method: 'PUT', + headers: requestHeaders, + forever: constants.FOREVER_ON, + rejectUnauthorized: false, + json: jsonData + }, function(error, response, body) { + if (utils.validateResponse('Composer.update', error, response, body, resolve, reject)) { + resolve({ + statusCode: response.statusCode + }); + } + }); + }); +} Composer.update = function(req) { console.log(' Updating file', req.file.originalname, 'as', req.file.filename); @@ -312,7 +312,7 @@ Composer.update = function(req) { var download_host = req.query['dev_download_server']; if (!download_host) { - download_host = req.protocol + '://' + req.headers.host; + download_host = api_server + ':' + utils.getPortForProtocol(req.protocol); } var input = { 'external-url': download_host + '/composer/update/' + req.file.filename, @@ -368,7 +368,7 @@ Composer.upload = function(req) { var download_host = req.query['dev_download_server']; if (!download_host) { - download_host = req.protocol + '://' + req.headers.host; + download_host = api_server + ':' + utils.getPortForProtocol(req.protocol); } return new Promise(function(resolve, reject) { @@ -425,7 +425,7 @@ Composer.addFile = function(req) { var package_type = req.query['package_type'].toUpperCase(); var package_path = req.query['package_path']; if (!download_host) { - download_host = req.protocol + '://' + req.headers.host; + download_host = api_server + ':' + utils.getPortForProtocol(req.protocol); } return new Promise(function(resolve, reject) { diff --git a/skyquake/plugins/composer/routes.js b/skyquake/plugins/composer/routes.js index 2c78cc952..378220927 100644 --- a/skyquake/plugins/composer/routes.js +++ b/skyquake/plugins/composer/routes.js @@ -96,7 +96,7 @@ router.post('/api/catalog/:catalogType', cors(), function(req, res) { }); }); router.put('/api/catalog/:catalogType/:id', cors(), function(req, res) { - Composer.update(req).then(function(data) { + Composer.updateSave(req).then(function(data) { res.send(data); }, function(error) { res.status(error.statusCode); diff --git a/skyquake/plugins/composer/src/src/libraries/model/DescriptorModelFields.js b/skyquake/plugins/composer/src/src/libraries/model/DescriptorModelFields.js index bc5576087..8b86b0c0b 100644 --- a/skyquake/plugins/composer/src/src/libraries/model/DescriptorModelFields.js +++ b/skyquake/plugins/composer/src/src/libraries/model/DescriptorModelFields.js @@ -27,7 +27,7 @@ export default { nsd: common.concat(['constituent-vnfd', 'vnffgd', 'vld']), vld: common.concat([]), vnfd: common.concat(['vdu', 'internal-vld']), - 'vnfd.vdu': common.concat(['image', 'external-interface', 'vm-flavor', 'cloud-init', 'filename']), + 'vnfd.vdu': common.concat(['image', 'image-checksum', 'external-interface', 'vm-flavor', 'cloud-init', 'filename']), // white-list valid fields to send in the meta field meta: ['containerPositionMap'] }; diff --git a/skyquake/plugins/composer/src/src/libraries/utils.js b/skyquake/plugins/composer/src/src/libraries/utils.js index a182b1a90..1d54a6f5b 100644 --- a/skyquake/plugins/composer/src/src/libraries/utils.js +++ b/skyquake/plugins/composer/src/src/libraries/utils.js @@ -290,7 +290,7 @@ export default { for (let subKey in catalogs[key]) { let found = _.find(catalogs[key][subKey], {id: fieldKeyArray[0]}); if (found) { - results = this.getResults(found, pathArray.splice(-i, i)); + results = this.getAbsoluteResults(found, pathArray.splice(-i, i)); return results; } } @@ -303,7 +303,7 @@ export default { for (let foundKey in found) { let topLevel = _.find(found[foundKey], {id: fieldKeyArray[1]}); if (topLevel) { - results = this.getResults(topLevel, pathArray.splice(-i, i)); + results = this.getAbsoluteResults(topLevel, pathArray.splice(-i, i)); return results; } } diff --git a/skyquake/plugins/launchpad/src/instantiate/instantiateParameters.jsx b/skyquake/plugins/launchpad/src/instantiate/instantiateParameters.jsx index 0e5fa1fbb..5681851a1 100644 --- a/skyquake/plugins/launchpad/src/instantiate/instantiateParameters.jsx +++ b/skyquake/plugins/launchpad/src/instantiate/instantiateParameters.jsx @@ -44,52 +44,53 @@ class Instantiate extends Component { - + /> + ) } diff --git a/skyquake/plugins/launchpad/src/instantiate/instantiateStore.js b/skyquake/plugins/launchpad/src/instantiate/instantiateStore.js index 2e6e24236..e779beb16 100644 --- a/skyquake/plugins/launchpad/src/instantiate/instantiateStore.js +++ b/skyquake/plugins/launchpad/src/instantiate/instantiateStore.js @@ -484,6 +484,11 @@ class LaunchNetworkServiceStore { let value = e.target.nodeName == "SELECT" ? JSON.parse(e.target.value) : e.target.value; self.ipProfiles[i]['ip-profile-params'][key] = value; + if (value == '') { + // Don't send this key + delete self.ipProfiles[i]['ip-profile-params'][key]; + } + self.setState({ipProfiles:self.ipProfiles}); } }, diff --git a/skyquake/plugins/launchpad/src/recordViewer/recordCard.jsx b/skyquake/plugins/launchpad/src/recordViewer/recordCard.jsx index 449177634..88ff709a4 100644 --- a/skyquake/plugins/launchpad/src/recordViewer/recordCard.jsx +++ b/skyquake/plugins/launchpad/src/recordViewer/recordCard.jsx @@ -106,7 +106,7 @@ export default class RecordCard extends React.Component { //That match the currently selected job id if(v.id == cardData.id) { return v.primitive.map(function(p, i) { - return + return }) } }) @@ -208,7 +208,7 @@ export default class RecordCard extends React.Component { //That match the currently selected job id if(v.id == cardData.id) { return v.primitive.map(function(p, i) { - return + return }) } })