UNPKG

@spalger/kibana

Version:

Kibana is an open source (Apache Licensed), browser based analytics and search dashboard for Elasticsearch. Kibana is a snap to setup and start using. Kibana strives to be easy to get started with, while also being flexible and powerful, just like Elastic

58 lines (45 loc) 1.88 kB
var Promise = require('bluebird'); var isUpgradeable = require('./is_upgradeable'); var _ = require('lodash'); var format = require('util').format; var utils = require('requirefrom')('src/utils'); module.exports = function (server) { var MAX_INTEGER = Math.pow(2, 53) - 1; var client = server.plugins.elasticsearch.client; var config = server.config(); return function (response) { var newConfig = {}; // Check to see if there are any doc. If not then we set the build number and id if (response.hits.hits.length === 0) { return client.create({ index: config.get('kibana.index'), type: 'config', body: { buildNum: config.get('pkg.buildNum') }, id: config.get('pkg.version') }); } // if we already have a the current version in the index then we need to stop var devConfig = _.find(response.hits.hits, function currentVersion(hit) { return hit._id !== '@@version' && hit._id === config.get('pkg.version'); }); if (devConfig) return Promise.resolve(); // Look for upgradeable configs. If none of them are upgradeable // then resolve with null. var body = _.find(response.hits.hits, isUpgradeable.bind(null, server)); if (!body) return Promise.resolve(); // if the build number is still the template string (which it wil be in development) // then we need to set it to the max interger. Otherwise we will set it to the build num body._source.buildNum = config.get('pkg.buildNum'); server.log(['plugin', 'elasticsearch'], { tmpl: 'Upgrade config from <%= prevVersion %> to <%= newVersion %>', prevVersion: body._id, newVersion: config.get('pkg.version') }); return client.create({ index: config.get('kibana.index'), type: 'config', body: body._source, id: config.get('pkg.version') }); }; };