2014-01-22 15:19:58 -06:00
|
|
|
define([
|
2014-08-07 07:35:19 -05:00
|
|
|
'lodash',
|
2014-01-22 15:19:58 -06:00
|
|
|
'crypto',
|
|
|
|
],
|
|
|
|
function (_, crypto) {
|
2013-09-13 15:52:13 -05:00
|
|
|
"use strict";
|
|
|
|
|
|
|
|
return function Settings (options) {
|
|
|
|
/**
|
|
|
|
* To add a setting, you MUST define a default. Also,
|
|
|
|
* THESE ARE ONLY DEFAULTS.
|
|
|
|
* They are overridden by config.js in the root directory
|
|
|
|
* @type {Object}
|
|
|
|
*/
|
|
|
|
var defaults = {
|
2014-07-30 04:34:09 -05:00
|
|
|
datasources : {},
|
2014-08-24 07:45:00 -05:00
|
|
|
window_title_prefix : 'Grafana - ',
|
2014-10-14 15:57:33 -05:00
|
|
|
panels : {
|
|
|
|
'graph': { path: 'panels/graph' },
|
2014-11-06 07:07:32 -06:00
|
|
|
'singlestat': { path: 'panels/singlestat' },
|
2014-10-14 15:57:33 -05:00
|
|
|
'text': { path: 'panels/text' }
|
|
|
|
},
|
2014-06-06 16:33:33 -05:00
|
|
|
plugins : {},
|
2014-01-31 08:45:52 -06:00
|
|
|
default_route : '/dashboard/file/default.json',
|
2014-05-29 23:05:49 -05:00
|
|
|
playlist_timespan : "1m",
|
2014-07-29 02:45:07 -05:00
|
|
|
unsaved_changes_warning : true,
|
2014-10-07 05:17:33 -05:00
|
|
|
search : { max_results: 100 },
|
2015-01-05 00:58:15 -06:00
|
|
|
admin : {},
|
2015-01-05 03:46:16 -06:00
|
|
|
appSubUrl: "",
|
|
|
|
buildInfo: {
|
|
|
|
version: 'master',
|
|
|
|
commit: 'NA',
|
|
|
|
buildstamp: new Date().getTime()
|
|
|
|
}
|
2013-09-13 15:52:13 -05:00
|
|
|
};
|
|
|
|
|
2015-01-28 03:25:53 -06:00
|
|
|
var settings = _.extend(options, defaults);
|
2013-09-13 15:52:13 -05:00
|
|
|
|
2014-02-26 01:49:53 -06:00
|
|
|
var parseBasicAuth = function(datasource) {
|
|
|
|
var passwordEnd = datasource.url.indexOf('@');
|
|
|
|
if (passwordEnd > 0) {
|
|
|
|
var userStart = datasource.url.indexOf('//') + 2;
|
|
|
|
var userAndPassword = datasource.url.substring(userStart, passwordEnd);
|
2014-01-31 14:23:32 -06:00
|
|
|
var bytes = crypto.charenc.Binary.stringToBytes(userAndPassword);
|
2014-02-26 01:49:53 -06:00
|
|
|
datasource.basicAuth = crypto.util.bytesToBase64(bytes);
|
|
|
|
|
|
|
|
var urlHead = datasource.url.substring(0, userStart);
|
|
|
|
datasource.url = urlHead + datasource.url.substring(passwordEnd + 1);
|
2014-01-31 14:23:32 -06:00
|
|
|
}
|
2014-02-26 01:49:53 -06:00
|
|
|
|
|
|
|
return datasource;
|
2014-01-31 14:23:32 -06:00
|
|
|
};
|
2014-01-22 15:19:58 -06:00
|
|
|
|
2014-03-28 00:13:11 -05:00
|
|
|
var parseMultipleHosts = function(datasource) {
|
|
|
|
datasource.urls = _.map(datasource.url.split(","), function (url) { return url.trim(); });
|
|
|
|
return datasource;
|
|
|
|
};
|
|
|
|
|
2014-07-30 04:34:09 -05:00
|
|
|
// backward compatible with old config
|
2014-02-15 06:46:36 -06:00
|
|
|
if (options.graphiteUrl) {
|
2014-07-30 04:34:09 -05:00
|
|
|
settings.datasources.graphite = {
|
|
|
|
type: 'graphite',
|
|
|
|
url: options.graphiteUrl,
|
|
|
|
default: true
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
if (options.elasticsearch) {
|
|
|
|
settings.datasources.elasticsearch = {
|
|
|
|
type: 'elasticsearch',
|
|
|
|
url: options.elasticsearch,
|
|
|
|
index: options.grafana_index,
|
|
|
|
grafanaDB: true
|
2014-02-15 06:46:36 -06:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2014-03-02 03:41:16 -06:00
|
|
|
_.each(settings.datasources, function(datasource, key) {
|
|
|
|
datasource.name = key;
|
2014-08-15 12:06:04 -05:00
|
|
|
if (datasource.url) { parseBasicAuth(datasource); }
|
2014-03-28 00:13:11 -05:00
|
|
|
if (datasource.type === 'influxdb') { parseMultipleHosts(datasource); }
|
2014-03-02 03:41:16 -06:00
|
|
|
});
|
2014-02-26 01:49:53 -06:00
|
|
|
|
2014-06-06 16:33:33 -05:00
|
|
|
if (settings.plugins.panels) {
|
2014-10-14 15:57:33 -05:00
|
|
|
_.extend(settings.panels, settings.plugins.panels);
|
2014-06-06 16:33:33 -05:00
|
|
|
}
|
|
|
|
|
2014-08-15 12:06:04 -05:00
|
|
|
if (!settings.plugins.dependencies) {
|
|
|
|
settings.plugins.dependencies = [];
|
|
|
|
}
|
|
|
|
|
2013-09-13 15:52:13 -05:00
|
|
|
return settings;
|
|
|
|
};
|
|
|
|
});
|