Merge pull request #30 from spenceralger/ping_1_0

Stopped overriding the ping method provided by the 1.0 API
This commit is contained in:
spenceralger
2014-01-16 14:45:22 -08:00
7 changed files with 143 additions and 47 deletions

View File

@ -9,7 +9,6 @@ module.exports = function (branch, done) {
var chalk = require('chalk');
var path = require('path');
var templates = require('./templates');
var castExistsRE = /exists/;
var usesBulkBodyRE = /^(bulk|msearch)$/;
var urlParamRE = /\{(\w+)\}/g;
@ -167,10 +166,6 @@ module.exports = function (branch, done) {
spec.bulkBody = true;
}
if (castExistsRE.test(name)) {
spec.castExists = true;
}
var urls = _.difference(def.url.paths, aliases[name]);
var urlSignatures = [];
urls = _.map(urls, function (url) {
@ -240,9 +235,7 @@ module.exports = function (branch, done) {
'url',
'urls',
'needBody',
'bulkBody',
'castExists',
'castNotFound'
'bulkBody'
]),
location: location,
docUrl: def.documentation,
@ -283,13 +276,9 @@ module.exports = function (branch, done) {
method = 'POST';
}
else if (methodsAre('GET', 'HEAD')) {
if (action.spec.castExists) {
method = 'HEAD';
} else {
method = 'GET';
}
}
}
if (method) {
if (method !== 'GET') {

View File

@ -184,6 +184,53 @@ api.cat.prototype.allocation = ca({
]
});
/**
* Perform a [cat.count](http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/cat-count.html) request
*
* @param {Object} params - An object with parameters used to carry out this action
* @param {Boolean} params.local - Return local information, do not retrieve the state from master node (default: false)
* @param {Date, Number} params.masterTimeout - Explicit operation timeout for connection to master node
* @param {String, String[], Boolean} params.h - Comma-separated list of column names to display
* @param {Boolean} params.help - Return help information
* @param {Boolean} params.v - Verbose mode. Display column headers
* @param {String, String[], Boolean} params.index - A comma-separated list of index names to limit the returned information
*/
api.cat.prototype.count = ca({
params: {
local: {
type: 'boolean'
},
masterTimeout: {
type: 'time',
name: 'master_timeout'
},
h: {
type: 'list'
},
help: {
type: 'boolean',
'default': false
},
v: {
type: 'boolean',
'default': false
}
},
urls: [
{
fmt: '/_cat/count/<%=index%>',
req: {
index: {
type: 'list'
}
}
},
{
fmt: '/_cat/count'
}
]
});
/**
* Perform a [cat.health](http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/cat-health.html) request
*
@ -192,6 +239,7 @@ api.cat.prototype.allocation = ca({
* @param {Date, Number} params.masterTimeout - Explicit operation timeout for connection to master node
* @param {String, String[], Boolean} params.h - Comma-separated list of column names to display
* @param {Boolean} params.help - Return help information
* @param {Boolean} [params.ts=true] - Set to false to disable timestamping
* @param {Boolean} params.v - Verbose mode. Display column headers
*/
api.cat.prototype.health = ca({
@ -210,6 +258,10 @@ api.cat.prototype.health = ca({
type: 'boolean',
'default': false
},
ts: {
type: 'boolean',
'default': true
},
v: {
type: 'boolean',
'default': false
@ -247,6 +299,7 @@ api.cat.prototype.help = ca({
* @param {Date, Number} params.masterTimeout - Explicit operation timeout for connection to master node
* @param {String, String[], Boolean} params.h - Comma-separated list of column names to display
* @param {Boolean} params.help - Return help information
* @param {Boolean} params.pri - Set to true to return stats only for primary shards
* @param {Boolean} params.v - Verbose mode. Display column headers
* @param {String, String[], Boolean} params.index - A comma-separated list of index names to limit the returned information
*/
@ -275,6 +328,10 @@ api.cat.prototype.indices = ca({
type: 'boolean',
'default': false
},
pri: {
type: 'boolean',
'default': false
},
v: {
type: 'boolean',
'default': false
@ -403,6 +460,63 @@ api.cat.prototype.pendingTasks = ca({
}
});
/**
* Perform a [cat.recovery](http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/cat-recovery.html) request
*
* @param {Object} params - An object with parameters used to carry out this action
* @param {String} params.bytes - The unit in which to display byte values
* @param {Boolean} params.local - Return local information, do not retrieve the state from master node (default: false)
* @param {Date, Number} params.masterTimeout - Explicit operation timeout for connection to master node
* @param {String, String[], Boolean} params.h - Comma-separated list of column names to display
* @param {Boolean} params.help - Return help information
* @param {Boolean} params.v - Verbose mode. Display column headers
* @param {String, String[], Boolean} params.index - A comma-separated list of index names to limit the returned information
*/
api.cat.prototype.recovery = ca({
params: {
bytes: {
type: 'enum',
options: [
'b',
'k',
'm',
'g'
]
},
local: {
type: 'boolean'
},
masterTimeout: {
type: 'time',
name: 'master_timeout'
},
h: {
type: 'list'
},
help: {
type: 'boolean',
'default': false
},
v: {
type: 'boolean',
'default': false
}
},
urls: [
{
fmt: '/_cat/recovery/<%=index%>',
req: {
index: {
type: 'list'
}
}
},
{
fmt: '/_cat/recovery'
}
]
});
/**
* Perform a [cat.shards](http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/cat-shards.html) request
*
@ -1607,7 +1721,6 @@ api.exists = ca({
},
sortOrder: -3
},
castExists: true,
method: 'HEAD'
});
@ -2415,7 +2528,6 @@ api.indices.prototype.exists = ca({
},
sortOrder: -1
},
castExists: true,
method: 'HEAD'
});
@ -2481,7 +2593,6 @@ api.indices.prototype.existsAlias = ca({
}
}
],
castExists: true,
method: 'HEAD'
});
@ -2501,7 +2612,6 @@ api.indices.prototype.existsTemplate = ca({
},
sortOrder: -1
},
castExists: true,
method: 'HEAD'
});
@ -2547,7 +2657,6 @@ api.indices.prototype.existsType = ca({
},
sortOrder: -2
},
castExists: true,
method: 'HEAD'
});

View File

@ -775,7 +775,6 @@ api.exists = ca({
},
sortOrder: -3
},
castExists: true,
method: 'HEAD'
});
@ -1512,7 +1511,6 @@ api.indices.prototype.exists = ca({
},
sortOrder: -1
},
castExists: true,
method: 'HEAD'
});
@ -1557,7 +1555,6 @@ api.indices.prototype.existsAlias = ca({
}
}
],
castExists: true,
method: 'HEAD'
});
@ -1593,7 +1590,6 @@ api.indices.prototype.existsType = ca({
},
sortOrder: -2
},
castExists: true,
method: 'HEAD'
});

View File

@ -29,11 +29,6 @@ module.exports = Client;
var Transport = require('./transport');
var ca = require('./client_action');
var _ = require('./utils');
var defaultApi = 'master';
var apis = {
'0.90': require('./api_0_90'),
'master': require('./api')
};
function Client(config) {
config = config || {};
@ -48,6 +43,8 @@ function Client(config) {
config.host = 'http://localhost:9200';
}
if (!this.ping) {
// 0.90 api does not include ping
this.ping = ca({
method: 'HEAD',
url: {
@ -56,6 +53,7 @@ function Client(config) {
castExists: true,
requestTimeout: 100
});
}
this.close = function () {
this.transport.close();
@ -71,12 +69,11 @@ function Client(config) {
delete this._namespaces;
}
var apiVersion = config.apiVersion || defaultApi;
if (apis.hasOwnProperty(apiVersion)) {
EsApiClient.prototype = apis[apiVersion];
} else {
throw new Error('Invalid apiVersion "' + apiVersion + '", expected one of ' + _.keys(apis).join(', '));
}
EsApiClient.prototype = _.funcEnum(config, 'apiVersion', Client.apis, 'master');
return new EsApiClient(config);
}
Client.apis = {
'master': require('./api'),
'0.90': require('./api_0_90')
};

View File

@ -196,8 +196,13 @@ function exec(transport, spec, params, cb) {
}
// control params
spec.bulkBody && (request.bulkBody = true);
spec.castExists && (request.castExists = true);
if (spec.bulkBody) {
request.bulkBody = true;
}
if (spec.method === 'HEAD') {
request.castExists = true;
}
// pick the url
if (spec.url) {

View File

@ -559,9 +559,9 @@ describe('Client Action runner', function () {
});
});
it('passes castExists', function (done) {
it('sets castExists when the method in the spec is HEAD', function (done) {
var action = makeClientAction({
castExists: true
method: 'HEAD'
});
action({}, function (err, params) {