-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.js
76 lines (62 loc) · 2.35 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
var express = require('express');
var fs = require('fs');
var multer = require('multer');
var util = require('util');
var unzip = require('unzip');
var shell = require('shelljs');
var config = require('./config')
var app = express();
app.use(multer({ dest: '/tmp/'}));
app.get('/', function (req, res) {
res.write('Solr Deployment tool. Version=' + config.version);
res.write('\n')
printUsage(req, res);
res.end();
});
app.post('/solrdeploy', function (req, res) {
try {
res.write('Deploying new Solr configuration!\n');
var coreName = req.param('coreName');
if (coreName === undefined) {
res.write('coreName is required.\n');
printUsage(req, res);
res.end();
}
if (!req.hasOwnProperty('files') || Object.keys(req.files).length === 0) {
res.write("Config folder zipped with name 'config' is required.\n");
printUsage(req, res);
res.end();
}
res.write('stopping solr service.\n');
var result = shell.exec('/etc/init.d/solr stop');
res.write(JSON.stringify(result) + '\n');
res.write('stopped solr service.\n\n');
var configPath = config.solrRoot + coreName + '/conf';
res.write('deleting existing config files from:' + configPath + '\n');
result = shell.exec('rm -r ' + configPath);
res.write(JSON.stringify(result) + '\n' );
res.write('deleted existing config files. \n\n');
fs.createReadStream(req.files.config.path).pipe(unzip.Extract({ path: configPath }));
res.write('starting solr service.\n');
result = shell.exec("/etc/init.d/solr start");
res.write(JSON.stringify(result) + '\n');
res.write('started solr service.\n\n');
res.write('Solr config update!\n');
res.end();
}
catch(e) {
res.write('Unexpected error occurred: ' + e.message);
res.end();
}
});
function printUsage(req, res) {
var usage = util.format(
'\nUSAGE: D:/devTools/Git/bin/curl.exe -i -F "config=@config.zip" http://%s/solrdeploy?coreName=collection1\n',
req.headers.host);
res.write(usage);
};
var server = app.listen(config.port, function () {
var host = server.address().address;
var port = server.address().port;
console.log('UpdateSolrConfig listening at http://%s:%s', host, port);
});