Skip to content

Commit

Permalink
sysinfo.js should handle partial failure gracefully
Browse files Browse the repository at this point in the history
  • Loading branch information
Mike Gerdts committed Aug 23, 2019
1 parent 8a417c6 commit a6460a9
Showing 1 changed file with 36 additions and 20 deletions.
56 changes: 36 additions & 20 deletions lib/backends/linux/sysinfo.js
Expand Up @@ -31,7 +31,7 @@ var smartdc_config = require('./smartdc-config');

var LOG = null;

function getBasicInfo(callback)
function getBasicInfo(log, callback)
{
var sysinfo = {
'SDC Version': '7.0',
Expand Down Expand Up @@ -62,7 +62,7 @@ function getBasicInfo(callback)
* 'CPU Total Cores' Also misleading: # of threads
* 'CPU Virtualization' "vmx" (Intel), "svm" (AMD), or none
*/
function getCpuInfo(callback)
function getCpuInfo(log, callback)
{
fs.readFile('/proc/cpuinfo', function readCpuInfo(err, data) {
if (err) {
Expand Down Expand Up @@ -130,7 +130,7 @@ function getCpuInfo(callback)
*
* 'MiB of Memory'
*/
function getMemInfo(callback)
function getMemInfo(log, callback)
{
fs.readFile('/proc/meminfo', function readMemInfo(err, data) {
if (err) {
Expand Down Expand Up @@ -164,7 +164,7 @@ function getMemInfo(callback)
* 'sdd': {'Size in GB': 447},
* }
*/
function getDiskInfo(callback)
function getDiskInfo(log, callback)
{
execFile('/bin/lsblk', ['-Jbd', '-o', 'name,size'],
function lsBlk(err, stdout, stderr) {
Expand Down Expand Up @@ -204,7 +204,7 @@ function getDiskInfo(callback)
* 'Zpool Creation' When it was created
* 'Zpool Size in GiB' zfs used + available
*/
function getZpoolInfo(callback)
function getZpoolInfo(log, callback)
{
var sysinfo = {};

Expand Down Expand Up @@ -240,8 +240,8 @@ function getZpoolInfo(callback)
var pool = vals[0];
dsprops[pool] = {};

for (var i in props) {
dsprops[pool][props[i]] = vals[i];
for (var prop in props) {
dsprops[pool][props[prop]] = vals[prop];
}
}

Expand Down Expand Up @@ -430,7 +430,7 @@ function getZpoolInfo(callback)
* }
*
*/
function getNetInfo(callback)
function getNetInfo(log, callback)
{
var sysinfo;

Expand Down Expand Up @@ -519,7 +519,7 @@ function ipAddrToNetInfo(nets)
return ({ nics: nics, vnics: vnics, aggrs: aggrs });
}

function getSmbiosInfo(callback)
function getSmbiosInfo(log, callback)
{
var sysinfo;

Expand Down Expand Up @@ -556,30 +556,46 @@ function getSmbiosInfo(callback)
});
}

function sysinfo(callback)
function sysInfo(log, callback)
{
vasync.parallel({
'funcs': [
vasync.forEachParallel({
'inputs': [
getBasicInfo,
getCpuInfo,
getMemInfo,
getDiskInfo,
getZpoolInfo,
getNetInfo,
getSmbiosInfo
]
],
'func': function callInfoFunc(func, cb) {
// Do not blow up when something goes wrong. Return as many results
// as possible. The caller can decide whether errors are fatal.
try {
func(log, cb);
} catch(error) {
cb(error);
}
}
}, function sysinfoDone(err, results) {
var si = {};
var sysinfo = {};

if (!err) {
results.successes.unshift(si);
Object.assign.apply(this, results.successes);
for (var frag of results.successes) {
if (frag) {
Object.assign(sysinfo, frag);
}
}
callback(err, si);
callback(err, sysinfo);
});
}

module.exports = {
log: LOG,
sysinfo: sysinfo
sysInfo: sysInfo,
getBasicInfo: getBasicInfo,
getCpuInfo: getCpuInfo,
getMemInfo: getMemInfo,
getDiskInfo: getDiskInfo,
getZpoolInfo: getZpoolInfo,
getNetInfo: getNetInfo,
getSmbiosInfo: getSmbiosInfo
};

0 comments on commit a6460a9

Please sign in to comment.