diff --git a/src/cli/cluster/cluster_manager.js b/src/cli/cluster/cluster_manager.js index 685c64db1246f..80b183cd663a6 100644 --- a/src/cli/cluster/cluster_manager.js +++ b/src/cli/cluster/cluster_manager.js @@ -18,6 +18,7 @@ module.exports = class ClusterManager { const serverArgv = []; const optimizerArgv = [ '--plugins.initialize=false', + '--uiSettings.enabled=false', '--server.autoListen=false', ]; diff --git a/src/server/config/schema.js b/src/server/config/schema.js index dbabdeae2d91e..959c2653454ad 100644 --- a/src/server/config/schema.js +++ b/src/server/config/schema.js @@ -145,6 +145,14 @@ module.exports = () => Joi.object({ reuseTiles: Joi.boolean(), bounds: Joi.array().items(Joi.array().items(Joi.number()).min(2).required()).min(2) }).default() - }).default() + }).default(), + + uiSettings: Joi.object({ + // this is used to prevent the uiSettings from initializing. Since they + // require the elasticsearch plugin in order to function we need to turn + // them off when we turn off the elasticsearch plugin (like we do in the + // optimizer half of the dev server) + enabled: Joi.boolean().default(true) + }).default(), }).default(); diff --git a/src/ui/settings/__tests__/index.js b/src/ui/settings/__tests__/index.js index f1a3538e1fda5..c3393ec5135ae 100644 --- a/src/ui/settings/__tests__/index.js +++ b/src/ui/settings/__tests__/index.js @@ -322,6 +322,7 @@ function instantiate({ getResult } = {}) { const configGet = sinon.stub(); configGet.withArgs('kibana.index').returns('.kibana'); configGet.withArgs('pkg.version').returns('1.2.3-test'); + configGet.withArgs('uiSettings.enabled').returns(true); const config = { get: configGet }; diff --git a/src/ui/settings/index.js b/src/ui/settings/index.js index 3709e48c8124b..d18f7491bc7a1 100644 --- a/src/ui/settings/index.js +++ b/src/ui/settings/index.js @@ -3,6 +3,12 @@ import defaultsProvider from './defaults'; export default function setupSettings(kbnServer, server, config) { const status = kbnServer.status.create('ui settings'); + + if (!config.get('uiSettings.enabled')) { + status.disabled('uiSettings.enabled config is set to `false`'); + return; + } + const uiSettings = { // returns a Promise for the value of the requested setting get, @@ -99,6 +105,11 @@ export default function setupSettings(kbnServer, server, config) { function mirrorEsStatus() { const esStatus = kbnServer.status.getForPluginId('elasticsearch'); + if (!esStatus) { + status.red('UI Settings requires the elasticsearch plugin'); + return; + } + copyStatus(); esStatus.on('change', copyStatus);