X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FUI.git;a=blobdiff_plain;f=skyquake%2Fplugins%2Fcomposer%2Fapi%2Fcomposer.js;h=79c6650e5626b4c591b2465d577fdd775125ec04;hp=b0684bf21ecde4a6e2ff9399833c26df8cfb0142;hb=109fb4a186f5393d5488f97a5e29c8f18973c35b;hpb=5d3c7164d13c5915370a48fb0b747a95777d9f24 diff --git a/skyquake/plugins/composer/api/composer.js b/skyquake/plugins/composer/api/composer.js index b0684bf21..79c6650e5 100644 --- a/skyquake/plugins/composer/api/composer.js +++ b/skyquake/plugins/composer/api/composer.js @@ -272,33 +272,89 @@ 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.update = function(req) { + console.log(' Updating file', req.file.originalname, 'as', req.file.filename); 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; + // dev_download_server is for testing purposes. + // It is the direct IP address of the Node server where the + // package will be hosted. + var download_host = req.query['dev_download_server']; + + if (!download_host) { + download_host = req.protocol + '://' + req.headers.host; + } + var input = { + 'external-url': download_host + '/composer/update/' + req.file.filename, + 'package-type': 'VNFD', + 'package-id': uuid() + } 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 - }); - } + Promise.all([ + rp({ + uri: utils.confdPort(api_server) + '/api/operations/package-update', + method: 'POST', + headers: _.extend({}, constants.HTTP_HEADERS.accept.collection, { + 'Authorization': req.get('Authorization') + }), + forever: constants.FOREVER_ON, + rejectUnauthorized: false, + resolveWithFullResponse: true, + json: true, + body: { + input: input + } + }) + ]).then(function(result) { + var data = {}; + data['transaction_id'] = result[0].body['output']['transaction-id']; + + // Add a status checker on the transaction and then to delete the file later + PackageFileHandler.checkCreatePackageStatusAndHandleFile(req, data['transaction_id'], true); + + // Return status to composer UI to update the status. + resolve({ + statusCode: constants.HTTP_RESPONSE_CODES.SUCCESS.OK, + data: data + }); + }).catch(function(error) { + var res = {}; + console.log('Problem with Composer.upload', error); + res.statusCode = error.statusCode || 500; + res.errorMessage = { + error: 'Failed to upload package ' + req.file.originalname + '. Error: ' + error + }; + reject(res); }); }); }; @@ -358,6 +414,9 @@ Composer.upload = function(req) { }); }); }; + + + Composer.addFile = function(req) { console.log(' Uploading file', req.file.originalname, 'as', req.file.filename); var api_server = req.query['api_server']; @@ -392,7 +451,7 @@ Composer.addFile = function(req) { }) ]).then(function(result) { var data = {}; - data['transaction_id'] = result[0].body['output']['transaction-id']; + data['transaction_id'] = result[0].body['output']['task-id']; resolve({ statusCode: constants.HTTP_RESPONSE_CODES.SUCCESS.OK, data: data