From 7a98aa176d6dcb3b850b5b9ae2dcd48e7c7ec0cb Mon Sep 17 00:00:00 2001 From: Paulo Silva Date: Fri, 1 Nov 2024 02:59:09 -0700 Subject: [PATCH 1/8] [Cloud Security] Update Findings page runtime fields required for third party data compatibility (#198635) ## Summary This PR enhances the solution proposed by [this PR](https://github.com/elastic/kibana/pull/195702), by picking only the fields that are currently not mapped by the current Third Party integrations, this fixes performance degradation identified during the QA cycle of 8.16.0. Fixes: - https://github.com/elastic/security-team/issues/11034 ### Misconfiguration Runtime fields - **rule.benchmark.rule_number**: runtime mapping kept because this field is missing on `security_solution-aws.misconfiguration_latest-v1` causing filtering out data when sorting by **Rule Number** column on the Misconfigurations Data Table. - **rule.section**: runtime mapping kept because this field is missing on `security_solution-aws.misconfiguration_latest-v1` causing filtering out data when sorting by **Framework Section** column on the Misconfigurations Data Table. - **resource.sub_type**: runtime mapping kept because this field is missing on `security_solution-aws.misconfiguration_latest-v1` causing filtering out data when sorting by **Resource Type** column on the Misconfigurations Data Table. - **orchestrator.cluster.name**: runtime mapping kept because this field is missing on `security_solution-wiz.misconfiguration_latest-v1` causing filtering out data when grouping by **Kubernetes Cluster** column on the Misconfigurations page. - **cloud.account.name**: runtime mapping kept because this field is missing on `security_solution-aws.misconfiguration_latest-v1` causing filtering out data when grouping by **Kubernetes Cluster** column on the Misconfigurations page. ### Vulnerability Runtime Fields: - **observer.vendor**: runtime mapping added because this field is mapped as `text` on `security_solution-wiz.vulnerability_latest-v1` causing filtering out when sorting by the **Vendor** column on the Vulnerability Data Table - **cloud.provider**: runtime mapping added because this field is mapped as `text` on `security_solution-wiz.vulnerability_latest-v1` causing filtering out when grouping by **Cloud Account** on the Vulnerability page. (This field is needed in order to retrieve the Cloud Provider name and icon) ## Screenshot - Left: After the changes / Right: Current https://github.com/user-attachments/assets/2cbdd8b7-131c-42e4-a881-632f8cd3854b https://github.com/user-attachments/assets/4372feb6-4c01-4047-a90a-d6728f9400fe https://github.com/user-attachments/assets/b9e32514-f2ee-4e4d-ba5f-ea3e20d4d0b2 --- .../common/utils/helpers.ts | 2 +- .../public/common/constants.ts | 30 ++++++++ .../public/components/cloud_provider_icon.tsx | 2 +- .../latest_findings/use_grouped_findings.tsx | 3 - .../latest_findings/use_latest_findings.ts | 22 +++--- .../use_latest_findings_grouping.tsx | 71 +++---------------- .../hooks/use_latest_vulnerabilities.tsx | 31 ++++---- .../use_latest_vulnerabilities_grouping.tsx | 42 +++-------- 8 files changed, 80 insertions(+), 123 deletions(-) diff --git a/x-pack/plugins/cloud_security_posture/common/utils/helpers.ts b/x-pack/plugins/cloud_security_posture/common/utils/helpers.ts index 90e11734d72c6..86eb6ba963402 100644 --- a/x-pack/plugins/cloud_security_posture/common/utils/helpers.ts +++ b/x-pack/plugins/cloud_security_posture/common/utils/helpers.ts @@ -214,7 +214,7 @@ export const getBenchmarkApplicableTo = (benchmarkId: BenchmarksCisId) => { }; export const getCloudProviderNameFromAbbreviation = (cloudProvider: string) => { - switch (cloudProvider) { + switch (cloudProvider.toLowerCase()) { case 'azure': return CLOUD_PROVIDER_NAMES.AZURE; case 'aws': diff --git a/x-pack/plugins/cloud_security_posture/public/common/constants.ts b/x-pack/plugins/cloud_security_posture/public/common/constants.ts index 50d191cf07167..fab73eb153e69 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/constants.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/constants.ts @@ -256,3 +256,33 @@ export const VULNERABILITY_GROUPING_OPTIONS = { CLOUD_ACCOUNT_NAME: VULNERABILITY_FIELDS.CLOUD_ACCOUNT_NAME, CVE: VULNERABILITY_FIELDS.VULNERABILITY_ID, }; + +/* +The fields below are default columns of the Cloud Security Data Table that need to have keyword mapping. +The runtime mappings are used to prevent filtering out the data when any of these columns are sorted in the Data Table. +TODO: Remove the fields below once they are mapped as Keyword in the Third Party integrations, or remove +the fields from the runtime mappings if they are removed from the Data Table. +*/ +export const CDR_VULNERABILITY_DATA_TABLE_RUNTIME_MAPPING_FIELDS: string[] = [ + VULNERABILITY_FIELDS.VENDOR, +]; +export const CDR_MISCONFIGURATION_DATA_TABLE_RUNTIME_MAPPING_FIELDS: string[] = [ + 'rule.benchmark.rule_number', + 'rule.section', + 'resource.sub_type', +]; + +/* +The fields below are used to group the data in the Cloud Security Data Table. +The keys are the fields that are used to group the data, and the values are the fields that need to have keyword mapping +to prevent filtering out the data when grouping by the key field. +TODO: Remove the fields below once they are mapped as Keyword in the Third Party integrations, or remove +the fields from the runtime mappings if they are removed from the Data Table. +*/ +export const CDR_VULNERABILITY_GROUPING_RUNTIME_MAPPING_FIELDS: Record = { + [VULNERABILITY_GROUPING_OPTIONS.CLOUD_ACCOUNT_NAME]: [VULNERABILITY_FIELDS.CLOUD_PROVIDER], +}; +export const CDR_MISCONFIGURATION_GROUPING_RUNTIME_MAPPING_FIELDS: Record = { + [FINDINGS_GROUPING_OPTIONS.ORCHESTRATOR_CLUSTER_NAME]: ['orchestrator.cluster.name'], + [FINDINGS_GROUPING_OPTIONS.CLOUD_ACCOUNT_NAME]: ['cloud.account.name'], +}; diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_provider_icon.tsx b/x-pack/plugins/cloud_security_posture/public/components/cloud_provider_icon.tsx index b6acdac0ee1b1..a022e38960894 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/cloud_provider_icon.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/cloud_provider_icon.tsx @@ -18,7 +18,7 @@ interface Props { } const getCloudProviderIcon = (cloudProvider: string) => { - switch (cloudProvider) { + switch (cloudProvider.toLowerCase()) { case 'azure': return 'logoAzure'; case 'aws': diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_grouped_findings.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_grouped_findings.tsx index 6d901a76a29c3..b98ff432a3c96 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_grouped_findings.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_grouped_findings.tsx @@ -52,9 +52,6 @@ export interface FindingsGroupingAggregation { resourceSubType?: { buckets?: GenericBuckets[]; }; - resourceType?: { - buckets?: GenericBuckets[]; - }; benchmarkName?: { buckets?: GenericBuckets[]; }; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts index 068eb3df1b10f..64353230211bc 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts @@ -22,6 +22,7 @@ import type { CspBenchmarkRulesStates } from '@kbn/cloud-security-posture-common import type { FindingsBaseEsQuery } from '@kbn/cloud-security-posture'; import { useGetCspBenchmarkRulesStatesApi } from '@kbn/cloud-security-posture/src/hooks/use_get_benchmark_rules_state_api'; import type { RuntimePrimitiveTypes } from '@kbn/data-views-plugin/common'; +import { CDR_MISCONFIGURATION_DATA_TABLE_RUNTIME_MAPPING_FIELDS } from '../../../common/constants'; import { useKibana } from '../../../common/hooks/use_kibana'; import { getAggregationCount, getFindingsCountAggQuery } from '../utils/utils'; @@ -41,17 +42,18 @@ interface FindingsAggs { } const getRuntimeMappingsFromSort = (sort: string[][]) => { - return sort.reduce((acc, [field]) => { - // TODO: Add proper type for all fields available in the field selector - const type: RuntimePrimitiveTypes = field === '@timestamp' ? 'date' : 'keyword'; + return sort + .filter(([field]) => CDR_MISCONFIGURATION_DATA_TABLE_RUNTIME_MAPPING_FIELDS.includes(field)) + .reduce((acc, [field]) => { + const type: RuntimePrimitiveTypes = 'keyword'; - return { - ...acc, - [field]: { - type, - }, - }; - }, {}); + return { + ...acc, + [field]: { + type, + }, + }; + }, {}); }; export const getFindingsQuery = ( diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings_grouping.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings_grouping.tsx index e009ee966fb96..45c5418ed5129 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings_grouping.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings_grouping.tsx @@ -21,6 +21,7 @@ import { } from '@kbn/cloud-security-posture-common'; import { useGetCspBenchmarkRulesStatesApi } from '@kbn/cloud-security-posture/src/hooks/use_get_benchmark_rules_state_api'; import { + CDR_MISCONFIGURATION_GROUPING_RUNTIME_MAPPING_FIELDS, FINDINGS_GROUPING_OPTIONS, LOCAL_STORAGE_FINDINGS_GROUPING_KEY, } from '../../../common/constants'; @@ -90,7 +91,6 @@ const getAggregationsByGroupField = (field: string): NamedAggregation[] => { ...aggMetrics, getTermAggregation('resourceName', 'resource.id'), getTermAggregation('resourceSubType', 'resource.sub_type'), - getTermAggregation('resourceType', 'resource.type'), ]; case FINDINGS_GROUPING_OPTIONS.RULE_NAME: return [ @@ -122,62 +122,18 @@ const getAggregationsByGroupField = (field: string): NamedAggregation[] => { const getRuntimeMappingsByGroupField = ( field: string ): Record | undefined => { - switch (field) { - case FINDINGS_GROUPING_OPTIONS.RESOURCE_NAME: - return { - [FINDINGS_GROUPING_OPTIONS.RESOURCE_NAME]: { - type: 'keyword', - }, - 'resource.id': { - type: 'keyword', - }, - 'resource.sub_type': { - type: 'keyword', - }, - 'resource.type': { - type: 'keyword', - }, - }; - case FINDINGS_GROUPING_OPTIONS.RULE_NAME: - return { - [FINDINGS_GROUPING_OPTIONS.RULE_NAME]: { - type: 'keyword', - }, - 'rule.benchmark.version': { - type: 'keyword', - }, - }; - case FINDINGS_GROUPING_OPTIONS.CLOUD_ACCOUNT_NAME: - return { - [FINDINGS_GROUPING_OPTIONS.CLOUD_ACCOUNT_NAME]: { + if (CDR_MISCONFIGURATION_GROUPING_RUNTIME_MAPPING_FIELDS?.[field]) { + return CDR_MISCONFIGURATION_GROUPING_RUNTIME_MAPPING_FIELDS[field].reduce( + (acc, runtimeField) => ({ + ...acc, + [runtimeField]: { type: 'keyword', }, - 'rule.benchmark.name': { - type: 'keyword', - }, - 'rule.benchmark.id': { - type: 'keyword', - }, - }; - case FINDINGS_GROUPING_OPTIONS.ORCHESTRATOR_CLUSTER_NAME: - return { - [FINDINGS_GROUPING_OPTIONS.ORCHESTRATOR_CLUSTER_NAME]: { - type: 'keyword', - }, - 'rule.benchmark.name': { - type: 'keyword', - }, - 'rule.benchmark.id': { - type: 'keyword', - }, - }; - default: - return { - [field]: { - type: 'keyword', - }, - }; + }), + {} + ); } + return {}; }; /** @@ -255,12 +211,7 @@ export const useLatestFindingsGrouping = ({ size: pageSize, sort: [{ groupByField: { order: 'desc' } }, { complianceScore: { order: 'asc' } }], statsAggregations: getAggregationsByGroupField(currentSelectedGroup), - runtimeMappings: { - ...getRuntimeMappingsByGroupField(currentSelectedGroup), - 'result.evaluation': { - type: 'keyword', - }, - }, + runtimeMappings: getRuntimeMappingsByGroupField(currentSelectedGroup), rootAggregations: [ { failedFindings: { diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_latest_vulnerabilities.tsx b/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_latest_vulnerabilities.tsx index 5f01a4693c8f5..a998707c4704f 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_latest_vulnerabilities.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_latest_vulnerabilities.tsx @@ -24,7 +24,10 @@ import { import { FindingsBaseEsQuery, showErrorToast } from '@kbn/cloud-security-posture'; import type { CspVulnerabilityFinding } from '@kbn/cloud-security-posture-common/schema/vulnerabilities/latest'; import type { RuntimePrimitiveTypes } from '@kbn/data-views-plugin/common'; -import { VULNERABILITY_FIELDS } from '../../../common/constants'; +import { + CDR_VULNERABILITY_DATA_TABLE_RUNTIME_MAPPING_FIELDS, + VULNERABILITY_FIELDS, +} from '../../../common/constants'; import { useKibana } from '../../../common/hooks/use_kibana'; import { getCaseInsensitiveSortScript } from '../utils/custom_sort_script'; type LatestFindingsRequest = IKibanaSearchRequest; @@ -54,22 +57,18 @@ const getMultiFieldsSort = (sort: string[][]) => { }; const getRuntimeMappingsFromSort = (sort: string[][]) => { - return sort.reduce((acc, [field]) => { - // TODO: Add proper type for all fields available in the field selector - const type: RuntimePrimitiveTypes = - field === VULNERABILITY_FIELDS.SCORE_BASE - ? 'double' - : field === '@timestamp' - ? 'date' - : 'keyword'; + return sort + .filter(([field]) => CDR_VULNERABILITY_DATA_TABLE_RUNTIME_MAPPING_FIELDS.includes(field)) + .reduce((acc, [field]) => { + const type: RuntimePrimitiveTypes = 'keyword'; - return { - ...acc, - [field]: { - type, - }, - }; - }, {}); + return { + ...acc, + [field]: { + type, + }, + }; + }, {}); }; export const getVulnerabilitiesQuery = ( diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_latest_vulnerabilities_grouping.tsx b/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_latest_vulnerabilities_grouping.tsx index d79b4620ec899..1d73b21f083a5 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_latest_vulnerabilities_grouping.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_latest_vulnerabilities_grouping.tsx @@ -23,6 +23,7 @@ import { LOCAL_STORAGE_VULNERABILITIES_GROUPING_KEY, VULNERABILITY_GROUPING_OPTIONS, VULNERABILITY_FIELDS, + CDR_VULNERABILITY_GROUPING_RUNTIME_MAPPING_FIELDS, } from '../../../common/constants'; import { useDataViewContext } from '../../../common/contexts/data_view_context'; import { @@ -102,41 +103,18 @@ const getAggregationsByGroupField = (field: string): NamedAggregation[] => { const getRuntimeMappingsByGroupField = ( field: string ): Record | undefined => { - switch (field) { - case VULNERABILITY_GROUPING_OPTIONS.CLOUD_ACCOUNT_NAME: - return { - [VULNERABILITY_GROUPING_OPTIONS.CLOUD_ACCOUNT_NAME]: { - type: 'keyword', - }, - [VULNERABILITY_FIELDS.CLOUD_PROVIDER]: { - type: 'keyword', - }, - }; - case VULNERABILITY_GROUPING_OPTIONS.RESOURCE_NAME: - return { - [VULNERABILITY_GROUPING_OPTIONS.RESOURCE_NAME]: { - type: 'keyword', - }, - [VULNERABILITY_FIELDS.RESOURCE_ID]: { - type: 'keyword', - }, - }; - case VULNERABILITY_GROUPING_OPTIONS.CVE: - return { - [VULNERABILITY_GROUPING_OPTIONS.CVE]: { - type: 'keyword', - }, - [VULNERABILITY_FIELDS.DESCRIPTION]: { - type: 'keyword', - }, - }; - default: - return { - [field]: { + if (CDR_VULNERABILITY_GROUPING_RUNTIME_MAPPING_FIELDS?.[field]) { + return CDR_VULNERABILITY_GROUPING_RUNTIME_MAPPING_FIELDS[field].reduce( + (acc, runtimeField) => ({ + ...acc, + [runtimeField]: { type: 'keyword', }, - }; + }), + {} + ); } + return {}; }; /** From c31906085024e2ae3b7a34f6b3bc80f40da9d514 Mon Sep 17 00:00:00 2001 From: Stratoula Kalafateli Date: Fri, 1 Nov 2024 11:49:07 +0100 Subject: [PATCH 2/8] [ES|QL] Fixes the error in the console (#198307) ## Summary Closes https://github.com/elastic/kibana/issues/198258 ### Checklist - [ ] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Julia Rechkunova --- packages/kbn-es-types/src/search.ts | 1 + .../src/extract_warnings.test.ts | 17 +++++++++++++++++ .../src/extract_warnings.ts | 14 +++++++++----- .../kbn-search-response-warnings/tsconfig.json | 1 + 4 files changed, 28 insertions(+), 5 deletions(-) diff --git a/packages/kbn-es-types/src/search.ts b/packages/kbn-es-types/src/search.ts index 4c780fb2a2986..87f9dd15517c9 100644 --- a/packages/kbn-es-types/src/search.ts +++ b/packages/kbn-es-types/src/search.ts @@ -682,6 +682,7 @@ export interface ESQLSearchResponse { all_columns?: ESQLColumn[]; values: ESQLRow[]; took?: number; + _clusters?: estypes.ClusterStatistics; } export interface ESQLSearchParams { diff --git a/packages/kbn-search-response-warnings/src/extract_warnings.test.ts b/packages/kbn-search-response-warnings/src/extract_warnings.test.ts index cedf0546ae3a4..c5a1352c3d0f9 100644 --- a/packages/kbn-search-response-warnings/src/extract_warnings.test.ts +++ b/packages/kbn-search-response-warnings/src/extract_warnings.test.ts @@ -9,6 +9,7 @@ import { estypes } from '@elastic/elasticsearch'; import type { Start as InspectorStartContract } from '@kbn/inspector-plugin/public'; +import type { ESQLSearchResponse } from '@kbn/es-types'; import type { RequestAdapter } from '@kbn/inspector-plugin/common/adapters/request'; import { extractWarnings } from './extract_warnings'; @@ -108,6 +109,22 @@ describe('extract search response warnings', () => { expect(warnings).toEqual([]); }); + + it('should not include warnings when there is no _clusters or _shards information', () => { + const warnings = extractWarnings( + { + took: 46, + all_columns: [{ name: 'field1', type: 'string' }], + columns: [{ name: 'field1', type: 'string' }], + values: [['value1']], + } as ESQLSearchResponse, + mockInspectorService, + mockRequestAdapter, + 'My request' + ); + + expect(warnings).toEqual([]); + }); }); describe('remote clusters', () => { diff --git a/packages/kbn-search-response-warnings/src/extract_warnings.ts b/packages/kbn-search-response-warnings/src/extract_warnings.ts index 7d53a954f7715..58e963c239b12 100644 --- a/packages/kbn-search-response-warnings/src/extract_warnings.ts +++ b/packages/kbn-search-response-warnings/src/extract_warnings.ts @@ -8,6 +8,7 @@ */ import { estypes } from '@elastic/elasticsearch'; +import type { ESQLSearchResponse } from '@kbn/es-types'; import type { Start as InspectorStartContract, RequestAdapter } from '@kbn/inspector-plugin/public'; import type { SearchResponseWarning } from './types'; @@ -15,7 +16,7 @@ import type { SearchResponseWarning } from './types'; * @internal */ export function extractWarnings( - rawResponse: estypes.SearchResponse, + rawResponse: estypes.SearchResponse | ESQLSearchResponse, inspectorService: InspectorStartContract, requestAdapter: RequestAdapter, requestName: string, @@ -23,11 +24,13 @@ export function extractWarnings( ): SearchResponseWarning[] { const warnings: SearchResponseWarning[] = []; + // ES|QL supports _clusters in case of CCS but doesnt support _shards and timed_out (yet) const isPartial = rawResponse._clusters ? rawResponse._clusters.partial > 0 || rawResponse._clusters.skipped > 0 || rawResponse._clusters.running > 0 - : rawResponse.timed_out || rawResponse._shards.failed > 0; + : ('timed_out' in rawResponse && rawResponse.timed_out) || + ('_shards' in rawResponse && rawResponse._shards.failed > 0); if (isPartial) { warnings.push({ type: 'incomplete', @@ -39,9 +42,10 @@ export function extractWarnings( status: 'partial', indices: '', took: rawResponse.took, - timed_out: rawResponse.timed_out, - _shards: rawResponse._shards, - failures: rawResponse._shards.failures, + timed_out: 'timed_out' in rawResponse && rawResponse.timed_out, + ...('_shards' in rawResponse + ? { _shards: rawResponse._shards, failures: rawResponse._shards.failures } + : {}), }, }, openInInspector: () => { diff --git a/packages/kbn-search-response-warnings/tsconfig.json b/packages/kbn-search-response-warnings/tsconfig.json index 6823ef5abf8a1..1f87892403a61 100644 --- a/packages/kbn-search-response-warnings/tsconfig.json +++ b/packages/kbn-search-response-warnings/tsconfig.json @@ -10,6 +10,7 @@ "@kbn/core", "@kbn/react-kibana-mount", "@kbn/core-i18n-browser", + "@kbn/es-types", ], "exclude": ["target/**/*"] } From 20989b64db84aee2500f318bb3b84bf4afedf6b2 Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Fri, 1 Nov 2024 22:42:40 +1100 Subject: [PATCH 3/8] Authorized route migration for routes owned by kibana-security (#198380) ### Authz API migration for authorized routes This PR migrates `access:` tags used in route definitions to new security configuration. Please refer to the documentation for more information: [Authorization API](https://docs.elastic.dev/kibana-dev-docs/key-concepts/security-api-authorization) ### **Before migration:** Access control tags were defined in the `options` object of the route: ```ts router.get({ path: '/api/path', options: { tags: ['access:', 'access:'], }, ... }, handler); ``` ### **After migration:** Tags have been replaced with the more robust `security.authz.requiredPrivileges` field under `security`: ```ts router.get({ path: '/api/path', security: { authz: { requiredPrivileges: ['', ''], }, }, ... }, handler); ``` ### What to do next? 1. Review the changes in this PR. 2. You might need to update your tests to reflect the new security configuration: - If you have tests that rely on checking `access` tags. - If you have snapshot tests that include the route definition. - If you have FTR tests that rely on checking unauthorized error message. The error message changed to also include missing privileges. ## Any questions? If you have any questions or need help with API authorization, please reach out to the `@elastic/kibana-security` team. --------- Co-authored-by: Elena Shostak --- .../authorization/roles/get_all_by_space.test.ts | 2 +- .../routes/authorization/roles/get_all_by_space.ts | 6 ++++-- .../routes/session_management/invalidate.test.ts | 3 ++- .../server/routes/session_management/invalidate.ts | 7 ++++++- .../server/routes/user_profile/bulk_get.test.ts | 2 +- .../server/routes/user_profile/bulk_get.ts | 6 +++++- .../server/routes/api/external/copy_to_space.ts | 14 ++++++++++++-- .../api/internal/get_content_summary.test.ts | 2 +- .../routes/api/internal/get_content_summary.ts | 6 ++++-- .../common/suites/copy_to_space.ts | 3 ++- .../suites/resolve_copy_to_space_conflicts.ts | 3 ++- 11 files changed, 40 insertions(+), 14 deletions(-) diff --git a/x-pack/plugins/security/server/routes/authorization/roles/get_all_by_space.test.ts b/x-pack/plugins/security/server/routes/authorization/roles/get_all_by_space.test.ts index 06d6d396ce022..956ced4309304 100644 --- a/x-pack/plugins/security/server/routes/authorization/roles/get_all_by_space.test.ts +++ b/x-pack/plugins/security/server/routes/authorization/roles/get_all_by_space.test.ts @@ -149,7 +149,7 @@ describe('GET all roles by space id', () => { const paramsSchema = (config.validate as any).params; - expect(config.options).toEqual({ tags: ['access:manage_spaces'] }); + expect(config.security?.authz).toEqual({ requiredPrivileges: ['manage_spaces'] }); expect(() => paramsSchema.validate({})).toThrowErrorMatchingInlineSnapshot( `"[spaceId]: expected value of type [string] but got [undefined]"` ); diff --git a/x-pack/plugins/security/server/routes/authorization/roles/get_all_by_space.ts b/x-pack/plugins/security/server/routes/authorization/roles/get_all_by_space.ts index 734f0292db116..a441ba15164c1 100644 --- a/x-pack/plugins/security/server/routes/authorization/roles/get_all_by_space.ts +++ b/x-pack/plugins/security/server/routes/authorization/roles/get_all_by_space.ts @@ -24,8 +24,10 @@ export function defineGetAllRolesBySpaceRoutes({ router.get( { path: '/internal/security/roles/{spaceId}', - options: { - tags: ['access:manage_spaces'], + security: { + authz: { + requiredPrivileges: ['manage_spaces'], + }, }, validate: { params: schema.object({ spaceId: schema.string({ minLength: 1 }) }), diff --git a/x-pack/plugins/security/server/routes/session_management/invalidate.test.ts b/x-pack/plugins/security/server/routes/session_management/invalidate.test.ts index fbc14015d80c1..12c31be12dd57 100644 --- a/x-pack/plugins/security/server/routes/session_management/invalidate.test.ts +++ b/x-pack/plugins/security/server/routes/session_management/invalidate.test.ts @@ -46,9 +46,10 @@ describe('Invalidate sessions routes', () => { expect(routeConfig.options).toEqual({ access: 'public', summary: 'Invalidate user sessions', - tags: ['access:sessionManagement'], }); + expect(routeConfig.security?.authz).toEqual({ requiredPrivileges: ['sessionManagement'] }); + const bodySchema = (routeConfig.validate as any).body as ObjectType; expect(() => bodySchema.validate({})).toThrowErrorMatchingInlineSnapshot( `"[match]: expected at least one defined value but got [undefined]"` diff --git a/x-pack/plugins/security/server/routes/session_management/invalidate.ts b/x-pack/plugins/security/server/routes/session_management/invalidate.ts index a45d8f00c1ca4..bbc81c21706d9 100644 --- a/x-pack/plugins/security/server/routes/session_management/invalidate.ts +++ b/x-pack/plugins/security/server/routes/session_management/invalidate.ts @@ -37,6 +37,11 @@ export function defineInvalidateSessionsRoutes({ ), }), }, + security: { + authz: { + requiredPrivileges: ['sessionManagement'], + }, + }, options: { // The invalidate session API was introduced to address situations where the session index // could grow rapidly - when session timeouts are disabled, or with anonymous access. @@ -44,7 +49,7 @@ export function defineInvalidateSessionsRoutes({ // anonymous access. However, keeping this endpoint available internally in serverless would // be useful in situations where we need to batch-invalidate user sessions. access: buildFlavor === 'serverless' ? 'internal' : 'public', - tags: ['access:sessionManagement'], + summary: `Invalidate user sessions`, }, }, diff --git a/x-pack/plugins/security/server/routes/user_profile/bulk_get.test.ts b/x-pack/plugins/security/server/routes/user_profile/bulk_get.test.ts index f5d449bd8423d..eece6b58f8f01 100644 --- a/x-pack/plugins/security/server/routes/user_profile/bulk_get.test.ts +++ b/x-pack/plugins/security/server/routes/user_profile/bulk_get.test.ts @@ -51,7 +51,7 @@ describe('Bulk get profile routes', () => { }); it('correctly defines route.', () => { - expect(routeConfig.options).toEqual({ tags: ['access:bulkGetUserProfiles'] }); + expect(routeConfig.security?.authz).toEqual({ requiredPrivileges: ['bulkGetUserProfiles'] }); const bodySchema = (routeConfig.validate as any).body as ObjectType; expect(() => bodySchema.validate(0)).toThrowErrorMatchingInlineSnapshot( diff --git a/x-pack/plugins/security/server/routes/user_profile/bulk_get.ts b/x-pack/plugins/security/server/routes/user_profile/bulk_get.ts index 20da1d573901f..0ffe760d57d52 100644 --- a/x-pack/plugins/security/server/routes/user_profile/bulk_get.ts +++ b/x-pack/plugins/security/server/routes/user_profile/bulk_get.ts @@ -24,7 +24,11 @@ export function defineBulkGetUserProfilesRoute({ dataPath: schema.maybe(schema.string()), }), }, - options: { tags: ['access:bulkGetUserProfiles'] }, + security: { + authz: { + requiredPrivileges: ['bulkGetUserProfiles'], + }, + }, }, createLicensedRouteHandler(async (context, request, response) => { const userProfileServiceInternal = getUserProfileService(); diff --git a/x-pack/plugins/spaces/server/routes/api/external/copy_to_space.ts b/x-pack/plugins/spaces/server/routes/api/external/copy_to_space.ts index b0758f5645cc1..509de14e2928b 100644 --- a/x-pack/plugins/spaces/server/routes/api/external/copy_to_space.ts +++ b/x-pack/plugins/spaces/server/routes/api/external/copy_to_space.ts @@ -37,9 +37,14 @@ export function initCopyToSpacesApi(deps: ExternalRouteDeps) { router.post( { path: '/api/spaces/_copy_saved_objects', + security: { + authz: { + requiredPrivileges: ['copySavedObjectsToSpaces'], + }, + }, options: { access: isServerless ? 'internal' : 'public', - tags: ['access:copySavedObjectsToSpaces', 'oas-tag:spaces'], + tags: ['oas-tag:spaces'], summary: `Copy saved objects between spaces`, description: 'It also allows you to automatically copy related objects, so when you copy a dashboard, this can automatically copy over the associated visualizations, data views, and saved searches, as required. You can request to overwrite any objects that already exist in the target space if they share an identifier or you can use the resolve copy saved objects conflicts API to do this on a per-object basis.', @@ -188,9 +193,14 @@ export function initCopyToSpacesApi(deps: ExternalRouteDeps) { router.post( { path: '/api/spaces/_resolve_copy_saved_objects_errors', + security: { + authz: { + requiredPrivileges: ['copySavedObjectsToSpaces'], + }, + }, options: { access: isServerless ? 'internal' : 'public', - tags: ['access:copySavedObjectsToSpaces'], + summary: `Resolve conflicts copying saved objects`, description: 'Overwrite saved objects that are returned as errors from the copy saved objects to space API.', diff --git a/x-pack/plugins/spaces/server/routes/api/internal/get_content_summary.test.ts b/x-pack/plugins/spaces/server/routes/api/internal/get_content_summary.test.ts index d6bc68244f750..a94d51fafc05d 100644 --- a/x-pack/plugins/spaces/server/routes/api/internal/get_content_summary.test.ts +++ b/x-pack/plugins/spaces/server/routes/api/internal/get_content_summary.test.ts @@ -120,7 +120,7 @@ describe('GET /internal/spaces/{spaceId}/content_summary', () => { const paramsSchema = (config.validate as any).params; - expect(config.options).toEqual({ tags: ['access:manage_spaces'] }); + expect(config.security?.authz).toEqual({ requiredPrivileges: ['manage_spaces'] }); expect(() => paramsSchema.validate({})).toThrowErrorMatchingInlineSnapshot( `"[spaceId]: expected value of type [string] but got [undefined]"` ); diff --git a/x-pack/plugins/spaces/server/routes/api/internal/get_content_summary.ts b/x-pack/plugins/spaces/server/routes/api/internal/get_content_summary.ts index 848449bfd47b3..6c80a645f0c62 100644 --- a/x-pack/plugins/spaces/server/routes/api/internal/get_content_summary.ts +++ b/x-pack/plugins/spaces/server/routes/api/internal/get_content_summary.ts @@ -38,8 +38,10 @@ export function initGetSpaceContentSummaryApi(deps: InternalRouteDeps) { router.get( { path: '/internal/spaces/{spaceId}/content_summary', - options: { - tags: ['access:manage_spaces'], + security: { + authz: { + requiredPrivileges: ['manage_spaces'], + }, }, validate: { params: schema.object({ diff --git a/x-pack/test/spaces_api_integration/common/suites/copy_to_space.ts b/x-pack/test/spaces_api_integration/common/suites/copy_to_space.ts index 4cb2506977123..f297e4092ba6b 100644 --- a/x-pack/test/spaces_api_integration/common/suites/copy_to_space.ts +++ b/x-pack/test/spaces_api_integration/common/suites/copy_to_space.ts @@ -154,7 +154,8 @@ export function copyToSpaceTestSuiteFactory(context: FtrProviderContext) { expect(resp.body).to.eql({ statusCode: 403, error: 'Forbidden', - message: 'Forbidden', + message: + 'API [POST /api/spaces/_copy_saved_objects] is unauthorized for user, this action is granted by the Kibana privileges [copySavedObjectsToSpaces]', }); }; diff --git a/x-pack/test/spaces_api_integration/common/suites/resolve_copy_to_space_conflicts.ts b/x-pack/test/spaces_api_integration/common/suites/resolve_copy_to_space_conflicts.ts index e07d56a95ba24..845d41d1431b9 100644 --- a/x-pack/test/spaces_api_integration/common/suites/resolve_copy_to_space_conflicts.ts +++ b/x-pack/test/spaces_api_integration/common/suites/resolve_copy_to_space_conflicts.ts @@ -252,7 +252,8 @@ export function resolveCopyToSpaceConflictsSuite(context: FtrProviderContext) { expect(resp.body).to.eql({ statusCode: 403, error: 'Forbidden', - message: 'Forbidden', + message: + 'API [POST /api/spaces/_resolve_copy_saved_objects_errors] is unauthorized for user, this action is granted by the Kibana privileges [copySavedObjectsToSpaces]', }); }; From 34aab05595115289ed7b7f8c1fad7f282292a25b Mon Sep 17 00:00:00 2001 From: Pablo Machado Date: Fri, 1 Nov 2024 12:58:01 +0100 Subject: [PATCH 4/8] [SecuritySolution] Fix dashboard page when the entity store state is stopped (#198645) ## Summary Fix the dashboard page when the entity store state is stopped Previously, the EntityStoreDashboardPanels component didn't account for the installed but disabled state (stopped). I made the minimum changes necessary to fix the bug, but this component needs to be refactored, unit-tested, and written in a storybook with all possible states. Technical debt Issue: https://github.com/elastic/security-team/issues/11035 --- .../components/dashboard_panels.tsx | 59 ++++++++++--------- 1 file changed, 31 insertions(+), 28 deletions(-) diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/components/dashboard_panels.tsx b/x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/components/dashboard_panels.tsx index 99e2475f95a78..63ffcf7b9eae1 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/components/dashboard_panels.tsx +++ b/x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/components/dashboard_panels.tsx @@ -141,6 +141,7 @@ const EntityStoreDashboardPanelsComponent = () => { ); } + // TODO Rename variable because the Risk score could be installed but disabled const isRiskScoreAvailable = riskEngineStatus.data && riskEngineStatus.data.risk_engine_status !== RiskEngineStatusEnum.NOT_INSTALLED; @@ -199,35 +200,37 @@ const EntityStoreDashboardPanelsComponent = () => { )} - {entityStore.status === 'not_installed' && !isRiskScoreAvailable && ( - // TODO: Move modal inside EnableEntityStore component, eliminating the onEnable prop in favour of forwarding the riskScoreEnabled status - setModalState({ visible: true })} - loadingRiskEngine={riskEngineInitializing} - /> - )} + {(entityStore.status === 'not_installed' || entityStore.status === 'stopped') && + !isRiskScoreAvailable && ( + // TODO: Move modal inside EnableEntityStore component, eliminating the onEnable prop in favour of forwarding the riskScoreEnabled status + setModalState({ visible: true })} + loadingRiskEngine={riskEngineInitializing} + /> + )} - {entityStore.status === 'not_installed' && isRiskScoreAvailable && ( - <> - - - setModalState({ - visible: true, - }) - } - /> - - - - - - - - - )} + {(entityStore.status === 'not_installed' || entityStore.status === 'stopped') && + isRiskScoreAvailable && ( + <> + + + setModalState({ + visible: true, + }) + } + /> + + + + + + + + + )} Date: Fri, 1 Nov 2024 08:00:12 -0400 Subject: [PATCH 5/8] [Fleet] Remove deprecated APIs for agents endpoints (#198313) --- oas_docs/bundle.json | 540 ------------------ oas_docs/bundle.serverless.json | 540 ------------------ oas_docs/output/kibana.serverless.yaml | 379 ------------ oas_docs/output/kibana.yaml | 379 ------------ .../server/routes/policies/policies.ts | 2 +- .../server/routes/benchmarks/v1.ts | 2 +- .../plugins/fleet/common/constants/routes.ts | 4 - .../fleet/common/types/rest_spec/agent.ts | 16 +- .../single_page_layout/index.tsx | 4 +- .../components/settings/index.tsx | 4 +- .../edit_package_policy_page/index.tsx | 4 +- .../fleet/server/routes/agent/handlers.ts | 30 +- .../fleet/server/routes/agent/index.test.ts | 2 - .../fleet/server/routes/agent/index.ts | 35 -- .../plugins/fleet/server/routes/app/index.ts | 18 - .../fleet/server/types/rest_spec/agent.ts | 22 - .../fleet_wrapper/get_agent_policies.ts | 2 +- .../public/management/cypress/tasks/fleet.ts | 8 +- .../pages/policy/view/policy_details.test.tsx | 2 +- .../pages/policy/view/policy_details.tsx | 2 +- .../fleet_api_integration/apis/agents/list.ts | 8 +- .../apis/agents/privileges.ts | 2 +- .../apis/agents/status.ts | 6 - .../apis/agents/update_agent_tags.ts | 2 +- .../apis/agents/upgrade.ts | 2 +- .../apis/fleet_telemetry.ts | 2 +- .../apis/service_tokens.ts | 4 - 27 files changed, 26 insertions(+), 1995 deletions(-) diff --git a/oas_docs/bundle.json b/oas_docs/bundle.json index 1bf61ba293cb7..fd2a7bbe22de0 100644 --- a/oas_docs/bundle.json +++ b/oas_docs/bundle.json @@ -5626,63 +5626,6 @@ ] } }, - "/api/fleet/agent-status": { - "get": { - "operationId": "get-fleet-agent-status-2", - "parameters": [ - { - "description": "The version of the API to use", - "in": "header", - "name": "elastic-api-version", - "schema": { - "default": "2023-10-31", - "enum": [ - "2023-10-31" - ], - "type": "string" - } - }, - { - "in": "query", - "name": "policyId", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "policyIds", - "required": false, - "schema": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "string" - } - ] - } - }, - { - "in": "query", - "name": "kuery", - "required": false, - "schema": { - "deprecated": true, - "type": "string" - } - } - ], - "responses": {}, - "summary": "", - "tags": [] - } - }, "/api/fleet/agent_download_sources": { "get": { "description": "List agent binary download sources", @@ -12547,7 +12490,6 @@ "name": "kuery", "required": false, "schema": { - "deprecated": true, "type": "string" } } @@ -12586,10 +12528,6 @@ "other": { "type": "number" }, - "total": { - "deprecated": true, - "type": "number" - }, "unenrolled": { "type": "number" }, @@ -12599,7 +12537,6 @@ }, "required": [ "events", - "total", "online", "error", "offline", @@ -13263,394 +13200,6 @@ }, "type": "array" }, - "list": { - "deprecated": true, - "items": { - "additionalProperties": false, - "properties": { - "access_api_key": { - "type": "string" - }, - "access_api_key_id": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "agent": { - "additionalProperties": true, - "properties": { - "id": { - "type": "string" - }, - "version": { - "type": "string" - } - }, - "required": [ - "id", - "version" - ], - "type": "object" - }, - "components": { - "items": { - "additionalProperties": false, - "properties": { - "id": { - "type": "string" - }, - "message": { - "type": "string" - }, - "status": { - "enum": [ - "STARTING", - "CONFIGURING", - "HEALTHY", - "DEGRADED", - "FAILED", - "STOPPING", - "STOPPED" - ], - "type": "string" - }, - "type": { - "type": "string" - }, - "units": { - "items": { - "additionalProperties": false, - "properties": { - "id": { - "type": "string" - }, - "message": { - "type": "string" - }, - "payload": { - "additionalProperties": {}, - "type": "object" - }, - "status": { - "enum": [ - "STARTING", - "CONFIGURING", - "HEALTHY", - "DEGRADED", - "FAILED", - "STOPPING", - "STOPPED" - ], - "type": "string" - }, - "type": { - "enum": [ - "input", - "output" - ], - "type": "string" - } - }, - "required": [ - "id", - "type", - "status", - "message" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "id", - "type", - "status", - "message" - ], - "type": "object" - }, - "type": "array" - }, - "default_api_key": { - "type": "string" - }, - "default_api_key_history": { - "items": { - "additionalProperties": false, - "deprecated": true, - "properties": { - "id": { - "type": "string" - }, - "retired_at": { - "type": "string" - } - }, - "required": [ - "id", - "retired_at" - ], - "type": "object" - }, - "type": "array" - }, - "default_api_key_id": { - "type": "string" - }, - "enrolled_at": { - "type": "string" - }, - "id": { - "type": "string" - }, - "last_checkin": { - "type": "string" - }, - "last_checkin_message": { - "type": "string" - }, - "last_checkin_status": { - "enum": [ - "error", - "online", - "degraded", - "updating", - "starting" - ], - "type": "string" - }, - "local_metadata": { - "additionalProperties": {}, - "type": "object" - }, - "metrics": { - "additionalProperties": false, - "properties": { - "cpu_avg": { - "type": "number" - }, - "memory_size_byte_avg": { - "type": "number" - } - }, - "type": "object" - }, - "namespaces": { - "items": { - "type": "string" - }, - "type": "array" - }, - "outputs": { - "additionalProperties": { - "additionalProperties": false, - "properties": { - "api_key_id": { - "type": "string" - }, - "to_retire_api_key_ids": { - "items": { - "additionalProperties": false, - "properties": { - "id": { - "type": "string" - }, - "retired_at": { - "type": "string" - } - }, - "required": [ - "id", - "retired_at" - ], - "type": "object" - }, - "type": "array" - }, - "type": { - "type": "string" - } - }, - "required": [ - "api_key_id", - "type" - ], - "type": "object" - }, - "type": "object" - }, - "packages": { - "items": { - "type": "string" - }, - "type": "array" - }, - "policy_id": { - "type": "string" - }, - "policy_revision": { - "nullable": true, - "type": "number" - }, - "sort": { - "items": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "string" - }, - { - "enum": [], - "nullable": true - } - ] - }, - "type": "array" - }, - "status": { - "enum": [ - "offline", - "error", - "online", - "inactive", - "enrolling", - "unenrolling", - "unenrolled", - "updating", - "degraded" - ], - "type": "string" - }, - "tags": { - "items": { - "type": "string" - }, - "type": "array" - }, - "type": { - "enum": [ - "PERMANENT", - "EPHEMERAL", - "TEMPORARY" - ], - "type": "string" - }, - "unenrolled_at": { - "type": "string" - }, - "unenrollment_started_at": { - "type": "string" - }, - "unhealthy_reason": { - "items": { - "enum": [ - "input", - "output", - "other" - ], - "type": "string" - }, - "nullable": true, - "type": "array" - }, - "upgrade_details": { - "additionalProperties": false, - "properties": { - "action_id": { - "type": "string" - }, - "metadata": { - "additionalProperties": false, - "properties": { - "download_percent": { - "type": "number" - }, - "download_rate": { - "type": "number" - }, - "error_msg": { - "type": "string" - }, - "failed_state": { - "enum": [ - "UPG_REQUESTED", - "UPG_SCHEDULED", - "UPG_DOWNLOADING", - "UPG_EXTRACTING", - "UPG_REPLACING", - "UPG_RESTARTING", - "UPG_FAILED", - "UPG_WATCHING", - "UPG_ROLLBACK" - ], - "type": "string" - }, - "retry_error_msg": { - "type": "string" - }, - "retry_until": { - "type": "string" - }, - "scheduled_at": { - "type": "string" - } - }, - "type": "object" - }, - "state": { - "enum": [ - "UPG_REQUESTED", - "UPG_SCHEDULED", - "UPG_DOWNLOADING", - "UPG_EXTRACTING", - "UPG_REPLACING", - "UPG_RESTARTING", - "UPG_FAILED", - "UPG_WATCHING", - "UPG_ROLLBACK" - ], - "type": "string" - }, - "target_version": { - "type": "string" - } - }, - "required": [ - "target_version", - "action_id", - "state" - ], - "type": "object" - }, - "upgrade_started_at": { - "nullable": true, - "type": "string" - }, - "upgraded_at": { - "nullable": true, - "type": "string" - }, - "user_provided_metadata": { - "additionalProperties": {}, - "type": "object" - } - }, - "required": [ - "id", - "packages", - "type", - "active", - "enrolled_at", - "local_metadata" - ], - "type": "object" - }, - "type": "array" - }, "page": { "type": "number" }, @@ -16695,62 +16244,6 @@ "tags": [ "Elastic Agent actions" ] - }, - "put": { - "operationId": "put-fleet-agents-agentid-reassign", - "parameters": [ - { - "description": "The version of the API to use", - "in": "header", - "name": "elastic-api-version", - "schema": { - "default": "2023-10-31", - "enum": [ - "2023-10-31" - ], - "type": "string" - } - }, - { - "description": "A required header to protect against CSRF attacks", - "in": "header", - "name": "kbn-xsrf", - "required": true, - "schema": { - "example": "true", - "type": "string" - } - }, - { - "in": "path", - "name": "agentId", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json; Elastic-Api-Version=2023-10-31": { - "schema": { - "additionalProperties": false, - "properties": { - "policy_id": { - "type": "string" - } - }, - "required": [ - "policy_id" - ], - "type": "object" - } - } - } - }, - "responses": {}, - "summary": "", - "tags": [] } }, "/api/fleet/agents/{agentId}/request_diagnostics": { @@ -39679,39 +39172,6 @@ ] } }, - "/api/fleet/service-tokens": { - "post": { - "description": "Create a service token", - "operationId": "post-fleet-service-tokens-2", - "parameters": [ - { - "description": "The version of the API to use", - "in": "header", - "name": "elastic-api-version", - "schema": { - "default": "2023-10-31", - "enum": [ - "2023-10-31" - ], - "type": "string" - } - }, - { - "description": "A required header to protect against CSRF attacks", - "in": "header", - "name": "kbn-xsrf", - "required": true, - "schema": { - "example": "true", - "type": "string" - } - } - ], - "responses": {}, - "summary": "", - "tags": [] - } - }, "/api/fleet/service_tokens": { "post": { "description": "Create a service token", diff --git a/oas_docs/bundle.serverless.json b/oas_docs/bundle.serverless.json index fedad1196676d..f171dadde991a 100644 --- a/oas_docs/bundle.serverless.json +++ b/oas_docs/bundle.serverless.json @@ -5626,63 +5626,6 @@ ] } }, - "/api/fleet/agent-status": { - "get": { - "operationId": "get-fleet-agent-status-2", - "parameters": [ - { - "description": "The version of the API to use", - "in": "header", - "name": "elastic-api-version", - "schema": { - "default": "2023-10-31", - "enum": [ - "2023-10-31" - ], - "type": "string" - } - }, - { - "in": "query", - "name": "policyId", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "policyIds", - "required": false, - "schema": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "string" - } - ] - } - }, - { - "in": "query", - "name": "kuery", - "required": false, - "schema": { - "deprecated": true, - "type": "string" - } - } - ], - "responses": {}, - "summary": "", - "tags": [] - } - }, "/api/fleet/agent_download_sources": { "get": { "description": "List agent binary download sources", @@ -12547,7 +12490,6 @@ "name": "kuery", "required": false, "schema": { - "deprecated": true, "type": "string" } } @@ -12586,10 +12528,6 @@ "other": { "type": "number" }, - "total": { - "deprecated": true, - "type": "number" - }, "unenrolled": { "type": "number" }, @@ -12599,7 +12537,6 @@ }, "required": [ "events", - "total", "online", "error", "offline", @@ -13263,394 +13200,6 @@ }, "type": "array" }, - "list": { - "deprecated": true, - "items": { - "additionalProperties": false, - "properties": { - "access_api_key": { - "type": "string" - }, - "access_api_key_id": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "agent": { - "additionalProperties": true, - "properties": { - "id": { - "type": "string" - }, - "version": { - "type": "string" - } - }, - "required": [ - "id", - "version" - ], - "type": "object" - }, - "components": { - "items": { - "additionalProperties": false, - "properties": { - "id": { - "type": "string" - }, - "message": { - "type": "string" - }, - "status": { - "enum": [ - "STARTING", - "CONFIGURING", - "HEALTHY", - "DEGRADED", - "FAILED", - "STOPPING", - "STOPPED" - ], - "type": "string" - }, - "type": { - "type": "string" - }, - "units": { - "items": { - "additionalProperties": false, - "properties": { - "id": { - "type": "string" - }, - "message": { - "type": "string" - }, - "payload": { - "additionalProperties": {}, - "type": "object" - }, - "status": { - "enum": [ - "STARTING", - "CONFIGURING", - "HEALTHY", - "DEGRADED", - "FAILED", - "STOPPING", - "STOPPED" - ], - "type": "string" - }, - "type": { - "enum": [ - "input", - "output" - ], - "type": "string" - } - }, - "required": [ - "id", - "type", - "status", - "message" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "id", - "type", - "status", - "message" - ], - "type": "object" - }, - "type": "array" - }, - "default_api_key": { - "type": "string" - }, - "default_api_key_history": { - "items": { - "additionalProperties": false, - "deprecated": true, - "properties": { - "id": { - "type": "string" - }, - "retired_at": { - "type": "string" - } - }, - "required": [ - "id", - "retired_at" - ], - "type": "object" - }, - "type": "array" - }, - "default_api_key_id": { - "type": "string" - }, - "enrolled_at": { - "type": "string" - }, - "id": { - "type": "string" - }, - "last_checkin": { - "type": "string" - }, - "last_checkin_message": { - "type": "string" - }, - "last_checkin_status": { - "enum": [ - "error", - "online", - "degraded", - "updating", - "starting" - ], - "type": "string" - }, - "local_metadata": { - "additionalProperties": {}, - "type": "object" - }, - "metrics": { - "additionalProperties": false, - "properties": { - "cpu_avg": { - "type": "number" - }, - "memory_size_byte_avg": { - "type": "number" - } - }, - "type": "object" - }, - "namespaces": { - "items": { - "type": "string" - }, - "type": "array" - }, - "outputs": { - "additionalProperties": { - "additionalProperties": false, - "properties": { - "api_key_id": { - "type": "string" - }, - "to_retire_api_key_ids": { - "items": { - "additionalProperties": false, - "properties": { - "id": { - "type": "string" - }, - "retired_at": { - "type": "string" - } - }, - "required": [ - "id", - "retired_at" - ], - "type": "object" - }, - "type": "array" - }, - "type": { - "type": "string" - } - }, - "required": [ - "api_key_id", - "type" - ], - "type": "object" - }, - "type": "object" - }, - "packages": { - "items": { - "type": "string" - }, - "type": "array" - }, - "policy_id": { - "type": "string" - }, - "policy_revision": { - "nullable": true, - "type": "number" - }, - "sort": { - "items": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "string" - }, - { - "enum": [], - "nullable": true - } - ] - }, - "type": "array" - }, - "status": { - "enum": [ - "offline", - "error", - "online", - "inactive", - "enrolling", - "unenrolling", - "unenrolled", - "updating", - "degraded" - ], - "type": "string" - }, - "tags": { - "items": { - "type": "string" - }, - "type": "array" - }, - "type": { - "enum": [ - "PERMANENT", - "EPHEMERAL", - "TEMPORARY" - ], - "type": "string" - }, - "unenrolled_at": { - "type": "string" - }, - "unenrollment_started_at": { - "type": "string" - }, - "unhealthy_reason": { - "items": { - "enum": [ - "input", - "output", - "other" - ], - "type": "string" - }, - "nullable": true, - "type": "array" - }, - "upgrade_details": { - "additionalProperties": false, - "properties": { - "action_id": { - "type": "string" - }, - "metadata": { - "additionalProperties": false, - "properties": { - "download_percent": { - "type": "number" - }, - "download_rate": { - "type": "number" - }, - "error_msg": { - "type": "string" - }, - "failed_state": { - "enum": [ - "UPG_REQUESTED", - "UPG_SCHEDULED", - "UPG_DOWNLOADING", - "UPG_EXTRACTING", - "UPG_REPLACING", - "UPG_RESTARTING", - "UPG_FAILED", - "UPG_WATCHING", - "UPG_ROLLBACK" - ], - "type": "string" - }, - "retry_error_msg": { - "type": "string" - }, - "retry_until": { - "type": "string" - }, - "scheduled_at": { - "type": "string" - } - }, - "type": "object" - }, - "state": { - "enum": [ - "UPG_REQUESTED", - "UPG_SCHEDULED", - "UPG_DOWNLOADING", - "UPG_EXTRACTING", - "UPG_REPLACING", - "UPG_RESTARTING", - "UPG_FAILED", - "UPG_WATCHING", - "UPG_ROLLBACK" - ], - "type": "string" - }, - "target_version": { - "type": "string" - } - }, - "required": [ - "target_version", - "action_id", - "state" - ], - "type": "object" - }, - "upgrade_started_at": { - "nullable": true, - "type": "string" - }, - "upgraded_at": { - "nullable": true, - "type": "string" - }, - "user_provided_metadata": { - "additionalProperties": {}, - "type": "object" - } - }, - "required": [ - "id", - "packages", - "type", - "active", - "enrolled_at", - "local_metadata" - ], - "type": "object" - }, - "type": "array" - }, "page": { "type": "number" }, @@ -16695,62 +16244,6 @@ "tags": [ "Elastic Agent actions" ] - }, - "put": { - "operationId": "put-fleet-agents-agentid-reassign", - "parameters": [ - { - "description": "The version of the API to use", - "in": "header", - "name": "elastic-api-version", - "schema": { - "default": "2023-10-31", - "enum": [ - "2023-10-31" - ], - "type": "string" - } - }, - { - "description": "A required header to protect against CSRF attacks", - "in": "header", - "name": "kbn-xsrf", - "required": true, - "schema": { - "example": "true", - "type": "string" - } - }, - { - "in": "path", - "name": "agentId", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json; Elastic-Api-Version=2023-10-31": { - "schema": { - "additionalProperties": false, - "properties": { - "policy_id": { - "type": "string" - } - }, - "required": [ - "policy_id" - ], - "type": "object" - } - } - } - }, - "responses": {}, - "summary": "", - "tags": [] } }, "/api/fleet/agents/{agentId}/request_diagnostics": { @@ -39679,39 +39172,6 @@ ] } }, - "/api/fleet/service-tokens": { - "post": { - "description": "Create a service token", - "operationId": "post-fleet-service-tokens-2", - "parameters": [ - { - "description": "The version of the API to use", - "in": "header", - "name": "elastic-api-version", - "schema": { - "default": "2023-10-31", - "enum": [ - "2023-10-31" - ], - "type": "string" - } - }, - { - "description": "A required header to protect against CSRF attacks", - "in": "header", - "name": "kbn-xsrf", - "required": true, - "schema": { - "example": "true", - "type": "string" - } - } - ], - "responses": {}, - "summary": "", - "tags": [] - } - }, "/api/fleet/service_tokens": { "post": { "description": "Create a service token", diff --git a/oas_docs/output/kibana.serverless.yaml b/oas_docs/output/kibana.serverless.yaml index 1e7b41ea2c1af..afb7d8bbd5f4d 100644 --- a/oas_docs/output/kibana.serverless.yaml +++ b/oas_docs/output/kibana.serverless.yaml @@ -14811,7 +14811,6 @@ paths: name: kuery required: false schema: - deprecated: true type: string responses: '200': @@ -14841,16 +14840,12 @@ paths: type: number other: type: number - total: - deprecated: true - type: number unenrolled: type: number updating: type: number required: - events - - total - online - error - offline @@ -14954,41 +14949,6 @@ paths: summary: '' tags: - Elastic Agents - /api/fleet/agent-status: - get: - operationId: get-fleet-agent-status-2 - parameters: - - description: The version of the API to use - in: header - name: elastic-api-version - schema: - default: '2023-10-31' - enum: - - '2023-10-31' - type: string - - in: query - name: policyId - required: false - schema: - type: string - - in: query - name: policyIds - required: false - schema: - anyOf: - - items: - type: string - type: array - - type: string - - in: query - name: kuery - required: false - schema: - deprecated: true - type: string - responses: {} - summary: '' - tags: [] /api/fleet/agents: get: description: List agents @@ -15342,285 +15302,6 @@ paths: - enrolled_at - local_metadata type: array - list: - deprecated: true - items: - additionalProperties: false - type: object - properties: - access_api_key: - type: string - access_api_key_id: - type: string - active: - type: boolean - agent: - additionalProperties: true - type: object - properties: - id: - type: string - version: - type: string - required: - - id - - version - components: - items: - additionalProperties: false - type: object - properties: - id: - type: string - message: - type: string - status: - enum: - - STARTING - - CONFIGURING - - HEALTHY - - DEGRADED - - FAILED - - STOPPING - - STOPPED - type: string - type: - type: string - units: - items: - additionalProperties: false - type: object - properties: - id: - type: string - message: - type: string - payload: - additionalProperties: {} - type: object - status: - enum: - - STARTING - - CONFIGURING - - HEALTHY - - DEGRADED - - FAILED - - STOPPING - - STOPPED - type: string - type: - enum: - - input - - output - type: string - required: - - id - - type - - status - - message - type: array - required: - - id - - type - - status - - message - type: array - default_api_key: - type: string - default_api_key_history: - items: - additionalProperties: false - deprecated: true - type: object - properties: - id: - type: string - retired_at: - type: string - required: - - id - - retired_at - type: array - default_api_key_id: - type: string - enrolled_at: - type: string - id: - type: string - last_checkin: - type: string - last_checkin_message: - type: string - last_checkin_status: - enum: - - error - - online - - degraded - - updating - - starting - type: string - local_metadata: - additionalProperties: {} - type: object - metrics: - additionalProperties: false - type: object - properties: - cpu_avg: - type: number - memory_size_byte_avg: - type: number - namespaces: - items: - type: string - type: array - outputs: - additionalProperties: - additionalProperties: false - type: object - properties: - api_key_id: - type: string - to_retire_api_key_ids: - items: - additionalProperties: false - type: object - properties: - id: - type: string - retired_at: - type: string - required: - - id - - retired_at - type: array - type: - type: string - required: - - api_key_id - - type - type: object - packages: - items: - type: string - type: array - policy_id: - type: string - policy_revision: - nullable: true - type: number - sort: - items: - anyOf: - - type: number - - type: string - - enum: [] - nullable: true - type: array - status: - enum: - - offline - - error - - online - - inactive - - enrolling - - unenrolling - - unenrolled - - updating - - degraded - type: string - tags: - items: - type: string - type: array - type: - enum: - - PERMANENT - - EPHEMERAL - - TEMPORARY - type: string - unenrolled_at: - type: string - unenrollment_started_at: - type: string - unhealthy_reason: - items: - enum: - - input - - output - - other - type: string - nullable: true - type: array - upgrade_details: - additionalProperties: false - type: object - properties: - action_id: - type: string - metadata: - additionalProperties: false - type: object - properties: - download_percent: - type: number - download_rate: - type: number - error_msg: - type: string - failed_state: - enum: - - UPG_REQUESTED - - UPG_SCHEDULED - - UPG_DOWNLOADING - - UPG_EXTRACTING - - UPG_REPLACING - - UPG_RESTARTING - - UPG_FAILED - - UPG_WATCHING - - UPG_ROLLBACK - type: string - retry_error_msg: - type: string - retry_until: - type: string - scheduled_at: - type: string - state: - enum: - - UPG_REQUESTED - - UPG_SCHEDULED - - UPG_DOWNLOADING - - UPG_EXTRACTING - - UPG_REPLACING - - UPG_RESTARTING - - UPG_FAILED - - UPG_WATCHING - - UPG_ROLLBACK - type: string - target_version: - type: string - required: - - target_version - - action_id - - state - upgrade_started_at: - nullable: true - type: string - upgraded_at: - nullable: true - type: string - user_provided_metadata: - additionalProperties: {} - type: object - required: - - id - - packages - - type - - active - - enrolled_at - - local_metadata - type: array page: type: number perPage: @@ -16657,43 +16338,6 @@ paths: summary: '' tags: - Elastic Agent actions - put: - operationId: put-fleet-agents-agentid-reassign - parameters: - - description: The version of the API to use - in: header - name: elastic-api-version - schema: - default: '2023-10-31' - enum: - - '2023-10-31' - type: string - - description: A required header to protect against CSRF attacks - in: header - name: kbn-xsrf - required: true - schema: - example: 'true' - type: string - - in: path - name: agentId - required: true - schema: - type: string - requestBody: - content: - application/json; Elastic-Api-Version=2023-10-31: - schema: - additionalProperties: false - type: object - properties: - policy_id: - type: string - required: - - policy_id - responses: {} - summary: '' - tags: [] /api/fleet/agents/{agentId}/request_diagnostics: post: description: Request agent diagnostics @@ -33408,29 +33052,6 @@ paths: summary: '' tags: - Fleet service tokens - /api/fleet/service-tokens: - post: - description: Create a service token - operationId: post-fleet-service-tokens-2 - parameters: - - description: The version of the API to use - in: header - name: elastic-api-version - schema: - default: '2023-10-31' - enum: - - '2023-10-31' - type: string - - description: A required header to protect against CSRF attacks - in: header - name: kbn-xsrf - required: true - schema: - example: 'true' - type: string - responses: {} - summary: '' - tags: [] /api/fleet/settings: get: description: Get settings diff --git a/oas_docs/output/kibana.yaml b/oas_docs/output/kibana.yaml index 237974a87bbb2..5bbc65ad80bc4 100644 --- a/oas_docs/output/kibana.yaml +++ b/oas_docs/output/kibana.yaml @@ -18244,7 +18244,6 @@ paths: name: kuery required: false schema: - deprecated: true type: string responses: '200': @@ -18274,16 +18273,12 @@ paths: type: number other: type: number - total: - deprecated: true - type: number unenrolled: type: number updating: type: number required: - events - - total - online - error - offline @@ -18387,41 +18382,6 @@ paths: summary: '' tags: - Elastic Agents - /api/fleet/agent-status: - get: - operationId: get-fleet-agent-status-2 - parameters: - - description: The version of the API to use - in: header - name: elastic-api-version - schema: - default: '2023-10-31' - enum: - - '2023-10-31' - type: string - - in: query - name: policyId - required: false - schema: - type: string - - in: query - name: policyIds - required: false - schema: - anyOf: - - items: - type: string - type: array - - type: string - - in: query - name: kuery - required: false - schema: - deprecated: true - type: string - responses: {} - summary: '' - tags: [] /api/fleet/agents: get: description: List agents @@ -18775,285 +18735,6 @@ paths: - enrolled_at - local_metadata type: array - list: - deprecated: true - items: - additionalProperties: false - type: object - properties: - access_api_key: - type: string - access_api_key_id: - type: string - active: - type: boolean - agent: - additionalProperties: true - type: object - properties: - id: - type: string - version: - type: string - required: - - id - - version - components: - items: - additionalProperties: false - type: object - properties: - id: - type: string - message: - type: string - status: - enum: - - STARTING - - CONFIGURING - - HEALTHY - - DEGRADED - - FAILED - - STOPPING - - STOPPED - type: string - type: - type: string - units: - items: - additionalProperties: false - type: object - properties: - id: - type: string - message: - type: string - payload: - additionalProperties: {} - type: object - status: - enum: - - STARTING - - CONFIGURING - - HEALTHY - - DEGRADED - - FAILED - - STOPPING - - STOPPED - type: string - type: - enum: - - input - - output - type: string - required: - - id - - type - - status - - message - type: array - required: - - id - - type - - status - - message - type: array - default_api_key: - type: string - default_api_key_history: - items: - additionalProperties: false - deprecated: true - type: object - properties: - id: - type: string - retired_at: - type: string - required: - - id - - retired_at - type: array - default_api_key_id: - type: string - enrolled_at: - type: string - id: - type: string - last_checkin: - type: string - last_checkin_message: - type: string - last_checkin_status: - enum: - - error - - online - - degraded - - updating - - starting - type: string - local_metadata: - additionalProperties: {} - type: object - metrics: - additionalProperties: false - type: object - properties: - cpu_avg: - type: number - memory_size_byte_avg: - type: number - namespaces: - items: - type: string - type: array - outputs: - additionalProperties: - additionalProperties: false - type: object - properties: - api_key_id: - type: string - to_retire_api_key_ids: - items: - additionalProperties: false - type: object - properties: - id: - type: string - retired_at: - type: string - required: - - id - - retired_at - type: array - type: - type: string - required: - - api_key_id - - type - type: object - packages: - items: - type: string - type: array - policy_id: - type: string - policy_revision: - nullable: true - type: number - sort: - items: - anyOf: - - type: number - - type: string - - enum: [] - nullable: true - type: array - status: - enum: - - offline - - error - - online - - inactive - - enrolling - - unenrolling - - unenrolled - - updating - - degraded - type: string - tags: - items: - type: string - type: array - type: - enum: - - PERMANENT - - EPHEMERAL - - TEMPORARY - type: string - unenrolled_at: - type: string - unenrollment_started_at: - type: string - unhealthy_reason: - items: - enum: - - input - - output - - other - type: string - nullable: true - type: array - upgrade_details: - additionalProperties: false - type: object - properties: - action_id: - type: string - metadata: - additionalProperties: false - type: object - properties: - download_percent: - type: number - download_rate: - type: number - error_msg: - type: string - failed_state: - enum: - - UPG_REQUESTED - - UPG_SCHEDULED - - UPG_DOWNLOADING - - UPG_EXTRACTING - - UPG_REPLACING - - UPG_RESTARTING - - UPG_FAILED - - UPG_WATCHING - - UPG_ROLLBACK - type: string - retry_error_msg: - type: string - retry_until: - type: string - scheduled_at: - type: string - state: - enum: - - UPG_REQUESTED - - UPG_SCHEDULED - - UPG_DOWNLOADING - - UPG_EXTRACTING - - UPG_REPLACING - - UPG_RESTARTING - - UPG_FAILED - - UPG_WATCHING - - UPG_ROLLBACK - type: string - target_version: - type: string - required: - - target_version - - action_id - - state - upgrade_started_at: - nullable: true - type: string - upgraded_at: - nullable: true - type: string - user_provided_metadata: - additionalProperties: {} - type: object - required: - - id - - packages - - type - - active - - enrolled_at - - local_metadata - type: array page: type: number perPage: @@ -20090,43 +19771,6 @@ paths: summary: '' tags: - Elastic Agent actions - put: - operationId: put-fleet-agents-agentid-reassign - parameters: - - description: The version of the API to use - in: header - name: elastic-api-version - schema: - default: '2023-10-31' - enum: - - '2023-10-31' - type: string - - description: A required header to protect against CSRF attacks - in: header - name: kbn-xsrf - required: true - schema: - example: 'true' - type: string - - in: path - name: agentId - required: true - schema: - type: string - requestBody: - content: - application/json; Elastic-Api-Version=2023-10-31: - schema: - additionalProperties: false - type: object - properties: - policy_id: - type: string - required: - - policy_id - responses: {} - summary: '' - tags: [] /api/fleet/agents/{agentId}/request_diagnostics: post: description: Request agent diagnostics @@ -36841,29 +36485,6 @@ paths: summary: '' tags: - Fleet service tokens - /api/fleet/service-tokens: - post: - description: Create a service token - operationId: post-fleet-service-tokens-2 - parameters: - - description: The version of the API to use - in: header - name: elastic-api-version - schema: - default: '2023-10-31' - enum: - - '2023-10-31' - type: string - - description: A required header to protect against CSRF attacks - in: header - name: kbn-xsrf - required: true - schema: - example: 'true' - type: string - responses: {} - summary: '' - tags: [] /api/fleet/settings: get: description: Get settings diff --git a/x-pack/plugins/cloud_defend/server/routes/policies/policies.ts b/x-pack/plugins/cloud_defend/server/routes/policies/policies.ts index 71d7f17ca612e..ad40dcf3b693f 100644 --- a/x-pack/plugins/cloud_defend/server/routes/policies/policies.ts +++ b/x-pack/plugins/cloud_defend/server/routes/policies/policies.ts @@ -42,7 +42,7 @@ const createPolicies = ( const agentPolicyStatus = { id: agentPolicy.id, name: agentPolicy.name, - agents: agentStatusByAgentPolicyId[agentPolicy.id]?.total, + agents: agentStatusByAgentPolicyId[agentPolicy.id]?.active, }; return { package_policy: cloudDefendPackage, diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmarks/v1.ts b/x-pack/plugins/cloud_security_posture/server/routes/benchmarks/v1.ts index 611a58436e995..c52b57d057c38 100644 --- a/x-pack/plugins/cloud_security_posture/server/routes/benchmarks/v1.ts +++ b/x-pack/plugins/cloud_security_posture/server/routes/benchmarks/v1.ts @@ -48,7 +48,7 @@ export const getBenchmarksData = ( const agentPolicyStatus = { id: agentPolicy.id, name: agentPolicy.name, - agents: agentStatusByAgentPolicyId[agentPolicy.id]?.total, + agents: agentStatusByAgentPolicyId[agentPolicy.id]?.active, }; return { package_policy: cspPackage, diff --git a/x-pack/plugins/fleet/common/constants/routes.ts b/x-pack/plugins/fleet/common/constants/routes.ts index c071c6feecbf8..61d50d0f9e073 100644 --- a/x-pack/plugins/fleet/common/constants/routes.ts +++ b/x-pack/plugins/fleet/common/constants/routes.ts @@ -135,8 +135,6 @@ export const APP_API_ROUTES = { CHECK_PERMISSIONS_PATTERN: `${API_ROOT}/check-permissions`, GENERATE_SERVICE_TOKEN_PATTERN: `${API_ROOT}/service_tokens`, AGENT_POLICIES_SPACES: `${INTERNAL_ROOT}/agent_policies_spaces`, - // deprecated since 8.0 - GENERATE_SERVICE_TOKEN_PATTERN_DEPRECATED: `${API_ROOT}/service-tokens`, }; // Agent API routes @@ -159,8 +157,6 @@ export const AGENT_API_ROUTES = { AVAILABLE_VERSIONS_PATTERN: `${API_ROOT}/agents/available_versions`, STATUS_PATTERN: `${API_ROOT}/agent_status`, DATA_PATTERN: `${API_ROOT}/agent_status/data`, - // deprecated since 8.0 - STATUS_PATTERN_DEPRECATED: `${API_ROOT}/agent-status`, UPGRADE_PATTERN: `${API_ROOT}/agents/{agentId}/upgrade`, BULK_UPGRADE_PATTERN: `${API_ROOT}/agents/bulk_upgrade`, ACTION_STATUS_PATTERN: `${API_ROOT}/agents/action_status`, diff --git a/x-pack/plugins/fleet/common/types/rest_spec/agent.ts b/x-pack/plugins/fleet/common/types/rest_spec/agent.ts index bb69346bbdce4..b990e5367bb42 100644 --- a/x-pack/plugins/fleet/common/types/rest_spec/agent.ts +++ b/x-pack/plugins/fleet/common/types/rest_spec/agent.ts @@ -21,15 +21,13 @@ import type { ListResult, ListWithKuery } from './common'; export interface GetAgentsRequest { query: ListWithKuery & { - showInactive: boolean; + showInactive?: boolean; showUpgradeable?: boolean; withMetrics?: boolean; }; } export interface GetAgentsResponse extends ListResult { - // deprecated in 8.x - list?: Agent[]; statusSummary?: Record; } @@ -128,16 +126,6 @@ export type PostBulkAgentUpgradeResponse = BulkAgentAction; // eslint-disable-next-line @typescript-eslint/no-empty-interface export interface PostAgentUpgradeResponse {} -// deprecated -export interface PutAgentReassignRequest { - params: { - agentId: string; - }; - body: { policy_id: string }; -} -// deprecated -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface PutAgentReassignResponse {} export interface PostAgentReassignRequest { params: { agentId: string; @@ -217,8 +205,6 @@ export interface GetAgentStatusRequest { export interface GetAgentStatusResponse { results: { events: number; - // deprecated - total: number; online: number; error: number; offline: number; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/index.tsx index 24f8fa8a04fe5..93631f63d0e04 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/index.tsx @@ -238,8 +238,8 @@ export const CreatePackagePolicySinglePage: CreatePackagePolicyParams = ({ let count = 0; for (const policyId of agentPolicyIds) { const { data } = await sendGetAgentStatus({ policyId }); - if (data?.results.total) { - count += data.results.total; + if (data?.results.active) { + count += data.results.active; } } setAgentCount(count); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/details_page/components/settings/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/details_page/components/settings/index.tsx index 91cd710db4343..9de7a3f22adff 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/details_page/components/settings/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/details_page/components/settings/index.tsx @@ -150,8 +150,8 @@ export const SettingsView = memo<{ agentPolicy: AgentPolicy }>( if (isFleetEnabled) { setIsLoading(true); const { data } = await sendGetAgentStatus({ policyId: agentPolicy.id }); - if (data?.results.total) { - setAgentCount(data.results.total); + if (data?.results.active) { + setAgentCount(data.results.active); } else { await submitUpdateAgentPolicy(); } diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.tsx index 6157f09968680..9522d02756887 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.tsx @@ -166,8 +166,8 @@ export const EditPackagePolicyForm = memo<{ let count = 0; for (const id of packagePolicy.policy_ids) { const { data } = await sendGetAgentStatus({ policyId: id }); - if (data?.results.total) { - count += data.results.total; + if (data?.results.active) { + count += data.results.active; } } setAgentCount(count); diff --git a/x-pack/plugins/fleet/server/routes/agent/handlers.ts b/x-pack/plugins/fleet/server/routes/agent/handlers.ts index 4f4b5592f2d04..76d0fefe90fde 100644 --- a/x-pack/plugins/fleet/server/routes/agent/handlers.ts +++ b/x-pack/plugins/fleet/server/routes/agent/handlers.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { uniq } from 'lodash'; +import { omit, uniq } from 'lodash'; import { type RequestHandler, SavedObjectsErrorHelpers } from '@kbn/core/server'; import type { TypeOf } from '@kbn/config-schema'; @@ -13,7 +13,6 @@ import type { GetAgentsResponse, GetOneAgentResponse, GetAgentStatusResponse, - PutAgentReassignResponse, GetAgentTagsResponse, GetAvailableVersionsResponse, GetActionStatusResponse, @@ -30,7 +29,6 @@ import type { DeleteAgentRequestSchema, GetAgentStatusRequestSchema, GetAgentDataRequestSchema, - PutAgentReassignRequestSchemaDeprecated, PostAgentReassignRequestSchema, PostBulkAgentReassignRequestSchema, PostBulkUpdateAgentTagsRequestSchema, @@ -207,7 +205,6 @@ export const getAgentsHandler: FleetRequestHandler< } const body: GetAgentsResponse = { - list: agents, // deprecated items: agents, total, page, @@ -243,29 +240,6 @@ export const getAgentTagsHandler: RequestHandler< } }; -export const putAgentsReassignHandlerDeprecated: RequestHandler< - TypeOf, - undefined, - TypeOf -> = async (context, request, response) => { - const coreContext = await context.core; - const soClient = coreContext.savedObjects.client; - const esClient = coreContext.elasticsearch.client.asInternalUser; - try { - await AgentService.reassignAgent( - soClient, - esClient, - request.params.agentId, - request.body.policy_id - ); - - const body: PutAgentReassignResponse = {}; - return response.ok({ body }); - } catch (error) { - return defaultFleetErrorHandler({ error, response }); - } -}; - export const postAgentReassignHandler: RequestHandler< TypeOf, undefined, @@ -341,7 +315,7 @@ export const getAgentStatusForAgentPolicyHandler: FleetRequestHandler< parsePolicyIds(request.query.policyIds) ); - const body: GetAgentStatusResponse = { results }; + const body: GetAgentStatusResponse = { results: omit(results, 'total') }; return response.ok({ body }); } catch (error) { diff --git a/x-pack/plugins/fleet/server/routes/agent/index.test.ts b/x-pack/plugins/fleet/server/routes/agent/index.test.ts index 7f210028ff742..34f66da425da3 100644 --- a/x-pack/plugins/fleet/server/routes/agent/index.test.ts +++ b/x-pack/plugins/fleet/server/routes/agent/index.test.ts @@ -222,7 +222,6 @@ describe('schema validation', () => { it('list agents should return valid response', async () => { const expectedResponse: GetAgentsResponse = { items: [agent], - list: [agent], total: 1, page: 1, perPage: 1, @@ -366,7 +365,6 @@ describe('schema validation', () => { const expectedResponse: GetAgentStatusResponse = { results: { events: 1, - total: 1, online: 1, error: 1, offline: 1, diff --git a/x-pack/plugins/fleet/server/routes/agent/index.ts b/x-pack/plugins/fleet/server/routes/agent/index.ts index fc45869dc1219..1c40f36a7e481 100644 --- a/x-pack/plugins/fleet/server/routes/agent/index.ts +++ b/x-pack/plugins/fleet/server/routes/agent/index.ts @@ -23,7 +23,6 @@ import { GetAgentStatusRequestSchema, GetAgentDataRequestSchema, PostNewAgentActionRequestSchema, - PutAgentReassignRequestSchemaDeprecated, PostAgentReassignRequestSchema, PostBulkAgentReassignRequestSchema, PostAgentUpgradeRequestSchema, @@ -68,7 +67,6 @@ import { updateAgentHandler, deleteAgentHandler, getAgentStatusForAgentPolicyHandler, - putAgentsReassignHandlerDeprecated, postBulkAgentReassignHandler, getAgentDataHandler, bulkUpdateAgentTagsHandler, @@ -391,23 +389,6 @@ export const registerAPIRoutes = (router: FleetAuthzRouter, config: FleetConfigT postAgentUnenrollHandler ); - router.versioned - .put({ - path: AGENT_API_ROUTES.REASSIGN_PATTERN, - fleetAuthz: { - fleet: { allAgents: true }, - }, - // @ts-expect-error TODO(https://github.com/elastic/kibana/issues/196095): Replace {RouteDeprecationInfo} - deprecated: true, - }) - .addVersion( - { - version: API_VERSIONS.public.v1, - validate: { request: PutAgentReassignRequestSchemaDeprecated }, - }, - putAgentsReassignHandlerDeprecated - ); - router.versioned .post({ path: AGENT_API_ROUTES.REASSIGN_PATTERN, @@ -613,22 +594,6 @@ export const registerAPIRoutes = (router: FleetAuthzRouter, config: FleetConfigT }, getAgentStatusForAgentPolicyHandler ); - router.versioned - .get({ - path: AGENT_API_ROUTES.STATUS_PATTERN_DEPRECATED, - fleetAuthz: { - fleet: { readAgents: true }, - }, - // @ts-expect-error TODO(https://github.com/elastic/kibana/issues/196095): Replace {RouteDeprecationInfo} - deprecated: true, - }) - .addVersion( - { - version: API_VERSIONS.public.v1, - validate: { request: GetAgentStatusRequestSchema }, - }, - getAgentStatusForAgentPolicyHandler - ); // Agent data router.versioned .get({ diff --git a/x-pack/plugins/fleet/server/routes/app/index.ts b/x-pack/plugins/fleet/server/routes/app/index.ts index c0b7dbcfa1743..e66f9f02a687b 100644 --- a/x-pack/plugins/fleet/server/routes/app/index.ts +++ b/x-pack/plugins/fleet/server/routes/app/index.ts @@ -285,22 +285,4 @@ export const registerRoutes = (router: FleetAuthzRouter, config: FleetConfigType }, generateServiceTokenHandler ); - - router.versioned - .post({ - path: APP_API_ROUTES.GENERATE_SERVICE_TOKEN_PATTERN_DEPRECATED, - fleetAuthz: { - fleet: { allAgents: true }, - }, - description: `Create a service token`, - // @ts-expect-error TODO(https://github.com/elastic/kibana/issues/196095): Replace {RouteDeprecationInfo} - deprecated: true, - }) - .addVersion( - { - version: API_VERSIONS.public.v1, - validate: {}, - }, - generateServiceTokenHandler - ); }; diff --git a/x-pack/plugins/fleet/server/types/rest_spec/agent.ts b/x-pack/plugins/fleet/server/types/rest_spec/agent.ts index c1dface818f28..f9db02b92a659 100644 --- a/x-pack/plugins/fleet/server/types/rest_spec/agent.ts +++ b/x-pack/plugins/fleet/server/types/rest_spec/agent.ts @@ -217,11 +217,6 @@ export const AgentResponseSchema = schema.object({ }); export const GetAgentsResponseSchema = ListResponseSchema(AgentResponseSchema).extends({ - list: schema.maybe( - schema.arrayOf(AgentResponseSchema, { - meta: { deprecated: true }, - }) - ), statusSummary: schema.maybe(schema.recordOf(AgentStatusSchema, schema.number())), }); @@ -377,15 +372,6 @@ export const PostBulkAgentUpgradeRequestSchema = { }), }; -export const PutAgentReassignRequestSchemaDeprecated = { - params: schema.object({ - agentId: schema.string(), - }), - body: schema.object({ - policy_id: schema.string(), - }), -}; - export const PostAgentReassignRequestSchema = { params: schema.object({ agentId: schema.string(), @@ -518,9 +504,6 @@ export const GetAgentStatusRequestSchema = { return validationObj?.error; } }, - meta: { - deprecated: true, - }, }) ), }), @@ -529,11 +512,6 @@ export const GetAgentStatusRequestSchema = { export const GetAgentStatusResponseSchema = schema.object({ results: schema.object({ events: schema.number(), - total: schema.number({ - meta: { - deprecated: true, - }, - }), online: schema.number(), error: schema.number(), offline: schema.number(), diff --git a/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_policies.ts b/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_policies.ts index 9e84410712506..64b10f0a8248e 100644 --- a/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_policies.ts +++ b/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_policies.ts @@ -59,7 +59,7 @@ export const getAgentPoliciesRoute = (router: IRouter, osqueryContext: OsqueryAp (agentPolicy: GetAgentPoliciesResponseItem) => agentService?.asInternalUser .getAgentStatusForAgentPolicy(agentPolicy.id) - .then(({ total: agentTotal }) => (agentPolicy.agents = agentTotal)), + .then(({ active: agentTotal }) => (agentPolicy.agents = agentTotal)), { concurrency: 10 } ); } diff --git a/x-pack/plugins/security_solution/public/management/cypress/tasks/fleet.ts b/x-pack/plugins/security_solution/public/management/cypress/tasks/fleet.ts index e122eebedfc33..5372b46e11f9e 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/tasks/fleet.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/tasks/fleet.ts @@ -22,7 +22,7 @@ import { } from '@kbn/fleet-plugin/common'; import type { GetOneAgentResponse, - PutAgentReassignResponse, + PostAgentReassignResponse, UpdateAgentPolicyResponse, } from '@kbn/fleet-plugin/common/types'; import { uninstallTokensRouteService } from '@kbn/fleet-plugin/common/services/routes'; @@ -56,10 +56,10 @@ export const getAgentByHostName = (hostname: string): Cypress.Chainable = export const reassignAgentPolicy = ( agentId: string, agentPolicyId: string -): Cypress.Chainable> => - request({ +): Cypress.Chainable> => + request({ url: agentRouteService.getReassignPath(agentId), - method: 'PUT', + method: 'POST', body: { policy_id: agentPolicyId, }, diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_details.test.tsx b/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_details.test.tsx index ffcee81a3cb8f..75e932d5385fd 100644 --- a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_details.test.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_details.test.tsx @@ -124,7 +124,7 @@ describe('Policy Details', () => { if (path === `${AGENT_API_ROUTES.STATUS_PATTERN}`) { asyncActions = asyncActions.then(async () => sleep()); return Promise.resolve({ - results: { events: 0, total: 5, online: 3, error: 1, offline: 1 }, + results: { events: 0, active: 5, online: 3, error: 1, offline: 1 }, success: true, }); } diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_details.tsx b/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_details.tsx index 7f72a8d475134..13f18d071d543 100644 --- a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_details.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_details.tsx @@ -60,7 +60,7 @@ export const PolicyDetails = React.memo(() => { const headerRightContent = ( { const { body: apiResponse } = await supertest.get(`/api/fleet/agents`).expect(200); - expect(apiResponse).to.have.keys('page', 'total', 'items', 'list'); + expect(apiResponse).to.have.keys('page', 'total', 'items'); expect(apiResponse.total).to.eql(4); }); it('should return 200 if the passed kuery is valid', async () => { await supertest - .get(`/api/fleet/agent_status?kuery=fleet-agents.local_metadata.host.hostname:test`) + .get(`/api/fleet/agents?kuery=fleet-agents.local_metadata.host.hostname:test`) .set('kbn-xsrf', 'xxxx') .expect(200); }); it('should return 200 also if the passed kuery does not have prefix fleet-agents', async () => { await supertest - .get(`/api/fleet/agent_status?kuery=local_metadata.host.hostname:test`) + .get(`/api/fleet/agents?kuery=local_metadata.host.hostname:test`) .set('kbn-xsrf', 'xxxx') .expect(200); }); @@ -181,7 +181,7 @@ export default function ({ getService }: FtrProviderContext) { .get(`/api/fleet/agents?withMetrics=true`) .expect(200); - expect(apiResponse).to.have.keys('page', 'total', 'items', 'list'); + expect(apiResponse).to.have.keys('page', 'total', 'items'); expect(apiResponse.total).to.eql(4); const agent1: Agent = apiResponse.items.find((agent: any) => agent.id === 'agent1'); diff --git a/x-pack/test/fleet_api_integration/apis/agents/privileges.ts b/x-pack/test/fleet_api_integration/apis/agents/privileges.ts index 9bbb2d1091dab..0b503e28cf136 100644 --- a/x-pack/test/fleet_api_integration/apis/agents/privileges.ts +++ b/x-pack/test/fleet_api_integration/apis/agents/privileges.ts @@ -262,7 +262,7 @@ export default function (providerContext: FtrProviderContext) { }, { method: 'GET', - path: '/api/fleet/agent-status', + path: '/api/fleet/agent_status', scenarios: READ_SCENARIOS, }, { diff --git a/x-pack/test/fleet_api_integration/apis/agents/status.ts b/x-pack/test/fleet_api_integration/apis/agents/status.ts index 7c1134d055bc8..42b60a0624a96 100644 --- a/x-pack/test/fleet_api_integration/apis/agents/status.ts +++ b/x-pack/test/fleet_api_integration/apis/agents/status.ts @@ -217,7 +217,6 @@ export default function ({ getService }: FtrProviderContext) { results: { events: 0, other: 0, - total: 8, online: 2, active: 8, all: 11, @@ -230,10 +229,6 @@ export default function ({ getService }: FtrProviderContext) { }); }); - it('should work with deprecated api', async () => { - await supertest.get(`/api/fleet/agent-status`).set('kbn-xsrf', 'xxxx').expect(200); - }); - it('should work with adequate package privileges', async () => { await superTestWithoutAuth .get(`/api/fleet/agent_status`) @@ -296,7 +291,6 @@ export default function ({ getService }: FtrProviderContext) { results: { events: 0, other: 0, - total: 10, online: 3, active: 10, all: 11, diff --git a/x-pack/test/fleet_api_integration/apis/agents/update_agent_tags.ts b/x-pack/test/fleet_api_integration/apis/agents/update_agent_tags.ts index 497e82ea6abc4..3a11fc4398aed 100644 --- a/x-pack/test/fleet_api_integration/apis/agents/update_agent_tags.ts +++ b/x-pack/test/fleet_api_integration/apis/agents/update_agent_tags.ts @@ -170,7 +170,7 @@ export default function (providerContext: FtrProviderContext) { it('should not update tags of hosted agent', async () => { // move agent2 to policy2 to keep it regular - await supertest.put(`/api/fleet/agents/agent2/reassign`).set('kbn-xsrf', 'xxx').send({ + await supertest.post(`/api/fleet/agents/agent2/reassign`).set('kbn-xsrf', 'xxx').send({ policy_id: 'policy2', }); // update enrolled policy to hosted diff --git a/x-pack/test/fleet_api_integration/apis/agents/upgrade.ts b/x-pack/test/fleet_api_integration/apis/agents/upgrade.ts index 33e85b2389b55..621c5843d5dc3 100644 --- a/x-pack/test/fleet_api_integration/apis/agents/upgrade.ts +++ b/x-pack/test/fleet_api_integration/apis/agents/upgrade.ts @@ -1525,7 +1525,7 @@ export default function (providerContext: FtrProviderContext) { it('enrolled in a hosted agent policy bulk upgrade should respond with 200 and object of results. Should not update the hosted agent SOs', async () => { // move agent2 to policy2 to keep it regular - await supertest.put(`/api/fleet/agents/agent2/reassign`).set('kbn-xsrf', 'xxx').send({ + await supertest.post(`/api/fleet/agents/agent2/reassign`).set('kbn-xsrf', 'xxx').send({ policy_id: 'policy2', }); // update enrolled policy to hosted diff --git a/x-pack/test/fleet_api_integration/apis/fleet_telemetry.ts b/x-pack/test/fleet_api_integration/apis/fleet_telemetry.ts index 6650105775c0f..474d777fcd906 100644 --- a/x-pack/test/fleet_api_integration/apis/fleet_telemetry.ts +++ b/x-pack/test/fleet_api_integration/apis/fleet_telemetry.ts @@ -137,7 +137,7 @@ export default function (providerContext: FtrProviderContext) { .set('kbn-xsrf', 'xxxx') .expect(200); - if (apiResponse.list.length === expectedAgentCount) { + if (apiResponse.items.length === expectedAgentCount) { return apiResponse; } diff --git a/x-pack/test/fleet_api_integration/apis/service_tokens.ts b/x-pack/test/fleet_api_integration/apis/service_tokens.ts index 13fb8545fd80d..7737f2ad7c261 100644 --- a/x-pack/test/fleet_api_integration/apis/service_tokens.ts +++ b/x-pack/test/fleet_api_integration/apis/service_tokens.ts @@ -45,10 +45,6 @@ export default function (providerContext: FtrProviderContext) { }); }); - it('should work with deprecated api', async () => { - await supertest.post(`/api/fleet/service-tokens`).set('kbn-xsrf', 'xxxx').expect(200); - }); - it('should create a valid remote service account token', async () => { const { body: apiResponse } = await supertest .post(`/api/fleet/service_tokens`) From 37ebf29f87047e8b96e3c2cd378c647a4f2ca797 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20C=C3=B4t=C3=A9?= Date: Fri, 1 Nov 2024 08:19:04 -0400 Subject: [PATCH 6/8] Remove stale tasks from task conflict count during task claiming (#198416) In this PR, I'm removing the count of stale tasks from the number of conflicts during the claiming cycle. I am also adding a new property to the task manager health report (`claim_stale_tasks`) so we can track those separately to ensure we have the proper page size. ## To verify Apply the following diff, observe the new `claim_stale_tasks` in the TM health API and that conflicts are 0 ``` diff --git a/x-pack/plugins/task_manager/server/task_claimers/strategy_mget.ts b/x-pack/plugins/task_manager/server/task_claimers/strategy_mget.ts index 4e74454e8c9..35d7fd872d8 100644 --- a/x-pack/plugins/task_manager/server/task_claimers/strategy_mget.ts +++ b/x-pack/plugins/task_manager/server/task_claimers/strategy_mget.ts @@ -145,6 +145,7 @@ async function claimAvailableTasks(opts: TaskClaimerOpts): Promise(runningAverageWindowSize); const claimConflictsQueue = createRunningAveragedStat(runningAverageWindowSize); const claimMismatchesQueue = createRunningAveragedStat(runningAverageWindowSize); + const claimStaleTasksQueue = createRunningAveragedStat(runningAverageWindowSize); const polledTasksByPersistenceQueue = createRunningAveragedStat(runningAverageWindowSize); const taskPollingEvents$: Observable> = combineLatest([ @@ -161,9 +163,8 @@ export function createTaskRunAggregator( isOk(taskEvent.event) ), map((taskEvent: TaskLifecycleEvent) => { - const { result, stats: { tasksClaimed, tasksUpdated, tasksConflicted } = {} } = ( - taskEvent.event as unknown as Ok - ).value; + const { result, stats: { tasksClaimed, tasksUpdated, tasksConflicted, staleTasks } = {} } = + (taskEvent.event as unknown as Ok).value; const duration = (taskEvent?.timing?.stop ?? 0) - (taskEvent?.timing?.start ?? 0); return { polling: { @@ -179,6 +180,9 @@ export function createTaskRunAggregator( isNumber(tasksClaimed) && isNumber(tasksUpdated) ? claimMismatchesQueue(tasksUpdated - tasksClaimed) : claimMismatchesQueue(), + claim_stale_tasks: isNumber(staleTasks) + ? claimStaleTasksQueue(staleTasks) + : claimStaleTasksQueue(), result_frequency_percent_as_number: resultFrequencyQueue(result), }, }; @@ -258,6 +262,7 @@ export function createTaskRunAggregator( claim_duration: [], claim_conflicts: [], claim_mismatches: [], + claim_stale_tasks: [], result_frequency_percent_as_number: [], persistence: [], }, @@ -347,6 +352,7 @@ export function summarizeTaskRunStat( result_frequency_percent_as_number: pollingResultFrequency, claim_conflicts: claimConflicts, claim_mismatches: claimMismatches, + claim_stale_tasks: claimStaleTasks, persistence: pollingPersistence, }, drift, @@ -373,6 +379,7 @@ export function summarizeTaskRunStat( duration: calculateRunningAverage(pollingDuration as number[]), claim_conflicts: calculateRunningAverage(claimConflicts as number[]), claim_mismatches: calculateRunningAverage(claimMismatches as number[]), + claim_stale_tasks: calculateRunningAverage(claimStaleTasks as number[]), result_frequency_percent_as_number: { ...DEFAULT_POLLING_FREQUENCIES, ...calculateFrequency(pollingResultFrequency as FillPoolResult[]), diff --git a/x-pack/plugins/task_manager/server/routes/health.test.ts b/x-pack/plugins/task_manager/server/routes/health.test.ts index e3a7eb278d225..1e06ea91a6fcf 100644 --- a/x-pack/plugins/task_manager/server/routes/health.test.ts +++ b/x-pack/plugins/task_manager/server/routes/health.test.ts @@ -942,6 +942,7 @@ function mockHealthStats(overrides = {}) { claim_conflicts: [0, 100, 75], claim_mismatches: [0, 100, 75], claim_duration: [0, 100, 75], + claim_stale_tasks: [0, 100, 75], result_frequency_percent_as_number: [ FillPoolResult.NoTasksClaimed, FillPoolResult.NoTasksClaimed, diff --git a/x-pack/plugins/task_manager/server/task_claimers/index.ts b/x-pack/plugins/task_manager/server/task_claimers/index.ts index 4b6c8b96d6ca4..178ebacf68cb9 100644 --- a/x-pack/plugins/task_manager/server/task_claimers/index.ts +++ b/x-pack/plugins/task_manager/server/task_claimers/index.ts @@ -40,6 +40,7 @@ export interface ClaimOwnershipResult { tasksClaimed: number; tasksLeftUnclaimed?: number; tasksErrors?: number; + staleTasks?: number; }; docs: ConcreteTaskInstance[]; timing?: TaskTiming; @@ -70,6 +71,7 @@ export function getEmptyClaimOwnershipResult(): ClaimOwnershipResult { tasksUpdated: 0, tasksConflicted: 0, tasksClaimed: 0, + staleTasks: 0, }, docs: [], }; diff --git a/x-pack/plugins/task_manager/server/task_claimers/strategy_mget.test.ts b/x-pack/plugins/task_manager/server/task_claimers/strategy_mget.test.ts index 0d3560c3bec6e..e089d3b2d8785 100644 --- a/x-pack/plugins/task_manager/server/task_claimers/strategy_mget.test.ts +++ b/x-pack/plugins/task_manager/server/task_claimers/strategy_mget.test.ts @@ -433,6 +433,7 @@ describe('TaskClaiming', () => { tasksConflicted: 0, tasksErrors: 0, tasksUpdated: 3, + staleTasks: 0, tasksLeftUnclaimed: 3, }); expect(result.docs.length).toEqual(3); @@ -529,6 +530,7 @@ describe('TaskClaiming', () => { tasksErrors: 0, tasksUpdated: 1, tasksLeftUnclaimed: 0, + staleTasks: 0, }); expect(result.docs.length).toEqual(1); }); @@ -640,6 +642,7 @@ describe('TaskClaiming', () => { tasksErrors: 0, tasksUpdated: 1, tasksLeftUnclaimed: 0, + staleTasks: 0, }); expect(result.docs.length).toEqual(1); }); @@ -737,6 +740,7 @@ describe('TaskClaiming', () => { tasksErrors: 0, tasksUpdated: 1, tasksLeftUnclaimed: 0, + staleTasks: 0, }); expect(result.docs.length).toEqual(1); }); @@ -792,6 +796,7 @@ describe('TaskClaiming', () => { tasksClaimed: 0, tasksConflicted: 0, tasksUpdated: 0, + staleTasks: 0, }); expect(result.docs.length).toEqual(0); }); @@ -885,6 +890,7 @@ describe('TaskClaiming', () => { tasksErrors: 0, tasksUpdated: 2, tasksLeftUnclaimed: 0, + staleTasks: 0, }); expect(result.docs.length).toEqual(2); }); @@ -978,6 +984,7 @@ describe('TaskClaiming', () => { tasksErrors: 0, tasksUpdated: 2, tasksLeftUnclaimed: 0, + staleTasks: 0, }); expect(result.docs.length).toEqual(2); }); @@ -1031,7 +1038,7 @@ describe('TaskClaiming', () => { expect(mockApmTrans.end).toHaveBeenCalledWith('success'); expect(taskManagerLogger.debug).toHaveBeenCalledWith( - 'task claimer claimed: 2; stale: 1; conflicts: 1; missing: 0; capacity reached: 0; updateErrors: 0; getErrors: 0; removed: 0;', + 'task claimer claimed: 2; stale: 1; conflicts: 0; missing: 0; capacity reached: 0; updateErrors: 0; getErrors: 0; removed: 0;', { tags: ['taskClaiming', 'claimAvailableTasksMget'] } ); @@ -1067,10 +1074,11 @@ describe('TaskClaiming', () => { expect(result.stats).toEqual({ tasksClaimed: 2, - tasksConflicted: 1, + tasksConflicted: 0, tasksErrors: 0, tasksUpdated: 2, tasksLeftUnclaimed: 0, + staleTasks: 1, }); expect(result.docs.length).toEqual(2); }); @@ -1197,6 +1205,7 @@ describe('TaskClaiming', () => { tasksErrors: 0, tasksUpdated: 4, tasksLeftUnclaimed: 0, + staleTasks: 0, }); expect(result.docs.length).toEqual(4); }); @@ -1330,6 +1339,7 @@ describe('TaskClaiming', () => { tasksErrors: 1, tasksUpdated: 3, tasksLeftUnclaimed: 0, + staleTasks: 0, }); expect(result.docs.length).toEqual(3); }); @@ -1458,6 +1468,7 @@ describe('TaskClaiming', () => { tasksErrors: 0, tasksUpdated: 4, tasksLeftUnclaimed: 0, + staleTasks: 0, }); expect(result.docs.length).toEqual(4); for (const r of result.docs) { @@ -1699,6 +1710,7 @@ describe('TaskClaiming', () => { tasksErrors: 1, tasksUpdated: 3, tasksLeftUnclaimed: 0, + staleTasks: 0, }); expect(result.docs.length).toEqual(3); }); @@ -1829,6 +1841,7 @@ describe('TaskClaiming', () => { tasksErrors: 0, tasksUpdated: 3, tasksLeftUnclaimed: 0, + staleTasks: 0, }); expect(result.docs.length).toEqual(3); }); diff --git a/x-pack/plugins/task_manager/server/task_claimers/strategy_mget.ts b/x-pack/plugins/task_manager/server/task_claimers/strategy_mget.ts index 4b7e5ec6b3691..4e74454e8c982 100644 --- a/x-pack/plugins/task_manager/server/task_claimers/strategy_mget.ts +++ b/x-pack/plugins/task_manager/server/task_claimers/strategy_mget.ts @@ -196,7 +196,7 @@ async function claimAvailableTasks(opts: TaskClaimerOpts): Promise Date: Fri, 1 Nov 2024 13:55:20 +0100 Subject: [PATCH 7/8] [Synthetics] Added error track trace to status/tls rule context variable !! (#198599) ## Summary Fixes https://github.com/elastic/kibana/issues/198593 Added error track trace to status/tls rule context variable !! image --- .../generated/observability_uptime_schema.ts | 1 + .../alert_as_data_fields.test.ts.snap | 20 +++++++++++++++++++ .../synthetics/common/field_names.ts | 1 + .../common/requests/get_certs_request_body.ts | 3 ++- .../common/rules/synthetics_rule_field_map.ts | 4 ++++ .../synthetics/common/runtime_types/certs.ts | 1 + .../alert_rules/status_rule/message_utils.ts | 7 ++++++- .../server/alert_rules/status_rule/types.ts | 1 + .../alert_rules/tls_rule/message_utils.ts | 4 ++++ .../server/alert_rules/translations.ts | 9 +++++++++ .../common/rules/uptime_rule_field_map.ts | 4 ++++ 11 files changed, 53 insertions(+), 2 deletions(-) diff --git a/packages/kbn-alerts-as-data-utils/src/schemas/generated/observability_uptime_schema.ts b/packages/kbn-alerts-as-data-utils/src/schemas/generated/observability_uptime_schema.ts index 8770b70402d08..bf37ffc1ddb9c 100644 --- a/packages/kbn-alerts-as-data-utils/src/schemas/generated/observability_uptime_schema.ts +++ b/packages/kbn-alerts-as-data-utils/src/schemas/generated/observability_uptime_schema.ts @@ -77,6 +77,7 @@ const ObservabilityUptimeAlertOptional = rt.partial({ 'anomaly.start': schemaDate, configId: schemaString, 'error.message': schemaString, + 'error.stack_trace': schemaString, 'host.name': schemaString, 'kibana.alert.context': schemaUnknown, 'kibana.alert.evaluation.threshold': schemaStringOrNumber, diff --git a/x-pack/plugins/alerting/server/integration_tests/__snapshots__/alert_as_data_fields.test.ts.snap b/x-pack/plugins/alerting/server/integration_tests/__snapshots__/alert_as_data_fields.test.ts.snap index 8c65843f2d844..0513842a6126b 100644 --- a/x-pack/plugins/alerting/server/integration_tests/__snapshots__/alert_as_data_fields.test.ts.snap +++ b/x-pack/plugins/alerting/server/integration_tests/__snapshots__/alert_as_data_fields.test.ts.snap @@ -9851,6 +9851,10 @@ Object { "required": false, "type": "text", }, + "error.stack_trace": Object { + "required": false, + "type": "wildcard", + }, "host.name": Object { "required": false, "type": "keyword", @@ -9991,6 +9995,10 @@ Object { "required": false, "type": "text", }, + "error.stack_trace": Object { + "required": false, + "type": "wildcard", + }, "host.name": Object { "required": false, "type": "keyword", @@ -10131,6 +10139,10 @@ Object { "required": false, "type": "text", }, + "error.stack_trace": Object { + "required": false, + "type": "wildcard", + }, "host.name": Object { "required": false, "type": "keyword", @@ -10271,6 +10283,10 @@ Object { "required": false, "type": "text", }, + "error.stack_trace": Object { + "required": false, + "type": "wildcard", + }, "host.name": Object { "required": false, "type": "keyword", @@ -10417,6 +10433,10 @@ Object { "required": false, "type": "text", }, + "error.stack_trace": Object { + "required": false, + "type": "wildcard", + }, "host.name": Object { "required": false, "type": "keyword", diff --git a/x-pack/plugins/observability_solution/synthetics/common/field_names.ts b/x-pack/plugins/observability_solution/synthetics/common/field_names.ts index e7f8e83d73b4b..45be741982b01 100644 --- a/x-pack/plugins/observability_solution/synthetics/common/field_names.ts +++ b/x-pack/plugins/observability_solution/synthetics/common/field_names.ts @@ -15,6 +15,7 @@ export const OBSERVER_NAME = 'observer.name'; export const SERVICE_NAME = 'service.name'; export const OBSERVER_GEO_NAME = 'observer.geo.name'; export const ERROR_MESSAGE = 'error.message'; +export const ERROR_STACK_TRACE = 'error.stack_trace'; export const STATE_ID = 'monitor.state.id'; export const CERT_COMMON_NAME = 'tls.server.x509.subject.common_name'; diff --git a/x-pack/plugins/observability_solution/synthetics/common/requests/get_certs_request_body.ts b/x-pack/plugins/observability_solution/synthetics/common/requests/get_certs_request_body.ts index f151192a730ed..31f389a909004 100644 --- a/x-pack/plugins/observability_solution/synthetics/common/requests/get_certs_request_body.ts +++ b/x-pack/plugins/observability_solution/synthetics/common/requests/get_certs_request_body.ts @@ -150,7 +150,7 @@ export const getCertsRequestBody = ({ 'service', 'labels', 'tags', - 'error.message', + 'error', ], collapse: { field: 'tls.server.hash.sha256', @@ -222,6 +222,7 @@ export const processCertsResult = (result: CertificatesResults): CertResult => { locationId: ping?.observer?.name, locationName: ping?.observer?.geo?.name, errorMessage: ping?.error?.message, + errorStackTrace: ping?.error?.stack_trace, }; }); const total = result.aggregations?.total?.value ?? 0; diff --git a/x-pack/plugins/observability_solution/synthetics/common/rules/synthetics_rule_field_map.ts b/x-pack/plugins/observability_solution/synthetics/common/rules/synthetics_rule_field_map.ts index f82f44ba2d24d..390916026668c 100644 --- a/x-pack/plugins/observability_solution/synthetics/common/rules/synthetics_rule_field_map.ts +++ b/x-pack/plugins/observability_solution/synthetics/common/rules/synthetics_rule_field_map.ts @@ -32,6 +32,10 @@ export const syntheticsRuleFieldMap: FieldMap = { type: 'text', required: false, }, + 'error.stack_trace': { + type: 'wildcard', + required: false, + }, 'agent.name': { type: 'keyword', required: false, diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/certs.ts b/x-pack/plugins/observability_solution/synthetics/common/runtime_types/certs.ts index 4fe14a54c0d66..49ac5573294e1 100644 --- a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/certs.ts +++ b/x-pack/plugins/observability_solution/synthetics/common/runtime_types/certs.ts @@ -51,6 +51,7 @@ export const CertType = t.intersection([ '@timestamp': t.string, serviceName: t.string, errorMessage: t.string, + errorStackTrace: t.union([t.string, t.null]), labels: t.record(t.string, t.string), tags: t.array(t.string), }), diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/message_utils.ts b/x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/message_utils.ts index 812a900667cf7..6f01e9b234bf6 100644 --- a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/message_utils.ts +++ b/x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/message_utils.ts @@ -24,6 +24,7 @@ import { AGENT_NAME, STATE_ID, SERVICE_NAME, + ERROR_STACK_TRACE, } from '../../../common/field_names'; import { OverviewPing } from '../../../common/runtime_types'; import { UNNAMED_LOCATION } from '../../../common/constants'; @@ -42,6 +43,8 @@ export const getMonitorAlertDocument = ( [OBSERVER_GEO_NAME]: locationNames, [OBSERVER_NAME]: locationIds, [ERROR_MESSAGE]: monitorSummary.lastErrorMessage, + // done to avoid assigning null to the field + [ERROR_STACK_TRACE]: monitorSummary.lastErrorStack ? monitorSummary.lastErrorStack : undefined, [AGENT_NAME]: monitorSummary.hostName, [ALERT_REASON]: monitorSummary.reason, [STATE_ID]: monitorSummary.stateId, @@ -114,7 +117,9 @@ export const getMonitorSummary = ({ monitorId: monitorInfo.monitor?.id, monitorName, monitorType: typeToLabelMap[monitorInfo.monitor?.type] || monitorInfo.monitor?.type, - lastErrorMessage: monitorInfo.error?.message!, + lastErrorMessage: monitorInfo.error?.message, + // done to avoid assigning null to the field + lastErrorStack: monitorInfo.error?.stack_trace ? monitorInfo.error?.stack_trace : undefined, serviceName: monitorInfo.service?.name, labels: monitorInfo.labels, locationName: formattedLocationName, diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/types.ts b/x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/types.ts index 82294e55c08fc..85ae989876107 100644 --- a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/types.ts +++ b/x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/types.ts @@ -69,6 +69,7 @@ export interface MonitorSummaryStatusRule { }; stateId?: string; lastErrorMessage?: string; + lastErrorStack?: string | null; timestamp: string; labels?: Record; } diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/tls_rule/message_utils.ts b/x-pack/plugins/observability_solution/synthetics/server/alert_rules/tls_rule/message_utils.ts index 15a6f093becd9..a6a7d82fb3335 100644 --- a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/tls_rule/message_utils.ts +++ b/x-pack/plugins/observability_solution/synthetics/server/alert_rules/tls_rule/message_utils.ts @@ -29,6 +29,7 @@ import { CERT_VALID_NOT_AFTER, CERT_VALID_NOT_BEFORE, ERROR_MESSAGE, + ERROR_STACK_TRACE, MONITOR_ID, MONITOR_NAME, MONITOR_TYPE, @@ -103,6 +104,7 @@ export const getCertSummary = (cert: Cert, expirationThreshold: number, ageThres configId: cert.configId, monitorTags: cert.tags, errorMessage: cert.errorMessage, + errorStackTrace: cert.errorStackTrace, labels: cert.labels, }; }; @@ -123,6 +125,8 @@ export const getTLSAlertDocument = (cert: Cert, monitorSummary: CertSummary, uui [OBSERVER_GEO_NAME]: monitorSummary.locationName ? [monitorSummary.locationName] : [], [OBSERVER_NAME]: monitorSummary.locationId ? [monitorSummary.locationId] : [], [ERROR_MESSAGE]: monitorSummary.errorMessage, + // done to avoid assigning null to the field + [ERROR_STACK_TRACE]: monitorSummary.errorStackTrace ? monitorSummary.errorStackTrace : undefined, 'location.id': monitorSummary.locationId ? [monitorSummary.locationId] : [], 'location.name': monitorSummary.locationName ? [monitorSummary.locationName] : [], labels: cert.labels, diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/translations.ts b/x-pack/plugins/observability_solution/synthetics/server/alert_rules/translations.ts index 40017b00646f1..03063f92ee56c 100644 --- a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/translations.ts +++ b/x-pack/plugins/observability_solution/synthetics/server/alert_rules/translations.ts @@ -79,6 +79,15 @@ export const commonMonitorStateI18: Array<{ } ), }, + { + name: 'lastErrorStack', + description: i18n.translate( + 'xpack.synthetics.alertRules.monitorStatus.actionVariables.state.lastErrorStack', + { + defaultMessage: 'Monitor last error stack trace.', + } + ), + }, { name: 'locationName', description: i18n.translate( diff --git a/x-pack/plugins/observability_solution/uptime/common/rules/uptime_rule_field_map.ts b/x-pack/plugins/observability_solution/uptime/common/rules/uptime_rule_field_map.ts index 6e0f73e183462..c157177b585ba 100644 --- a/x-pack/plugins/observability_solution/uptime/common/rules/uptime_rule_field_map.ts +++ b/x-pack/plugins/observability_solution/uptime/common/rules/uptime_rule_field_map.ts @@ -32,6 +32,10 @@ export const uptimeRuleFieldMap: FieldMap = { type: 'text', required: false, }, + 'error.stack_trace': { + type: 'wildcard', + required: false, + }, 'agent.name': { type: 'keyword', required: false, From 0ecef0ab60db28d41da69a414f7db31f278261ab Mon Sep 17 00:00:00 2001 From: Ilya Nikokoshev Date: Fri, 1 Nov 2024 15:38:07 +0200 Subject: [PATCH 8/8] [Automatic Import] Fix yarn draw-graphs command (#198229) ## Summary Fixes https://github.com/elastic/kibana/issues/196425. It turns out the reason `yarn draw-graphs` produced the three-box graphs was because `.withConfig` creates an instance of RunnableInput which does not have a good way to draw itself other than as three boxes. The solution was to makes sure we are calling the original version without `.withConfig` when drawing the graphs. We still call the new version when invoking them, as demonstrated by the run names here. We are now able to generate the correct graphs for all chains. --------- Co-authored-by: Elastic Machine --- .../docs/imgs/categorization_graph.png | Bin 57867 -> 60880 bytes .../docs/imgs/cel_graph.png | Bin 0 -> 23312 bytes .../docs/imgs/log_detection_graph.png | Bin 28782 -> 34355 bytes .../docs/imgs/related_graph.png | Bin 39786 -> 31146 bytes .../docs/imgs/unstructured_graph.png | Bin 0 -> 22221 bytes .../scripts/draw_graphs_script.ts | 29 ++++++++++-------- .../server/graphs/categorization/graph.ts | 2 +- .../server/graphs/cel/graph.ts | 2 +- .../server/graphs/ecs/graph.ts | 6 ++-- .../server/graphs/kv/graph.ts | 2 +- .../server/graphs/log_type_detection/graph.ts | 12 ++++++-- .../server/graphs/related/graph.ts | 2 +- .../server/graphs/unstructured/graph.ts | 2 +- .../server/routes/analyze_logs_routes.ts | 4 ++- .../routes/categorization_routes.test.ts | 4 ++- .../server/routes/categorization_routes.ts | 4 ++- .../server/routes/cel_route.test.ts | 4 ++- .../server/routes/cel_routes.ts | 2 +- .../server/routes/ecs_routes.test.ts | 4 ++- .../server/routes/ecs_routes.ts | 4 ++- .../server/routes/related_routes.test.ts | 4 ++- .../server/routes/related_routes.ts | 4 ++- 22 files changed, 59 insertions(+), 32 deletions(-) create mode 100644 x-pack/plugins/integration_assistant/docs/imgs/cel_graph.png create mode 100644 x-pack/plugins/integration_assistant/docs/imgs/unstructured_graph.png diff --git a/x-pack/plugins/integration_assistant/docs/imgs/categorization_graph.png b/x-pack/plugins/integration_assistant/docs/imgs/categorization_graph.png index a15dbf54d905a5ce46be51f306c9981b74995c61..de45a18546b40f40384f8eaebb88aca48591c426 100644 GIT binary patch literal 60880 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 literal 57867 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 literal 0 HcmV?d00001 diff --git a/x-pack/plugins/integration_assistant/docs/imgs/log_detection_graph.png b/x-pack/plugins/integration_assistant/docs/imgs/log_detection_graph.png index 285e012c57a149e783883c42aaa10cab2f53dcd7..f89ffc800f0a5763dc2848c54408698421824132 100644 GIT binary patch literal 34355 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 literal 28782 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 literal 39786 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 JZ-71+{s(o6o;Uyi diff --git a/x-pack/plugins/integration_assistant/docs/imgs/unstructured_graph.png b/x-pack/plugins/integration_assistant/docs/imgs/unstructured_graph.png new file mode 100644 index 0000000000000000000000000000000000000000..45ab5abc8d6b3761e0829d5e9ce18fb40acd0872 GIT binary patch literal 22221 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 literal 0 HcmV?d00001 diff --git a/x-pack/plugins/integration_assistant/scripts/draw_graphs_script.ts b/x-pack/plugins/integration_assistant/scripts/draw_graphs_script.ts index 12a37f71b184a..f9fd71c1f934f 100644 --- a/x-pack/plugins/integration_assistant/scripts/draw_graphs_script.ts +++ b/x-pack/plugins/integration_assistant/scripts/draw_graphs_script.ts @@ -20,6 +20,8 @@ import { getEcsGraph, getEcsSubGraph } from '../server/graphs/ecs/graph'; import { getLogFormatDetectionGraph } from '../server/graphs/log_type_detection/graph'; import { getRelatedGraph } from '../server/graphs/related/graph'; import { getKVGraph } from '../server/graphs/kv/graph'; +import { getUnstructuredGraph } from '../server/graphs/unstructured'; +import { getCelGraph } from '../server/graphs/cel/graph'; // Some mock elements just to get the graph to compile const model = new FakeLLM({ @@ -45,17 +47,20 @@ async function drawGraph(compiledGraph: RunnableGraph, graphName: string) { await saveFile(`${graphName}.png`, buffer); } +const GRAPH_LIST = { + related_graph: getRelatedGraph, + log_detection_graph: getLogFormatDetectionGraph, + categorization_graph: getCategorizationGraph, + kv_graph: getKVGraph, + ecs_graph: getEcsGraph, + ecs_subgraph: getEcsSubGraph, + unstructured_graph: getUnstructuredGraph, + cel_graph: getCelGraph, +}; + export async function drawGraphs() { - const relatedGraph = (await getRelatedGraph({ client, model })).getGraph(); - const logFormatDetectionGraph = (await getLogFormatDetectionGraph({ client, model })).getGraph(); - const categorizationGraph = (await getCategorizationGraph({ client, model })).getGraph(); - const ecsSubGraph = (await getEcsSubGraph({ model })).getGraph(); - const ecsGraph = (await getEcsGraph({ model })).getGraph(); - const kvGraph = (await getKVGraph({ client, model })).getGraph(); - drawGraph(relatedGraph, 'related_graph'); - drawGraph(logFormatDetectionGraph, 'log_detection_graph'); - drawGraph(categorizationGraph, 'categorization_graph'); - drawGraph(ecsSubGraph, 'ecs_subgraph'); - drawGraph(ecsGraph, 'ecs_graph'); - drawGraph(kvGraph, 'kv_graph'); + for (const [name, graph] of Object.entries(GRAPH_LIST)) { + const compiledGraph = (await graph({ client, model })).getGraph(); + drawGraph(compiledGraph, name); + } } diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/graph.ts b/x-pack/plugins/integration_assistant/server/graphs/categorization/graph.ts index 2f07bcd106862..cc1601095da62 100644 --- a/x-pack/plugins/integration_assistant/server/graphs/categorization/graph.ts +++ b/x-pack/plugins/integration_assistant/server/graphs/categorization/graph.ts @@ -233,6 +233,6 @@ export async function getCategorizationGraph({ client, model }: CategorizationGr } ); - const compiledCategorizationGraph = workflow.compile().withConfig({ runName: 'Categorization' }); + const compiledCategorizationGraph = workflow.compile(); return compiledCategorizationGraph; } diff --git a/x-pack/plugins/integration_assistant/server/graphs/cel/graph.ts b/x-pack/plugins/integration_assistant/server/graphs/cel/graph.ts index a8f2e0521c788..5d58f82f6f744 100644 --- a/x-pack/plugins/integration_assistant/server/graphs/cel/graph.ts +++ b/x-pack/plugins/integration_assistant/server/graphs/cel/graph.ts @@ -104,6 +104,6 @@ export async function getCelGraph({ model }: CelInputGraphParams) { .addEdge('handleGetStateVariables', 'handleGetStateDetails') .addEdge('handleGetStateDetails', 'modelOutput'); - const compiledCelGraph = workflow.compile().withConfig({ runName: 'CEL' }); + const compiledCelGraph = workflow.compile(); return compiledCelGraph; } diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/graph.ts b/x-pack/plugins/integration_assistant/server/graphs/ecs/graph.ts index 89a7e5c600723..dc2f26f9505e4 100644 --- a/x-pack/plugins/integration_assistant/server/graphs/ecs/graph.ts +++ b/x-pack/plugins/integration_assistant/server/graphs/ecs/graph.ts @@ -78,7 +78,7 @@ export async function getEcsSubGraph({ model }: EcsGraphParams) { }) .addEdge('modelSubOutput', END); - const compiledEcsSubGraph = workflow.compile().withConfig({ runName: 'ECS Mapping (Chunk)' }); + const compiledEcsSubGraph = workflow.compile(); return compiledEcsSubGraph; } @@ -96,7 +96,7 @@ export async function getEcsGraph({ model }: EcsGraphParams) { .addNode('handleMergedSubGraphResponse', (state: EcsMappingState) => modelMergedInputFromSubGraph({ state }) ) - .addNode('subGraph', subGraph) + .addNode('subGraph', subGraph.withConfig({ runName: 'ECS Mapping (Chunk)' })) .addEdge(START, 'modelInput') .addEdge('subGraph', 'handleMergedSubGraphResponse') .addEdge('handleDuplicates', 'handleValidation') @@ -119,6 +119,6 @@ export async function getEcsGraph({ model }: EcsGraphParams) { }) .addEdge('modelOutput', END); - const compiledEcsGraph = workflow.compile().withConfig({ runName: 'ECS Mapping' }); + const compiledEcsGraph = workflow.compile(); return compiledEcsGraph; } diff --git a/x-pack/plugins/integration_assistant/server/graphs/kv/graph.ts b/x-pack/plugins/integration_assistant/server/graphs/kv/graph.ts index f72984655c1f8..6f7b43ba40f22 100644 --- a/x-pack/plugins/integration_assistant/server/graphs/kv/graph.ts +++ b/x-pack/plugins/integration_assistant/server/graphs/kv/graph.ts @@ -139,6 +139,6 @@ export async function getKVGraph({ model, client }: KVGraphParams) { }) .addEdge('modelOutput', END); - const compiledKVGraph = workflow.compile().withConfig({ runName: 'Key-Value' }); + const compiledKVGraph = workflow.compile(); return compiledKVGraph; } diff --git a/x-pack/plugins/integration_assistant/server/graphs/log_type_detection/graph.ts b/x-pack/plugins/integration_assistant/server/graphs/log_type_detection/graph.ts index 95d624a7436c7..ae4c607ab3f68 100644 --- a/x-pack/plugins/integration_assistant/server/graphs/log_type_detection/graph.ts +++ b/x-pack/plugins/integration_assistant/server/graphs/log_type_detection/graph.ts @@ -118,8 +118,14 @@ export async function getLogFormatDetectionGraph({ model, client }: LogDetection .addNode('handleLogFormatDetection', (state: LogFormatDetectionState) => handleLogFormatDetection({ state, model, client }) ) - .addNode('handleKVGraph', await getKVGraph({ model, client })) - .addNode('handleUnstructuredGraph', await getUnstructuredGraph({ model, client })) + .addNode( + 'handleKVGraph', + (await getKVGraph({ model, client })).withConfig({ runName: 'Key-Value' }) + ) + .addNode( + 'handleUnstructuredGraph', + (await getUnstructuredGraph({ model, client })).withConfig({ runName: 'Unstructured' }) + ) .addNode('handleCSV', (state: LogFormatDetectionState) => handleCSV({ state, model, client })) .addEdge(START, 'modelInput') .addEdge('modelInput', 'handleLogFormatDetection') @@ -138,6 +144,6 @@ export async function getLogFormatDetectionGraph({ model, client }: LogDetection } ); - const compiledLogFormatDetectionGraph = workflow.compile().withConfig({ runName: 'Log Format' }); + const compiledLogFormatDetectionGraph = workflow.compile(); return compiledLogFormatDetectionGraph; } diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/graph.ts b/x-pack/plugins/integration_assistant/server/graphs/related/graph.ts index e8dc44a152e80..20ac1c639dcf4 100644 --- a/x-pack/plugins/integration_assistant/server/graphs/related/graph.ts +++ b/x-pack/plugins/integration_assistant/server/graphs/related/graph.ts @@ -179,6 +179,6 @@ export async function getRelatedGraph({ client, model }: RelatedGraphParams) { } ); - const compiledRelatedGraph = workflow.compile().withConfig({ runName: 'Related' }); + const compiledRelatedGraph = workflow.compile(); return compiledRelatedGraph; } diff --git a/x-pack/plugins/integration_assistant/server/graphs/unstructured/graph.ts b/x-pack/plugins/integration_assistant/server/graphs/unstructured/graph.ts index cf3a645effa68..6048404728bfb 100644 --- a/x-pack/plugins/integration_assistant/server/graphs/unstructured/graph.ts +++ b/x-pack/plugins/integration_assistant/server/graphs/unstructured/graph.ts @@ -107,6 +107,6 @@ export async function getUnstructuredGraph({ model, client }: UnstructuredGraphP .addEdge('handleUnstructuredError', 'handleUnstructuredValidate') .addEdge('modelOutput', END); - const compiledUnstructuredGraph = workflow.compile().withConfig({ runName: 'Unstructured' }); + const compiledUnstructuredGraph = workflow.compile(); return compiledUnstructuredGraph; } diff --git a/x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts b/x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts index 639cd62f275b1..04ba66acbebfb 100644 --- a/x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts +++ b/x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts @@ -91,7 +91,9 @@ export function registerAnalyzeLogsRoutes( logSamples, }; const graph = await getLogFormatDetectionGraph({ model, client }); - const graphResults = await graph.invoke(logFormatParameters, options); + const graphResults = await graph + .withConfig({ runName: 'Log Format' }) + .invoke(logFormatParameters, options); const graphLogFormat = graphResults.results.samplesFormat.name; if (graphLogFormat === 'unsupported') { throw new UnsupportedLogFormatError(GenerationErrorCode.UNSUPPORTED_LOG_SAMPLES_FORMAT); diff --git a/x-pack/plugins/integration_assistant/server/routes/categorization_routes.test.ts b/x-pack/plugins/integration_assistant/server/routes/categorization_routes.test.ts index abe626cf7ae73..0e6f4ffa0491a 100644 --- a/x-pack/plugins/integration_assistant/server/routes/categorization_routes.test.ts +++ b/x-pack/plugins/integration_assistant/server/routes/categorization_routes.test.ts @@ -23,7 +23,9 @@ const mockResult = jest.fn().mockResolvedValue({ jest.mock('../graphs/categorization', () => { return { getCategorizationGraph: jest.fn().mockResolvedValue({ - invoke: () => mockResult(), + withConfig: () => ({ + invoke: () => mockResult(), + }), }), }; }); diff --git a/x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts b/x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts index 77ce549f589f4..10d72b92563fe 100644 --- a/x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts +++ b/x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts @@ -99,7 +99,9 @@ export function registerCategorizationRoutes( }; const graph = await getCategorizationGraph({ client, model }); - const results = await graph.invoke(parameters, options); + const results = await graph + .withConfig({ runName: 'Categorization' }) + .invoke(parameters, options); return res.ok({ body: CategorizationResponse.parse(results) }); } catch (err) { diff --git a/x-pack/plugins/integration_assistant/server/routes/cel_route.test.ts b/x-pack/plugins/integration_assistant/server/routes/cel_route.test.ts index be435aa9866bb..02b5f03948a12 100644 --- a/x-pack/plugins/integration_assistant/server/routes/cel_route.test.ts +++ b/x-pack/plugins/integration_assistant/server/routes/cel_route.test.ts @@ -22,7 +22,9 @@ const mockResult = jest.fn().mockResolvedValue({ jest.mock('../graphs/cel', () => { return { getCelGraph: jest.fn().mockResolvedValue({ - invoke: () => mockResult(), + withConfig: () => ({ + invoke: () => mockResult(), + }), }), }; }); diff --git a/x-pack/plugins/integration_assistant/server/routes/cel_routes.ts b/x-pack/plugins/integration_assistant/server/routes/cel_routes.ts index ecf012a88cfe5..5f417bbc0aec9 100644 --- a/x-pack/plugins/integration_assistant/server/routes/cel_routes.ts +++ b/x-pack/plugins/integration_assistant/server/routes/cel_routes.ts @@ -78,7 +78,7 @@ export function registerCelInputRoutes(router: IRouter { return { getEcsGraph: jest.fn().mockResolvedValue({ - invoke: () => mockResult(), + withConfig: () => ({ + invoke: () => mockResult(), + }), }), }; }); diff --git a/x-pack/plugins/integration_assistant/server/routes/ecs_routes.ts b/x-pack/plugins/integration_assistant/server/routes/ecs_routes.ts index 43ca0fe396cae..0bc293492b24d 100644 --- a/x-pack/plugins/integration_assistant/server/routes/ecs_routes.ts +++ b/x-pack/plugins/integration_assistant/server/routes/ecs_routes.ts @@ -92,7 +92,9 @@ export function registerEcsRoutes(router: IRouter { return { getRelatedGraph: jest.fn().mockResolvedValue({ - invoke: () => mockResult(), + withConfig: () => ({ + invoke: () => mockResult(), + }), }), }; }); diff --git a/x-pack/plugins/integration_assistant/server/routes/related_routes.ts b/x-pack/plugins/integration_assistant/server/routes/related_routes.ts index fe3a63abd4ce9..8e147e8385dc0 100644 --- a/x-pack/plugins/integration_assistant/server/routes/related_routes.ts +++ b/x-pack/plugins/integration_assistant/server/routes/related_routes.ts @@ -90,7 +90,9 @@ export function registerRelatedRoutes(router: IRouter