diff --git a/src/controllers/admin.js b/src/controllers/admin.js index 52cf194353..4487167873 100644 --- a/src/controllers/admin.js +++ b/src/controllers/admin.js @@ -211,8 +211,29 @@ adminController.flags.get = function(req, res, next) { }; adminController.database.get = function(req, res, next) { - db.info(function (err, data) { - res.render('admin/advanced/database', data); + async.parallel({ + redis: function(next) { + if (nconf.get('redis')) { + var rdb = require('../database/redis'); + var cxn = rdb.connect(); + rdb.info(cxn, next); + } else { + next(); + } + }, + mongo: function(next) { + if (nconf.get('mongo')) { + var mdb = require('../database/mongo'); + mdb.info(mdb.client, next); + } else { + next(); + } + } + }, function(err, results) { + if (err) { + return next(err); + } + res.render('admin/advanced/database', results); }); }; diff --git a/src/database/mongo.js b/src/database/mongo.js index e031132b99..63fdc8b9c2 100644 --- a/src/database/mongo.js +++ b/src/database/mongo.js @@ -158,6 +158,24 @@ }); }; + module.info = function(db, callback) { + db.stats({scale:1024}, function(err, stats) { + if(err) { + return callback(err); + } + + stats.avgObjSize = (stats.avgObjSize / 1024).toFixed(2); + stats.dataSize = (stats.dataSize / 1024).toFixed(2); + stats.storageSize = (stats.storageSize / 1024).toFixed(2); + stats.fileSize = (stats.fileSize / 1024).toFixed(2); + stats.indexSize = (stats.indexSize / 1024).toFixed(2); + stats.raw = JSON.stringify(stats, null, 4); + stats.mongo = true; + + callback(null, stats); + }); + }; + module.close = function() { db.close(); }; diff --git a/src/database/mongo/main.js b/src/database/mongo/main.js index eba0b3b14b..7ba58499d3 100644 --- a/src/database/mongo/main.js +++ b/src/database/mongo/main.js @@ -79,24 +79,6 @@ module.exports = function(db, module) { db.dropDatabase(callback); }; - module.info = function(callback) { - db.stats({scale:1024}, function(err, stats) { - if(err) { - return callback(err); - } - - stats.avgObjSize = (stats.avgObjSize / 1024).toFixed(2); - stats.dataSize = (stats.dataSize / 1024).toFixed(2); - stats.storageSize = (stats.storageSize / 1024).toFixed(2); - stats.fileSize = (stats.fileSize / 1024).toFixed(2); - stats.indexSize = (stats.indexSize / 1024).toFixed(2); - stats.raw = JSON.stringify(stats, null, 4); - stats.mongo = true; - - callback(null, stats); - }); - }; - module.exists = function(key, callback) { if (!key) { return callback(); diff --git a/src/database/redis.js b/src/database/redis.js index 8e06ce837a..1c224276cc 100644 --- a/src/database/redis.js +++ b/src/database/redis.js @@ -115,6 +115,28 @@ redisClient.quit(); }; + module.info = function(cxn, callback) { + cxn.info(function (err, data) { + if (err) { + return callback(err); + } + + var lines = data.toString().split("\r\n").sort(); + var redisData = {}; + lines.forEach(function (line) { + var parts = line.split(':'); + if (parts[1]) { + redisData[parts[0]] = parts[1]; + } + }); + + redisData.raw = JSON.stringify(redisData, null, 4); + redisData.redis = true; + + callback(null, redisData); + }); + }; + module.helpers = module.helpers || {}; module.helpers.redis = require('./redis/helpers'); }(exports)); diff --git a/src/database/redis/main.js b/src/database/redis/main.js index 84e31eaae4..503d515569 100644 --- a/src/database/redis/main.js +++ b/src/database/redis/main.js @@ -35,27 +35,7 @@ module.exports = function(redisClient, module) { }); }; - module.info = function(callback) { - redisClient.info(function (err, data) { - if(err) { - return callback(err); - } - var lines = data.toString().split("\r\n").sort(); - var redisData = {}; - lines.forEach(function (line) { - var parts = line.split(':'); - if (parts[1]) { - redisData[parts[0]] = parts[1]; - } - }); - - redisData.raw = JSON.stringify(redisData, null, 4); - redisData.redis = true; - - callback(null, redisData); - }); - }; module.exists = function(key, callback) { redisClient.exists(key, function(err, exists) { diff --git a/src/views/admin/advanced/database.tpl b/src/views/admin/advanced/database.tpl index e08daac3f7..740418fc35 100644 --- a/src/views/admin/advanced/database.tpl +++ b/src/views/admin/advanced/database.tpl @@ -1,5 +1,23 @@
{mongo.raw}
{raw}
+ {redis.raw}