update from RIFT as of 696b75d2fe9fb046261b08c616f1bcf6c0b54a9b third try
[osm/UI.git] / skyquake / plugins / composer / api / packageFileHandler.js
index cc9cca7..868a588 100644 (file)
@@ -6,26 +6,30 @@ var constants = require('../../../framework/core/api_utils/constants.js');
 var fs = require('fs');
 var _ = require('lodash');
 
-PackageFileHandler = {};
+var PackageFileHandler = {};
 
 function deleteFile(filename) {
        setTimeout(function() {
-               fs.unlinkSync(constants.BASE_PACKAGE_UPLOAD_DESTINATION + filename);
+               try {
+                       fs.unlinkSync(constants.BASE_PACKAGE_UPLOAD_DESTINATION + '/' + filename);
+               } catch (e) {
+                       console.log("file delete error", e);
+               }
        }, constants.PACKAGE_FILE_DELETE_DELAY_MILLISECONDS);
 };
 
-function checkStatus(req, transactionId, isUpdate) {
-       var upload_server = req.query['upload_server'];
-       var headers = _.extend({},
-        {
-            'Authorization': req.get('Authorization')
-        }
-    );
-    var type = isUpdate ? 'update' : 'upload';
+function checkStatus(req, transactionId, jobType) {
+    var api_server = req.query["api_server"];
+    var uri = utils.confdPort(api_server);
+       var id = req.params['id'];
+       var jobName = jobType + '-jobs';
+    var url = utils.projectContextUrl(req, uri + '/api/operational/' + jobName + (transactionId ? '/job/' + transactionId : ''));
        request({
-               url: upload_server + ':' + constants.PACKAGE_MANAGER_SERVER_PORT + '/api/' + type + '/' + transactionId + '/state',
-               type: 'GET',
-               headers: headers,
+               url: url,
+               method: 'GET',
+               headers: _.extend({}, constants.HTTP_HEADERS.accept.data, {
+                       'Authorization': req.session && req.session.authorization
+               }),
                forever: constants.FOREVER_ON,
                rejectUnauthorized: false
        }, function(error, response, body) {
@@ -35,25 +39,25 @@ function checkStatus(req, transactionId, isUpdate) {
                } else {
                        var jsonStatus = null;
                        if (typeof body == 'string' || body instanceof String) {
-                               jsonStatus = JSON.parse(body);
+                               try {jsonStatus = JSON.parse(body)['rw-pkg-mgmt:job'];} catch(e) {jsonStatus = {status: 'failure'}}
                        } else {
                                jsonStatus = body;
                        }
 
-                       if (jsonStatus.status && (jsonStatus.status == 'success' || jsonStatus.status == 'failure')) {
+                       if (jsonStatus && jsonStatus.status && (jsonStatus.status == 'COMPLETED' || jsonStatus.status == 'FAILED')) {
                                console.log('Transaction ', transactionId, ' completed with status ', jsonStatus.status ,'. Will delete file', req.file.filename, ' in ', constants.PACKAGE_FILE_DELETE_DELAY_MILLISECONDS ,' milliseconds');
                                deleteFile(req.file.filename);
                        } else {
                                setTimeout(function() {
-                                       checkStatus(req, transactionId, isUpdate);
+                                       checkStatus(req, transactionId, jobType);
                                }, constants.PACKAGE_FILE_ONBOARD_TRANSACTION_STATUS_CHECK_DELAY_MILLISECONDS);
                        }
                }
        });
 };
 
-PackageFileHandler.checkCreatePackageStatusAndHandleFile = function(req, transactionId, isUpdate) {
-       checkStatus(req, transactionId, isUpdate);
+PackageFileHandler.checkCreatePackageStatusAndHandleFile = function(req, transactionId, jobType) {
+       checkStatus(req, transactionId, jobType);
 };