mirror of https://github.com/grafana/grafana
parent
fc713be9ce
commit
0e4dc5a888
@ -1,24 +0,0 @@ |
||||
/* |
||||
Only show an element if it meets an Elasticsearch version requirement |
||||
*/ |
||||
|
||||
define([ |
||||
'angular', |
||||
'app', |
||||
], |
||||
function (angular) { |
||||
'use strict'; |
||||
|
||||
angular |
||||
.module('kibana.directives') |
||||
.directive('esVersion', function(esVersion) { |
||||
return { |
||||
restrict: 'A', |
||||
link: function(scope, elem, attr) { |
||||
if(!esVersion.is(attr.esVersion)) { |
||||
elem.hide(); |
||||
} |
||||
} |
||||
}; |
||||
}); |
||||
}); |
@ -1,150 +0,0 @@ |
||||
define([ |
||||
'angular', |
||||
'underscore', |
||||
'config' |
||||
], |
||||
function (angular, _, config) { |
||||
'use strict'; |
||||
|
||||
var module = angular.module('kibana.services'); |
||||
|
||||
module.service('esVersion', function($http, alertSrv) { |
||||
|
||||
this.versions = []; |
||||
|
||||
// save a reference to this
|
||||
var self = this; |
||||
|
||||
this.init = function() { |
||||
//getVersions();
|
||||
}; |
||||
|
||||
var getVersions = function() { |
||||
var nodeInfo = $http({ |
||||
url: config.elasticsearch + '/_nodes', |
||||
method: "GET" |
||||
}).error(function(data, status) { |
||||
if(status === 0) { |
||||
alertSrv.set('Error',"Could not contact Elasticsearch at "+config.elasticsearch+ |
||||
". Please ensure that Elasticsearch is reachable from your system." ,'error'); |
||||
} else { |
||||
alertSrv.set('Error',"Could not reach "+config.elasticsearch+"/_nodes. If you"+ |
||||
" are using a proxy, ensure it is configured correctly",'error'); |
||||
} |
||||
}); |
||||
|
||||
return nodeInfo.then(function(p) { |
||||
_.each(p.data.nodes, function(v) { |
||||
self.versions.push(v.version.split('-')[0]); |
||||
}); |
||||
self.versions = sortVersions(_.uniq(self.versions)); |
||||
}); |
||||
}; |
||||
|
||||
// Get the max version in this cluster
|
||||
this.max = function() { |
||||
return _.last(self.versions); |
||||
}; |
||||
|
||||
// Return the lowest version in the cluster
|
||||
this.min = function() { |
||||
return _.first(self.versions); |
||||
}; |
||||
|
||||
// Sort versions from lowest to highest
|
||||
var sortVersions = function(versions) { |
||||
var _versions = _.clone(versions), |
||||
_r = []; |
||||
|
||||
while(_r.length < versions.length) { |
||||
var _h = "0"; |
||||
/*jshint -W083 */ |
||||
_.each(_versions,function(v){ |
||||
if(self.compare(_h,v)) { |
||||
_h = v; |
||||
} |
||||
}); |
||||
_versions = _.without(_versions,_h); |
||||
_r.push(_h); |
||||
} |
||||
return _r.reverse(); |
||||
}; |
||||
|
||||
/* |
||||
Takes a version string with one of the following optional comparison prefixes: >,>=,<.<= |
||||
and evaluates if the cluster meets the requirement. If the prefix is omitted exact match |
||||
is assumed |
||||
*/ |
||||
this.is = function(equation) { |
||||
var _v = equation, |
||||
_cf; |
||||
|
||||
if(_v.charAt(0) === '>') { |
||||
_cf = _v.charAt(1) === '=' ? self.gte(_v.slice(2)) : self.gt(_v.slice(1)); |
||||
} else if (_v.charAt(0) === '<') { |
||||
_cf = _v.charAt(1) === '=' ? self.lte(_v.slice(2)) : self.lt(_v.slice(1)); |
||||
} else { |
||||
_cf = self.eq(_v); |
||||
} |
||||
|
||||
return _cf; |
||||
}; |
||||
|
||||
// check if lowest version in cluster = `version`
|
||||
this.eq = function(version) { |
||||
return version === self.min() ? true : false; |
||||
}; |
||||
|
||||
// version > lowest version in cluster?
|
||||
this.gt = function(version) { |
||||
return version === self.min() ? false : self.gte(version); |
||||
}; |
||||
|
||||
// version < highest version in cluster?
|
||||
this.lt = function(version) { |
||||
return version === self.max() ? false : self.lte(version); |
||||
}; |
||||
|
||||
// Check if the lowest version in the cluster is >= to `version`
|
||||
this.gte = function(version) { |
||||
return self.compare(version,self.min()); |
||||
}; |
||||
|
||||
// Check if the highest version in the cluster is <= to `version`
|
||||
this.lte = function(version) { |
||||
return self.compare(self.max(),version); |
||||
}; |
||||
|
||||
// Determine if a specific version is greater than or equal to another
|
||||
this.compare = function (required,installed) { |
||||
var a = installed.split('.'); |
||||
var b = required.split('.'); |
||||
var i; |
||||
|
||||
for (i = 0; i < a.length; ++i) { |
||||
a[i] = Number(a[i]); |
||||
} |
||||
for (i = 0; i < b.length; ++i) { |
||||
b[i] = Number(b[i]); |
||||
} |
||||
if (a.length === 2) { |
||||
a[2] = 0; |
||||
} |
||||
|
||||
if (a[0] > b[0]){return true;} |
||||
if (a[0] < b[0]){return false;} |
||||
|
||||
if (a[1] > b[1]){return true;} |
||||
if (a[1] < b[1]){return false;} |
||||
|
||||
if (a[2] > b[2]){return true;} |
||||
if (a[2] < b[2]){return false;} |
||||
|
||||
return true; |
||||
}; |
||||
|
||||
this.init(); |
||||
|
||||
}); |
||||
|
||||
}); |
Loading…
Reference in new issue