Skip to content

Commit ff8619e

Browse files
authored
Merge branch 'main' into view-in-app
2 parents 62b95dd + a63bb6a commit ff8619e

172 files changed

Lines changed: 5176 additions & 622 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.buildkite/ftr_configs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,7 @@ enabled:
291291
- x-pack/test/functional/apps/lens/open_in_lens/dashboard/config.ts
292292
- x-pack/test/functional/apps/license_management/config.ts
293293
- x-pack/test/functional/apps/logstash/config.ts
294+
- x-pack/test/functional/apps/managed_content/config.ts
294295
- x-pack/test/functional/apps/management/config.ts
295296
- x-pack/test/functional/apps/maps/group1/config.ts
296297
- x-pack/test/functional/apps/maps/group2/config.ts
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/bin/bash
2+
3+
set -euo pipefail
4+
5+
echo "Inside the security solution pipeline"

.eslintrc.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1121,6 +1121,7 @@ module.exports = {
11211121
'x-pack/plugins/security_solution_serverless/**/*.{js,mjs,ts,tsx}',
11221122
'x-pack/plugins/timelines/**/*.{js,mjs,ts,tsx}',
11231123
'x-pack/plugins/cases/**/*.{js,mjs,ts,tsx}',
1124+
'packages/kbn-data-stream-adapter/**/*.{js,mjs,ts,tsx}',
11241125
],
11251126
plugins: ['eslint-plugin-node', 'react'],
11261127
env: {
@@ -1218,6 +1219,8 @@ module.exports = {
12181219
'x-pack/plugins/security_solution_ess/**/*.{js,mjs,ts,tsx}',
12191220
'x-pack/plugins/security_solution_serverless/**/*.{js,mjs,ts,tsx}',
12201221
'x-pack/plugins/cases/**/*.{js,mjs,ts,tsx}',
1222+
'x-pack/plugins/ecs_data_quality_dashboard/**/*.{js,mjs,ts,tsx}',
1223+
'packages/kbn-data-stream-adapter/**/*.{js,mjs,ts,tsx}',
12211224
],
12221225
rules: {
12231226
'@typescript-eslint/consistent-type-imports': 'error',

.github/CODEOWNERS

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,7 @@ x-pack/packages/kbn-data-forge @elastic/obs-ux-management-team
319319
src/plugins/data @elastic/kibana-visualizations @elastic/kibana-data-discovery
320320
test/plugin_functional/plugins/data_search @elastic/kibana-data-discovery
321321
packages/kbn-data-service @elastic/kibana-visualizations @elastic/kibana-data-discovery
322+
packages/kbn-data-stream-adapter @elastic/security-threat-hunting-explore
322323
src/plugins/data_view_editor @elastic/kibana-data-discovery
323324
examples/data_view_field_editor_example @elastic/kibana-data-discovery
324325
src/plugins/data_view_field_editor @elastic/kibana-data-discovery
@@ -503,6 +504,7 @@ packages/kbn-logging @elastic/kibana-core
503504
packages/kbn-logging-mocks @elastic/kibana-core
504505
x-pack/plugins/logs_shared @elastic/obs-ux-logs-team
505506
x-pack/plugins/logstash @elastic/logstash
507+
packages/kbn-managed-content-badge @elastic/kibana-visualizations
506508
packages/kbn-managed-vscode-config @elastic/kibana-operations
507509
packages/kbn-managed-vscode-config-cli @elastic/kibana-operations
508510
packages/kbn-management/cards_navigation @elastic/platform-deployment-management

.i18nrc.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,8 @@
141141
"unifiedFieldList": "packages/kbn-unified-field-list",
142142
"unifiedHistogram": "src/plugins/unified_histogram",
143143
"unifiedDataTable": "packages/kbn-unified-data-table",
144-
"unsavedChangesBadge": "packages/kbn-unsaved-changes-badge"
144+
"unsavedChangesBadge": "packages/kbn-unsaved-changes-badge",
145+
"managedContentBadge": "packages/kbn-managed-content-badge"
145146
},
146147
"translations": []
147148
}

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,7 @@
369369
"@kbn/data-plugin": "link:src/plugins/data",
370370
"@kbn/data-search-plugin": "link:test/plugin_functional/plugins/data_search",
371371
"@kbn/data-service": "link:packages/kbn-data-service",
372+
"@kbn/data-stream-adapter": "link:packages/kbn-data-stream-adapter",
372373
"@kbn/data-view-editor-plugin": "link:src/plugins/data_view_editor",
373374
"@kbn/data-view-field-editor-example-plugin": "link:examples/data_view_field_editor_example",
374375
"@kbn/data-view-field-editor-plugin": "link:src/plugins/data_view_field_editor",
@@ -524,6 +525,7 @@
524525
"@kbn/logging-mocks": "link:packages/kbn-logging-mocks",
525526
"@kbn/logs-shared-plugin": "link:x-pack/plugins/logs_shared",
526527
"@kbn/logstash-plugin": "link:x-pack/plugins/logstash",
528+
"@kbn/managed-content-badge": "link:packages/kbn-managed-content-badge",
527529
"@kbn/management-cards-navigation": "link:packages/kbn-management/cards_navigation",
528530
"@kbn/management-plugin": "link:src/plugins/management",
529531
"@kbn/management-settings-application": "link:packages/kbn-management/settings/application",

packages/kbn-alerts-ui-shared/src/alert_fields_table/index.tsx

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import { css } from '@emotion/react';
1717
import React, { memo, useCallback, useMemo, useState } from 'react';
1818
import { Alert } from '@kbn/alerting-types';
1919
import { euiThemeVars } from '@kbn/ui-theme';
20+
import { EuiBasicTableColumn } from '@elastic/eui/src/components/basic_table/basic_table';
2021

2122
export const search = {
2223
box: {
@@ -28,7 +29,7 @@ export const search = {
2829
},
2930
};
3031

31-
const columns = [
32+
const columns: Array<EuiBasicTableColumn<AlertField>> = [
3233
{
3334
field: 'key',
3435
name: i18n.translate('alertsUIShared.alertFieldsTable.field', {
@@ -86,18 +87,46 @@ const useFieldBrowserPagination = () => {
8687
};
8788
};
8889

90+
type AlertField = Exclude<
91+
{
92+
[K in keyof Alert]: { key: K; value: Alert[K] };
93+
}[keyof Alert],
94+
undefined
95+
>;
96+
8997
export interface AlertFieldsTableProps {
98+
/**
99+
* The raw alert object
100+
*/
90101
alert: Alert;
102+
/**
103+
* A list of alert field keys to be shown in the table.
104+
* When not defined, all the fields are shown.
105+
*/
106+
fields?: Array<keyof Alert>;
91107
}
92108

93-
export const AlertFieldsTable = memo(({ alert }: AlertFieldsTableProps) => {
109+
/**
110+
* A paginated, filterable table to show alert object fields
111+
*/
112+
export const AlertFieldsTable = memo(({ alert, fields }: AlertFieldsTableProps) => {
94113
const { onTableChange, paginationTableProp } = useFieldBrowserPagination();
114+
const items = useMemo(() => {
115+
let _items = Object.entries(alert).map(
116+
([key, value]) =>
117+
({
118+
key,
119+
value,
120+
} as AlertField)
121+
);
122+
if (fields?.length) {
123+
_items = _items.filter((f) => fields.includes(f.key));
124+
}
125+
return _items;
126+
}, [alert, fields]);
95127
return (
96128
<EuiInMemoryTable
97-
items={Object.entries(alert).map(([key, value]) => ({
98-
key,
99-
value: Array.isArray(value) ? value?.[0] : value,
100-
}))}
129+
items={items}
101130
itemId="key"
102131
columns={columns}
103132
onTableChange={onTableChange}
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
# @kbn/data-stream-adapter
2+
3+
Utility library for Elasticsearch data stream management.
4+
5+
## DataStreamAdapter
6+
7+
Manage single data streams. Example:
8+
9+
```
10+
// Setup
11+
const dataStream = new DataStreamAdapter('my-awesome-datastream', { kibanaVersion: '8.12.1' });
12+
13+
dataStream.setComponentTemplate({
14+
name: 'awesome-component-template',
15+
fieldMap: {
16+
'awesome.field1: { type: 'keyword', required: true },
17+
'awesome.nested.field2: { type: 'number', required: false },
18+
// ...
19+
},
20+
});
21+
22+
dataStream.setIndexTemplate({
23+
name: 'awesome-index-template',
24+
componentTemplateRefs: ['awesome-component-template', 'ecs-component-template'],
25+
template: {
26+
lifecycle: {
27+
data_retention: '5d',
28+
},
29+
},
30+
});
31+
32+
// Start
33+
await dataStream.install({ logger, esClient, pluginStop$ }); // Installs templates and the data stream, or updates existing.
34+
```
35+
36+
37+
## DataStreamSpacesAdapter
38+
39+
Manage data streams per space. Example:
40+
41+
```
42+
// Setup
43+
const spacesDataStream = new DataStreamSpacesAdapter('my-awesome-datastream', { kibanaVersion: '8.12.1' });
44+
45+
spacesDataStream.setComponentTemplate({
46+
name: 'awesome-component-template',
47+
fieldMap: {
48+
'awesome.field1: { type: 'keyword', required: true },
49+
'awesome.nested.field2: { type: 'number', required: false },
50+
// ...
51+
},
52+
});
53+
54+
spacesDataStream.setIndexTemplate({
55+
name: 'awesome-index-template',
56+
componentTemplateRefs: ['awesome-component-template', 'ecs-component-template'],
57+
template: {
58+
lifecycle: {
59+
data_retention: '5d',
60+
},
61+
},
62+
});
63+
64+
// Start
65+
await spacesDataStream.install({ logger, esClient, pluginStop$ }); // Installs templates and updates existing data streams.
66+
67+
// Create a space data stream on the fly
68+
await spacesDataStream.installSpace('space2'); // creates 'my-awesome-datastream-space2' data stream if it does not exist.
69+
```
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License
4+
* 2.0 and the Server Side Public License, v 1; you may not use this file except
5+
* in compliance with, at your election, the Elastic License 2.0 or the Server
6+
* Side Public License, v 1.
7+
*/
8+
9+
export { DataStreamAdapter } from './src/data_stream_adapter';
10+
export { DataStreamSpacesAdapter } from './src/data_stream_spaces_adapter';
11+
export { retryTransientEsErrors } from './src/retry_transient_es_errors';
12+
export { ecsFieldMap, type EcsFieldMap } from './src/field_maps/ecs_field_map';
13+
14+
export type {
15+
DataStreamAdapterParams,
16+
SetComponentTemplateParams,
17+
SetIndexTemplateParams,
18+
InstallParams,
19+
} from './src/data_stream_adapter';
20+
export * from './src/field_maps/types';
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License
4+
* 2.0 and the Server Side Public License, v 1; you may not use this file except
5+
* in compliance with, at your election, the Elastic License 2.0 or the Server
6+
* Side Public License, v 1.
7+
*/
8+
9+
module.exports = {
10+
preset: '@kbn/test',
11+
rootDir: '../..',
12+
roots: ['<rootDir>/packages/kbn-data-stream-adapter'],
13+
};

0 commit comments

Comments
 (0)