From 5229c8627bfbedeca698d640c0d7b60f369bc3a9 Mon Sep 17 00:00:00 2001 From: Gloria Hornero Date: Tue, 2 Dec 2025 10:38:37 +0100 Subject: [PATCH 1/2] 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 # src/platform/packages/shared/kbn-scout/src/playwright/tags.ts # src/platform/packages/shared/kbn-scout/src/playwright/utils/runner_utils.ts # src/platform/packages/shared/kbn-scout/src/servers/flags.ts # src/platform/packages/shared/kbn-scout/src/types/cli.d.ts --- .../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 | 2 +- .../shared/kbn-scout/src/servers/flags.ts | 4 +-- .../shared/kbn-scout/src/types/cli.d.ts | 4 ++- 8 files changed, 83 insertions(+), 7 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 2131d535199b4..c68706a26a1ee 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" 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 5bafd6eb33cd4..e093820bad771 100644 --- a/src/platform/packages/shared/kbn-scout/src/playwright/tags.ts +++ b/src/platform/packages/shared/kbn-scout/src/playwright/tags.ts @@ -7,10 +7,10 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -const SERVERLESS_ONLY = ['@svlSecurity', '@svlOblt', '@svlSearch', '@svlChat']; +const SERVERLESS_ONLY = ['@svlSecurity', '@svlSecurityEssentials','@svlSecurityEase', '@svlOblt', '@svlSearch', '@svlChat']; const ESS_ONLY = ['@ess']; // svlChat is truly serverless only and doesn't have a stateful counterpart -const DEPLOYMENT_AGNOSTIC = ['@ess', '@svlSecurity', '@svlOblt', '@svlSearch']; +const DEPLOYMENT_AGNOSTIC = ['@ess', '@svlSecurity', '@svlSecurityEssentials','@svlSecurityEase', '@svlOblt', '@svlSearch']; const PERFORMANCE = ['@perf']; export const tags = { @@ -27,5 +27,7 @@ export const tagsByMode = { es: '@svlSearch', oblt: '@svlOblt', 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 4d512572af2d6..95cad214a9213 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 @@ -27,7 +27,7 @@ const getServerlessTag = (projectType: string): string => { if (!projectType) { throw new Error(`'projectType' is required to determine tags for 'serverless' mode.`); } - const tag = tagsByMode.serverless[projectType as 'security' | 'es' | 'oblt']; + const tag = tagsByMode.serverless[projectType as 'security' | 'security-essentials'| 'security-ease'| 'es' | 'oblt']; 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 7f372d72e2d7c..7750ac843e369 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 | security + --serverless Start Elasticsearch and Kibana with serverless project configuration: es | oblt | 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 @@ -29,7 +29,7 @@ export const SERVER_FLAG_OPTIONS: FlagOptions = { }; export function parseServerFlags(flags: FlagsReader) { - const serverlessType = flags.enum('serverless', ['es', 'oblt', 'security']); + const serverlessType = flags.enum('serverless', ['es', 'oblt', 'security','security-essentials','security-ease',]); const isStateful = flags.boolean('stateful'); if (!(serverlessType || isStateful) || (serverlessType && isStateful)) { 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 9f0d5a2653652..5b636e0ad7f75 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 @@ -11,4 +11,6 @@ export type CliSupportedServerModes = | 'stateful' | 'serverless=es' | 'serverless=oblt' - | 'serverless=security'; + | 'serverless=security' + | 'serverless=security-essentials' + | 'serverless=security-ease'; From 0228cd4daf3fd139cb53a97c47af29789f5cd44f Mon Sep 17 00:00:00 2001 From: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Date: Thu, 4 Dec 2025 11:31:33 +0000 Subject: [PATCH 2/2] Changes from node scripts/eslint_all_files --no-cache --fix --- .../shared/kbn-scout/src/playwright/tags.ts | 18 ++++++++++++++++-- .../src/playwright/utils/runner_utils.ts | 5 ++++- .../shared/kbn-scout/src/servers/flags.ts | 8 +++++++- 3 files changed, 27 insertions(+), 4 deletions(-) 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 e093820bad771..48f9ce9af0516 100644 --- a/src/platform/packages/shared/kbn-scout/src/playwright/tags.ts +++ b/src/platform/packages/shared/kbn-scout/src/playwright/tags.ts @@ -7,10 +7,24 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -const SERVERLESS_ONLY = ['@svlSecurity', '@svlSecurityEssentials','@svlSecurityEase', '@svlOblt', '@svlSearch', '@svlChat']; +const SERVERLESS_ONLY = [ + '@svlSecurity', + '@svlSecurityEssentials', + '@svlSecurityEase', + '@svlOblt', + '@svlSearch', + '@svlChat', +]; const ESS_ONLY = ['@ess']; // svlChat is truly serverless only and doesn't have a stateful counterpart -const DEPLOYMENT_AGNOSTIC = ['@ess', '@svlSecurity', '@svlSecurityEssentials','@svlSecurityEase', '@svlOblt', '@svlSearch']; +const DEPLOYMENT_AGNOSTIC = [ + '@ess', + '@svlSecurity', + '@svlSecurityEssentials', + '@svlSecurityEase', + '@svlOblt', + '@svlSearch', +]; const PERFORMANCE = ['@perf']; export const tags = { 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 95cad214a9213..2401045f396e4 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 @@ -27,7 +27,10 @@ const getServerlessTag = (projectType: string): string => { if (!projectType) { throw new Error(`'projectType' is required to determine tags for 'serverless' mode.`); } - const tag = tagsByMode.serverless[projectType as 'security' | 'security-essentials'| 'security-ease'| 'es' | 'oblt']; + const tag = + tagsByMode.serverless[ + projectType as 'security' | 'security-essentials' | 'security-ease' | 'es' | 'oblt' + ]; 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 7750ac843e369..ba8191e5a142a 100644 --- a/src/platform/packages/shared/kbn-scout/src/servers/flags.ts +++ b/src/platform/packages/shared/kbn-scout/src/servers/flags.ts @@ -29,7 +29,13 @@ export const SERVER_FLAG_OPTIONS: FlagOptions = { }; export function parseServerFlags(flags: FlagsReader) { - const serverlessType = flags.enum('serverless', ['es', 'oblt', 'security','security-essentials','security-ease',]); + const serverlessType = flags.enum('serverless', [ + 'es', + 'oblt', + 'security', + 'security-essentials', + 'security-ease', + ]); const isStateful = flags.boolean('stateful'); if (!(serverlessType || isStateful) || (serverlessType && isStateful)) {