From ba73d50a57b6460df390c2e7dd1aae2e5c45cb57 Mon Sep 17 00:00:00 2001 From: Marco Antonio Ghiani Date: Mon, 25 Nov 2024 12:54:57 +0100 Subject: [PATCH 1/9] feat(infra): deprecate config --- .../infra/server/config.ts | 113 ++++++++++++++++++ .../infra/server/index.ts | 4 +- .../infra/server/plugin.ts | 80 +------------ 3 files changed, 115 insertions(+), 82 deletions(-) create mode 100644 x-pack/plugins/observability_solution/infra/server/config.ts diff --git a/x-pack/plugins/observability_solution/infra/server/config.ts b/x-pack/plugins/observability_solution/infra/server/config.ts new file mode 100644 index 0000000000000..3e3d51f42a5d1 --- /dev/null +++ b/x-pack/plugins/observability_solution/infra/server/config.ts @@ -0,0 +1,113 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { i18n } from '@kbn/i18n'; + +import { offeringBasedSchema, schema } from '@kbn/config-schema'; +import { PluginConfigDescriptor } from '@kbn/core-plugins-server'; +import { ConfigDeprecation } from '@kbn/config'; +import { InfraConfig } from './types'; +import { publicConfigKeys } from '../common/plugin_config_types'; + +export type { InfraConfig }; + +export const config: PluginConfigDescriptor = { + schema: schema.object({ + enabled: schema.boolean({ defaultValue: true }), + alerting: schema.object({ + inventory_threshold: schema.object({ + group_by_page_size: schema.number({ defaultValue: 5_000 }), + }), + metric_threshold: schema.object({ + group_by_page_size: schema.number({ defaultValue: 10_000 }), + }), + }), + inventory: schema.object({ + compositeSize: schema.number({ defaultValue: 2000 }), + }), + sources: schema.maybe( + schema.object({ + default: schema.maybe( + schema.object({ + fields: schema.maybe( + schema.object({ + message: schema.maybe(schema.arrayOf(schema.string())), + }) + ), + }) + ), + }) + ), + featureFlags: schema.object({ + customThresholdAlertsEnabled: offeringBasedSchema({ + traditional: schema.boolean({ defaultValue: false }), + serverless: schema.boolean({ defaultValue: false }), + }), + logsUIEnabled: offeringBasedSchema({ + traditional: schema.boolean({ defaultValue: true }), + serverless: schema.boolean({ defaultValue: false }), + }), + metricsExplorerEnabled: offeringBasedSchema({ + traditional: schema.boolean({ defaultValue: true }), + serverless: schema.boolean({ defaultValue: false }), + }), + osqueryEnabled: schema.boolean({ defaultValue: true }), + inventoryThresholdAlertRuleEnabled: offeringBasedSchema({ + traditional: schema.boolean({ defaultValue: true }), + serverless: schema.boolean({ defaultValue: true }), + }), + metricThresholdAlertRuleEnabled: offeringBasedSchema({ + traditional: schema.boolean({ defaultValue: true }), + serverless: schema.boolean({ defaultValue: false }), + }), + logThresholdAlertRuleEnabled: offeringBasedSchema({ + traditional: schema.boolean({ defaultValue: true }), + serverless: schema.boolean({ defaultValue: false }), + }), + alertsAndRulesDropdownEnabled: offeringBasedSchema({ + traditional: schema.boolean({ defaultValue: true }), + serverless: schema.boolean({ defaultValue: true }), + }), + /** + * Depends on optional "profilingDataAccess" and "profiling" + * plugins. Enable both with `xpack.profiling.enabled: true` before + * enabling this feature flag. + */ + profilingEnabled: schema.boolean({ defaultValue: false }), + ruleFormV2Enabled: schema.boolean({ defaultValue: false }), + }), + }), + deprecations: () => [sourceFieldsMessageDeprecation], + exposeToBrowser: publicConfigKeys, +}; + +const sourceFieldsMessageDeprecation: ConfigDeprecation = (settings, fromPath, addDeprecation) => { + const sourceFieldsMessageSetting = settings?.xpack?.infra?.sources?.default?.fields?.message; + + if (sourceFieldsMessageSetting) { + addDeprecation({ + configPath: `${fromPath}.sources.default.fields.message`, + title: i18n.translate('xpack.infra.deprecations.sourcesDefaultFieldsMessage.title', { + defaultMessage: 'The "xpack.infra.sources.default.fields.message" setting is deprecated.', + ignoreTag: true, + }), + message: i18n.translate('xpack.infra.deprecations.sourcesDefaultFieldsMessage.message', { + defaultMessage: + 'Features using this configurations are set to be removed in v9 and this is no longer used.', + }), + level: 'warning', + documentationUrl: `https://www.elastic.co/guide/en/kibana/current/logs-ui-settings-kb.html#general-logs-ui-settings-kb`, + correctiveActions: { + manualSteps: [ + i18n.translate('xpack.infra.deprecations.sourcesDefaultFieldsMessage.manualSteps1', { + defaultMessage: 'Remove "xpack.infra.sources.default.fields.message" from kibana.yml.', + ignoreTag: true, + }), + ], + }, + }); + } +}; diff --git a/x-pack/plugins/observability_solution/infra/server/index.ts b/x-pack/plugins/observability_solution/infra/server/index.ts index 96ac6dc162c24..c381514900a72 100644 --- a/x-pack/plugins/observability_solution/infra/server/index.ts +++ b/x-pack/plugins/observability_solution/infra/server/index.ts @@ -6,11 +6,9 @@ */ import { PluginInitializerContext } from '@kbn/core/server'; -import { config, InfraConfig } from './plugin'; +export { config, type InfraConfig } from './config'; export type { InfraPluginSetup, InfraPluginStart, InfraRequestHandlerContext } from './types'; -export type { InfraConfig }; -export { config }; export async function plugin(context: PluginInitializerContext) { const { InfraServerPlugin } = await import('./plugin'); diff --git a/x-pack/plugins/observability_solution/infra/server/plugin.ts b/x-pack/plugins/observability_solution/infra/server/plugin.ts index b8becb916a4e3..6008954b63bde 100644 --- a/x-pack/plugins/observability_solution/infra/server/plugin.ts +++ b/x-pack/plugins/observability_solution/infra/server/plugin.ts @@ -6,13 +6,7 @@ */ import { Server } from '@hapi/hapi'; -import { schema, offeringBasedSchema } from '@kbn/config-schema'; -import { - CoreStart, - Plugin, - PluginConfigDescriptor, - PluginInitializerContext, -} from '@kbn/core/server'; +import { CoreStart, Plugin, PluginInitializerContext } from '@kbn/core/server'; import { handleEsError } from '@kbn/es-ui-shared-plugin/server'; import { i18n } from '@kbn/i18n'; import { Logger } from '@kbn/logging'; @@ -26,7 +20,6 @@ import { import { type AlertsLocatorParams, alertsLocatorID } from '@kbn/observability-plugin/common'; import { mapValues } from 'lodash'; import { LOGS_FEATURE_ID, METRICS_FEATURE_ID } from '../common/constants'; -import { publicConfigKeys } from '../common/plugin_config_types'; import { LOGS_FEATURE, METRICS_FEATURE } from './features'; import { registerRoutes } from './infra_server'; import { InfraServerPluginSetupDeps, InfraServerPluginStartDeps } from './lib/adapters/framework'; @@ -61,77 +54,6 @@ import { UsageCollector } from './usage/usage_collector'; import { mapSourceToLogView } from './utils/map_source_to_log_view'; import { uiSettings } from '../common/ui_settings'; -export const config: PluginConfigDescriptor = { - schema: schema.object({ - enabled: schema.boolean({ defaultValue: true }), - alerting: schema.object({ - inventory_threshold: schema.object({ - group_by_page_size: schema.number({ defaultValue: 5_000 }), - }), - metric_threshold: schema.object({ - group_by_page_size: schema.number({ defaultValue: 10_000 }), - }), - }), - inventory: schema.object({ - compositeSize: schema.number({ defaultValue: 2000 }), - }), - sources: schema.maybe( - schema.object({ - default: schema.maybe( - schema.object({ - fields: schema.maybe( - schema.object({ - message: schema.maybe(schema.arrayOf(schema.string())), - }) - ), - }) - ), - }) - ), - featureFlags: schema.object({ - customThresholdAlertsEnabled: offeringBasedSchema({ - traditional: schema.boolean({ defaultValue: false }), - serverless: schema.boolean({ defaultValue: false }), - }), - logsUIEnabled: offeringBasedSchema({ - traditional: schema.boolean({ defaultValue: true }), - serverless: schema.boolean({ defaultValue: false }), - }), - metricsExplorerEnabled: offeringBasedSchema({ - traditional: schema.boolean({ defaultValue: true }), - serverless: schema.boolean({ defaultValue: false }), - }), - osqueryEnabled: schema.boolean({ defaultValue: true }), - inventoryThresholdAlertRuleEnabled: offeringBasedSchema({ - traditional: schema.boolean({ defaultValue: true }), - serverless: schema.boolean({ defaultValue: true }), - }), - metricThresholdAlertRuleEnabled: offeringBasedSchema({ - traditional: schema.boolean({ defaultValue: true }), - serverless: schema.boolean({ defaultValue: false }), - }), - logThresholdAlertRuleEnabled: offeringBasedSchema({ - traditional: schema.boolean({ defaultValue: true }), - serverless: schema.boolean({ defaultValue: false }), - }), - alertsAndRulesDropdownEnabled: offeringBasedSchema({ - traditional: schema.boolean({ defaultValue: true }), - serverless: schema.boolean({ defaultValue: true }), - }), - /** - * Depends on optional "profilingDataAccess" and "profiling" - * plugins. Enable both with `xpack.profiling.enabled: true` before - * enabling this feature flag. - */ - profilingEnabled: schema.boolean({ defaultValue: false }), - ruleFormV2Enabled: schema.boolean({ defaultValue: false }), - }), - }), - exposeToBrowser: publicConfigKeys, -}; - -export type { InfraConfig }; - export interface KbnServer extends Server { usage: any; } From bd7573966a27a07420959a1c6e01b8c57509a4f4 Mon Sep 17 00:00:00 2001 From: Marco Antonio Ghiani Date: Mon, 25 Nov 2024 15:48:21 +0100 Subject: [PATCH 2/9] feat(observability-logs-explorer): deprecate config --- .../observability_logs_explorer/public/plugin.ts | 9 ++------- .../observability_logs_explorer/server/config.ts | 3 ++- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/x-pack/plugins/observability_solution/observability_logs_explorer/public/plugin.ts b/x-pack/plugins/observability_solution/observability_logs_explorer/public/plugin.ts index 2e6ab0aeeaa0f..843f21b48ad47 100644 --- a/x-pack/plugins/observability_solution/observability_logs_explorer/public/plugin.ts +++ b/x-pack/plugins/observability_solution/observability_logs_explorer/public/plugin.ts @@ -36,13 +36,10 @@ import type { export class ObservabilityLogsExplorerPlugin implements Plugin { - private config: ObservabilityLogsExplorerConfig; private locators?: ObservabilityLogsExplorerLocators; private appStateUpdater = new BehaviorSubject(() => ({})); - constructor(context: PluginInitializerContext) { - this.config = context.config.get(); - } + constructor(context: PluginInitializerContext) {} public setup( core: CoreSetup, @@ -56,9 +53,7 @@ export class ObservabilityLogsExplorerPlugin title: logsExplorerAppTitle, category: DEFAULT_APP_CATEGORIES.observability, euiIconType: 'logoLogging', - visibleIn: this.config.navigation.showAppLink - ? ['globalSearch', 'sideNav'] - : ['globalSearch'], + visibleIn: ['globalSearch'], keywords: ['logs', 'log', 'explorer', 'logs explorer'], updater$: this.appStateUpdater, mount: async (appMountParams: ObservabilityLogsExplorerAppMountParameters) => { diff --git a/x-pack/plugins/observability_solution/observability_logs_explorer/server/config.ts b/x-pack/plugins/observability_solution/observability_logs_explorer/server/config.ts index aa89b9aa273f1..bf2c9105b8bcc 100644 --- a/x-pack/plugins/observability_solution/observability_logs_explorer/server/config.ts +++ b/x-pack/plugins/observability_solution/observability_logs_explorer/server/config.ts @@ -25,7 +25,7 @@ export const configSchema = schema.object({ export const config: PluginConfigDescriptor = { schema: configSchema, - deprecations: ({ renameFromRoot }) => [ + deprecations: ({ renameFromRoot, unused }) => [ renameFromRoot( 'xpack.discoverLogExplorer.featureFlags.deepLinkVisible', 'xpack.observabilityLogsExplorer.navigation.showAppLink', @@ -41,6 +41,7 @@ export const config: PluginConfigDescriptor = { 'xpack.observabilityLogsExplorer.enabled', { level: 'warning' } ), + unused('xpack.observabilityLogsExplorer.navigation.showAppLink', { level: 'warning' }), ], exposeToBrowser: { navigation: { From 68396f182737bf162cce19aed5f5460f780a8ee6 Mon Sep 17 00:00:00 2001 From: Marco Antonio Ghiani Date: Mon, 25 Nov 2024 16:04:59 +0100 Subject: [PATCH 3/9] feat(observability-onboarding): deprecate config --- .../observability_onboarding/kibana.jsonc | 3 +- .../application/shared/header_action_menu.tsx | 4 +- .../observability_onboarding/public/index.ts | 2 + .../observability_onboarding/public/plugin.ts | 72 +++++++++---------- .../observability_onboarding/server/config.ts | 36 ++++++++++ .../observability_onboarding/server/index.ts | 26 +------ .../observability_onboarding/server/plugin.ts | 2 +- .../server/routes/register_routes.ts | 2 +- .../server/routes/types.ts | 2 +- 9 files changed, 79 insertions(+), 70 deletions(-) create mode 100644 x-pack/plugins/observability_solution/observability_onboarding/server/config.ts diff --git a/x-pack/plugins/observability_solution/observability_onboarding/kibana.jsonc b/x-pack/plugins/observability_solution/observability_onboarding/kibana.jsonc index 8c24f5376a4bb..32ac4ee4a4ac6 100644 --- a/x-pack/plugins/observability_solution/observability_onboarding/kibana.jsonc +++ b/x-pack/plugins/observability_solution/observability_onboarding/kibana.jsonc @@ -26,7 +26,8 @@ ], "optionalPlugins": [ "cloud", - "usageCollection" + "usageCollection", + "serverless" ], "requiredBundles": [ "kibanaReact" diff --git a/x-pack/plugins/observability_solution/observability_onboarding/public/application/shared/header_action_menu.tsx b/x-pack/plugins/observability_solution/observability_onboarding/public/application/shared/header_action_menu.tsx index 1864b8ced7f8b..54dbb65da49e2 100644 --- a/x-pack/plugins/observability_solution/observability_onboarding/public/application/shared/header_action_menu.tsx +++ b/x-pack/plugins/observability_solution/observability_onboarding/public/application/shared/header_action_menu.tsx @@ -22,13 +22,13 @@ interface Props { export function ObservabilityOnboardingHeaderActionMenu({ setHeaderActionMenu, theme$ }: Props) { const { - services: { config }, + services: { serverless }, } = useKibana(); const location = useLocation(); const normalizedPathname = location.pathname.replace(/\/$/, ''); const isRootPage = normalizedPathname === ''; - const isServerless = config.serverless.enabled; + const isServerless = Boolean(serverless); if (!isServerless && !isRootPage) { return ( diff --git a/x-pack/plugins/observability_solution/observability_onboarding/public/index.ts b/x-pack/plugins/observability_solution/observability_onboarding/public/index.ts index 571e7356c3aa5..ce679f14ab50e 100644 --- a/x-pack/plugins/observability_solution/observability_onboarding/public/index.ts +++ b/x-pack/plugins/observability_solution/observability_onboarding/public/index.ts @@ -14,6 +14,7 @@ import { PluginInitializerContext, } from '@kbn/core/public'; import { SharePluginStart } from '@kbn/share-plugin/public'; +import { ServerlessPluginStart } from '@kbn/serverless/public'; import { ObservabilityOnboardingPlugin, ObservabilityOnboardingPluginSetup, @@ -45,6 +46,7 @@ export interface ObservabilityOnboardingAppServices { config: ConfigSchema; docLinks: DocLinksStart; chrome: ChromeStart; + serverless: ServerlessPluginStart; } export const plugin: PluginInitializer< diff --git a/x-pack/plugins/observability_solution/observability_onboarding/public/plugin.ts b/x-pack/plugins/observability_solution/observability_onboarding/public/plugin.ts index e9f5709839c98..0f0880dde4199 100644 --- a/x-pack/plugins/observability_solution/observability_onboarding/public/plugin.ts +++ b/x-pack/plugins/observability_solution/observability_onboarding/public/plugin.ts @@ -79,53 +79,45 @@ export class ObservabilityOnboardingPlugin public setup(core: CoreSetup, plugins: ObservabilityOnboardingPluginSetupDeps) { const stackVersion = this.ctx.env.packageInfo.version; const config = this.ctx.config.get(); - const { - ui: { enabled: isObservabilityOnboardingUiEnabled }, - } = config; const isServerlessBuild = this.ctx.env.packageInfo.buildFlavor === 'serverless'; const isDevEnvironment = this.ctx.env.mode.dev; const pluginSetupDeps = plugins; - // set xpack.observability_onboarding.ui.enabled: true - // and go to /app/observabilityOnboarding - if (isObservabilityOnboardingUiEnabled) { - core.application.register({ - id: PLUGIN_ID, - title: 'Observability Onboarding', - order: 8500, - euiIconType: 'logoObservability', - category: DEFAULT_APP_CATEGORIES.observability, - keywords: [], - async mount(appMountParameters: AppMountParameters) { - // Load application bundle and Get start service - const [{ renderApp }, [coreStart, corePlugins]] = await Promise.all([ - import('./application/app'), - core.getStartServices(), - ]); + core.application.register({ + id: PLUGIN_ID, + title: 'Observability Onboarding', + order: 8500, + euiIconType: 'logoObservability', + category: DEFAULT_APP_CATEGORIES.observability, + keywords: [], + async mount(appMountParameters: AppMountParameters) { + // Load application bundle and Get start service + const [{ renderApp }, [coreStart, corePlugins]] = await Promise.all([ + import('./application/app'), + core.getStartServices(), + ]); - const { createCallApi } = await import('./services/rest/create_call_api'); + const { createCallApi } = await import('./services/rest/create_call_api'); - createCallApi(core); + createCallApi(core); - return renderApp({ - core: coreStart, - deps: pluginSetupDeps, - appMountParameters, - corePlugins: corePlugins as ObservabilityOnboardingPluginStartDeps, - config, - context: { - isDev: isDevEnvironment, - isCloud: Boolean(pluginSetupDeps.cloud?.isCloudEnabled), - isServerless: - Boolean(pluginSetupDeps.cloud?.isServerlessEnabled) || isServerlessBuild, - stackVersion, - cloudServiceProvider: pluginSetupDeps.cloud?.csp, - }, - }); - }, - visibleIn: [], - }); - } + return renderApp({ + core: coreStart, + deps: pluginSetupDeps, + appMountParameters, + corePlugins: corePlugins as ObservabilityOnboardingPluginStartDeps, + config, + context: { + isDev: isDevEnvironment, + isCloud: Boolean(pluginSetupDeps.cloud?.isCloudEnabled), + isServerless: Boolean(pluginSetupDeps.cloud?.isServerlessEnabled) || isServerlessBuild, + stackVersion, + cloudServiceProvider: pluginSetupDeps.cloud?.csp, + }, + }); + }, + visibleIn: [], + }); this.locators = { onboarding: plugins.share.url.locators.create(new ObservabilityOnboardingLocatorDefinition()), diff --git a/x-pack/plugins/observability_solution/observability_onboarding/server/config.ts b/x-pack/plugins/observability_solution/observability_onboarding/server/config.ts new file mode 100644 index 0000000000000..28a69889677ad --- /dev/null +++ b/x-pack/plugins/observability_solution/observability_onboarding/server/config.ts @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { TypeOf, offeringBasedSchema, schema } from '@kbn/config-schema'; +import { PluginConfigDescriptor } from '@kbn/core-plugins-server'; + +const configSchema = schema.object({ + ui: schema.object({ + enabled: schema.boolean({ defaultValue: true }), + }), + serverless: schema.object({ + enabled: offeringBasedSchema({ + serverless: schema.literal(true), + options: { defaultValue: schema.contextRef('serverless') }, + }), + }), +}); + +export type ObservabilityOnboardingConfig = TypeOf; + +// plugin config +export const config: PluginConfigDescriptor = { + exposeToBrowser: { + ui: true, + serverless: true, + }, + schema: configSchema, + deprecations: ({ unused }) => [ + unused('xpack.observabilityOnboarding.ui.enabled', { level: 'warning' }), + unused('xpack.observabilityOnboarding.serverless.enabled', { level: 'warning' }), + ], +}; diff --git a/x-pack/plugins/observability_solution/observability_onboarding/server/index.ts b/x-pack/plugins/observability_solution/observability_onboarding/server/index.ts index a985045d68d7a..b8675eadb3f9a 100644 --- a/x-pack/plugins/observability_solution/observability_onboarding/server/index.ts +++ b/x-pack/plugins/observability_solution/observability_onboarding/server/index.ts @@ -5,31 +5,9 @@ * 2.0. */ -import { offeringBasedSchema, schema, TypeOf } from '@kbn/config-schema'; -import { PluginConfigDescriptor, PluginInitializerContext } from '@kbn/core/server'; +import { PluginInitializerContext } from '@kbn/core/server'; -const configSchema = schema.object({ - ui: schema.object({ - enabled: schema.boolean({ defaultValue: true }), - }), - serverless: schema.object({ - enabled: offeringBasedSchema({ - serverless: schema.literal(true), - options: { defaultValue: schema.contextRef('serverless') }, - }), - }), -}); - -export type ObservabilityOnboardingConfig = TypeOf; - -// plugin config -export const config: PluginConfigDescriptor = { - exposeToBrowser: { - ui: true, - serverless: true, - }, - schema: configSchema, -}; +export { config, type ObservabilityOnboardingConfig } from './config'; export async function plugin(initializerContext: PluginInitializerContext) { const { ObservabilityOnboardingPlugin } = await import('./plugin'); diff --git a/x-pack/plugins/observability_solution/observability_onboarding/server/plugin.ts b/x-pack/plugins/observability_solution/observability_onboarding/server/plugin.ts index ccb260a002cf2..828e6fd6a894a 100644 --- a/x-pack/plugins/observability_solution/observability_onboarding/server/plugin.ts +++ b/x-pack/plugins/observability_solution/observability_onboarding/server/plugin.ts @@ -23,9 +23,9 @@ import { ObservabilityOnboardingPluginStart, ObservabilityOnboardingPluginStartDependencies, } from './types'; -import { ObservabilityOnboardingConfig } from '.'; import { observabilityOnboardingFlow } from './saved_objects/observability_onboarding_status'; import { EsLegacyConfigService } from './services/es_legacy_config_service'; +import { ObservabilityOnboardingConfig } from './config'; export class ObservabilityOnboardingPlugin implements diff --git a/x-pack/plugins/observability_solution/observability_onboarding/server/routes/register_routes.ts b/x-pack/plugins/observability_solution/observability_onboarding/server/routes/register_routes.ts index 8fe51623510eb..40d6cf18ffafc 100644 --- a/x-pack/plugins/observability_solution/observability_onboarding/server/routes/register_routes.ts +++ b/x-pack/plugins/observability_solution/observability_onboarding/server/routes/register_routes.ts @@ -17,10 +17,10 @@ import { passThroughValidationObject, } from '@kbn/server-route-repository'; import * as t from 'io-ts'; -import { ObservabilityOnboardingConfig } from '..'; import { EsLegacyConfigService } from '../services/es_legacy_config_service'; import { ObservabilityOnboardingRequestHandlerContext } from '../types'; import { ObservabilityOnboardingRouteHandlerResources } from './types'; +import { ObservabilityOnboardingConfig } from '../config'; interface RegisterRoutes { core: CoreSetup; diff --git a/x-pack/plugins/observability_solution/observability_onboarding/server/routes/types.ts b/x-pack/plugins/observability_solution/observability_onboarding/server/routes/types.ts index 4b35272eaa330..e5d93e476b10c 100644 --- a/x-pack/plugins/observability_solution/observability_onboarding/server/routes/types.ts +++ b/x-pack/plugins/observability_solution/observability_onboarding/server/routes/types.ts @@ -13,13 +13,13 @@ import { } from '@kbn/core/server'; import * as t from 'io-ts'; import { ObservabilityOnboardingServerRouteRepository } from '.'; -import { ObservabilityOnboardingConfig } from '..'; import { EsLegacyConfigService } from '../services/es_legacy_config_service'; import { ObservabilityOnboardingPluginSetupDependencies, ObservabilityOnboardingPluginStartDependencies, ObservabilityOnboardingRequestHandlerContext, } from '../types'; +import { ObservabilityOnboardingConfig } from '../config'; export type { ObservabilityOnboardingServerRouteRepository }; From 2547beda828b492931b9aa898adaa402178567ad Mon Sep 17 00:00:00 2001 From: Marco Antonio Ghiani Date: Mon, 25 Nov 2024 16:13:55 +0100 Subject: [PATCH 4/9] feat(observability-onboarding): revert change --- .../observability_onboarding/server/routes/register_routes.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/plugins/observability_solution/observability_onboarding/server/routes/register_routes.ts b/x-pack/plugins/observability_solution/observability_onboarding/server/routes/register_routes.ts index 40d6cf18ffafc..8fe51623510eb 100644 --- a/x-pack/plugins/observability_solution/observability_onboarding/server/routes/register_routes.ts +++ b/x-pack/plugins/observability_solution/observability_onboarding/server/routes/register_routes.ts @@ -17,10 +17,10 @@ import { passThroughValidationObject, } from '@kbn/server-route-repository'; import * as t from 'io-ts'; +import { ObservabilityOnboardingConfig } from '..'; import { EsLegacyConfigService } from '../services/es_legacy_config_service'; import { ObservabilityOnboardingRequestHandlerContext } from '../types'; import { ObservabilityOnboardingRouteHandlerResources } from './types'; -import { ObservabilityOnboardingConfig } from '../config'; interface RegisterRoutes { core: CoreSetup; From e4ca97e433f84039a5b5eede2cac4a54d1492205 Mon Sep 17 00:00:00 2001 From: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Date: Mon, 25 Nov 2024 15:26:42 +0000 Subject: [PATCH 5/9] [CI] Auto-commit changed files from 'node scripts/lint_ts_projects --fix' --- x-pack/plugins/observability_solution/infra/tsconfig.json | 4 +++- .../observability_onboarding/tsconfig.json | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/observability_solution/infra/tsconfig.json b/x-pack/plugins/observability_solution/infra/tsconfig.json index efd8be77b688c..57ea88249ee80 100644 --- a/x-pack/plugins/observability_solution/infra/tsconfig.json +++ b/x-pack/plugins/observability_solution/infra/tsconfig.json @@ -116,7 +116,9 @@ "@kbn/entityManager-plugin", "@kbn/entities-schema", "@kbn/zod", - "@kbn/observability-utils-server" + "@kbn/observability-utils-server", + "@kbn/core-plugins-server", + "@kbn/config" ], "exclude": ["target/**/*"] } diff --git a/x-pack/plugins/observability_solution/observability_onboarding/tsconfig.json b/x-pack/plugins/observability_solution/observability_onboarding/tsconfig.json index 878c501a892cc..f35647555c8e7 100644 --- a/x-pack/plugins/observability_solution/observability_onboarding/tsconfig.json +++ b/x-pack/plugins/observability_solution/observability_onboarding/tsconfig.json @@ -42,7 +42,9 @@ "@kbn/deeplinks-analytics", "@kbn/custom-integrations-plugin", "@kbn/server-route-repository-utils", - "@kbn/core-application-browser" + "@kbn/core-application-browser", + "@kbn/serverless", + "@kbn/core-plugins-server" ], "exclude": [ "target/**/*" From cc18a62cb8d848a2eaf067eea087af03d521ff98 Mon Sep 17 00:00:00 2001 From: Marco Antonio Ghiani Date: Mon, 25 Nov 2024 17:03:20 +0100 Subject: [PATCH 6/9] fix: typing issues --- .../server/lib/adapters/framework/kibana_framework_adapter.ts | 3 +-- .../observability_onboarding/public/index.ts | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts b/x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts index c16dad5445af4..f245214cfa37a 100644 --- a/x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts +++ b/x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts @@ -13,8 +13,7 @@ import { UI_SETTINGS } from '@kbn/data-plugin/server'; import { TimeseriesVisData } from '@kbn/vis-type-timeseries-plugin/server'; import { DEFAULT_SPACE_ID } from '@kbn/spaces-plugin/common'; import { TSVBMetricModel } from '@kbn/metrics-data-access-plugin/common'; -import { InfraConfig } from '../../../plugin'; -import type { InfraPluginRequestHandlerContext } from '../../../types'; +import type { InfraConfig, InfraPluginRequestHandlerContext } from '../../../types'; import { CallWithRequestParams, InfraDatabaseGetIndicesAliasResponse, diff --git a/x-pack/plugins/observability_solution/observability_onboarding/public/index.ts b/x-pack/plugins/observability_solution/observability_onboarding/public/index.ts index ce679f14ab50e..2ac4909f0a271 100644 --- a/x-pack/plugins/observability_solution/observability_onboarding/public/index.ts +++ b/x-pack/plugins/observability_solution/observability_onboarding/public/index.ts @@ -46,7 +46,7 @@ export interface ObservabilityOnboardingAppServices { config: ConfigSchema; docLinks: DocLinksStart; chrome: ChromeStart; - serverless: ServerlessPluginStart; + serverless?: ServerlessPluginStart; } export const plugin: PluginInitializer< From c030bb6282ccd7df5486a0ce2476dfff20367c26 Mon Sep 17 00:00:00 2001 From: Marco Antonio Ghiani Date: Wed, 27 Nov 2024 09:54:54 +0100 Subject: [PATCH 7/9] refactor(observability_onboarding): remove dependency on serverless plugin --- .../observability_onboarding/kibana.jsonc | 3 +-- .../public/application/shared/header_action_menu.tsx | 5 ++--- .../observability_onboarding/public/index.ts | 2 -- .../observability_onboarding/tsconfig.json | 1 - 4 files changed, 3 insertions(+), 8 deletions(-) diff --git a/x-pack/plugins/observability_solution/observability_onboarding/kibana.jsonc b/x-pack/plugins/observability_solution/observability_onboarding/kibana.jsonc index 32ac4ee4a4ac6..8c24f5376a4bb 100644 --- a/x-pack/plugins/observability_solution/observability_onboarding/kibana.jsonc +++ b/x-pack/plugins/observability_solution/observability_onboarding/kibana.jsonc @@ -26,8 +26,7 @@ ], "optionalPlugins": [ "cloud", - "usageCollection", - "serverless" + "usageCollection" ], "requiredBundles": [ "kibanaReact" diff --git a/x-pack/plugins/observability_solution/observability_onboarding/public/application/shared/header_action_menu.tsx b/x-pack/plugins/observability_solution/observability_onboarding/public/application/shared/header_action_menu.tsx index 54dbb65da49e2..22af649a635a5 100644 --- a/x-pack/plugins/observability_solution/observability_onboarding/public/application/shared/header_action_menu.tsx +++ b/x-pack/plugins/observability_solution/observability_onboarding/public/application/shared/header_action_menu.tsx @@ -22,15 +22,14 @@ interface Props { export function ObservabilityOnboardingHeaderActionMenu({ setHeaderActionMenu, theme$ }: Props) { const { - services: { serverless }, + services: { context }, } = useKibana(); const location = useLocation(); const normalizedPathname = location.pathname.replace(/\/$/, ''); const isRootPage = normalizedPathname === ''; - const isServerless = Boolean(serverless); - if (!isServerless && !isRootPage) { + if (!context.isServerless && !isRootPage) { return ( Date: Wed, 27 Nov 2024 14:14:39 +0100 Subject: [PATCH 8/9] refactor(logs): update unused keys --- .../observability_logs_explorer/server/config.ts | 2 +- .../observability_onboarding/server/config.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/x-pack/plugins/observability_solution/observability_logs_explorer/server/config.ts b/x-pack/plugins/observability_solution/observability_logs_explorer/server/config.ts index bf2c9105b8bcc..bab368c0eb65c 100644 --- a/x-pack/plugins/observability_solution/observability_logs_explorer/server/config.ts +++ b/x-pack/plugins/observability_solution/observability_logs_explorer/server/config.ts @@ -41,7 +41,7 @@ export const config: PluginConfigDescriptor = { 'xpack.observabilityLogsExplorer.enabled', { level: 'warning' } ), - unused('xpack.observabilityLogsExplorer.navigation.showAppLink', { level: 'warning' }), + unused('navigation.showAppLink', { level: 'warning' }), ], exposeToBrowser: { navigation: { diff --git a/x-pack/plugins/observability_solution/observability_onboarding/server/config.ts b/x-pack/plugins/observability_solution/observability_onboarding/server/config.ts index 28a69889677ad..dcbc070e29047 100644 --- a/x-pack/plugins/observability_solution/observability_onboarding/server/config.ts +++ b/x-pack/plugins/observability_solution/observability_onboarding/server/config.ts @@ -30,7 +30,7 @@ export const config: PluginConfigDescriptor = { }, schema: configSchema, deprecations: ({ unused }) => [ - unused('xpack.observabilityOnboarding.ui.enabled', { level: 'warning' }), - unused('xpack.observabilityOnboarding.serverless.enabled', { level: 'warning' }), + unused('ui.enabled', { level: 'warning' }), + unused('serverless.enabled', { level: 'warning' }), ], }; From ed4c92371f11a39db550ebc4dde154e69835bc12 Mon Sep 17 00:00:00 2001 From: Marco Antonio Ghiani Date: Wed, 27 Nov 2024 15:29:08 +0100 Subject: [PATCH 9/9] feat(logs): adjust implementation to unuse legacy config --- .../observability_solution/logs_shared/server/config.ts | 1 + .../logs_shared/server/lib/logs_shared_types.ts | 1 + .../observability_solution/logs_shared/server/plugin.ts | 7 +++++-- .../logs_shared/server/routes/log_views/get_log_view.ts | 3 ++- .../logs_shared/server/routes/log_views/index.ts | 2 +- 5 files changed, 10 insertions(+), 4 deletions(-) diff --git a/x-pack/plugins/observability_solution/logs_shared/server/config.ts b/x-pack/plugins/observability_solution/logs_shared/server/config.ts index c144b8422826f..9dff5723e7633 100644 --- a/x-pack/plugins/observability_solution/logs_shared/server/config.ts +++ b/x-pack/plugins/observability_solution/logs_shared/server/config.ts @@ -26,4 +26,5 @@ export const configSchema = schema.object({ export const config: PluginConfigDescriptor = { schema: configSchema, + deprecations: ({ unused }) => [unused('savedObjects.logView.enabled', { level: 'warning' })], }; diff --git a/x-pack/plugins/observability_solution/logs_shared/server/lib/logs_shared_types.ts b/x-pack/plugins/observability_solution/logs_shared/server/lib/logs_shared_types.ts index d2108bdd6ce9e..4f368c4f64e46 100644 --- a/x-pack/plugins/observability_solution/logs_shared/server/lib/logs_shared_types.ts +++ b/x-pack/plugins/observability_solution/logs_shared/server/lib/logs_shared_types.ts @@ -23,4 +23,5 @@ export interface LogsSharedBackendLibs extends LogsSharedDomainLibs { getStartServices: LogsSharedPluginStartServicesAccessor; getUsageCollector: () => UsageCollector; logger: Logger; + isServerless: boolean; } diff --git a/x-pack/plugins/observability_solution/logs_shared/server/plugin.ts b/x-pack/plugins/observability_solution/logs_shared/server/plugin.ts index d1f6399104fc2..a0a29cebee9b5 100644 --- a/x-pack/plugins/observability_solution/logs_shared/server/plugin.ts +++ b/x-pack/plugins/observability_solution/logs_shared/server/plugin.ts @@ -42,7 +42,7 @@ export class LogsSharedPlugin private logViews: LogViewsService; private usageCollector: UsageCollector; - constructor(context: PluginInitializerContext) { + constructor(private readonly context: PluginInitializerContext) { this.config = context.config.get(); this.logger = context.logger.get(); this.usageCollector = {}; @@ -51,11 +51,13 @@ export class LogsSharedPlugin } public setup(core: LogsSharedPluginCoreSetup, plugins: LogsSharedServerPluginSetupDeps) { + const isServerless = this.context.env.packageInfo.buildFlavor === 'serverless'; + const framework = new KibanaFramework(core, plugins); const logViews = this.logViews.setup(); - if (this.config.savedObjects.logView.enabled) { + if (!isServerless) { // Conditionally register log view saved objects core.savedObjects.registerType(logViewSavedObjectType); } else { @@ -78,6 +80,7 @@ export class LogsSharedPlugin getStartServices: () => core.getStartServices(), getUsageCollector: () => this.usageCollector, logger: this.logger, + isServerless, }; // Register server side APIs diff --git a/x-pack/plugins/observability_solution/logs_shared/server/routes/log_views/get_log_view.ts b/x-pack/plugins/observability_solution/logs_shared/server/routes/log_views/get_log_view.ts index 4e46a06bcfe3d..9370c18243b51 100644 --- a/x-pack/plugins/observability_solution/logs_shared/server/routes/log_views/get_log_view.ts +++ b/x-pack/plugins/observability_solution/logs_shared/server/routes/log_views/get_log_view.ts @@ -14,6 +14,7 @@ export const initGetLogViewRoute = ({ config, framework, getStartServices, + isServerless, }: LogsSharedBackendLibs) => { framework .registerVersionedRoute({ @@ -41,7 +42,7 @@ export const initGetLogViewRoute = ({ * - if the log view saved object is correctly registered, perform a lookup for retrieving it * - else, skip the saved object lookup and immediately get the internal log view if exists. */ - const logView = config.savedObjects.logView.enabled + const logView = !isServerless ? await logViewsClient.getLogView(logViewId) : await logViewsClient.getInternalLogView(logViewId); diff --git a/x-pack/plugins/observability_solution/logs_shared/server/routes/log_views/index.ts b/x-pack/plugins/observability_solution/logs_shared/server/routes/log_views/index.ts index 42c23637fa1b7..4bcaa8d53ad0a 100644 --- a/x-pack/plugins/observability_solution/logs_shared/server/routes/log_views/index.ts +++ b/x-pack/plugins/observability_solution/logs_shared/server/routes/log_views/index.ts @@ -12,7 +12,7 @@ export const initLogViewRoutes = (libs: LogsSharedBackendLibs) => { initGetLogViewRoute(libs); // Register the log view update endpoint only when the Saved object is correctly registered - if (libs.config.savedObjects.logView.enabled) { + if (!libs.isServerless) { initPutLogViewRoute(libs); } };