Commit aa4b3ef0 by Rashid Khan

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

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