Initial commit for OpenECOMP SDN-C OA&M
[sdnc/oam.git] / admportal / server / router / routes / preload.js
1 var express = require('express');
2 var router = express.Router();
3 var exec = require('child_process').exec;
4 var util = require('util');
5 var fs = require('fs.extra');
6 var dbRoutes = require('./dbRoutes');
7 var csp = require('./csp');
8 var multer = require('multer');
9 var bodyParser = require('body-parser');
10 var sax = require('sax'),strict=true,parser = sax.parser(strict);
11 var async = require('async');
12 var l_ = require('lodash');
13 var dateFormat = require('dateformat');
14 var properties = require(process.env.SDNC_CONFIG_DIR + '/admportal.json');
15 var vnf = require('./vnf');
16 var network = require('./network');
17 var moment = require('moment');
18
19
20
21 // pass host, username and password to ODL
22 // target host for ODL request
23 var username = properties.odlUser;
24 var password = properties.odlPasswd;
25 var auth = 'Basic ' + new Buffer(username + ':' + password).toString('base64');
26 var host = properties.odlHost;
27 var port = properties.odlPort;
28
29 var header = {'Host': host, 'Authorization': auth, 'Content-Type': 'application/json'};
30 var options = {
31         host    : host,
32         headers : header,
33         port    : port,
34         rejectUnauthorized:false,
35         strictSSL: false
36 };
37
38 // Connection to OpenDaylight
39 Odl = require('./Odl');
40
41 // multer 1.1
42 var unixTime = moment().unix();
43 var storage = multer.diskStorage({
44   destination: function (req, file, cb) {
45     cb(null, process.cwd() + '/uploads/')
46   },
47   filename: function (req, file, cb) {
48     cb(null, unixTime + "." + file.originalname )
49   }
50 });
51
52 var upload = multer({
53         storage: storage,
54         fileFilter: function(req,file,cb) {
55                 var type = file.mimetype;
56                 if ( type.indexOf('ms-excel') == -1 ) {
57                         return cb(null,false);
58                 }
59                 cb(null,true);
60         }
61 });
62
63 router.post('/uploadVnfCsv', csp.checkAuth, dbRoutes.checkDB, upload.array('filename'), function(req, res)
64 {
65         console.log('files:'+ JSON.stringify(req.files,null,4));
66
67         var tasks = []
68     var msgArray = new Array();
69     var privilegeObj = req.session.loggedInAdmin;
70         
71         var privilegeObj = req.session.loggedInAdmin;
72         var tasks = [];
73
74         tasks.push ( function(callback) { vnf.go(req,res,callback,''); } );
75         tasks.push ( function(arg1,arg2,callback) { formatVnfInsertStatement(arg1,arg2,req,res,callback); } );
76     tasks.push( function(arg1, callback) { dbRoutes.addRow(arg1,req,res,callback); } );
77         async.waterfall(tasks, function(err,result)
78         {       
79                  if(err){
80                 msgArray.push(err);
81             dbRoutes.getVnfData(req,res,{code:'failure', msg:msgArray},privilegeObj);
82             return;
83         }
84         else {
85                 //logger.debug('Successfully uploaded ' + req.session.worksheetFilename);
86                 msgArray.push('Successfully uploaded file.' );
87             dbRoutes.getVnfData(req,res,{code:'success', msg:msgArray},privilegeObj);
88             return;
89         }
90         });
91
92 });
93
94 router.post('/uploadNetworkCsv', csp.checkAuth, dbRoutes.checkDB, upload.array('filename'), function(req, res)
95 {
96     console.log('files:'+ JSON.stringify(req.files,null,4));
97
98     var tasks = []
99     var msgArray = new Array();
100     var privilegeObj = req.session.loggedInAdmin;
101
102     var privilegeObj = req.session.loggedInAdmin;
103     var tasks = [];
104
105     tasks.push ( function(callback) { network.go(req,res,callback,''); } );
106     tasks.push ( function(arg1,arg2,callback) { formatNetworkInsertStatement(arg1,arg2,req,res,callback); } );
107     tasks.push( function(arg1, callback) { dbRoutes.addRow(arg1,req,res,callback); } );
108     async.waterfall(tasks, function(err,result)
109     {
110          if(err){
111             msgArray.push(err);
112             dbRoutes.getVnfNetworkData(req,res,{code:'failure', msg:msgArray},privilegeObj);
113             return;
114         }
115         else {
116             //logger.debug('Successfully uploaded ' + req.session.worksheetFilename);
117             msgArray.push('Successfully uploaded file.' );
118             dbRoutes.getVnfNetworkData(req,res,{code:'success', msg:msgArray},privilegeObj);
119             return;
120         }
121     });
122
123 });
124
125
126 function formatVnfInsertStatement(content,filename,req,res,callback)
127 {
128      //var newstr = JSON.stringify(content).replace(/\\\"/g,'\\\\\\"');
129      //var ins_str = newstr.replace("\r\n ", "\\r\\n");
130      var newstr = JSON.stringify(content);
131      var enc_str = encodeURI(newstr);
132          var sql = "INSERT INTO PRE_LOAD_VNF_DATA "
133                 + "(filename,preload_data) VALUES ("
134                 + "'"+ filename + "',"
135                 + "'" + enc_str + "')";
136
137         callback(null,sql);
138 }
139
140 function formatNetworkInsertStatement(content,filename,req,res,callback)
141 {
142      var newstr = JSON.stringify(content);
143      var enc_str = encodeURI(newstr);
144          var sql = "INSERT INTO PRE_LOAD_VNF_NETWORK_DATA "
145                 + "(filename,preload_data) VALUES ("
146                 + "'"+ filename + "',"
147                 + "'" + enc_str + "')";
148
149         callback(null,sql);
150 }
151
152
153
154 module.exports = router;