From db089ea5ce3cdd67d92cf4b01f5c8301cbd4d2fa Mon Sep 17 00:00:00 2001 From: Chris Roberson Date: Thu, 23 Aug 2018 09:04:16 -0400 Subject: [PATCH] [Monitoring] Ensure the settings api always return the xpack/default_admin_email (#22220) * If the settings collector returns nothing, ensure the settings api still returns a null value for default_admin_email * Update test * Feedback from PR --- .../collectors/get_settings_collector.js | 13 ++++++++----- .../xpack_main/server/routes/api/v1/settings.js | 5 ++++- .../apis/xpack_main/settings/settings.js | 1 + 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/x-pack/plugins/monitoring/server/kibana_monitoring/collectors/get_settings_collector.js b/x-pack/plugins/monitoring/server/kibana_monitoring/collectors/get_settings_collector.js index d28721165ab8..c0793a4bb6b9 100644 --- a/x-pack/plugins/monitoring/server/kibana_monitoring/collectors/get_settings_collector.js +++ b/x-pack/plugins/monitoring/server/kibana_monitoring/collectors/get_settings_collector.js @@ -65,11 +65,7 @@ export function getSettingsCollector(server) { // skip everything if defaultAdminEmail === undefined if (defaultAdminEmail || (defaultAdminEmail === null && shouldUseNull)) { - kibanaSettingsData = { - xpack: { - default_admin_email: defaultAdminEmail - } - }; + kibanaSettingsData = this.getEmailValueStructure(defaultAdminEmail); this.log.debug(`[${defaultAdminEmail}] default admin email setting found, sending [${KIBANA_SETTINGS_TYPE}] monitoring document.`); } else { this.log.debug(`not sending [${KIBANA_SETTINGS_TYPE}] monitoring document because [${defaultAdminEmail}] is null or invalid.`); @@ -80,6 +76,13 @@ export function getSettingsCollector(server) { // returns undefined if there was no result return kibanaSettingsData; + }, + getEmailValueStructure(email) { + return { + xpack: { + default_admin_email: email + } + }; } }); } diff --git a/x-pack/plugins/xpack_main/server/routes/api/v1/settings.js b/x-pack/plugins/xpack_main/server/routes/api/v1/settings.js index 13edba4a7f18..b546054bfe7f 100644 --- a/x-pack/plugins/xpack_main/server/routes/api/v1/settings.js +++ b/x-pack/plugins/xpack_main/server/routes/api/v1/settings.js @@ -26,7 +26,10 @@ export function settingsRoute(server, kbnServer) { const { collectorSet } = server.usage; const settingsCollector = collectorSet.getCollectorByType(KIBANA_SETTINGS_TYPE); - const settings = await settingsCollector.fetch(callCluster); + let settings = await settingsCollector.fetch(callCluster); + if (!settings) { + settings = settingsCollector.getEmailValueStructure(null); + } const uuid = await getClusterUuid(callCluster); const kibana = getKibanaInfoForStats(server, kbnServer); diff --git a/x-pack/test/api_integration/apis/xpack_main/settings/settings.js b/x-pack/test/api_integration/apis/xpack_main/settings/settings.js index b6e1979da65d..9f7055c7b833 100644 --- a/x-pack/test/api_integration/apis/xpack_main/settings/settings.js +++ b/x-pack/test/api_integration/apis/xpack_main/settings/settings.js @@ -35,6 +35,7 @@ export default function ({ getService }) { expect(body.settings.kibana.transport_address.length > 0).to.eql(true); expect(body.settings.kibana.version.length > 0).to.eql(true); expect(body.settings.kibana.status.length > 0).to.eql(true); + expect(body.settings.xpack.default_admin_email).to.eql(null); }); }); });