From eee79d67aca6ea9bcf058166a3510b13eb1b7383 Mon Sep 17 00:00:00 2001 From: Gloria Hornero Date: Tue, 2 Dec 2025 10:38:37 +0100 Subject: [PATCH] Add support for essentials and ease tiers in Scout (#244553) ## Summary Adds support for the essentials and ease severless tiers to the Scout testing framework, enabling local server startup with the Security Essentials and Security EASE tier configuration. ### Testing * Verified that node scripts/scout.js start-server --serverless=security-essentials successfully starts the environment * Verified that node scripts/scout.js start-server --serverless=security-ease successfully starts the environment --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> (cherry picked from commit d273b13e561742ececd030f269b746da54915169) # Conflicts: # .buildkite/scripts/steps/test/scout_configs.sh --- .../scripts/steps/test/scout_configs.sh | 2 +- .../src/helpers/cli_processing.ts | 2 ++ .../security-ease.serverless.config.ts | 34 ++++++++++++++++++ .../security-essentials.serverless.config.ts | 36 +++++++++++++++++++ .../shared/kbn-scout/src/playwright/tags.ts | 6 ++++ .../src/playwright/utils/runner_utils.ts | 10 +++++- .../shared/kbn-scout/src/servers/flags.ts | 4 ++- .../shared/kbn-scout/src/types/cli.d.ts | 4 ++- 8 files changed, 94 insertions(+), 4 deletions(-) create mode 100644 src/platform/packages/shared/kbn-scout/src/config/serverless/security-ease.serverless.config.ts create mode 100644 src/platform/packages/shared/kbn-scout/src/config/serverless/security-essentials.serverless.config.ts diff --git a/.buildkite/scripts/steps/test/scout_configs.sh b/.buildkite/scripts/steps/test/scout_configs.sh index fb20ba1af1ae7..66f3be3181248 100644 --- a/.buildkite/scripts/steps/test/scout_configs.sh +++ b/.buildkite/scripts/steps/test/scout_configs.sh @@ -64,7 +64,7 @@ declare -A RUN_MODES RUN_MODES["platform"]="--stateful --serverless=es --serverless=oblt --serverless=security" RUN_MODES["observability"]="--stateful --serverless=oblt --serverless=oblt-logs-essentials" RUN_MODES["search"]="--stateful --serverless=es" -RUN_MODES["security"]="--stateful --serverless=security" +RUN_MODES["security"]="--stateful --serverless=security --serverless=security-essentials --serverless=security-ease" # Determine valid run modes for the group RUN_MODE_LIST=${RUN_MODES[$group]} diff --git a/src/platform/packages/private/kbn-scout-reporting/src/helpers/cli_processing.ts b/src/platform/packages/private/kbn-scout-reporting/src/helpers/cli_processing.ts index eac910aa6ac34..b87e8c6bac64d 100644 --- a/src/platform/packages/private/kbn-scout-reporting/src/helpers/cli_processing.ts +++ b/src/platform/packages/private/kbn-scout-reporting/src/helpers/cli_processing.ts @@ -47,6 +47,8 @@ export function getRunTarget(argv: string[] = process.argv): string { '@svlOblt': 'serverless-oblt', '@svlLogsEssentials': 'serverless-oblt-logs-essentials', '@svlSecurity': 'serverless-security', + '@svlSecurityEssentials': 'serverless-security-essentials', + '@svlSecurityEase': 'serverless-security-ease', }; // Try to find --grep argument in different formats diff --git a/src/platform/packages/shared/kbn-scout/src/config/serverless/security-ease.serverless.config.ts b/src/platform/packages/shared/kbn-scout/src/config/serverless/security-ease.serverless.config.ts new file mode 100644 index 0000000000000..cb2f3a5edffd2 --- /dev/null +++ b/src/platform/packages/shared/kbn-scout/src/config/serverless/security-ease.serverless.config.ts @@ -0,0 +1,34 @@ +/* + * 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", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import type { ScoutServerConfig } from '../../types'; +import { defaultConfig } from './serverless.base.config'; + +export const servers: ScoutServerConfig = { + ...defaultConfig, + esTestCluster: { + ...defaultConfig.esTestCluster, + serverArgs: [ + ...defaultConfig.esTestCluster.serverArgs, + 'xpack.security.authc.api_key.cache.max_keys=70000', + ], + }, + kbnTestServer: { + ...defaultConfig.kbnTestServer, + serverArgs: [ + ...defaultConfig.kbnTestServer.serverArgs, + '--serverless=security', + '--coreApp.allowDynamicConfigOverrides=true', + `--xpack.task_manager.unsafe.exclude_task_types=${JSON.stringify(['Fleet-Metrics-Task'])}`, + `--xpack.securitySolutionServerless.productTypes=${JSON.stringify([ + { product_line: 'ai_soc', product_tier: 'search_ai_lake' }, + ])}`, + ], + }, +}; diff --git a/src/platform/packages/shared/kbn-scout/src/config/serverless/security-essentials.serverless.config.ts b/src/platform/packages/shared/kbn-scout/src/config/serverless/security-essentials.serverless.config.ts new file mode 100644 index 0000000000000..ec6c9e885e381 --- /dev/null +++ b/src/platform/packages/shared/kbn-scout/src/config/serverless/security-essentials.serverless.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", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import type { ScoutServerConfig } from '../../types'; +import { defaultConfig } from './serverless.base.config'; + +export const servers: ScoutServerConfig = { + ...defaultConfig, + esTestCluster: { + ...defaultConfig.esTestCluster, + serverArgs: [ + ...defaultConfig.esTestCluster.serverArgs, + 'xpack.security.authc.api_key.cache.max_keys=70000', + ], + }, + kbnTestServer: { + ...defaultConfig.kbnTestServer, + serverArgs: [ + ...defaultConfig.kbnTestServer.serverArgs, + '--serverless=security', + '--coreApp.allowDynamicConfigOverrides=true', + `--xpack.task_manager.unsafe.exclude_task_types=${JSON.stringify(['Fleet-Metrics-Task'])}`, + `--xpack.securitySolutionServerless.productTypes=${JSON.stringify([ + { product_line: 'security', product_tier: 'essentials' }, + { product_line: 'endpoint', product_tier: 'essentials' }, + { product_line: 'cloud', product_tier: 'essentials' }, + ])}`, + ], + }, +}; diff --git a/src/platform/packages/shared/kbn-scout/src/playwright/tags.ts b/src/platform/packages/shared/kbn-scout/src/playwright/tags.ts index 5bf334f60da61..286dbccaa256b 100644 --- a/src/platform/packages/shared/kbn-scout/src/playwright/tags.ts +++ b/src/platform/packages/shared/kbn-scout/src/playwright/tags.ts @@ -9,6 +9,8 @@ const SERVERLESS_ONLY = [ '@svlSecurity', + '@svlSecurityEssentials', + '@svlSecurityEase', '@svlOblt', '@svlLogsEssentials', '@svlSearch', @@ -19,6 +21,8 @@ const ESS_ONLY = ['@ess']; const DEPLOYMENT_AGNOSTIC = [ '@ess', '@svlSecurity', + '@svlSecurityEssentials', + '@svlSecurityEase', '@svlOblt', '@svlLogsEssentials', '@svlSearch', @@ -40,5 +44,7 @@ export const tagsByMode = { oblt: '@svlOblt', 'oblt-logs-essentials': '@svlLogsEssentials', security: '@svlSecurity', + 'security-essentials': '@svlSecurityEssentials', + 'security-ease': '@svlSecurityEase', }, }; diff --git a/src/platform/packages/shared/kbn-scout/src/playwright/utils/runner_utils.ts b/src/platform/packages/shared/kbn-scout/src/playwright/utils/runner_utils.ts index 643bd549522d9..1f74dacea4b1c 100644 --- a/src/platform/packages/shared/kbn-scout/src/playwright/utils/runner_utils.ts +++ b/src/platform/packages/shared/kbn-scout/src/playwright/utils/runner_utils.ts @@ -28,7 +28,15 @@ const getServerlessTag = (projectType: string): string => { throw new Error(`'projectType' is required to determine tags for 'serverless' mode.`); } const tag = - tagsByMode.serverless[projectType as 'security' | 'es' | 'oblt' | 'oblt-logs-essentials']; + tagsByMode.serverless[ + projectType as + | 'security' + | 'security-essentials' + | 'security-ease' + | 'es' + | 'oblt' + | 'oblt-logs-essentials' + ]; if (!tag) { throw new Error(`No tags found for projectType: '${projectType}'.`); } diff --git a/src/platform/packages/shared/kbn-scout/src/servers/flags.ts b/src/platform/packages/shared/kbn-scout/src/servers/flags.ts index 0d1f5c8447e4d..3f1473b95f35f 100644 --- a/src/platform/packages/shared/kbn-scout/src/servers/flags.ts +++ b/src/platform/packages/shared/kbn-scout/src/servers/flags.ts @@ -21,7 +21,7 @@ export const SERVER_FLAG_OPTIONS: FlagOptions = { boolean: ['stateful', 'logToFile'], help: ` --stateful Start Elasticsearch and Kibana with default ESS configuration - --serverless Start Elasticsearch and Kibana with serverless project configuration: es | oblt | oblt-logs-essentials | security + --serverless Start Elasticsearch and Kibana with serverless project configuration: es | oblt | oblt-logs-essentials | security | security-essentials | security-ease --esFrom Build Elasticsearch from source or run snapshot or serverless. Default: $TEST_ES_FROM or "snapshot" --kibana-install-dir Run Kibana from existing install directory instead of from source --logToFile Write the log output from Kibana/ES to files instead of to stdout @@ -34,6 +34,8 @@ export function parseServerFlags(flags: FlagsReader) { 'oblt', 'oblt-logs-essentials', 'security', + 'security-essentials', + 'security-ease', ]); const isStateful = flags.boolean('stateful'); diff --git a/src/platform/packages/shared/kbn-scout/src/types/cli.d.ts b/src/platform/packages/shared/kbn-scout/src/types/cli.d.ts index d8f4c2b7509f9..146be925a11f0 100644 --- a/src/platform/packages/shared/kbn-scout/src/types/cli.d.ts +++ b/src/platform/packages/shared/kbn-scout/src/types/cli.d.ts @@ -12,4 +12,6 @@ export type CliSupportedServerModes = | 'serverless=es' | 'serverless=oblt' | 'serverless=oblt-logs-essentials' - | 'serverless=security'; + | 'serverless=security' + | 'serverless=security-essentials' + | 'serverless=security-ease';