Merge branch 'master' into master_vca_intg 68/968/1
authorLaurence Maultsby <laurence.maultsby@riftio.com>
Tue, 17 Jan 2017 15:39:52 +0000 (10:39 -0500)
committerLaurence Maultsby <laurence.maultsby@riftio.com>
Tue, 17 Jan 2017 15:40:13 +0000 (10:40 -0500)
Signed-off-by: Laurence Maultsby <laurence.maultsby@riftio.com>
1  2 
skyquake/plugins/composer/api/composer.js

@@@ -272,33 -272,89 +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 +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'];
              })
          ]).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
@@@ -574,7 -633,7 +633,7 @@@ FileManager.job = function(req) 
              forever: constants.FOREVER_ON,
              rejectUnauthorized: false,
          }, function(error, response, body) {
 -            if (utils.validateResponse('restconfAPI.streams', error, response, body, resolve, reject)) {
 +            if (utils.validateResponse('FileManager.job', error, response, body, resolve, reject)) {
                  var data = JSON.parse(response.body)['rw-pkg-mgmt:download-jobs'];
                  var returnData = [];
                  data && data.job.map(function(d) {