consul
Version:
Consul client
79 lines (58 loc) • 1.36 kB
JavaScript
/**
* Catalog node
*/
;
/**
* Module dependencies.
*/
var errors = require('../errors');
var utils = require('../utils');
/**
* Initialize a new `CatalogNode` client.
*/
function CatalogNode(consul) {
this.consul = consul;
}
/**
* Lists nodes in a given DC
*/
CatalogNode.prototype.list = function(opts, callback) {
if (!callback) {
callback = opts;
opts = {};
} else if (typeof opts === 'string') {
opts = { dc: opts };
}
opts = utils.normalizeKeys(opts);
opts = utils.defaults(opts, this.consul._defaults);
var req = {
name: 'catalog.node.list',
path: '/catalog/nodes',
};
utils.options(req, opts);
this.consul._get(req, utils.body, callback);
};
/**
* Lists the services provided by a node
*/
CatalogNode.prototype.services = function(opts, callback) {
if (typeof opts === 'string') {
opts = { node: opts };
}
opts = utils.normalizeKeys(opts);
opts = utils.defaults(opts, this.consul._defaults);
var req = {
name: 'catalog.node.services',
path: '/catalog/node/{node}',
params: { node: opts.node },
};
if (!opts.node) {
return callback(this.consul._err(errors.Validation('node required'), req));
}
utils.options(req, opts);
this.consul._get(req, utils.body, callback);
};
/**
* Module Exports.
*/
exports.CatalogNode = CatalogNode;