blob: 6ea3b0a34bf177d1e6fb0d1db615efe3d1d2e5b8 [file] [log] [blame]
import * as utils from './utils.js';
import log from 'npmlog';
import Wreck from 'wreck';
import Promise from 'bluebird';
import nmo from './nmo.js';
import { getClusterUrls, isNodeOnline } from './utils';
export const cli = isOnlineCli;
function isOnlineCli (...urls) {
return new Promise((resolve, reject) => {
if (!urls.length) {
const err = new Error('Usage: nmo isonline <url>, [<url>] ...');
err.type = 'EUSAGE';
return reject(err);
}
if (urls.length === 1 && !utils.isUri(urls[0])) {
urls = getClusterUrls(urls[0]);
}
isonline.apply(isonline, urls)
.then((results) => {
const jsonOut = nmo.config.get('json');
if (jsonOut) {
console.log(results);
return resolve(results);
}
Object.keys(results).forEach((entry) => {
let msg = 'seems to be offline';
if (results[entry]) {
msg = 'seems to be online';
}
console.log(entry, msg);
resolve(results);
});
}, reject);
});
}
export default isonline;
function isonline (...args) {
return new Promise((resolve, reject) => {
const urlPromises = args.map((url) => {
return isNodeOnline(url);
});
Promise.all(urlPromises).then((results) => {
results = results.reduce((acc, el) => {
const key = Object.keys(el)[0];
acc[key] = el[key];
return acc;
}, {});
resolve(results);
}, reject);
});
}