Commit 4cdac5e7 by Rashid Khan

More error handling, changed es loading to use get instead of search

parent 809b0a34
...@@ -30,7 +30,7 @@ angular.module('kibana.services', []) ...@@ -30,7 +30,7 @@ angular.module('kibana.services', [])
this.clearAll = function() { this.clearAll = function() {
self.list = []; self.list = [];
}; };
}) })
.service('fields', function(dashboard, $rootScope, $http, alertSrv) { .service('fields', function(dashboard, $rootScope, $http, alertSrv) {
...@@ -53,6 +53,7 @@ angular.module('kibana.services', []) ...@@ -53,6 +53,7 @@ angular.module('kibana.services', [])
self.map(indices).then(function(result) { self.map(indices).then(function(result) {
self.mapping = _.extend(self.mapping,result); self.mapping = _.extend(self.mapping,result);
self.list = mapFields(self.mapping); self.list = mapFields(self.mapping);
console.log(self.mapping);
}); });
// Otherwise just use the cached mapping // Otherwise just use the cached mapping
} else { } else {
...@@ -116,7 +117,7 @@ angular.module('kibana.services', []) ...@@ -116,7 +117,7 @@ angular.module('kibana.services', [])
ret[propName] = obj; ret[propName] = obj;
} }
} }
return ret; return ret;
}; };
}) })
...@@ -242,11 +243,11 @@ angular.module('kibana.services', []) ...@@ -242,11 +243,11 @@ angular.module('kibana.services', [])
ids : [], ids : [],
}); });
// For convenience // For convenience
var ejs = ejsResource(config.elasticsearch); var ejs = ejsResource(config.elasticsearch);
var _q = dashboard.current.services.query; var _q = dashboard.current.services.query;
this.colors = [ this.colors = [
"#7EB26D","#EAB839","#6ED0E0","#EF843C","#E24D42","#1F78C1","#BA43A9","#705DA0", //1 "#7EB26D","#EAB839","#6ED0E0","#EF843C","#E24D42","#1F78C1","#BA43A9","#705DA0", //1
"#508642","#CCA300","#447EBC","#C15C17","#890F02","#0A437C","#6D1F62","#584477", //2 "#508642","#CCA300","#447EBC","#C15C17","#890F02","#0A437C","#6D1F62","#584477", //2
"#B7DBAB","#F4D598","#70DBED","#F9BA8F","#F29191","#82B5D8","#E5A8E2","#AEA2E0", //3 "#B7DBAB","#F4D598","#70DBED","#F9BA8F","#F29191","#82B5D8","#E5A8E2","#AEA2E0", //3
...@@ -264,7 +265,7 @@ angular.module('kibana.services', []) ...@@ -264,7 +265,7 @@ angular.module('kibana.services', [])
_q = dashboard.current.services.query; _q = dashboard.current.services.query;
self.list = dashboard.current.services.query.list; self.list = dashboard.current.services.query.list;
self.ids = dashboard.current.services.query.ids; self.ids = dashboard.current.services.query.ids;
if (self.ids.length === 0) { if (self.ids.length === 0) {
self.set({}); self.set({});
} }
...@@ -330,7 +331,7 @@ angular.module('kibana.services', []) ...@@ -330,7 +331,7 @@ angular.module('kibana.services', [])
}; };
this.idsByMode = function(config) { this.idsByMode = function(config) {
switch(config.mode) switch(config.mode)
{ {
case 'all': case 'all':
return self.ids; return self.ids;
...@@ -370,7 +371,7 @@ angular.module('kibana.services', []) ...@@ -370,7 +371,7 @@ angular.module('kibana.services', [])
}); });
// For convenience // For convenience
var ejs = ejsResource(config.elasticsearch); var ejs = ejsResource(config.elasticsearch);
var _f = dashboard.current.services.filter; var _f = dashboard.current.services.filter;
// Save a reference to this // Save a reference to this
...@@ -390,7 +391,7 @@ angular.module('kibana.services', []) ...@@ -390,7 +391,7 @@ angular.module('kibana.services', [])
}; };
// This is used both for adding filters and modifying them. // This is used both for adding filters and modifying them.
// If an id is passed, the filter at that id is updated // If an id is passed, the filter at that id is updated
this.set = function(filter,id) { this.set = function(filter,id) {
_.defaults(filter,{mandate:'must'}); _.defaults(filter,{mandate:'must'});
...@@ -425,7 +426,7 @@ angular.module('kibana.services', []) ...@@ -425,7 +426,7 @@ angular.module('kibana.services', [])
var either_bool = ejs.BoolFilter().must(ejs.MatchAllFilter()); var either_bool = ejs.BoolFilter().must(ejs.MatchAllFilter());
_.each(ids,function(id) { _.each(ids,function(id) {
if(self.list[id].active) { if(self.list[id].active) {
switch(self.list[id].mandate) switch(self.list[id].mandate)
{ {
case 'mustNot': case 'mustNot':
bool = bool.mustNot(self.getEjsObj(id)); bool = bool.mustNot(self.getEjsObj(id));
...@@ -563,7 +564,7 @@ angular.module('kibana.services', []) ...@@ -563,7 +564,7 @@ angular.module('kibana.services', [])
}; };
// An elasticJS client to use // An elasticJS client to use
var ejs = ejsResource(config.elasticsearch); var ejs = ejsResource(config.elasticsearch);
var gist_pattern = /(^\d{5,}$)|(^[a-z0-9]{10,}$)|(gist.github.com(\/*.*)\/[a-z0-9]{5,}\/*$)/; var gist_pattern = /(^\d{5,}$)|(^[a-z0-9]{10,}$)|(gist.github.com(\/*.*)\/[a-z0-9]{5,}\/*$)/;
// Store a reference to this // Store a reference to this
...@@ -602,8 +603,8 @@ angular.module('kibana.services', []) ...@@ -602,8 +603,8 @@ angular.module('kibana.services', [])
// No dashboard in the URL // No dashboard in the URL
} else { } else {
// Check if browser supports localstorage, and if there's a dashboard // Check if browser supports localstorage, and if there's a dashboard
if (window.Modernizr.localstorage && if (window.Modernizr.localstorage &&
!(_.isUndefined(window.localStorage['dashboard'])) && !(_.isUndefined(window.localStorage['dashboard'])) &&
window.localStorage['dashboard'] !== '' window.localStorage['dashboard'] !== ''
) { ) {
...@@ -612,11 +613,11 @@ angular.module('kibana.services', []) ...@@ -612,11 +613,11 @@ angular.module('kibana.services', [])
// No? Ok, grab default.json, its all we have now // No? Ok, grab default.json, its all we have now
} else { } else {
self.file_load('default.json'); self.file_load('default.json');
} }
} }
}; };
// Since the dashboard is responsible for index computation, we can compute and assign the indices // Since the dashboard is responsible for index computation, we can compute and assign the indices
// here before telling the panels to refresh // here before telling the panels to refresh
this.refresh = function() { this.refresh = function() {
if(self.current.index.interval !== 'none') { if(self.current.index.interval !== 'none') {
...@@ -626,7 +627,7 @@ angular.module('kibana.services', []) ...@@ -626,7 +627,7 @@ angular.module('kibana.services', [])
self.current.index.pattern,self.current.index.interval self.current.index.pattern,self.current.index.interval
).then(function (p) { ).then(function (p) {
if(p.length > 0) { if(p.length > 0) {
self.indices = p; self.indices = p;
} else { } else {
//TODO: Option to not failover //TODO: Option to not failover
if(self.current.failover) { if(self.current.failover) {
...@@ -711,7 +712,7 @@ angular.module('kibana.services', []) ...@@ -711,7 +712,7 @@ angular.module('kibana.services', [])
return true; return true;
} else { } else {
return false; return false;
} }
}; };
this.purge_default = function() { this.purge_default = function() {
...@@ -749,20 +750,22 @@ angular.module('kibana.services', []) ...@@ -749,20 +750,22 @@ angular.module('kibana.services', [])
}); });
}; };
this.elasticsearch_load = function(type,id) { this.elasticsearch_load = function(type,id) {
var request = ejs.Request().indices(config.kibana_index).types(type); return $http({
return request.query( url: config.elasticsearch + "/" + config.kibana_index + "/"+type+"/"+id,
ejs.IdsQuery(id) method: "GET"
).doSearch(function(results) { }).error(function(data, status, headers, conf) {
if(_.isUndefined(results)) { if(status === 0) {
return false; alertSrv.set('Error',"Could not contact Elasticsearch at "+config.elasticsearch+
". Please ensure that Elasticsearch is reachable from your system." ,'error');
} else { } else {
self.dash_load(angular.fromJson(results.hits.hits[0]['_source']['dashboard'])); alertSrv.set('Error',"Could not find "+id+". If you"+
return true; " are using a proxy, ensure it is configured correctly",'error');
} }
}, return false;
function(data,status) { }).success(function(data, status, headers) {
alertSrv.set('Error','Could not load '+config.elasticsearch+"/"+config.kibana_index+"/"+type+"/"+id,'error'); self.dash_load(angular.fromJson(data['_source']['dashboard']));
}); });
}; };
...@@ -770,7 +773,7 @@ angular.module('kibana.services', []) ...@@ -770,7 +773,7 @@ angular.module('kibana.services', [])
// Clone object so we can modify it without influencing the existing obejct // Clone object so we can modify it without influencing the existing obejct
var save = _.clone(self.current); var save = _.clone(self.current);
var id; var id;
// Change title on object clone // Change title on object clone
if (type === 'dashboard') { if (type === 'dashboard') {
id = save.title = _.isUndefined(title) ? self.current.title : title; id = save.title = _.isUndefined(title) ? self.current.title : title;
...@@ -783,10 +786,9 @@ angular.module('kibana.services', []) ...@@ -783,10 +786,9 @@ angular.module('kibana.services', [])
title: save.title, title: save.title,
dashboard: angular.toJson(save) dashboard: angular.toJson(save)
}); });
request = type === 'temp' && ttl ? request.ttl(ttl) : request; request = type === 'temp' && ttl ? request.ttl(ttl) : request;
// TOFIX: Implement error handling here
return request.doIndex( return request.doIndex(
// Success // Success
function(result) { function(result) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment